{
  "openapi": "3.1.0",
  "info": {
    "title": "Vocapable Control API",
    "version": "0.1.0"
  },
  "paths": {
    "/healthz": {
      "get": {
        "tags": [
          "ops"
        ],
        "summary": "Healthz",
        "operationId": "healthz_healthz_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "type": "object",
                  "title": "Response Healthz Healthz Get"
                }
              }
            }
          }
        }
      }
    },
    "/readyz": {
      "get": {
        "tags": [
          "ops"
        ],
        "summary": "Readyz",
        "description": "Ready means the database answers *and* both isolation checks still hold.\n\nThe admin verification runs only when the admin plane is wired: an unwired\nplane is a stated condition, not unreadiness (ADR-0016 §8).",
        "operationId": "readyz_readyz_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "type": "object",
                  "title": "Response Readyz Readyz Get"
                }
              }
            }
          }
        }
      }
    },
    "/v1/account-deletion": {
      "get": {
        "tags": [
          "account deletion"
        ],
        "summary": "Read Account Deletion",
        "description": "Show only this account's current impact and protected request status.",
        "operationId": "read_account_deletion_v1_account_deletion_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccountDeletionOverview"
                }
              }
            }
          }
        },
        "security": [
          {
            "DashboardSessionCookie": []
          }
        ]
      }
    },
    "/v1/account-deletion/requests": {
      "post": {
        "tags": [
          "account deletion"
        ],
        "summary": "Create Account Deletion Request",
        "description": "Confirm a password-account request with a fresh password and explicit phrase.",
        "operationId": "create_account_deletion_request_v1_account_deletion_requests_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DeleteAccountRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccountDeletionOverview"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "DashboardSessionCookie": []
          }
        ]
      }
    },
    "/v1/account-deletion/email-confirmations": {
      "post": {
        "tags": [
          "account deletion"
        ],
        "summary": "Start Account Deletion Email Confirmation",
        "description": "Send fresh proof to a passwordless account's already verified mailbox.",
        "operationId": "start_account_deletion_email_confirmation_v1_account_deletion_email_confirmations_post",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmailConfirmationAccepted"
                }
              }
            }
          }
        },
        "security": [
          {
            "DashboardSessionCookie": []
          }
        ]
      }
    },
    "/v1/account-deletion/email-confirmations/confirm": {
      "post": {
        "tags": [
          "account deletion"
        ],
        "summary": "Confirm Account Deletion Email",
        "description": "Spend a one-time email proof and create/reconfirm its account's request.\n\nThis route intentionally does not take a cookie: a person may open the link on a\ndifferent device.  The high-entropy, one-use token is the credential; trusted-origin\nvalidation ensures only the Vocapable portal can submit it from the fragment ceremony.",
        "operationId": "confirm_account_deletion_email_v1_account_deletion_email_confirmations_confirm_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ActionTokenRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccountDeletionOverview"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/me": {
      "get": {
        "tags": [
          "identity"
        ],
        "summary": "Describe the authenticated principal",
        "operationId": "read_me_v1_me_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CurrentPrincipalResource"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/v1/users": {
      "get": {
        "tags": [
          "identity"
        ],
        "summary": "The tenant's user directory (read-only)",
        "description": "Who work can be attributed or assigned to - never a management surface.\n\nInvitations, role changes, and deactivation have no `/v1` route on purpose; this\nexists so the portal can render an assignee picker and resolve \"assign to me\"\n(ADR-0037) without holding anything wider than a read.",
        "operationId": "list_users_v1_users_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 200,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorPage_TenantUserSummary_"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api-keys": {
      "get": {
        "tags": [
          "identity"
        ],
        "summary": "List this tenant's API keys",
        "description": "Cursor-paginated like every other list endpoint (docs/04-api.md §1).\n\nIt used to answer a bare JSON array - the one exception on the surface - which broke\na generated client's generic list walker on the first resource most developers touch.",
        "operationId": "list_api_keys_v1_api_keys_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 200,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorPage_ApiKeySummary_"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "identity"
        ],
        "summary": "Create an API key (the secret is returned exactly once)",
        "operationId": "create_api_key_v1_api_keys_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiKeyCreateRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiKeyCreateResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api-keys/{key_id}/rotate": {
      "post": {
        "tags": [
          "identity"
        ],
        "summary": "Replace a key with a new secret carrying the same authority",
        "description": "Retire one key and mint its replacement, in one transaction.\n\nRotation exists because the two-call alternative - create, then delete - has no\nsafe order. Create-then-delete leaves both live if the second call is lost;\ndelete-then-create leaves the integration with no credential at all. Here the\nrevoke is the claim (`revoke_returning`), so a lost response leaves exactly one\nlive key and a replaying client gets `404 api_key_not_found` rather than a second\nreplacement.\n\n**The replacement carries the retired key's mode and scopes, not the caller's.**\nThat is what lets a narrow contractor key rotate itself without the caller having to\nhold what it holds - and it is why the request body has no `scopes` field: there is\nno widening path here to guard, only one that does not exist.",
        "operationId": "rotate_api_key_v1_api_keys__key_id__rotate_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "key_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Key Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiKeyRotateRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiKeyRotateResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/api-keys/{key_id}": {
      "delete": {
        "tags": [
          "identity"
        ],
        "summary": "Revoke an API key",
        "operationId": "revoke_api_key_v1_api_keys__key_id__delete",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "key_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Key Id"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/mobile/authorize": {
      "get": {
        "tags": [
          "mobile"
        ],
        "summary": "Approve a mobile PKCE authorization request in the first-party browser",
        "description": "Issue a one-use code or show a workspace chooser for the signed-in account.\n\nBrowser login navigation belongs to the first-party portal bridge.  This code-issuing\nendpoint stays native-cookie-only: an absent, stale, or forged browser session receives\nthe normal opaque 401 from :class:`NativeVerifiedDashboard`, never a portal redirect or\na weaker bearer-token fallback.",
        "operationId": "authorize_mobile_v1_mobile_authorize_get",
        "security": [
          {
            "DashboardSessionCookie": []
          }
        ],
        "parameters": [
          {
            "name": "membership_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "Membership Id"
            }
          },
          {
            "name": "client_id",
            "in": "query",
            "required": false,
            "schema": {
              "const": "vocapable-mobile",
              "type": "string",
              "default": "vocapable-mobile",
              "title": "Client Id"
            }
          },
          {
            "name": "response_type",
            "in": "query",
            "required": false,
            "schema": {
              "const": "code",
              "type": "string",
              "default": "code",
              "title": "Response Type"
            }
          },
          {
            "name": "redirect_uri",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 2048,
              "title": "Redirect Uri"
            }
          },
          {
            "name": "code_challenge",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9_-]{43,128}$",
              "title": "Code Challenge"
            }
          },
          {
            "name": "code_challenge_method",
            "in": "query",
            "required": false,
            "schema": {
              "const": "S256",
              "type": "string",
              "default": "S256",
              "title": "Code Challenge Method"
            }
          },
          {
            "name": "scope",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 256
                },
                {
                  "type": "null"
                }
              ],
              "title": "Scope"
            }
          },
          {
            "name": "installation_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 43,
              "maxLength": 256,
              "title": "Installation Id"
            }
          },
          {
            "name": "platform",
            "in": "query",
            "required": true,
            "schema": {
              "enum": [
                "ios",
                "android"
              ],
              "type": "string",
              "title": "Platform"
            }
          },
          {
            "name": "device_label",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 200
                },
                {
                  "type": "null"
                }
              ],
              "title": "Device Label"
            }
          },
          {
            "name": "state",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 1024,
              "title": "State"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/mobile/token": {
      "post": {
        "tags": [
          "mobile"
        ],
        "summary": "Exchange a mobile PKCE code or rotate a refresh credential",
        "operationId": "mobile_token_v1_mobile_token_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MobileTokenRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MobileTokenResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/mobile/me": {
      "get": {
        "tags": [
          "mobile"
        ],
        "summary": "Bootstrap the authenticated mobile workspace",
        "operationId": "mobile_me_v1_mobile_me_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MobileBootstrapProfile"
                }
              }
            }
          }
        },
        "security": [
          {
            "MobileBearer": []
          }
        ]
      }
    },
    "/v1/mobile/devices": {
      "get": {
        "tags": [
          "mobile"
        ],
        "summary": "List this membership's registered mobile devices",
        "operationId": "list_mobile_devices_v1_mobile_devices_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/MobileDeviceSummary"
                  },
                  "type": "array",
                  "title": "Response List Mobile Devices V1 Mobile Devices Get"
                }
              }
            }
          }
        },
        "security": [
          {
            "MobileBearer": []
          }
        ]
      }
    },
    "/v1/mobile/devices/current/push": {
      "put": {
        "tags": [
          "mobile"
        ],
        "summary": "Register, rotate, or clear this device's Expo push endpoint",
        "operationId": "update_current_device_push_v1_mobile_devices_current_push_put",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MobileDevicePushRegistrationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MobileDeviceSummary"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "MobileBearer": []
          }
        ]
      }
    },
    "/v1/mobile/devices/current/notification-preferences": {
      "get": {
        "tags": [
          "mobile"
        ],
        "summary": "Read this device's routine notification and urgent-alert preferences",
        "operationId": "get_current_device_notification_preferences_v1_mobile_devices_current_notification_preferences_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MobileNotificationPreferences"
                }
              }
            }
          }
        },
        "security": [
          {
            "MobileBearer": []
          }
        ]
      },
      "put": {
        "tags": [
          "mobile"
        ],
        "summary": "Set this device's routine notification and urgent-alert preferences",
        "operationId": "update_current_device_notification_preferences_v1_mobile_devices_current_notification_preferences_put",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MobileNotificationPreferencesUpdateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MobileNotificationPreferences"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "MobileBearer": []
          }
        ]
      }
    },
    "/v1/mobile/devices/current/notification-preferences/test": {
      "post": {
        "tags": [
          "mobile"
        ],
        "summary": "Queue one generic notification test for this device only",
        "description": "Queue an ID-only generic test without copying a push route into the response.",
        "operationId": "test_current_device_notifications_v1_mobile_devices_current_notification_preferences_test_post",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MobileNotificationTestReceipt"
                }
              }
            }
          }
        },
        "security": [
          {
            "MobileBearer": []
          }
        ]
      }
    },
    "/v1/mobile/devices/{device_id}": {
      "delete": {
        "tags": [
          "mobile"
        ],
        "summary": "Revoke one of this membership's mobile devices and every session on it",
        "operationId": "revoke_mobile_device_v1_mobile_devices__device_id__delete",
        "security": [
          {
            "MobileBearer": []
          }
        ],
        "parameters": [
          {
            "name": "device_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Device Id"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/mobile/logout": {
      "post": {
        "tags": [
          "mobile"
        ],
        "summary": "Revoke the current mobile refresh session",
        "operationId": "mobile_logout_v1_mobile_logout_post",
        "responses": {
          "204": {
            "description": "Successful Response"
          }
        },
        "security": [
          {
            "MobileBearer": []
          }
        ]
      }
    },
    "/v1/mobile/team": {
      "get": {
        "tags": [
          "mobile"
        ],
        "summary": "List mobile customer-team memberships",
        "operationId": "list_mobile_team_v1_mobile_team_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/MobileTeamMemberSummary"
                  },
                  "type": "array",
                  "title": "Response List Mobile Team V1 Mobile Team Get"
                }
              }
            }
          }
        },
        "security": [
          {
            "MobileBearer": []
          }
        ]
      }
    },
    "/v1/mobile/team/invitations": {
      "get": {
        "tags": [
          "mobile"
        ],
        "summary": "List team invitation metadata without invitation credentials",
        "operationId": "list_mobile_team_invitations_v1_mobile_team_invitations_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/TenantInvitationSummary"
                  },
                  "type": "array",
                  "title": "Response List Mobile Team Invitations V1 Mobile Team Invitations Get"
                }
              }
            }
          }
        },
        "security": [
          {
            "MobileBearer": []
          }
        ]
      },
      "post": {
        "tags": [
          "mobile"
        ],
        "summary": "Invite an admin, manager, or representative to this workspace",
        "operationId": "create_mobile_team_invitation_v1_mobile_team_invitations_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TenantInvitationCreateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TenantInvitationSummary"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "MobileBearer": []
          }
        ]
      }
    },
    "/v1/mobile/team/invitations/{invitation_id}": {
      "delete": {
        "tags": [
          "mobile"
        ],
        "summary": "Revoke a pending team invitation",
        "operationId": "revoke_mobile_team_invitation_v1_mobile_team_invitations__invitation_id__delete",
        "security": [
          {
            "MobileBearer": []
          }
        ],
        "parameters": [
          {
            "name": "invitation_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Invitation Id"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/mobile/team/{membership_id}/transfer-destination-verification": {
      "get": {
        "tags": [
          "mobile"
        ],
        "summary": "Read non-PII transfer-destination verification progress for a team member",
        "operationId": "get_transfer_destination_verification_v1_mobile_team__membership_id__transfer_destination_verification_get",
        "security": [
          {
            "MobileBearer": []
          }
        ],
        "parameters": [
          {
            "name": "membership_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Membership Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "anyOf": [
                    {
                      "$ref": "#/components/schemas/MobileTransferDestinationVerificationSummary"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "title": "Response Get Transfer Destination Verification V1 Mobile Team  Membership Id  Transfer Destination Verification Get"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "mobile"
        ],
        "summary": "Deliver an OTP before changing a linked representative's transfer destination",
        "operationId": "start_transfer_destination_verification_v1_mobile_team__membership_id__transfer_destination_verification_post",
        "security": [
          {
            "MobileBearer": []
          }
        ],
        "parameters": [
          {
            "name": "membership_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Membership Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MobileTransferDestinationVerificationStartRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MobileTransferDestinationVerificationSummary"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/mobile/team/{membership_id}/transfer-destination-verification/check": {
      "post": {
        "tags": [
          "mobile"
        ],
        "summary": "Confirm a delivered OTP and atomically change the linked transfer destination",
        "operationId": "check_transfer_destination_verification_v1_mobile_team__membership_id__transfer_destination_verification_check_post",
        "security": [
          {
            "MobileBearer": []
          }
        ],
        "parameters": [
          {
            "name": "membership_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Membership Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MobileTransferDestinationVerificationCheckRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MobileTransferDestinationVerificationSummary"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/mobile/team/{membership_id}": {
      "patch": {
        "tags": [
          "mobile"
        ],
        "summary": "Change a team member's role, status, or explicit human-rep link",
        "operationId": "update_mobile_team_member_v1_mobile_team__membership_id__patch",
        "security": [
          {
            "MobileBearer": []
          }
        ],
        "parameters": [
          {
            "name": "membership_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Membership Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TenantMembershipUpdateRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TenantMembershipSummary"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/mobile/invitations/accept": {
      "post": {
        "tags": [
          "mobile"
        ],
        "summary": "Accept a delivered team invitation in a signed-in first-party browser",
        "description": "Spend a fragment-delivered invite only for the matching verified account email.",
        "operationId": "accept_mobile_invitation_v1_mobile_invitations_accept_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TenantInvitationAcceptanceRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TenantMembershipSummary"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "DashboardSessionCookie": []
          }
        ]
      }
    },
    "/v1/mobile/integrations/readiness": {
      "get": {
        "tags": [
          "mobile-integrations"
        ],
        "summary": "Read mobile-safe integration readiness",
        "description": "Return tenant-scoped status to Admins and Managers only.\n\nA Rep has no integration-management responsibility and receives no integration state.\nThe response is deliberately no-store because a reconnection can change booking readiness\noutside the app while it is backgrounded.",
        "operationId": "get_mobile_integration_readiness_v1_mobile_integrations_readiness_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MobileIntegrationReadiness"
                }
              }
            }
          }
        },
        "security": [
          {
            "MobileBearer": []
          }
        ]
      }
    },
    "/v1/mobile/integrations/health": {
      "get": {
        "tags": [
          "mobile-integrations"
        ],
        "summary": "Read privacy-minimized mobile integration health",
        "description": "Return the finite, repair-oriented registry for Admins and Managers.\n\nCalendar connection/booking reflect only the deployed Google Calendar adapter.  CRM is\nrepresented explicitly as not shipped rather than guessing from generic webhook rows.\nWebhook health observes a bounded recent aggregate and never exposes endpoint/delivery\nidentities, URLs, secrets, recipients, raw provider errors, or response data.",
        "operationId": "get_mobile_integration_health_v1_mobile_integrations_health_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MobileIntegrationHealthRegistry"
                }
              }
            }
          }
        },
        "security": [
          {
            "MobileBearer": []
          }
        ]
      }
    },
    "/v1/mobile/integrations/timeline": {
      "get": {
        "tags": [
          "mobile-integrations"
        ],
        "summary": "Read current privacy-minimized integration incidents",
        "description": "Return current evidence-backed repair work for Admins and Managers.\n\nThis is intentionally not an audit timeline or integration browser.  It offers only a\nfinite affected capability, a durable last-known health timestamp, and a named fixed\nrepair surface.  No row/resource identifiers, endpoint URLs, credentials, provider\ndiagnostics, delivery payloads, recipient data, or customer content crosses this API.",
        "operationId": "get_mobile_integration_health_timeline_v1_mobile_integrations_timeline_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MobileIntegrationHealthTimeline"
                }
              }
            }
          }
        },
        "security": [
          {
            "MobileBearer": []
          }
        ]
      }
    },
    "/v1/mobile/receptionist/insights": {
      "get": {
        "tags": [
          "mobile-receptionist"
        ],
        "summary": "Read bounded comparative receptionist insights",
        "description": "Return leader-only aggregates for the current and immediately-prior equal window.",
        "operationId": "get_mobile_receptionist_insights_v1_mobile_receptionist_insights_get",
        "security": [
          {
            "MobileBearer": []
          }
        ],
        "parameters": [
          {
            "name": "days",
            "in": "query",
            "required": false,
            "schema": {
              "enum": [
                "7",
                "30",
                "90"
              ],
              "type": "string",
              "description": "Comparison window: 7, 30, or 90 days.",
              "default": "7",
              "title": "Days"
            },
            "description": "Comparison window: 7, 30, or 90 days."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MobileReceptionistInsights"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/mobile/receptionist/live-calls": {
      "get": {
        "tags": [
          "mobile-receptionist"
        ],
        "summary": "List live receptionist calls",
        "operationId": "list_live_calls_v1_mobile_receptionist_live_calls_get",
        "security": [
          {
            "MobileBearer": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 25,
              "title": "Limit"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MobileLiveCall"
                  },
                  "title": "Response List Live Calls V1 Mobile Receptionist Live Calls Get"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/mobile/receptionist/activity": {
      "get": {
        "tags": [
          "mobile-receptionist"
        ],
        "summary": "Recent receptionist activity",
        "operationId": "list_receptionist_activity_v1_mobile_receptionist_activity_get",
        "security": [
          {
            "MobileBearer": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MobileReceptionistActivity"
                  },
                  "title": "Response List Receptionist Activity V1 Mobile Receptionist Activity Get"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/mobile/receptionist/activity/page": {
      "get": {
        "tags": [
          "mobile-receptionist"
        ],
        "summary": "Page receptionist activity with a stable cursor",
        "description": "Page the merged activity timeline without offset drift under live call updates.",
        "operationId": "list_receptionist_activity_page_v1_mobile_receptionist_activity_page_get",
        "security": [
          {
            "MobileBearer": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorPage_MobileReceptionistActivity_"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/mobile/receptionist/metrics": {
      "get": {
        "tags": [
          "mobile-receptionist"
        ],
        "summary": "Read bounded aggregate receptionist metrics",
        "description": "Return compact operational counts without exposing the calls behind the totals.",
        "operationId": "get_receptionist_metrics_v1_mobile_receptionist_metrics_get",
        "security": [
          {
            "MobileBearer": []
          }
        ],
        "parameters": [
          {
            "name": "start",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date-time"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Inclusive lower bound, ISO-8601. The report requires a half-open [start, end) window and may span at most 93 days.",
              "title": "Start"
            },
            "description": "Inclusive lower bound, ISO-8601. The report requires a half-open [start, end) window and may span at most 93 days."
          },
          {
            "name": "end",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date-time"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Exclusive upper bound, ISO-8601.",
              "title": "End"
            },
            "description": "Exclusive upper bound, ISO-8601."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MobileReceptionistMetrics"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/mobile/receptionist/activity/calls/{call_id}/transcript": {
      "get": {
        "tags": [
          "mobile-receptionist"
        ],
        "summary": "Read an authorized receptionist call transcript",
        "description": "Serve the durable transcript read model for Admin/Manager activity review.\n\nA mobile bearer has no access to the generic API-key calls router.  This adapter keeps\nthat boundary while preserving the exact tenant and recording-consent behavior of the\nexisting transcript reader.",
        "operationId": "read_activity_call_transcript_v1_mobile_receptionist_activity_calls__call_id__transcript_get",
        "security": [
          {
            "MobileBearer": []
          }
        ],
        "parameters": [
          {
            "name": "call_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Call Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MobileCallTranscript"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/mobile/receptionist/activity/calls/{call_id}/ai-output-reports": {
      "post": {
        "tags": [
          "mobile-receptionist"
        ],
        "summary": "Report AI-generated receptionist call output for review",
        "description": "Create one durable, enum-only content report for an authorized call.\n\nThis is a safety intake, not a live-call control or a transcript-copy endpoint.  The\nreport is tied to a tenant-scoped call proven by the existing repository; its body has\nno free-text field, and the audit record contains only opaque IDs and the enum reason.\nA repeated tap returns the original receipt without a second queue or audit entry.",
        "operationId": "report_activity_ai_output_v1_mobile_receptionist_activity_calls__call_id__ai_output_reports_post",
        "security": [
          {
            "MobileBearer": []
          }
        ],
        "parameters": [
          {
            "name": "call_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Call Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MobileAiContentReportRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MobileAiContentReportReceipt"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/mobile/receptionist/activity/calls/{call_id}/recording": {
      "get": {
        "tags": [
          "mobile-receptionist"
        ],
        "summary": "Redirect to an authorized short-lived receptionist recording link",
        "description": "Issue the same short-lived playback link as the main call review surface.\n\nThe response is deliberately a redirect, never audio bytes or a storage locator.  The\nregistered recording adapter rechecks retention and tenant ownership before it signs a\ntarget, so native activity cannot turn a durable recording id into a reusable URL.",
        "operationId": "read_activity_call_recording_v1_mobile_receptionist_activity_calls__call_id__recording_get",
        "security": [
          {
            "MobileBearer": []
          }
        ],
        "parameters": [
          {
            "name": "call_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Call Id"
            }
          }
        ],
        "responses": {
          "302": {
            "description": "Successful Response"
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/mobile/receptionist/activity/voicemails/{voicemail_id}": {
      "get": {
        "tags": [
          "mobile-receptionist"
        ],
        "summary": "Read an authorized inbound voicemail receipt",
        "description": "Return receipt state and timing; use the call recording route for any audio.",
        "operationId": "read_activity_voicemail_v1_mobile_receptionist_activity_voicemails__voicemail_id__get",
        "security": [
          {
            "MobileBearer": []
          }
        ],
        "parameters": [
          {
            "name": "voicemail_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Voicemail Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MobileInboundVoicemail"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/mobile/receptionist/activity/appointments/{appointment_id}": {
      "get": {
        "tags": [
          "mobile-receptionist"
        ],
        "summary": "Read an authorized appointment detail",
        "description": "Read by opaque activity id, with the repository's tenant predicate in every query.",
        "operationId": "read_activity_appointment_v1_mobile_receptionist_activity_appointments__appointment_id__get",
        "security": [
          {
            "MobileBearer": []
          }
        ],
        "parameters": [
          {
            "name": "appointment_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Appointment Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MobileAppointment"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/mobile/receptionist/transfers": {
      "get": {
        "tags": [
          "mobile-receptionist"
        ],
        "summary": "Recent transfer history",
        "operationId": "list_transfer_history_v1_mobile_receptionist_transfers_get",
        "security": [
          {
            "MobileBearer": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MobileTransferHistoryEntry"
                  },
                  "title": "Response List Transfer History V1 Mobile Receptionist Transfers Get"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/mobile/receptionist/transfers/page": {
      "get": {
        "tags": [
          "mobile-receptionist"
        ],
        "summary": "Page tenant transfer history with a stable cursor",
        "description": "Page all tenant handoffs; destination numbers remain absent from every page.",
        "operationId": "list_transfer_history_page_v1_mobile_receptionist_transfers_page_get",
        "security": [
          {
            "MobileBearer": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorPage_MobileTransferHistoryEntry_"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/mobile/receptionist/transfers/{handoff_id}": {
      "get": {
        "tags": [
          "mobile-receptionist"
        ],
        "summary": "Read one transfer history entry",
        "operationId": "get_transfer_history_v1_mobile_receptionist_transfers__handoff_id__get",
        "security": [
          {
            "MobileBearer": []
          }
        ],
        "parameters": [
          {
            "name": "handoff_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Handoff Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MobileTransferHistoryEntry"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/mobile/receptionist/my-transfers": {
      "get": {
        "tags": [
          "mobile-receptionist"
        ],
        "summary": "List the authenticated rep's own transfer history",
        "operationId": "list_my_transfer_history_v1_mobile_receptionist_my_transfers_get",
        "security": [
          {
            "MobileBearer": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MobileTransferHistoryEntry"
                  },
                  "title": "Response List My Transfer History V1 Mobile Receptionist My Transfers Get"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/mobile/receptionist/my-transfers/page": {
      "get": {
        "tags": [
          "mobile-receptionist"
        ],
        "summary": "Page the authenticated rep's transfer history",
        "description": "Keep historical cursor traversal bound to the server-linked rep identity.",
        "operationId": "list_my_transfer_history_page_v1_mobile_receptionist_my_transfers_page_get",
        "security": [
          {
            "MobileBearer": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorPage_MobileTransferHistoryEntry_"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/mobile/receptionist/my-transfers/{handoff_id}": {
      "get": {
        "tags": [
          "mobile-receptionist"
        ],
        "summary": "Read one transfer only when it belongs to the authenticated rep",
        "operationId": "get_my_transfer_history_v1_mobile_receptionist_my_transfers__handoff_id__get",
        "security": [
          {
            "MobileBearer": []
          }
        ],
        "parameters": [
          {
            "name": "handoff_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Handoff Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MobileTransferHistoryEntry"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/mobile/receptionist/handoffs/{handoff_id}/live": {
      "get": {
        "tags": [
          "mobile-receptionist"
        ],
        "summary": "Read no-cache carrier-confirmed handoff lifecycle",
        "description": "Poll a safe lifecycle projection; carrier callbacks and workers remain the only writers.\n\nAdmins and Managers may review any inbound receptionist handoff in their tenant.  A Rep\nreceives the same shape only when their server-linked human-rep id is a durable target\nof the request.  The 404 remains identical for absent and unauthorized rep rows.",
        "operationId": "get_live_handoff_v1_mobile_receptionist_handoffs__handoff_id__live_get",
        "security": [
          {
            "MobileBearer": []
          }
        ],
        "parameters": [
          {
            "name": "handoff_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Handoff Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MobileLiveHandoff"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/mobile/receptionist/handoff-capability": {
      "get": {
        "tags": [
          "mobile-receptionist"
        ],
        "summary": "Read whether cellular handoff controls are currently available",
        "operationId": "handoff_capability_v1_mobile_receptionist_handoff_capability_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MobileHandoffCapability"
                }
              }
            }
          }
        },
        "security": [
          {
            "MobileBearer": []
          }
        ]
      }
    },
    "/v1/mobile/receptionist/call-ai/contacts": {
      "get": {
        "tags": [
          "mobile-receptionist"
        ],
        "summary": "List existing contacts selectable for one mobile AI call",
        "description": "Return live contact labels only; launch-time compliance remains server-side.",
        "operationId": "list_mobile_call_ai_contacts_v1_mobile_receptionist_call_ai_contacts_get",
        "security": [
          {
            "MobileBearer": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MobileCallAiContact"
                  },
                  "title": "Response List Mobile Call Ai Contacts V1 Mobile Receptionist Call Ai Contacts Get"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/mobile/receptionist/call-ai/contacts/search": {
      "get": {
        "tags": [
          "mobile-receptionist"
        ],
        "summary": "Search existing safe-label contacts for one mobile AI call",
        "description": "Return one virtualized picker page without searching raw contact destinations.\n\nThe response is a narrow selection aid rather than a dialability assertion.  The\nsubsequent Call AI command still proves contact ownership and executes all consent,\nDNC, jurisdiction, caller-ID, agreement, spend, and idempotency gates server-side.",
        "operationId": "search_mobile_call_ai_contacts_v1_mobile_receptionist_call_ai_contacts_search_get",
        "security": [
          {
            "MobileBearer": []
          }
        ],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 2,
              "maxLength": 100,
              "description": "At least two label characters.",
              "title": "Q"
            },
            "description": "At least two label characters."
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 30,
              "title": "Limit"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorPage_MobileCallAiContact_"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/mobile/receptionist/call-ai/agents": {
      "get": {
        "tags": [
          "mobile-receptionist"
        ],
        "summary": "List active published agents selectable for one mobile AI call",
        "operationId": "list_mobile_call_ai_agents_v1_mobile_receptionist_call_ai_agents_get",
        "security": [
          {
            "MobileBearer": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MobileCallAiAgent"
                  },
                  "title": "Response List Mobile Call Ai Agents V1 Mobile Receptionist Call Ai Agents Get"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/mobile/receptionist/call-ai": {
      "post": {
        "tags": [
          "mobile-receptionist"
        ],
        "summary": "Queue one compliant live/BYO mobile AI call",
        "description": "Launch exactly one resource-bound call through the shared production pipeline.\n\nThe native admission dependency enforces rate limits, current production agreements,\nand a membership/device idempotency key before this handler runs.  ``mock=False`` is\nintentional: mobile Call AI has no test or managed-carrier branch, and the shared core\nrefuses anything except the tenant's verified default BYO route.",
        "operationId": "create_mobile_call_ai_v1_mobile_receptionist_call_ai_post",
        "security": [
          {
            "MobileBearer": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MobileCallAiRequest"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MobileCallAiResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "Unique key for this mobile Call AI request, so a retry replays the original result instead of placing another call. Stored for 24 hours; a replay carries `Idempotent-Replay: true`. **Required on this endpoint.**",
            "schema": {
              "type": "string",
              "maxLength": 255
            }
          }
        ]
      }
    },
    "/v1/mobile/receptionist/numbers": {
      "get": {
        "tags": [
          "mobile-receptionist"
        ],
        "summary": "List tenant-owned receptionist numbers for mobile routing controls",
        "description": "List only policy-routed business voice lines, never caller or contact numbers.",
        "operationId": "list_receptionist_numbers_v1_mobile_receptionist_numbers_get",
        "security": [
          {
            "MobileBearer": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MobileReceptionistNumber"
                  },
                  "title": "Response List Receptionist Numbers V1 Mobile Receptionist Numbers Get"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/mobile/receptionist/numbers/{number_id}/schedule": {
      "get": {
        "tags": [
          "mobile-receptionist"
        ],
        "summary": "Read the mobile-editable answering-policy schedule",
        "operationId": "get_answering_policy_schedule_v1_mobile_receptionist_numbers__number_id__schedule_get",
        "security": [
          {
            "MobileBearer": []
          }
        ],
        "parameters": [
          {
            "name": "number_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Number Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnsweringPolicySchedule"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "mobile-receptionist"
        ],
        "summary": "Version-check and update answering-policy business hours or holidays",
        "operationId": "patch_answering_policy_schedule_v1_mobile_receptionist_numbers__number_id__schedule_patch",
        "security": [
          {
            "MobileBearer": []
          }
        ],
        "parameters": [
          {
            "name": "number_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Number Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AnsweringPolicySchedulePatchRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnsweringPolicySchedule"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/mobile/receptionist/numbers/{number_id}/emergency-override": {
      "get": {
        "tags": [
          "mobile-receptionist"
        ],
        "summary": "Read the current emergency route override",
        "operationId": "get_emergency_override_v1_mobile_receptionist_numbers__number_id__emergency_override_get",
        "security": [
          {
            "MobileBearer": []
          }
        ],
        "parameters": [
          {
            "name": "number_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Number Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "anyOf": [
                    {
                      "$ref": "#/components/schemas/EmergencyOverride"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "title": "Response Get Emergency Override V1 Mobile Receptionist Numbers  Number Id  Emergency Override Get"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "mobile-receptionist"
        ],
        "summary": "Set a mandatory-expiry emergency route override",
        "operationId": "set_emergency_override_v1_mobile_receptionist_numbers__number_id__emergency_override_put",
        "security": [
          {
            "MobileBearer": []
          }
        ],
        "parameters": [
          {
            "name": "number_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Number Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EmergencyOverrideRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmergencyOverride"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "mobile-receptionist"
        ],
        "summary": "Clear an emergency route override and restore the base policy",
        "operationId": "clear_emergency_override_v1_mobile_receptionist_numbers__number_id__emergency_override_delete",
        "security": [
          {
            "MobileBearer": []
          }
        ],
        "parameters": [
          {
            "name": "number_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Number Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EmergencyOverrideClearRequest"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/mobile/operations/tasks": {
      "get": {
        "tags": [
          "mobile-operations"
        ],
        "summary": "List Operations Inbox tasks",
        "operationId": "list_operations_tasks_v1_mobile_operations_tasks_get",
        "security": [
          {
            "MobileBearer": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 25,
              "title": "Limit"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          },
          {
            "name": "state",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "enum": [
                    "open",
                    "acknowledged",
                    "resolved"
                  ],
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "State"
            }
          },
          {
            "name": "severity",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "enum": [
                    "critical",
                    "high",
                    "normal",
                    "low"
                  ],
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Severity"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MobileOperationTaskPage"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/mobile/operations/tasks/{task_id}": {
      "get": {
        "tags": [
          "mobile-operations"
        ],
        "summary": "Read one Operations Inbox task",
        "operationId": "get_operations_task_v1_mobile_operations_tasks__task_id__get",
        "security": [
          {
            "MobileBearer": []
          }
        ],
        "parameters": [
          {
            "name": "task_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Task Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MobileOperationTask"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/mobile/operations/tasks/{task_id}/acknowledge": {
      "post": {
        "tags": [
          "mobile-operations"
        ],
        "summary": "Acknowledge an Operations Inbox task",
        "operationId": "acknowledge_operations_task_v1_mobile_operations_tasks__task_id__acknowledge_post",
        "security": [
          {
            "MobileBearer": []
          }
        ],
        "parameters": [
          {
            "name": "task_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Task Id"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MobileOperationTaskAcknowledgeRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MobileOperationTask"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/mobile/operations/tasks/{task_id}/assignee": {
      "put": {
        "tags": [
          "mobile-operations"
        ],
        "summary": "Assign or clear an Operations Inbox task owner",
        "operationId": "assign_operations_task_v1_mobile_operations_tasks__task_id__assignee_put",
        "security": [
          {
            "MobileBearer": []
          }
        ],
        "parameters": [
          {
            "name": "task_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Task Id"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MobileOperationTaskAssignRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MobileOperationTask"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/mobile/operations/tasks/{task_id}/resolve": {
      "post": {
        "tags": [
          "mobile-operations"
        ],
        "summary": "Resolve an Operations Inbox task without changing its source system",
        "operationId": "resolve_operations_task_v1_mobile_operations_tasks__task_id__resolve_post",
        "security": [
          {
            "MobileBearer": []
          }
        ],
        "parameters": [
          {
            "name": "task_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Task Id"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Idempotency-Key"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MobileOperationTaskResolveRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MobileOperationTask"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/mobile/operations/resolve-target/{event_type}/{resource_id}": {
      "get": {
        "tags": [
          "mobile-operations"
        ],
        "summary": "Resolve a legacy ID-only notification into a safe mobile destination",
        "operationId": "resolve_operations_target_v1_mobile_operations_resolve_target__event_type___resource_id__get",
        "security": [
          {
            "MobileBearer": []
          }
        ],
        "parameters": [
          {
            "name": "event_type",
            "in": "path",
            "required": true,
            "schema": {
              "enum": [
                "transfer.missed",
                "transfer.failed",
                "voicemail.created",
                "appointment.changed",
                "emergency_override.expiring",
                "emergency_override.invalid",
                "receptionist.health.changed",
                "integration.failed",
                "operations_task.assigned"
              ],
              "type": "string",
              "title": "Event Type"
            }
          },
          {
            "name": "resource_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Resource Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MobileOperationTarget"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/mobile/receptionist/readiness": {
      "get": {
        "tags": [
          "mobile-receptionist"
        ],
        "summary": "Read role-aware mobile field-operations readiness",
        "description": "Return current checks and their owned repair surfaces, never hidden diagnostics.",
        "operationId": "get_mobile_readiness_v1_mobile_receptionist_readiness_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MobileReadiness"
                }
              }
            }
          }
        },
        "security": [
          {
            "MobileBearer": []
          }
        ]
      }
    },
    "/v1/mobile/step-up/requests": {
      "post": {
        "tags": [
          "mobile-step-up"
        ],
        "summary": "Begin Mobile Step Up",
        "description": "Start one browser confirmation for one canonical mobile mutation payload.",
        "operationId": "begin_mobile_step_up_v1_mobile_step_up_requests_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MobileStepUpBeginRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MobileStepUpBeginResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "MobileBearer": []
          }
        ]
      }
    },
    "/v1/mobile/step-up/requests/{request_id}": {
      "get": {
        "tags": [
          "mobile-step-up"
        ],
        "summary": "Get Mobile Step Up Request",
        "operationId": "get_mobile_step_up_request_v1_mobile_step_up_requests__request_id__get",
        "security": [
          {
            "DashboardSessionCookie": []
          }
        ],
        "parameters": [
          {
            "name": "request_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Request Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MobileStepUpBrowserRequest"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/mobile/step-up/requests/{request_id}/password": {
      "post": {
        "tags": [
          "mobile-step-up"
        ],
        "summary": "Complete Mobile Step Up Password",
        "description": "Verify the current password now; a previous sign-in does not count as freshness.",
        "operationId": "complete_mobile_step_up_password_v1_mobile_step_up_requests__request_id__password_post",
        "security": [
          {
            "DashboardSessionCookie": []
          }
        ],
        "parameters": [
          {
            "name": "request_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Request Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MobileStepUpPasswordRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MobileStepUpCompletion"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/mobile/step-up/requests/{request_id}/email": {
      "post": {
        "tags": [
          "mobile-step-up"
        ],
        "summary": "Start Mobile Step Up Email",
        "description": "Send one fresh verified-email proof for a passwordless account's request.",
        "operationId": "start_mobile_step_up_email_v1_mobile_step_up_requests__request_id__email_post",
        "security": [
          {
            "DashboardSessionCookie": []
          }
        ],
        "parameters": [
          {
            "name": "request_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Request Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MobileStepUpEmailStarted"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/mobile/step-up/requests/{request_id}/email/confirm": {
      "post": {
        "tags": [
          "mobile-step-up"
        ],
        "summary": "Complete Mobile Step Up Email",
        "description": "Spend the fragment-held email credential only for the same signed-in account.",
        "operationId": "complete_mobile_step_up_email_v1_mobile_step_up_requests__request_id__email_confirm_post",
        "security": [
          {
            "DashboardSessionCookie": []
          }
        ],
        "parameters": [
          {
            "name": "request_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Request Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MobileStepUpEmailConfirmationRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MobileStepUpCompletion"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/mobile/receptionist/hub": {
      "get": {
        "tags": [
          "mobile-receptionist"
        ],
        "summary": "Read privacy-safe live receptionist operations by business number",
        "description": "Return operational facts, not a second agent/policy/calling-control surface.",
        "operationId": "list_receptionist_hub_v1_mobile_receptionist_hub_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MobileReceptionistHub"
                }
              }
            }
          }
        },
        "security": [
          {
            "MobileBearer": []
          }
        ]
      }
    },
    "/v1/mobile/receptionist/studio": {
      "get": {
        "tags": [
          "mobile-receptionist"
        ],
        "summary": "List active receptionist lines and their bounded mobile Studio state",
        "operationId": "list_receptionist_studio_v1_mobile_receptionist_studio_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/MobileReceptionistStudioSummary"
                  },
                  "type": "array",
                  "title": "Response List Receptionist Studio V1 Mobile Receptionist Studio Get"
                }
              }
            }
          }
        },
        "security": [
          {
            "MobileBearer": []
          }
        ]
      }
    },
    "/v1/mobile/receptionist/numbers/{number_id}/studio": {
      "get": {
        "tags": [
          "mobile-receptionist"
        ],
        "summary": "Read one mobile receptionist Studio state",
        "operationId": "get_receptionist_studio_v1_mobile_receptionist_numbers__number_id__studio_get",
        "security": [
          {
            "MobileBearer": []
          }
        ],
        "parameters": [
          {
            "name": "number_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Number Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MobileReceptionistStudioSummary"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "mobile-receptionist"
        ],
        "summary": "Version-check and update bounded receptionist business facts",
        "operationId": "patch_receptionist_studio_v1_mobile_receptionist_numbers__number_id__studio_patch",
        "security": [
          {
            "MobileBearer": []
          }
        ],
        "parameters": [
          {
            "name": "number_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Number Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MobileReceptionistStudioPatch"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MobileReceptionistStudioSummary"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/mobile/receptionist/numbers/{number_id}/studio/intelligence-snapshots": {
      "post": {
        "tags": [
          "mobile-receptionist"
        ],
        "summary": "Copy a bounded Mobile Studio revision into canonical intelligence review",
        "description": "Write source evidence only; no policy, route, draft, or published version changes.\n\nThe endpoint gives a mobile operator a safe bridge into the same review queue the web\nportal uses.  It intentionally cannot promote the selected facts, change the phone\nline's schedule/routing, or bypass source approval and release gates.",
        "operationId": "snapshot_studio_to_intelligence_v1_mobile_receptionist_numbers__number_id__studio_intelligence_snapshots_post",
        "security": [
          {
            "MobileBearer": []
          }
        ],
        "parameters": [
          {
            "name": "number_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Number Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MobileStudioIntelligenceSnapshotRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MobileStudioIntelligenceSnapshotResult"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/mobile/receptionist/numbers/{number_id}/test-receptionist": {
      "post": {
        "tags": [
          "mobile-receptionist"
        ],
        "summary": "Authorize the system-dialer test target for a published receptionist",
        "description": "Return an owned business number for native ``tel:`` handoff, never place a call.\n\nThe client must display carrier-charge disclosure and invoke the operating system\ndialer.  This API has no microphone, call-log, contact, or carrier-control capability.",
        "operationId": "authorize_receptionist_test_v1_mobile_receptionist_numbers__number_id__test_receptionist_post",
        "security": [
          {
            "MobileBearer": []
          }
        ],
        "parameters": [
          {
            "name": "number_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Number Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MobileReceptionistTestTarget"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/mobile/workspace/overview": {
      "get": {
        "tags": [
          "mobile-workspace"
        ],
        "summary": "Read the native Owner Command Center workspace overview",
        "operationId": "get_workspace_overview_v1_mobile_workspace_overview_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MobileWorkspaceOverview"
                }
              }
            }
          }
        },
        "security": [
          {
            "MobileBearer": []
          }
        ]
      }
    },
    "/v1/mobile/workspace/setup": {
      "get": {
        "tags": [
          "mobile-workspace"
        ],
        "summary": "Read server-derived mobile Get Live work",
        "operationId": "get_workspace_setup_v1_mobile_workspace_setup_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MobileWorkspaceSetup"
                }
              }
            }
          }
        },
        "security": [
          {
            "MobileBearer": []
          }
        ]
      }
    },
    "/v1/mobile/workspaces": {
      "get": {
        "tags": [
          "mobile-workspace"
        ],
        "summary": "List active workspaces eligible for native browser reauthorization",
        "description": "Return safe labels only; a client must still run the browser PKCE exchange to switch.",
        "operationId": "list_mobile_workspaces_v1_mobile_workspaces_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MobileWorkspaceList"
                }
              }
            }
          }
        },
        "security": [
          {
            "MobileBearer": []
          }
        ]
      }
    },
    "/v1/mobile/billing/summary": {
      "get": {
        "tags": [
          "mobile-workspace"
        ],
        "summary": "Read a safe subscription and billing-health summary",
        "operationId": "get_mobile_billing_summary_v1_mobile_billing_summary_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MobileSubscriptionHealth"
                }
              }
            }
          }
        },
        "security": [
          {
            "MobileBearer": []
          }
        ]
      }
    },
    "/v1/mobile/billing/budget": {
      "put": {
        "tags": [
          "mobile-workspace"
        ],
        "summary": "Set the mobile monthly/daily spend guardrail after fresh browser confirmation",
        "description": "CAS one displayed cap, preserving the wallet's non-mobile threshold and period.\n\nA mobile retry with a lost response cannot replay the state change: the one-use grant\nis consumed and the revision has advanced.  The client receives a conflict on retry,\nreloads the live value, and asks for a fresh browser proof rather than guessing.",
        "operationId": "update_mobile_billing_budget_v1_mobile_billing_budget_put",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MobileBillingBudgetUpdateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MobileBillingBudget"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "MobileBearer": []
          }
        ]
      }
    },
    "/v1/mobile/billing/portal": {
      "post": {
        "tags": [
          "mobile-workspace"
        ],
        "summary": "Mint one Stripe-hosted billing-management link after fresh browser confirmation",
        "description": "Open only the generic hosted billing home; no native payment or plan mutation exists.",
        "operationId": "open_mobile_billing_portal_v1_mobile_billing_portal_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MobileBillingPortalRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MobileBillingPortalSession"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "MobileBearer": []
          }
        ]
      }
    },
    "/v1/mobile/change-feed": {
      "get": {
        "tags": [
          "mobile-change-feed"
        ],
        "summary": "Poll opaque Owner Command Center change hints while the app is foregrounded",
        "description": "Return safe change hints after a tenant-local high-watermark.\n\nThe first request returns a small recent slice to invalidate freshly loaded screens;\nit does not replay audit history.  Each subsequent call must send ``next_cursor`` and\nreceives only entries committed after that immutable version.  Cursor validation is\nperformed against the current tenant's allowed source rows, not merely by decoding it.",
        "operationId": "get_mobile_change_feed_v1_mobile_change_feed_get",
        "security": [
          {
            "MobileBearer": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MobileChangeFeedPage"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/mobile/coach/preferences": {
      "get": {
        "tags": [
          "mobile-coach"
        ],
        "summary": "Read the current device's finite Mobile Coach preferences",
        "operationId": "get_mobile_coach_preferences_v1_mobile_coach_preferences_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MobileCoachPreferences"
                }
              }
            }
          }
        },
        "security": [
          {
            "MobileBearer": []
          }
        ]
      }
    },
    "/v1/mobile/coach/recommendations/{key}": {
      "put": {
        "tags": [
          "mobile-coach"
        ],
        "summary": "Dismiss, snooze, or restore one fixed Coach recommendation on this device",
        "operationId": "update_mobile_coach_recommendation_v1_mobile_coach_recommendations__key__put",
        "security": [
          {
            "MobileBearer": []
          }
        ],
        "parameters": [
          {
            "name": "key",
            "in": "path",
            "required": true,
            "schema": {
              "enum": [
                "team_coverage",
                "transfer_destination",
                "availability",
                "schedule",
                "notifications",
                "calendar_booking",
                "receptionist",
                "capacity",
                "portal"
              ],
              "type": "string",
              "title": "Key"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MobileCoachRecommendationPreferenceChangeRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MobileCoachRecommendationPreference"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/mobile/coach/telemetry-consent": {
      "put": {
        "tags": [
          "mobile-coach"
        ],
        "summary": "Set this device's optional anonymous Coach telemetry election",
        "operationId": "update_mobile_coach_telemetry_consent_v1_mobile_coach_telemetry_consent_put",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MobileCoachTelemetryConsentUpdateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MobileCoachPreferences"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "MobileBearer": []
          }
        ]
      }
    },
    "/v1/mobile/coach/telemetry": {
      "post": {
        "tags": [
          "mobile-coach"
        ],
        "summary": "Record one opted-in anonymous aggregate Coach telemetry bucket",
        "description": "Increment no bucket unless this current device explicitly opted in.\n\nThe repository function receives the five finite aggregate dimensions only. In\nparticular, it is never passed the tenant, membership, device, recommendation key,\nrequest id, customer/call resource, or a raw duration.",
        "operationId": "record_mobile_coach_telemetry_v1_mobile_coach_telemetry_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MobileCoachTelemetryEventRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MobileCoachTelemetryReceipt"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "MobileBearer": []
          }
        ]
      }
    },
    "/v1/mobile/availability/me": {
      "get": {
        "tags": [
          "mobile-availability"
        ],
        "summary": "Read the caller's finite availability declaration",
        "operationId": "get_my_availability_v1_mobile_availability_me_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MobileAvailabilityWindow"
                }
              }
            }
          }
        },
        "security": [
          {
            "MobileBearer": []
          }
        ]
      },
      "put": {
        "tags": [
          "mobile-availability"
        ],
        "summary": "Declare the caller available until a selected expiry",
        "operationId": "set_my_availability_v1_mobile_availability_me_put",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MobileAvailabilitySetRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MobileAvailabilityWindow"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "MobileBearer": []
          }
        ]
      },
      "delete": {
        "tags": [
          "mobile-availability"
        ],
        "summary": "End the caller's availability early",
        "operationId": "end_my_availability_v1_mobile_availability_me_delete",
        "responses": {
          "204": {
            "description": "Successful Response"
          }
        },
        "security": [
          {
            "MobileBearer": []
          }
        ]
      }
    },
    "/v1/mobile/availability": {
      "get": {
        "tags": [
          "mobile-availability"
        ],
        "summary": "List current team availability without exposing transfer phone numbers",
        "operationId": "list_team_availability_v1_mobile_availability_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/MobileAvailabilityWindow"
                  },
                  "type": "array",
                  "title": "Response List Team Availability V1 Mobile Availability Get"
                }
              }
            }
          }
        },
        "security": [
          {
            "MobileBearer": []
          }
        ]
      }
    },
    "/v1/mobile/receptionist/handoffs/{handoff_id}/booking/availability": {
      "post": {
        "tags": [
          "mobile-handoff-booking"
        ],
        "summary": "Issue short-lived calendar choices for a carrier-confirmed handoff",
        "operationId": "handoff_booking_availability_v1_mobile_receptionist_handoffs__handoff_id__booking_availability_post",
        "security": [
          {
            "MobileBearer": []
          }
        ],
        "parameters": [
          {
            "name": "handoff_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Handoff Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MobileHandoffBookingAvailabilityRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MobileHandoffBookingAvailability"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/mobile/receptionist/handoffs/{handoff_id}/booking": {
      "post": {
        "tags": [
          "mobile-handoff-booking"
        ],
        "summary": "Book one server-issued handoff calendar slot",
        "operationId": "create_handoff_booking_v1_mobile_receptionist_handoffs__handoff_id__booking_post",
        "security": [
          {
            "MobileBearer": []
          }
        ],
        "parameters": [
          {
            "name": "handoff_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Handoff Id"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "Unique key for this mobile booking request, so a retry replays the original calendar receipt instead of creating another invitation. Stored for 24 hours; a replay carries `Idempotent-Replay: true`.",
            "schema": {
              "type": "string",
              "maxLength": 255
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MobileHandoffBookingCreateRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MobileHandoffBookingReceipt"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "mobile-handoff-booking"
        ],
        "summary": "Read a handoff booking receipt without calendar or contact data",
        "operationId": "get_handoff_booking_v1_mobile_receptionist_handoffs__handoff_id__booking_get",
        "security": [
          {
            "MobileBearer": []
          }
        ],
        "parameters": [
          {
            "name": "handoff_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Handoff Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MobileHandoffBookingReceipt"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/agreements": {
      "get": {
        "tags": [
          "agreements"
        ],
        "summary": "The served legal documents and this tenant's acceptances",
        "operationId": "list_agreements_v1_agreements_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgreementList"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/v1/agreements/accept": {
      "post": {
        "tags": [
          "agreements"
        ],
        "summary": "Accept the current version of one legal document",
        "operationId": "accept_agreement_v1_agreements_accept_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AgreementAcceptRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgreementAcceptance"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/v1/agents": {
      "get": {
        "tags": [
          "agents"
        ],
        "summary": "List this tenant's agents",
        "operationId": "list_agents_v1_agents_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 200,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          },
          {
            "name": "created_at",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at`. Comma-separated values are OR.",
              "title": "Created At"
            },
            "description": "Filter on `created_at`. Comma-separated values are OR."
          },
          {
            "name": "created_at.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `gte` operator.",
              "title": "Created At.Gte"
            },
            "description": "Filter on `created_at` with the `gte` operator."
          },
          {
            "name": "created_at.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `lte` operator.",
              "title": "Created At.Lte"
            },
            "description": "Filter on `created_at` with the `lte` operator."
          },
          {
            "name": "created_at.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `gt` operator.",
              "title": "Created At.Gt"
            },
            "description": "Filter on `created_at` with the `gt` operator."
          },
          {
            "name": "created_at.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `lt` operator.",
              "title": "Created At.Lt"
            },
            "description": "Filter on `created_at` with the `lt` operator."
          },
          {
            "name": "created_at.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `in` operator.",
              "title": "Created At.In"
            },
            "description": "Filter on `created_at` with the `in` operator."
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status`. Comma-separated values are OR.",
              "title": "Status"
            },
            "description": "Filter on `status`. Comma-separated values are OR."
          },
          {
            "name": "status.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `gte` operator.",
              "title": "Status.Gte"
            },
            "description": "Filter on `status` with the `gte` operator."
          },
          {
            "name": "status.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `lte` operator.",
              "title": "Status.Lte"
            },
            "description": "Filter on `status` with the `lte` operator."
          },
          {
            "name": "status.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `gt` operator.",
              "title": "Status.Gt"
            },
            "description": "Filter on `status` with the `gt` operator."
          },
          {
            "name": "status.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `lt` operator.",
              "title": "Status.Lt"
            },
            "description": "Filter on `status` with the `lt` operator."
          },
          {
            "name": "status.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `in` operator.",
              "title": "Status.In"
            },
            "description": "Filter on `status` with the `in` operator."
          },
          {
            "name": "use_case",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `use_case`. Comma-separated values are OR.",
              "title": "Use Case"
            },
            "description": "Filter on `use_case`. Comma-separated values are OR."
          },
          {
            "name": "use_case.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `use_case` with the `gte` operator.",
              "title": "Use Case.Gte"
            },
            "description": "Filter on `use_case` with the `gte` operator."
          },
          {
            "name": "use_case.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `use_case` with the `lte` operator.",
              "title": "Use Case.Lte"
            },
            "description": "Filter on `use_case` with the `lte` operator."
          },
          {
            "name": "use_case.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `use_case` with the `gt` operator.",
              "title": "Use Case.Gt"
            },
            "description": "Filter on `use_case` with the `gt` operator."
          },
          {
            "name": "use_case.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `use_case` with the `lt` operator.",
              "title": "Use Case.Lt"
            },
            "description": "Filter on `use_case` with the `lt` operator."
          },
          {
            "name": "use_case.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `use_case` with the `in` operator.",
              "title": "Use Case.In"
            },
            "description": "Filter on `use_case` with the `in` operator."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorPage_AgentSummary_"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "agents"
        ],
        "summary": "Create an agent definition",
        "operationId": "create_agent_v1_agents_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Unique key for this request, so a retry replays the original result instead of repeating the work. Stored for 24 hours; a replayed response carries `Idempotent-Replay: true`. A UUID is the documented shape.",
              "title": "Idempotency-Key"
            },
            "description": "Unique key for this request, so a retry replays the original result instead of repeating the work. Stored for 24 hours; a replayed response carries `Idempotent-Replay: true`. A UUID is the documented shape."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AgentCreateRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentResource"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/agents/{agent_id}": {
      "get": {
        "tags": [
          "agents"
        ],
        "summary": "Read one agent definition",
        "operationId": "read_agent_v1_agents__agent_id__get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "agent_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Agent Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentResource"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "agents"
        ],
        "summary": "Edit an agent definition",
        "operationId": "update_agent_v1_agents__agent_id__patch",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "agent_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Agent Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AgentUpdateRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentResource"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/agents/{agent_id}/release-gate-evaluations": {
      "post": {
        "tags": [
          "agents"
        ],
        "summary": "Queue a scripted golden-transcript release evaluation",
        "description": "Queue one replay of the exact draft the customer sees now.\n\nThis route does not run a model or any tenant integration. It only snapshots the\ndraft, locks the definition while it deduplicates a request retry, and leaves the\ndeployment's scripted release worker to later replay built-in goldens with sandboxed tools.\nUntil that worker is deployed and claims the run, the customer-visible state remains queued.",
        "operationId": "request_release_gate_evaluation_v1_agents__agent_id__release_gate_evaluations_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "agent_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Agent Id"
            }
          }
        ],
        "responses": {
          "202": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReleaseGateEvaluationRequest"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "agents"
        ],
        "summary": "List release-gate evaluations for an agent",
        "operationId": "list_release_gate_evaluations_v1_agents__agent_id__release_gate_evaluations_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "agent_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Agent Id"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 200,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorPage_ReleaseGateEvaluation_"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/agents/{agent_id}/receptionist-release": {
      "get": {
        "tags": [
          "agents"
        ],
        "summary": "Read receptionist release readiness, evidence status, and rollback availability",
        "description": "Expose a compact control-center view without leaking sealed prompt knowledge.\n\nA passing scripted replay keeps its historic meaning (publish-ready), while\n``production_ready`` requires the separate live-model and carrier evidence that a\nsilent or misrouted PSTN session actually depends on.",
        "operationId": "read_receptionist_release_status_v1_agents__agent_id__receptionist_release_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "agent_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Agent Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceptionistReleaseStatus"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/agents/{agent_id}/receptionist-release/rollback": {
      "post": {
        "tags": [
          "agents"
        ],
        "summary": "Immediately restore a policy-compatible healthy receptionist snapshot",
        "description": "Clone a prior healthy snapshot into a new active immutable version.\n\nThe prior row is never mutated.  New inbound calls follow the definition's new latest\nversion, existing calls retain their original pinned version, and the endpoint refuses\nif any current policy would select a location missing from the rollback target.",
        "operationId": "rollback_receptionist_release_v1_agents__agent_id__receptionist_release_rollback_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "agent_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Agent Id"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Unique key for this request, so a retry replays the original result instead of repeating the work. Stored for 24 hours; a replayed response carries `Idempotent-Replay: true`. A UUID is the documented shape.",
              "title": "Idempotency-Key"
            },
            "description": "Unique key for this request, so a retry replays the original result instead of repeating the work. Stored for 24 hours; a replayed response carries `Idempotent-Replay: true`. A UUID is the documented shape."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReceptionistRollbackRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceptionistRollbackResult"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/agents/{agent_id}/versions/{version}/voicemail-message": {
      "get": {
        "tags": [
          "agents"
        ],
        "summary": "The exact voicemail message one published version leaves",
        "description": "Show the customer the text that will actually be spoken.\n\nServed from the **same composer the drop uses**, on the **same pinned snapshot** the\ndrop reads, which is what makes this a proof rather than a mock-up: if this endpoint\nand a live drop could disagree, the platform would not really be the one composing the\nmessage. `estimated_seconds` is named an estimate because `<Say>` renders at Twilio's\nrate, not ours.\n\nThe compliance-profile extension text is deliberately omitted, exactly as at publish:\nit can only lengthen the opener, so the text here is the shortest lawful form of the\nmessage rather than a different one.",
        "operationId": "read_voicemail_message_v1_agents__agent_id__versions__version__voicemail_message_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "agent_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Agent Id"
            }
          },
          {
            "name": "version",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "title": "Version"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VoicemailMessage"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/agents/{agent_id}/publish": {
      "post": {
        "tags": [
          "agents"
        ],
        "summary": "Publish an immutable version of an agent",
        "operationId": "publish_agent_v1_agents__agent_id__publish_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "agent_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Agent Id"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentVersionResource"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/agents/{agent_id}/versions": {
      "get": {
        "tags": [
          "agents"
        ],
        "summary": "List an agent's published versions",
        "operationId": "list_agent_versions_v1_agents__agent_id__versions_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "agent_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Agent Id"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 200,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorPage_AgentVersionSummary_"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/templates": {
      "get": {
        "tags": [
          "agents"
        ],
        "summary": "List the platform template library",
        "operationId": "list_templates_v1_templates_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 200,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          },
          {
            "name": "outcome_type",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `outcome_type`. Comma-separated values are OR.",
              "title": "Outcome Type"
            },
            "description": "Filter on `outcome_type`. Comma-separated values are OR."
          },
          {
            "name": "outcome_type.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `outcome_type` with the `gte` operator.",
              "title": "Outcome Type.Gte"
            },
            "description": "Filter on `outcome_type` with the `gte` operator."
          },
          {
            "name": "outcome_type.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `outcome_type` with the `lte` operator.",
              "title": "Outcome Type.Lte"
            },
            "description": "Filter on `outcome_type` with the `lte` operator."
          },
          {
            "name": "outcome_type.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `outcome_type` with the `gt` operator.",
              "title": "Outcome Type.Gt"
            },
            "description": "Filter on `outcome_type` with the `gt` operator."
          },
          {
            "name": "outcome_type.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `outcome_type` with the `lt` operator.",
              "title": "Outcome Type.Lt"
            },
            "description": "Filter on `outcome_type` with the `lt` operator."
          },
          {
            "name": "outcome_type.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `outcome_type` with the `in` operator.",
              "title": "Outcome Type.In"
            },
            "description": "Filter on `outcome_type` with the `in` operator."
          },
          {
            "name": "use_case",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `use_case`. Comma-separated values are OR.",
              "title": "Use Case"
            },
            "description": "Filter on `use_case`. Comma-separated values are OR."
          },
          {
            "name": "use_case.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `use_case` with the `gte` operator.",
              "title": "Use Case.Gte"
            },
            "description": "Filter on `use_case` with the `gte` operator."
          },
          {
            "name": "use_case.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `use_case` with the `lte` operator.",
              "title": "Use Case.Lte"
            },
            "description": "Filter on `use_case` with the `lte` operator."
          },
          {
            "name": "use_case.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `use_case` with the `gt` operator.",
              "title": "Use Case.Gt"
            },
            "description": "Filter on `use_case` with the `gt` operator."
          },
          {
            "name": "use_case.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `use_case` with the `lt` operator.",
              "title": "Use Case.Lt"
            },
            "description": "Filter on `use_case` with the `lt` operator."
          },
          {
            "name": "use_case.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `use_case` with the `in` operator.",
              "title": "Use Case.In"
            },
            "description": "Filter on `use_case` with the `in` operator."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorPage_TemplateSummary_"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/templates/{template_id}": {
      "get": {
        "tags": [
          "agents"
        ],
        "summary": "Read one template, seed included",
        "operationId": "read_template_v1_templates__template_id__get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "template_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Template Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TemplateResource"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/templates/{template_id}/instantiate": {
      "post": {
        "tags": [
          "agents"
        ],
        "summary": "Create an editable agent from a template",
        "operationId": "instantiate_template_v1_templates__template_id__instantiate_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "template_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Template Id"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Unique key for this request, so a retry replays the original result instead of repeating the work. Stored for 24 hours; a replayed response carries `Idempotent-Replay: true`. A UUID is the documented shape.",
              "title": "Idempotency-Key"
            },
            "description": "Unique key for this request, so a retry replays the original result instead of repeating the work. Stored for 24 hours; a replayed response carries `Idempotent-Replay: true`. A UUID is the documented shape."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TemplateInstantiateRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentResource"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/agents/{agent_id}/receptionist-intelligence": {
      "get": {
        "tags": [
          "receptionist-intelligence"
        ],
        "summary": "Read a receptionist's structured business intelligence draft",
        "operationId": "read_intelligence_v1_agents__agent_id__receptionist_intelligence_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "agent_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Agent Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceptionistIntelligenceSummary"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "receptionist-intelligence"
        ],
        "summary": "Create or replace a receptionist's structured business intelligence draft",
        "operationId": "upsert_intelligence_v1_agents__agent_id__receptionist_intelligence_put",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "agent_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Agent Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReceptionistIntelligenceUpsertRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceptionistIntelligenceSummary"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/agents/{agent_id}/receptionist-intelligence/preview": {
      "get": {
        "tags": [
          "receptionist-intelligence"
        ],
        "summary": "Preview the compact business knowledge a receptionist version would receive",
        "operationId": "preview_intelligence_v1_agents__agent_id__receptionist_intelligence_preview_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "agent_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Agent Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceptionistIntelligencePreview"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/agents/{agent_id}/receptionist-intelligence/sources": {
      "get": {
        "tags": [
          "receptionist-intelligence"
        ],
        "summary": "List immutable source snapshots backing receptionist intelligence",
        "operationId": "list_sources_v1_agents__agent_id__receptionist_intelligence_sources_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "agent_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Agent Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ReceptionistSourceSummary"
                  },
                  "title": "Response List Sources V1 Agents  Agent Id  Receptionist Intelligence Sources Get"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "receptionist-intelligence"
        ],
        "summary": "Add a pending document or website snapshot for receptionist fact review",
        "operationId": "add_source_v1_agents__agent_id__receptionist_intelligence_sources_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "agent_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Agent Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReceptionistSourceCreateRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceptionistSourceSummary"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/agents/{agent_id}/receptionist-intelligence/sources/{source_id}": {
      "get": {
        "tags": [
          "receptionist-intelligence"
        ],
        "summary": "Read an immutable receptionist source snapshot for fact review",
        "operationId": "read_source_v1_agents__agent_id__receptionist_intelligence_sources__source_id__get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "agent_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Agent Id"
            }
          },
          {
            "name": "source_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Source Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceptionistSourceResource"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/agents/{agent_id}/receptionist-intelligence/sources/{source_id}/approve": {
      "post": {
        "tags": [
          "receptionist-intelligence"
        ],
        "summary": "Approve an immutable source snapshot for cited receptionist facts",
        "operationId": "approve_source_v1_agents__agent_id__receptionist_intelligence_sources__source_id__approve_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "agent_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Agent Id"
            }
          },
          {
            "name": "source_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Source Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReceptionistSourceReviewRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceptionistSourceSummary"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/agents/{agent_id}/receptionist-intelligence/sources/{source_id}/reject": {
      "post": {
        "tags": [
          "receptionist-intelligence"
        ],
        "summary": "Reject an immutable source snapshot and preserve the review reason",
        "operationId": "reject_source_v1_agents__agent_id__receptionist_intelligence_sources__source_id__reject_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "agent_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Agent Id"
            }
          },
          {
            "name": "source_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Source Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReceptionistSourceReviewRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceptionistSourceSummary"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/agents/{agent_id}/receptionist-intelligence/sources/{source_id}/refresh": {
      "post": {
        "tags": [
          "receptionist-intelligence"
        ],
        "summary": "Create a manually refreshed immutable website snapshot",
        "operationId": "refresh_source_v1_agents__agent_id__receptionist_intelligence_sources__source_id__refresh_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "agent_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Agent Id"
            }
          },
          {
            "name": "source_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Source Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReceptionistSourceRefreshRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceptionistSourceResource"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/agents/{agent_id}/receptionist-intelligence/versions": {
      "post": {
        "tags": [
          "receptionist-intelligence"
        ],
        "summary": "Publish the current reviewed receptionist intelligence as an immutable revision",
        "operationId": "publish_intelligence_v1_agents__agent_id__receptionist_intelligence_versions_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "agent_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Agent Id"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceptionistIntelligenceVersionResource"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "receptionist-intelligence"
        ],
        "summary": "List a receptionist's immutable business-intelligence release history",
        "operationId": "list_intelligence_versions_v1_agents__agent_id__receptionist_intelligence_versions_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "agent_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Agent Id"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ReceptionistIntelligenceVersionSummary"
                  },
                  "title": "Response List Intelligence Versions V1 Agents  Agent Id  Receptionist Intelligence Versions Get"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/agents/{agent_id}/receptionist-intelligence/versions/{version}": {
      "get": {
        "tags": [
          "receptionist-intelligence"
        ],
        "summary": "Read one immutable receptionist intelligence revision",
        "operationId": "read_intelligence_version_v1_agents__agent_id__receptionist_intelligence_versions__version__get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "agent_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Agent Id"
            }
          },
          {
            "name": "version",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "title": "Version"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceptionistIntelligenceVersionResource"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/agents/{agent_id}/receptionist-regression-cases": {
      "get": {
        "tags": [
          "receptionist-regression-cases"
        ],
        "summary": "List the current immutable revisions of a receptionist's regression cases",
        "operationId": "list_regression_cases_v1_agents__agent_id__receptionist_regression_cases_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "agent_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Agent Id"
            }
          },
          {
            "name": "include_archived",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": false,
              "title": "Include Archived"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ReceptionistRegressionCaseSummary"
                  },
                  "title": "Response List Regression Cases V1 Agents  Agent Id  Receptionist Regression Cases Get"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "receptionist-regression-cases"
        ],
        "summary": "Create a versioned customer-authored receptionist regression case",
        "operationId": "create_regression_case_v1_agents__agent_id__receptionist_regression_cases_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "agent_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Agent Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReceptionistRegressionCaseCreateRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceptionistRegressionCaseSummary"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/agents/{agent_id}/receptionist-regression-cases/{case_id}/versions": {
      "get": {
        "tags": [
          "receptionist-regression-cases"
        ],
        "summary": "List an immutable receptionist regression case's revision history",
        "operationId": "list_regression_case_versions_v1_agents__agent_id__receptionist_regression_cases__case_id__versions_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "agent_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Agent Id"
            }
          },
          {
            "name": "case_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Case Id"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ReceptionistRegressionCaseVersionSummary"
                  },
                  "title": "Response List Regression Case Versions V1 Agents  Agent Id  Receptionist Regression Cases  Case Id  Versions Get"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/agents/{agent_id}/receptionist-regression-cases/{case_id}/versions/{version}": {
      "get": {
        "tags": [
          "receptionist-regression-cases"
        ],
        "summary": "Read one immutable receptionist regression case revision",
        "operationId": "read_regression_case_version_v1_agents__agent_id__receptionist_regression_cases__case_id__versions__version__get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "agent_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Agent Id"
            }
          },
          {
            "name": "case_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Case Id"
            }
          },
          {
            "name": "version",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "title": "Version"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceptionistRegressionCaseVersionSummary"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/agents/{agent_id}/receptionist-regression-cases/{case_id}": {
      "put": {
        "tags": [
          "receptionist-regression-cases"
        ],
        "summary": "Append a new immutable receptionist regression case revision",
        "operationId": "update_regression_case_v1_agents__agent_id__receptionist_regression_cases__case_id__put",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "agent_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Agent Id"
            }
          },
          {
            "name": "case_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Case Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReceptionistRegressionCaseUpdateRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceptionistRegressionCaseSummary"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "receptionist-regression-cases"
        ],
        "summary": "Read the current immutable revision of a receptionist regression case",
        "operationId": "read_regression_case_v1_agents__agent_id__receptionist_regression_cases__case_id__get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "agent_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Agent Id"
            }
          },
          {
            "name": "case_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Case Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceptionistRegressionCaseSummary"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/agents/{agent_id}/receptionist-regression-cases/{case_id}/archive": {
      "post": {
        "tags": [
          "receptionist-regression-cases"
        ],
        "summary": "Archive a regression case so later release gates no longer execute it",
        "operationId": "archive_regression_case_v1_agents__agent_id__receptionist_regression_cases__case_id__archive_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "agent_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Agent Id"
            }
          },
          {
            "name": "case_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Case Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReceptionistRegressionCaseArchiveRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceptionistRegressionCaseSummary"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/voices": {
      "get": {
        "tags": [
          "voices"
        ],
        "summary": "List the platform stock-voice catalog",
        "operationId": "list_voices_v1_voices_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 200,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorPage_VoiceSummary_"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/knowledge-packs": {
      "get": {
        "tags": [
          "knowledge"
        ],
        "summary": "List this tenant's knowledge packs",
        "operationId": "list_knowledge_packs_v1_knowledge_packs_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 200,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          },
          {
            "name": "created_at",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at`. Comma-separated values are OR.",
              "title": "Created At"
            },
            "description": "Filter on `created_at`. Comma-separated values are OR."
          },
          {
            "name": "created_at.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `gte` operator.",
              "title": "Created At.Gte"
            },
            "description": "Filter on `created_at` with the `gte` operator."
          },
          {
            "name": "created_at.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `lte` operator.",
              "title": "Created At.Lte"
            },
            "description": "Filter on `created_at` with the `lte` operator."
          },
          {
            "name": "created_at.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `gt` operator.",
              "title": "Created At.Gt"
            },
            "description": "Filter on `created_at` with the `gt` operator."
          },
          {
            "name": "created_at.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `lt` operator.",
              "title": "Created At.Lt"
            },
            "description": "Filter on `created_at` with the `lt` operator."
          },
          {
            "name": "created_at.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `in` operator.",
              "title": "Created At.In"
            },
            "description": "Filter on `created_at` with the `in` operator."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorPage_KnowledgePackSummary_"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "knowledge"
        ],
        "summary": "Create a knowledge pack",
        "operationId": "create_knowledge_pack_v1_knowledge_packs_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Unique key for this request, so a retry replays the original result instead of repeating the work. Stored for 24 hours; a replayed response carries `Idempotent-Replay: true`. A UUID is the documented shape.",
              "title": "Idempotency-Key"
            },
            "description": "Unique key for this request, so a retry replays the original result instead of repeating the work. Stored for 24 hours; a replayed response carries `Idempotent-Replay: true`. A UUID is the documented shape."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KnowledgePackCreateRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KnowledgePackSummary"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/knowledge-packs/{pack_id}/versions": {
      "post": {
        "tags": [
          "knowledge"
        ],
        "summary": "Publish an edit as the pack's next immutable version",
        "operationId": "create_knowledge_pack_version_v1_knowledge_packs__pack_id__versions_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "pack_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Pack Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KnowledgePackVersionCreateRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KnowledgePackVersionResource"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/knowledge-packs/{pack_id}/documents": {
      "post": {
        "tags": [
          "knowledge"
        ],
        "summary": "Ingest uploaded documents as the pack's next immutable version",
        "description": "Upload pdf/docx/csv/md/txt and publish the extraction as the next version.\n\nEverything that can refuse the upload - decoding, extraction, sectioning, the real\ntoken count, the hard cap - runs first and touches no database. Only a pack that has\nalready compiled inside the cap reaches `create_version`, which re-checks the cap\nitself before its own first statement. The ordering CANON fact 12 depends on therefore\nholds twice over: an over-cap upload consumes no version number and writes nothing.",
        "operationId": "ingest_knowledge_pack_documents_v1_knowledge_packs__pack_id__documents_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "pack_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Pack Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KnowledgePackIngestRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KnowledgePackIngestResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/knowledge-packs/{pack_id}/versions/{version}": {
      "get": {
        "tags": [
          "knowledge"
        ],
        "summary": "Read one compiled version - the exact text the model sees",
        "operationId": "read_knowledge_pack_version_v1_knowledge_packs__pack_id__versions__version__get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "pack_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Pack Id"
            }
          },
          {
            "name": "version",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "title": "Version"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KnowledgePackVersionResource"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/voice-profiles": {
      "get": {
        "tags": [
          "knowledge"
        ],
        "summary": "List this tenant's voice profiles",
        "operationId": "list_voice_profiles_v1_voice_profiles_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 200,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          },
          {
            "name": "created_at",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at`. Comma-separated values are OR.",
              "title": "Created At"
            },
            "description": "Filter on `created_at`. Comma-separated values are OR."
          },
          {
            "name": "created_at.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `gte` operator.",
              "title": "Created At.Gte"
            },
            "description": "Filter on `created_at` with the `gte` operator."
          },
          {
            "name": "created_at.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `lte` operator.",
              "title": "Created At.Lte"
            },
            "description": "Filter on `created_at` with the `lte` operator."
          },
          {
            "name": "created_at.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `gt` operator.",
              "title": "Created At.Gt"
            },
            "description": "Filter on `created_at` with the `gt` operator."
          },
          {
            "name": "created_at.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `lt` operator.",
              "title": "Created At.Lt"
            },
            "description": "Filter on `created_at` with the `lt` operator."
          },
          {
            "name": "created_at.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `in` operator.",
              "title": "Created At.In"
            },
            "description": "Filter on `created_at` with the `in` operator."
          },
          {
            "name": "language",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `language`. Comma-separated values are OR.",
              "title": "Language"
            },
            "description": "Filter on `language`. Comma-separated values are OR."
          },
          {
            "name": "language.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `language` with the `gte` operator.",
              "title": "Language.Gte"
            },
            "description": "Filter on `language` with the `gte` operator."
          },
          {
            "name": "language.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `language` with the `lte` operator.",
              "title": "Language.Lte"
            },
            "description": "Filter on `language` with the `lte` operator."
          },
          {
            "name": "language.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `language` with the `gt` operator.",
              "title": "Language.Gt"
            },
            "description": "Filter on `language` with the `gt` operator."
          },
          {
            "name": "language.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `language` with the `lt` operator.",
              "title": "Language.Lt"
            },
            "description": "Filter on `language` with the `lt` operator."
          },
          {
            "name": "language.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `language` with the `in` operator.",
              "title": "Language.In"
            },
            "description": "Filter on `language` with the `in` operator."
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status`. Comma-separated values are OR.",
              "title": "Status"
            },
            "description": "Filter on `status`. Comma-separated values are OR."
          },
          {
            "name": "status.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `gte` operator.",
              "title": "Status.Gte"
            },
            "description": "Filter on `status` with the `gte` operator."
          },
          {
            "name": "status.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `lte` operator.",
              "title": "Status.Lte"
            },
            "description": "Filter on `status` with the `lte` operator."
          },
          {
            "name": "status.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `gt` operator.",
              "title": "Status.Gt"
            },
            "description": "Filter on `status` with the `gt` operator."
          },
          {
            "name": "status.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `lt` operator.",
              "title": "Status.Lt"
            },
            "description": "Filter on `status` with the `lt` operator."
          },
          {
            "name": "status.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `in` operator.",
              "title": "Status.In"
            },
            "description": "Filter on `status` with the `in` operator."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorPage_VoiceProfileSummary_"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "knowledge"
        ],
        "summary": "Withdrawn - voice profiles can no longer be created",
        "operationId": "create_voice_profile_v1_voice_profiles_post",
        "deprecated": true,
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "responses": {
          "410": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          }
        }
      }
    },
    "/v1/voice-rights-attestation": {
      "get": {
        "tags": [
          "knowledge"
        ],
        "summary": "The Voice Rights & Consent Attestation this deployment serves",
        "operationId": "read_voice_rights_attestation_v1_voice_rights_attestation_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VoiceRightsAttestationDocument"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/v1/voice-clone-consent-form": {
      "get": {
        "tags": [
          "knowledge"
        ],
        "summary": "The printable consent form the voice owner signs",
        "operationId": "read_voice_clone_consent_form_v1_voice_clone_consent_form_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VoiceRightsAttestationDocument"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/v1/voice-profiles/{profile_id}": {
      "get": {
        "tags": [
          "knowledge"
        ],
        "summary": "Read one voice profile",
        "operationId": "read_voice_profile_v1_voice_profiles__profile_id__get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "profile_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Profile Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VoiceProfileSummary"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/voice-profiles/{profile_id}/sample-recording": {
      "post": {
        "tags": [
          "knowledge"
        ],
        "summary": "Withdrawn - voice samples are no longer accepted",
        "operationId": "upload_sample_recording_v1_voice_profiles__profile_id__sample_recording_post",
        "deprecated": true,
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "profile_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Profile Id"
            }
          }
        ],
        "responses": {
          "410": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/voice-profiles/{profile_id}/consent-recording": {
      "post": {
        "tags": [
          "knowledge"
        ],
        "summary": "Withdrawn - consent artifacts are no longer accepted",
        "operationId": "upload_consent_recording_v1_voice_profiles__profile_id__consent_recording_post",
        "deprecated": true,
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "profile_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Profile Id"
            }
          }
        ],
        "responses": {
          "410": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/voice-profiles/{profile_id}/consent-proof": {
      "post": {
        "tags": [
          "knowledge"
        ],
        "summary": "Withdrawn - consent releases are no longer accepted",
        "operationId": "attach_consent_proof_v1_voice_profiles__profile_id__consent_proof_post",
        "deprecated": true,
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "profile_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Profile Id"
            }
          }
        ],
        "responses": {
          "410": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/contacts": {
      "get": {
        "tags": [
          "contacts"
        ],
        "summary": "List contacts",
        "operationId": "list_contacts_v1_contacts_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 200,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          },
          {
            "name": "best_consent_class",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `best_consent_class`. Comma-separated values are OR.",
              "title": "Best Consent Class"
            },
            "description": "Filter on `best_consent_class`. Comma-separated values are OR."
          },
          {
            "name": "best_consent_class.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `best_consent_class` with the `gte` operator.",
              "title": "Best Consent Class.Gte"
            },
            "description": "Filter on `best_consent_class` with the `gte` operator."
          },
          {
            "name": "best_consent_class.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `best_consent_class` with the `lte` operator.",
              "title": "Best Consent Class.Lte"
            },
            "description": "Filter on `best_consent_class` with the `lte` operator."
          },
          {
            "name": "best_consent_class.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `best_consent_class` with the `gt` operator.",
              "title": "Best Consent Class.Gt"
            },
            "description": "Filter on `best_consent_class` with the `gt` operator."
          },
          {
            "name": "best_consent_class.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `best_consent_class` with the `lt` operator.",
              "title": "Best Consent Class.Lt"
            },
            "description": "Filter on `best_consent_class` with the `lt` operator."
          },
          {
            "name": "best_consent_class.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `best_consent_class` with the `in` operator.",
              "title": "Best Consent Class.In"
            },
            "description": "Filter on `best_consent_class` with the `in` operator."
          },
          {
            "name": "company",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `company`. Comma-separated values are OR.",
              "title": "Company"
            },
            "description": "Filter on `company`. Comma-separated values are OR."
          },
          {
            "name": "company.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `company` with the `gte` operator.",
              "title": "Company.Gte"
            },
            "description": "Filter on `company` with the `gte` operator."
          },
          {
            "name": "company.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `company` with the `lte` operator.",
              "title": "Company.Lte"
            },
            "description": "Filter on `company` with the `lte` operator."
          },
          {
            "name": "company.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `company` with the `gt` operator.",
              "title": "Company.Gt"
            },
            "description": "Filter on `company` with the `gt` operator."
          },
          {
            "name": "company.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `company` with the `lt` operator.",
              "title": "Company.Lt"
            },
            "description": "Filter on `company` with the `lt` operator."
          },
          {
            "name": "company.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `company` with the `in` operator.",
              "title": "Company.In"
            },
            "description": "Filter on `company` with the `in` operator."
          },
          {
            "name": "contact_list_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `contact_list_id`. Comma-separated values are OR.",
              "title": "Contact List Id"
            },
            "description": "Filter on `contact_list_id`. Comma-separated values are OR."
          },
          {
            "name": "contact_list_id.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `contact_list_id` with the `gte` operator.",
              "title": "Contact List Id.Gte"
            },
            "description": "Filter on `contact_list_id` with the `gte` operator."
          },
          {
            "name": "contact_list_id.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `contact_list_id` with the `lte` operator.",
              "title": "Contact List Id.Lte"
            },
            "description": "Filter on `contact_list_id` with the `lte` operator."
          },
          {
            "name": "contact_list_id.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `contact_list_id` with the `gt` operator.",
              "title": "Contact List Id.Gt"
            },
            "description": "Filter on `contact_list_id` with the `gt` operator."
          },
          {
            "name": "contact_list_id.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `contact_list_id` with the `lt` operator.",
              "title": "Contact List Id.Lt"
            },
            "description": "Filter on `contact_list_id` with the `lt` operator."
          },
          {
            "name": "contact_list_id.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `contact_list_id` with the `in` operator.",
              "title": "Contact List Id.In"
            },
            "description": "Filter on `contact_list_id` with the `in` operator."
          },
          {
            "name": "created_at",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at`. Comma-separated values are OR.",
              "title": "Created At"
            },
            "description": "Filter on `created_at`. Comma-separated values are OR."
          },
          {
            "name": "created_at.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `gte` operator.",
              "title": "Created At.Gte"
            },
            "description": "Filter on `created_at` with the `gte` operator."
          },
          {
            "name": "created_at.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `lte` operator.",
              "title": "Created At.Lte"
            },
            "description": "Filter on `created_at` with the `lte` operator."
          },
          {
            "name": "created_at.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `gt` operator.",
              "title": "Created At.Gt"
            },
            "description": "Filter on `created_at` with the `gt` operator."
          },
          {
            "name": "created_at.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `lt` operator.",
              "title": "Created At.Lt"
            },
            "description": "Filter on `created_at` with the `lt` operator."
          },
          {
            "name": "created_at.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `in` operator.",
              "title": "Created At.In"
            },
            "description": "Filter on `created_at` with the `in` operator."
          },
          {
            "name": "do_not_call",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `do_not_call`. Comma-separated values are OR.",
              "title": "Do Not Call"
            },
            "description": "Filter on `do_not_call`. Comma-separated values are OR."
          },
          {
            "name": "do_not_call.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `do_not_call` with the `gte` operator.",
              "title": "Do Not Call.Gte"
            },
            "description": "Filter on `do_not_call` with the `gte` operator."
          },
          {
            "name": "do_not_call.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `do_not_call` with the `lte` operator.",
              "title": "Do Not Call.Lte"
            },
            "description": "Filter on `do_not_call` with the `lte` operator."
          },
          {
            "name": "do_not_call.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `do_not_call` with the `gt` operator.",
              "title": "Do Not Call.Gt"
            },
            "description": "Filter on `do_not_call` with the `gt` operator."
          },
          {
            "name": "do_not_call.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `do_not_call` with the `lt` operator.",
              "title": "Do Not Call.Lt"
            },
            "description": "Filter on `do_not_call` with the `lt` operator."
          },
          {
            "name": "do_not_call.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `do_not_call` with the `in` operator.",
              "title": "Do Not Call.In"
            },
            "description": "Filter on `do_not_call` with the `in` operator."
          },
          {
            "name": "lead_status",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `lead_status`. Comma-separated values are OR.",
              "title": "Lead Status"
            },
            "description": "Filter on `lead_status`. Comma-separated values are OR."
          },
          {
            "name": "lead_status.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `lead_status` with the `gte` operator.",
              "title": "Lead Status.Gte"
            },
            "description": "Filter on `lead_status` with the `gte` operator."
          },
          {
            "name": "lead_status.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `lead_status` with the `lte` operator.",
              "title": "Lead Status.Lte"
            },
            "description": "Filter on `lead_status` with the `lte` operator."
          },
          {
            "name": "lead_status.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `lead_status` with the `gt` operator.",
              "title": "Lead Status.Gt"
            },
            "description": "Filter on `lead_status` with the `gt` operator."
          },
          {
            "name": "lead_status.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `lead_status` with the `lt` operator.",
              "title": "Lead Status.Lt"
            },
            "description": "Filter on `lead_status` with the `lt` operator."
          },
          {
            "name": "lead_status.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `lead_status` with the `in` operator.",
              "title": "Lead Status.In"
            },
            "description": "Filter on `lead_status` with the `in` operator."
          },
          {
            "name": "owner_user_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `owner_user_id`. Comma-separated values are OR.",
              "title": "Owner User Id"
            },
            "description": "Filter on `owner_user_id`. Comma-separated values are OR."
          },
          {
            "name": "owner_user_id.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `owner_user_id` with the `gte` operator.",
              "title": "Owner User Id.Gte"
            },
            "description": "Filter on `owner_user_id` with the `gte` operator."
          },
          {
            "name": "owner_user_id.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `owner_user_id` with the `lte` operator.",
              "title": "Owner User Id.Lte"
            },
            "description": "Filter on `owner_user_id` with the `lte` operator."
          },
          {
            "name": "owner_user_id.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `owner_user_id` with the `gt` operator.",
              "title": "Owner User Id.Gt"
            },
            "description": "Filter on `owner_user_id` with the `gt` operator."
          },
          {
            "name": "owner_user_id.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `owner_user_id` with the `lt` operator.",
              "title": "Owner User Id.Lt"
            },
            "description": "Filter on `owner_user_id` with the `lt` operator."
          },
          {
            "name": "owner_user_id.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `owner_user_id` with the `in` operator.",
              "title": "Owner User Id.In"
            },
            "description": "Filter on `owner_user_id` with the `in` operator."
          },
          {
            "name": "phone_e164",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `phone_e164`. Comma-separated values are OR.",
              "title": "Phone E164"
            },
            "description": "Filter on `phone_e164`. Comma-separated values are OR."
          },
          {
            "name": "phone_e164.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `phone_e164` with the `gte` operator.",
              "title": "Phone E164.Gte"
            },
            "description": "Filter on `phone_e164` with the `gte` operator."
          },
          {
            "name": "phone_e164.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `phone_e164` with the `lte` operator.",
              "title": "Phone E164.Lte"
            },
            "description": "Filter on `phone_e164` with the `lte` operator."
          },
          {
            "name": "phone_e164.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `phone_e164` with the `gt` operator.",
              "title": "Phone E164.Gt"
            },
            "description": "Filter on `phone_e164` with the `gt` operator."
          },
          {
            "name": "phone_e164.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `phone_e164` with the `lt` operator.",
              "title": "Phone E164.Lt"
            },
            "description": "Filter on `phone_e164` with the `lt` operator."
          },
          {
            "name": "phone_e164.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `phone_e164` with the `in` operator.",
              "title": "Phone E164.In"
            },
            "description": "Filter on `phone_e164` with the `in` operator."
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `q`. Comma-separated values are OR.",
              "title": "Q"
            },
            "description": "Filter on `q`. Comma-separated values are OR."
          },
          {
            "name": "q.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `q` with the `gte` operator.",
              "title": "Q.Gte"
            },
            "description": "Filter on `q` with the `gte` operator."
          },
          {
            "name": "q.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `q` with the `lte` operator.",
              "title": "Q.Lte"
            },
            "description": "Filter on `q` with the `lte` operator."
          },
          {
            "name": "q.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `q` with the `gt` operator.",
              "title": "Q.Gt"
            },
            "description": "Filter on `q` with the `gt` operator."
          },
          {
            "name": "q.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `q` with the `lt` operator.",
              "title": "Q.Lt"
            },
            "description": "Filter on `q` with the `lt` operator."
          },
          {
            "name": "q.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `q` with the `in` operator.",
              "title": "Q.In"
            },
            "description": "Filter on `q` with the `in` operator."
          },
          {
            "name": "tag",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `tag`. Comma-separated values are OR.",
              "title": "Tag"
            },
            "description": "Filter on `tag`. Comma-separated values are OR."
          },
          {
            "name": "tag.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `tag` with the `gte` operator.",
              "title": "Tag.Gte"
            },
            "description": "Filter on `tag` with the `gte` operator."
          },
          {
            "name": "tag.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `tag` with the `lte` operator.",
              "title": "Tag.Lte"
            },
            "description": "Filter on `tag` with the `lte` operator."
          },
          {
            "name": "tag.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `tag` with the `gt` operator.",
              "title": "Tag.Gt"
            },
            "description": "Filter on `tag` with the `gt` operator."
          },
          {
            "name": "tag.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `tag` with the `lt` operator.",
              "title": "Tag.Lt"
            },
            "description": "Filter on `tag` with the `lt` operator."
          },
          {
            "name": "tag.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `tag` with the `in` operator.",
              "title": "Tag.In"
            },
            "description": "Filter on `tag` with the `in` operator."
          },
          {
            "name": "timezone",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `timezone`. Comma-separated values are OR.",
              "title": "Timezone"
            },
            "description": "Filter on `timezone`. Comma-separated values are OR."
          },
          {
            "name": "timezone.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `timezone` with the `gte` operator.",
              "title": "Timezone.Gte"
            },
            "description": "Filter on `timezone` with the `gte` operator."
          },
          {
            "name": "timezone.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `timezone` with the `lte` operator.",
              "title": "Timezone.Lte"
            },
            "description": "Filter on `timezone` with the `lte` operator."
          },
          {
            "name": "timezone.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `timezone` with the `gt` operator.",
              "title": "Timezone.Gt"
            },
            "description": "Filter on `timezone` with the `gt` operator."
          },
          {
            "name": "timezone.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `timezone` with the `lt` operator.",
              "title": "Timezone.Lt"
            },
            "description": "Filter on `timezone` with the `lt` operator."
          },
          {
            "name": "timezone.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `timezone` with the `in` operator.",
              "title": "Timezone.In"
            },
            "description": "Filter on `timezone` with the `in` operator."
          },
          {
            "name": "updated_at",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `updated_at`. Comma-separated values are OR.",
              "title": "Updated At"
            },
            "description": "Filter on `updated_at`. Comma-separated values are OR."
          },
          {
            "name": "updated_at.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `updated_at` with the `gte` operator.",
              "title": "Updated At.Gte"
            },
            "description": "Filter on `updated_at` with the `gte` operator."
          },
          {
            "name": "updated_at.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `updated_at` with the `lte` operator.",
              "title": "Updated At.Lte"
            },
            "description": "Filter on `updated_at` with the `lte` operator."
          },
          {
            "name": "updated_at.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `updated_at` with the `gt` operator.",
              "title": "Updated At.Gt"
            },
            "description": "Filter on `updated_at` with the `gt` operator."
          },
          {
            "name": "updated_at.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `updated_at` with the `lt` operator.",
              "title": "Updated At.Lt"
            },
            "description": "Filter on `updated_at` with the `lt` operator."
          },
          {
            "name": "updated_at.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `updated_at` with the `in` operator.",
              "title": "Updated At.In"
            },
            "description": "Filter on `updated_at` with the `in` operator."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorPage_ContactSummary_"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "contacts"
        ],
        "summary": "Create a contact",
        "operationId": "create_contact_v1_contacts_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Unique key for this request, so a retry replays the original result instead of repeating the work. Stored for 24 hours; a replayed response carries `Idempotent-Replay: true`. A UUID is the documented shape.",
              "title": "Idempotency-Key"
            },
            "description": "Unique key for this request, so a retry replays the original result instead of repeating the work. Stored for 24 hours; a replayed response carries `Idempotent-Replay: true`. A UUID is the documented shape."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ContactCreateRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contact"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/contacts/{contact_id}": {
      "get": {
        "tags": [
          "contacts"
        ],
        "summary": "Read a contact",
        "operationId": "read_contact_v1_contacts__contact_id__get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "contact_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Contact Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contact"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "contacts"
        ],
        "summary": "Update a contact",
        "operationId": "update_contact_v1_contacts__contact_id__patch",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "contact_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Contact Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ContactUpdateRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contact"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "contacts"
        ],
        "summary": "Soft-delete a contact",
        "operationId": "delete_contact_v1_contacts__contact_id__delete",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "contact_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Contact Id"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/contacts/{contact_id}/dialability": {
      "get": {
        "tags": [
          "contacts"
        ],
        "summary": "Check whether this contact may be dialed right now",
        "description": "Evaluate the canonical dialability gate over this contact's record.\n\nThe same evaluator every dial passes, given the facts a contact row holds: the\ndenormalized internal-DNC flag, the consent class, the jurisdictions, and the callee's\nlocal clock. Bureau scrub stages are billed per query and belong to a ScrubRun, so\nnone of them run here and `policy_snapshot.stages` is empty.\n\nThe same *resolution*, too - `outbound_effective_policy`, at this request's clock. A\npreview that answered \"dialable\" for a state whose pack is not yet in force would be\nreporting a permission the dial path itself refuses, which is the one direction a\npreview must never be wrong in.",
        "operationId": "read_dialability_v1_contacts__contact_id__dialability_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "contact_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Contact Id"
            }
          },
          {
            "name": "purpose",
            "in": "query",
            "required": false,
            "schema": {
              "enum": [
                "marketing",
                "informational",
                "transactional"
              ],
              "type": "string",
              "default": "marketing",
              "title": "Purpose"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactDialability"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/contacts/{contact_id}/notes": {
      "get": {
        "tags": [
          "contacts"
        ],
        "summary": "List a contact's notes",
        "operationId": "list_contact_notes_v1_contacts__contact_id__notes_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "contact_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Contact Id"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 200,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorPage_ContactNote_"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "contacts"
        ],
        "summary": "Leave a note on a contact",
        "description": "Append one working note.\n\nA note is what a rep typed. It is not consent evidence and not a suppression: those\nare `POST /v1/consents` and `POST /v1/dnc-entries`, both of which write records this\nendpoint cannot produce and the dial gate actually reads. Writing \"they asked not to\nbe called\" here suppresses nothing.\n\n`author_ref` is the credential that wrote it - the API key id here, because an API-key\nprincipal names no person and inventing one would put a name in an audit trail that\nnobody signed.",
        "operationId": "create_contact_note_v1_contacts__contact_id__notes_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "contact_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Contact Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ContactNoteCreateRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactNote"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/contacts/{contact_id}/notes/{note_id}": {
      "delete": {
        "tags": [
          "contacts"
        ],
        "summary": "Remove a note",
        "operationId": "delete_contact_note_v1_contacts__contact_id__notes__note_id__delete",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "contact_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Contact Id"
            }
          },
          {
            "name": "note_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Note Id"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/contacts/bulk": {
      "post": {
        "tags": [
          "contacts"
        ],
        "summary": "Apply one action to up to 1000 contacts",
        "description": "The morning-after actions, in one request instead of one at a time.\n\nEvery branch is the *existing* per-contact write, run over a batch - the suppression\ngoes through the revocation path with all its derived writes, the delete is the same\nsoft delete `DELETE /contacts/{id}` performs, and list membership is the same join\n`POST /contact-lists/{id}/members` writes. None of them invents a shortcut, which is\nwhy a bulk suppress cannot end up weaker than a single one.\n\n`suppress` additionally requires `dnc:manage`: it writes the internal DNC list, and a\nkey trusted to edit contacts is not thereby trusted to change what may be dialed.",
        "operationId": "bulk_contacts_v1_contacts_bulk_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ContactBulkRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactBulkResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/v1/contact-lists": {
      "get": {
        "tags": [
          "contacts"
        ],
        "summary": "List contact lists",
        "operationId": "list_contact_lists_v1_contact_lists_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 200,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorPage_ContactListSummary_"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "contacts"
        ],
        "summary": "Create a contact list",
        "operationId": "create_contact_list_v1_contact_lists_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Unique key for this request, so a retry replays the original result instead of repeating the work. Stored for 24 hours; a replayed response carries `Idempotent-Replay: true`. A UUID is the documented shape.",
              "title": "Idempotency-Key"
            },
            "description": "Unique key for this request, so a retry replays the original result instead of repeating the work. Stored for 24 hours; a replayed response carries `Idempotent-Replay: true`. A UUID is the documented shape."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ContactListCreateRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactListSummary"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/contact-lists/{list_id}/members": {
      "post": {
        "tags": [
          "contacts"
        ],
        "summary": "Add contacts to a list",
        "operationId": "add_contact_list_members_v1_contact_lists__list_id__members_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "list_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "List Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ContactListMembersRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactListMembersResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "contacts"
        ],
        "summary": "List the contacts on a list",
        "operationId": "list_contact_list_members_v1_contact_lists__list_id__members_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "list_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "List Id"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 200,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorPage_ContactSummary_"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "contacts"
        ],
        "summary": "Remove contacts from a list",
        "description": "Take contacts off a list. The contacts themselves are untouched.\n\nMirrors `POST .../members` - same request shape, same 1000-id cap - because a caller\nwho can build the add call should not have to build a different one to undo it. A\ncustomer who imported the wrong CSV into the wrong list unwinds it here.",
        "operationId": "remove_contact_list_members_v1_contact_lists__list_id__members_delete",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "list_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "List Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ContactListMembersRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactListMembersRemovedResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/contact-lists/{list_id}": {
      "get": {
        "tags": [
          "contacts"
        ],
        "summary": "Read a contact list",
        "operationId": "read_contact_list_v1_contact_lists__list_id__get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "list_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "List Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactListSummary"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "contacts"
        ],
        "summary": "Rename a contact list",
        "description": "Rename it, and nothing else.\n\n`consent_basis` and `attestation_ref` are not writable here. They record what a named\nhuman affirmed about these rows at import time, and every dial made against the list\ncites them - an attestation that can be edited afterwards is not evidence.",
        "operationId": "update_contact_list_v1_contact_lists__list_id__patch",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "list_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "List Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ContactListUpdateRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactListSummary"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "contacts"
        ],
        "summary": "Delete a contact list",
        "description": "Drop the list and its memberships. The contacts on it are untouched.\n\nRefused while a campaign still targets it: the campaign's configuration is what its\ncalls were made under, and a target that could be deleted out from under a finished\ncampaign would break the record of who it was run against.",
        "operationId": "delete_contact_list_v1_contact_lists__list_id__delete",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "list_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "List Id"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/contact-imports": {
      "post": {
        "tags": [
          "contacts"
        ],
        "summary": "Import contacts from a CSV",
        "description": "Land a CSV in a contact list and report every row that could not be taken.\n\nAnswered at 202 with the documented poll contract on `GET /contact-imports/{id}`; the\nP1 import runs inside this request, so the job is already terminal when it answers.",
        "operationId": "create_contact_import_v1_contact_imports_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Unique key for this request, so a retry replays the original result instead of repeating the work. Stored for 24 hours; a replayed response carries `Idempotent-Replay: true`. A UUID is the documented shape.",
              "title": "Idempotency-Key"
            },
            "description": "Unique key for this request, so a retry replays the original result instead of repeating the work. Stored for 24 hours; a replayed response carries `Idempotent-Replay: true`. A UUID is the documented shape."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ContactImportRequest"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ImportJob"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "contacts"
        ],
        "summary": "List past imports",
        "description": "Import history, newest first.\n\nEach row carries the consent attestation the import was submitted under - the named\nsigner, their title, the server-stamped address and time. Those are the evidence\nbehind every dial made against the list the import built, so the history is a record\nto be kept rather than a convenience.",
        "operationId": "list_contact_imports_v1_contact_imports_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 200,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          },
          {
            "name": "created_at",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at`. Comma-separated values are OR.",
              "title": "Created At"
            },
            "description": "Filter on `created_at`. Comma-separated values are OR."
          },
          {
            "name": "created_at.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `gte` operator.",
              "title": "Created At.Gte"
            },
            "description": "Filter on `created_at` with the `gte` operator."
          },
          {
            "name": "created_at.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `lte` operator.",
              "title": "Created At.Lte"
            },
            "description": "Filter on `created_at` with the `lte` operator."
          },
          {
            "name": "created_at.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `gt` operator.",
              "title": "Created At.Gt"
            },
            "description": "Filter on `created_at` with the `gt` operator."
          },
          {
            "name": "created_at.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `lt` operator.",
              "title": "Created At.Lt"
            },
            "description": "Filter on `created_at` with the `lt` operator."
          },
          {
            "name": "created_at.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `in` operator.",
              "title": "Created At.In"
            },
            "description": "Filter on `created_at` with the `in` operator."
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status`. Comma-separated values are OR.",
              "title": "Status"
            },
            "description": "Filter on `status`. Comma-separated values are OR."
          },
          {
            "name": "status.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `gte` operator.",
              "title": "Status.Gte"
            },
            "description": "Filter on `status` with the `gte` operator."
          },
          {
            "name": "status.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `lte` operator.",
              "title": "Status.Lte"
            },
            "description": "Filter on `status` with the `lte` operator."
          },
          {
            "name": "status.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `gt` operator.",
              "title": "Status.Gt"
            },
            "description": "Filter on `status` with the `gt` operator."
          },
          {
            "name": "status.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `lt` operator.",
              "title": "Status.Lt"
            },
            "description": "Filter on `status` with the `lt` operator."
          },
          {
            "name": "status.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `in` operator.",
              "title": "Status.In"
            },
            "description": "Filter on `status` with the `in` operator."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorPage_ImportJob_"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/contact-imports/{import_id}": {
      "get": {
        "tags": [
          "contacts"
        ],
        "summary": "Read an import job",
        "operationId": "read_contact_import_v1_contact_imports__import_id__get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "import_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Import Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ImportJob"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/contact-imports/{import_id}/errors": {
      "get": {
        "tags": [
          "contacts"
        ],
        "summary": "List the rows an import rejected (JSON, or CSV with Accept: text/csv)",
        "operationId": "list_contact_import_errors_v1_contact_imports__import_id__errors_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "import_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Import Id"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 200,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "default": "",
              "title": "Accept"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorPage_ImportRowError_"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/contact-attempts": {
      "get": {
        "tags": [
          "campaigns"
        ],
        "summary": "Follow-up feed: every attempt this tenant owns, across campaigns",
        "description": "The board an operator works the morning after, and the only place callbacks surface.\n\nEvery attempt this tenant owns - campaign-backed and campaign-less alike - filterable\non `next_eligible_at`, which is what makes \"who is due before noon\" a range query\ninstead of a scan: `?state=scheduled&next_eligible_at.lte=2026-08-11T17:00:00Z`.\n\nIt reports scheduling facts, not promises. `scheduled_for` is the earliest instant the\nwindow layers allowed when the row was written; every attempt is re-gated at dial time\nand one listed here can still be refused then (docs/07-compliance.md).",
        "operationId": "list_contact_attempts_v1_contact_attempts_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 200,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          },
          {
            "name": "campaign_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `campaign_id`. Comma-separated values are OR.",
              "title": "Campaign Id"
            },
            "description": "Filter on `campaign_id`. Comma-separated values are OR."
          },
          {
            "name": "campaign_id.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `campaign_id` with the `gte` operator.",
              "title": "Campaign Id.Gte"
            },
            "description": "Filter on `campaign_id` with the `gte` operator."
          },
          {
            "name": "campaign_id.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `campaign_id` with the `lte` operator.",
              "title": "Campaign Id.Lte"
            },
            "description": "Filter on `campaign_id` with the `lte` operator."
          },
          {
            "name": "campaign_id.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `campaign_id` with the `gt` operator.",
              "title": "Campaign Id.Gt"
            },
            "description": "Filter on `campaign_id` with the `gt` operator."
          },
          {
            "name": "campaign_id.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `campaign_id` with the `lt` operator.",
              "title": "Campaign Id.Lt"
            },
            "description": "Filter on `campaign_id` with the `lt` operator."
          },
          {
            "name": "campaign_id.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `campaign_id` with the `in` operator.",
              "title": "Campaign Id.In"
            },
            "description": "Filter on `campaign_id` with the `in` operator."
          },
          {
            "name": "contact_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `contact_id`. Comma-separated values are OR.",
              "title": "Contact Id"
            },
            "description": "Filter on `contact_id`. Comma-separated values are OR."
          },
          {
            "name": "contact_id.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `contact_id` with the `gte` operator.",
              "title": "Contact Id.Gte"
            },
            "description": "Filter on `contact_id` with the `gte` operator."
          },
          {
            "name": "contact_id.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `contact_id` with the `lte` operator.",
              "title": "Contact Id.Lte"
            },
            "description": "Filter on `contact_id` with the `lte` operator."
          },
          {
            "name": "contact_id.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `contact_id` with the `gt` operator.",
              "title": "Contact Id.Gt"
            },
            "description": "Filter on `contact_id` with the `gt` operator."
          },
          {
            "name": "contact_id.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `contact_id` with the `lt` operator.",
              "title": "Contact Id.Lt"
            },
            "description": "Filter on `contact_id` with the `lt` operator."
          },
          {
            "name": "contact_id.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `contact_id` with the `in` operator.",
              "title": "Contact Id.In"
            },
            "description": "Filter on `contact_id` with the `in` operator."
          },
          {
            "name": "disposition",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `disposition`. Comma-separated values are OR.",
              "title": "Disposition"
            },
            "description": "Filter on `disposition`. Comma-separated values are OR."
          },
          {
            "name": "disposition.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `disposition` with the `gte` operator.",
              "title": "Disposition.Gte"
            },
            "description": "Filter on `disposition` with the `gte` operator."
          },
          {
            "name": "disposition.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `disposition` with the `lte` operator.",
              "title": "Disposition.Lte"
            },
            "description": "Filter on `disposition` with the `lte` operator."
          },
          {
            "name": "disposition.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `disposition` with the `gt` operator.",
              "title": "Disposition.Gt"
            },
            "description": "Filter on `disposition` with the `gt` operator."
          },
          {
            "name": "disposition.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `disposition` with the `lt` operator.",
              "title": "Disposition.Lt"
            },
            "description": "Filter on `disposition` with the `lt` operator."
          },
          {
            "name": "disposition.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `disposition` with the `in` operator.",
              "title": "Disposition.In"
            },
            "description": "Filter on `disposition` with the `in` operator."
          },
          {
            "name": "next_eligible_at",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `next_eligible_at`. Comma-separated values are OR.",
              "title": "Next Eligible At"
            },
            "description": "Filter on `next_eligible_at`. Comma-separated values are OR."
          },
          {
            "name": "next_eligible_at.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `next_eligible_at` with the `gte` operator.",
              "title": "Next Eligible At.Gte"
            },
            "description": "Filter on `next_eligible_at` with the `gte` operator."
          },
          {
            "name": "next_eligible_at.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `next_eligible_at` with the `lte` operator.",
              "title": "Next Eligible At.Lte"
            },
            "description": "Filter on `next_eligible_at` with the `lte` operator."
          },
          {
            "name": "next_eligible_at.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `next_eligible_at` with the `gt` operator.",
              "title": "Next Eligible At.Gt"
            },
            "description": "Filter on `next_eligible_at` with the `gt` operator."
          },
          {
            "name": "next_eligible_at.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `next_eligible_at` with the `lt` operator.",
              "title": "Next Eligible At.Lt"
            },
            "description": "Filter on `next_eligible_at` with the `lt` operator."
          },
          {
            "name": "next_eligible_at.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `next_eligible_at` with the `in` operator.",
              "title": "Next Eligible At.In"
            },
            "description": "Filter on `next_eligible_at` with the `in` operator."
          },
          {
            "name": "origin_kind",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `origin_kind`. Comma-separated values are OR.",
              "title": "Origin Kind"
            },
            "description": "Filter on `origin_kind`. Comma-separated values are OR."
          },
          {
            "name": "origin_kind.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `origin_kind` with the `gte` operator.",
              "title": "Origin Kind.Gte"
            },
            "description": "Filter on `origin_kind` with the `gte` operator."
          },
          {
            "name": "origin_kind.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `origin_kind` with the `lte` operator.",
              "title": "Origin Kind.Lte"
            },
            "description": "Filter on `origin_kind` with the `lte` operator."
          },
          {
            "name": "origin_kind.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `origin_kind` with the `gt` operator.",
              "title": "Origin Kind.Gt"
            },
            "description": "Filter on `origin_kind` with the `gt` operator."
          },
          {
            "name": "origin_kind.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `origin_kind` with the `lt` operator.",
              "title": "Origin Kind.Lt"
            },
            "description": "Filter on `origin_kind` with the `lt` operator."
          },
          {
            "name": "origin_kind.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `origin_kind` with the `in` operator.",
              "title": "Origin Kind.In"
            },
            "description": "Filter on `origin_kind` with the `in` operator."
          },
          {
            "name": "state",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `state`. Comma-separated values are OR.",
              "title": "State"
            },
            "description": "Filter on `state`. Comma-separated values are OR."
          },
          {
            "name": "state.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `state` with the `gte` operator.",
              "title": "State.Gte"
            },
            "description": "Filter on `state` with the `gte` operator."
          },
          {
            "name": "state.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `state` with the `lte` operator.",
              "title": "State.Lte"
            },
            "description": "Filter on `state` with the `lte` operator."
          },
          {
            "name": "state.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `state` with the `gt` operator.",
              "title": "State.Gt"
            },
            "description": "Filter on `state` with the `gt` operator."
          },
          {
            "name": "state.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `state` with the `lt` operator.",
              "title": "State.Lt"
            },
            "description": "Filter on `state` with the `lt` operator."
          },
          {
            "name": "state.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `state` with the `in` operator.",
              "title": "State.In"
            },
            "description": "Filter on `state` with the `in` operator."
          },
          {
            "name": "updated_at",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `updated_at`. Comma-separated values are OR.",
              "title": "Updated At"
            },
            "description": "Filter on `updated_at`. Comma-separated values are OR."
          },
          {
            "name": "updated_at.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `updated_at` with the `gte` operator.",
              "title": "Updated At.Gte"
            },
            "description": "Filter on `updated_at` with the `gte` operator."
          },
          {
            "name": "updated_at.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `updated_at` with the `lte` operator.",
              "title": "Updated At.Lte"
            },
            "description": "Filter on `updated_at` with the `lte` operator."
          },
          {
            "name": "updated_at.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `updated_at` with the `gt` operator.",
              "title": "Updated At.Gt"
            },
            "description": "Filter on `updated_at` with the `gt` operator."
          },
          {
            "name": "updated_at.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `updated_at` with the `lt` operator.",
              "title": "Updated At.Lt"
            },
            "description": "Filter on `updated_at` with the `lt` operator."
          },
          {
            "name": "updated_at.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `updated_at` with the `in` operator.",
              "title": "Updated At.In"
            },
            "description": "Filter on `updated_at` with the `in` operator."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorPage_ContactAttemptSummary_"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/campaigns": {
      "get": {
        "tags": [
          "campaigns"
        ],
        "summary": "List campaigns",
        "operationId": "list_campaigns_v1_campaigns_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 200,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          },
          {
            "name": "agent_definition_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `agent_definition_id`. Comma-separated values are OR.",
              "title": "Agent Definition Id"
            },
            "description": "Filter on `agent_definition_id`. Comma-separated values are OR."
          },
          {
            "name": "agent_definition_id.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `agent_definition_id` with the `gte` operator.",
              "title": "Agent Definition Id.Gte"
            },
            "description": "Filter on `agent_definition_id` with the `gte` operator."
          },
          {
            "name": "agent_definition_id.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `agent_definition_id` with the `lte` operator.",
              "title": "Agent Definition Id.Lte"
            },
            "description": "Filter on `agent_definition_id` with the `lte` operator."
          },
          {
            "name": "agent_definition_id.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `agent_definition_id` with the `gt` operator.",
              "title": "Agent Definition Id.Gt"
            },
            "description": "Filter on `agent_definition_id` with the `gt` operator."
          },
          {
            "name": "agent_definition_id.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `agent_definition_id` with the `lt` operator.",
              "title": "Agent Definition Id.Lt"
            },
            "description": "Filter on `agent_definition_id` with the `lt` operator."
          },
          {
            "name": "agent_definition_id.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `agent_definition_id` with the `in` operator.",
              "title": "Agent Definition Id.In"
            },
            "description": "Filter on `agent_definition_id` with the `in` operator."
          },
          {
            "name": "contact_list_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `contact_list_id`. Comma-separated values are OR.",
              "title": "Contact List Id"
            },
            "description": "Filter on `contact_list_id`. Comma-separated values are OR."
          },
          {
            "name": "contact_list_id.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `contact_list_id` with the `gte` operator.",
              "title": "Contact List Id.Gte"
            },
            "description": "Filter on `contact_list_id` with the `gte` operator."
          },
          {
            "name": "contact_list_id.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `contact_list_id` with the `lte` operator.",
              "title": "Contact List Id.Lte"
            },
            "description": "Filter on `contact_list_id` with the `lte` operator."
          },
          {
            "name": "contact_list_id.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `contact_list_id` with the `gt` operator.",
              "title": "Contact List Id.Gt"
            },
            "description": "Filter on `contact_list_id` with the `gt` operator."
          },
          {
            "name": "contact_list_id.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `contact_list_id` with the `lt` operator.",
              "title": "Contact List Id.Lt"
            },
            "description": "Filter on `contact_list_id` with the `lt` operator."
          },
          {
            "name": "contact_list_id.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `contact_list_id` with the `in` operator.",
              "title": "Contact List Id.In"
            },
            "description": "Filter on `contact_list_id` with the `in` operator."
          },
          {
            "name": "created_at",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at`. Comma-separated values are OR.",
              "title": "Created At"
            },
            "description": "Filter on `created_at`. Comma-separated values are OR."
          },
          {
            "name": "created_at.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `gte` operator.",
              "title": "Created At.Gte"
            },
            "description": "Filter on `created_at` with the `gte` operator."
          },
          {
            "name": "created_at.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `lte` operator.",
              "title": "Created At.Lte"
            },
            "description": "Filter on `created_at` with the `lte` operator."
          },
          {
            "name": "created_at.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `gt` operator.",
              "title": "Created At.Gt"
            },
            "description": "Filter on `created_at` with the `gt` operator."
          },
          {
            "name": "created_at.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `lt` operator.",
              "title": "Created At.Lt"
            },
            "description": "Filter on `created_at` with the `lt` operator."
          },
          {
            "name": "created_at.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `in` operator.",
              "title": "Created At.In"
            },
            "description": "Filter on `created_at` with the `in` operator."
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status`. Comma-separated values are OR.",
              "title": "Status"
            },
            "description": "Filter on `status`. Comma-separated values are OR."
          },
          {
            "name": "status.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `gte` operator.",
              "title": "Status.Gte"
            },
            "description": "Filter on `status` with the `gte` operator."
          },
          {
            "name": "status.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `lte` operator.",
              "title": "Status.Lte"
            },
            "description": "Filter on `status` with the `lte` operator."
          },
          {
            "name": "status.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `gt` operator.",
              "title": "Status.Gt"
            },
            "description": "Filter on `status` with the `gt` operator."
          },
          {
            "name": "status.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `lt` operator.",
              "title": "Status.Lt"
            },
            "description": "Filter on `status` with the `lt` operator."
          },
          {
            "name": "status.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `in` operator.",
              "title": "Status.In"
            },
            "description": "Filter on `status` with the `in` operator."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorPage_CampaignSummary_"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "campaigns"
        ],
        "summary": "Create a campaign",
        "operationId": "create_campaign_v1_campaigns_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Unique key for this request, so a retry replays the original result instead of repeating the work. Stored for 24 hours; a replayed response carries `Idempotent-Replay: true`. A UUID is the documented shape.",
              "title": "Idempotency-Key"
            },
            "description": "Unique key for this request, so a retry replays the original result instead of repeating the work. Stored for 24 hours; a replayed response carries `Idempotent-Replay: true`. A UUID is the documented shape."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CampaignCreateRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Campaign"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/campaigns/overview": {
      "get": {
        "tags": [
          "campaigns"
        ],
        "summary": "Read workspace campaign totals and recent call activity",
        "operationId": "read_campaign_overview_v1_campaigns_overview_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "start",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date-time",
              "description": "Inclusive start, with timezone offset.",
              "title": "Start"
            },
            "description": "Inclusive start, with timezone offset."
          },
          {
            "name": "end",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date-time",
              "description": "Exclusive end; maximum window 93 days.",
              "title": "End"
            },
            "description": "Exclusive end; maximum window 93 days."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CampaignOverview"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/campaigns/{campaign_id}": {
      "get": {
        "tags": [
          "campaigns"
        ],
        "summary": "Read one campaign",
        "operationId": "read_campaign_v1_campaigns__campaign_id__get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "campaign_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Campaign Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Campaign"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "campaigns"
        ],
        "summary": "Edit a campaign",
        "operationId": "update_campaign_v1_campaigns__campaign_id__patch",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "campaign_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Campaign Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CampaignUpdateRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Campaign"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/campaigns/{campaign_id}/launch": {
      "post": {
        "tags": [
          "campaigns"
        ],
        "summary": "Launch a campaign, pinning the agent version it dials under",
        "operationId": "launch_campaign_v1_campaigns__campaign_id__launch_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "campaign_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Campaign Id"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "Unique key for this request, so a retry replays the original result instead of repeating the work. Stored for 24 hours; a replayed response carries `Idempotent-Replay: true`. A UUID is the documented shape. **Required on this endpoint**: a retry without one would dial a human twice or spend money twice.",
            "schema": {
              "type": "string",
              "maxLength": 255
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CampaignLaunchResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/campaigns/{campaign_id}/pause": {
      "post": {
        "tags": [
          "campaigns"
        ],
        "summary": "Stop launching new dials",
        "operationId": "pause_campaign_v1_campaigns__campaign_id__pause_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "campaign_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Campaign Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CampaignSummary"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/campaigns/{campaign_id}/resume": {
      "post": {
        "tags": [
          "campaigns"
        ],
        "summary": "Resume a paused campaign",
        "operationId": "resume_campaign_v1_campaigns__campaign_id__resume_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "campaign_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Campaign Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CampaignSummary"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/campaigns/{campaign_id}/cancel": {
      "post": {
        "tags": [
          "campaigns"
        ],
        "summary": "Cancel a campaign for good",
        "operationId": "cancel_campaign_v1_campaigns__campaign_id__cancel_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "campaign_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Campaign Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CampaignSummary"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/campaigns/{campaign_id}/stats": {
      "get": {
        "tags": [
          "campaigns"
        ],
        "summary": "Live campaign counters (polled at 5s; carries an ETag)",
        "operationId": "read_campaign_stats_v1_campaigns__campaign_id__stats_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "campaign_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Campaign Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CampaignStats"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/campaigns/{campaign_id}/attempts": {
      "get": {
        "tags": [
          "campaigns"
        ],
        "summary": "Fill-status board: one row per attempt, most recently updated first",
        "operationId": "list_campaign_attempts_v1_campaigns__campaign_id__attempts_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "campaign_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Campaign Id"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 200,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          },
          {
            "name": "campaign_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `campaign_id`. Comma-separated values are OR.",
              "title": "Campaign Id"
            },
            "description": "Filter on `campaign_id`. Comma-separated values are OR."
          },
          {
            "name": "campaign_id.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `campaign_id` with the `gte` operator.",
              "title": "Campaign Id.Gte"
            },
            "description": "Filter on `campaign_id` with the `gte` operator."
          },
          {
            "name": "campaign_id.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `campaign_id` with the `lte` operator.",
              "title": "Campaign Id.Lte"
            },
            "description": "Filter on `campaign_id` with the `lte` operator."
          },
          {
            "name": "campaign_id.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `campaign_id` with the `gt` operator.",
              "title": "Campaign Id.Gt"
            },
            "description": "Filter on `campaign_id` with the `gt` operator."
          },
          {
            "name": "campaign_id.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `campaign_id` with the `lt` operator.",
              "title": "Campaign Id.Lt"
            },
            "description": "Filter on `campaign_id` with the `lt` operator."
          },
          {
            "name": "campaign_id.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `campaign_id` with the `in` operator.",
              "title": "Campaign Id.In"
            },
            "description": "Filter on `campaign_id` with the `in` operator."
          },
          {
            "name": "contact_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `contact_id`. Comma-separated values are OR.",
              "title": "Contact Id"
            },
            "description": "Filter on `contact_id`. Comma-separated values are OR."
          },
          {
            "name": "contact_id.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `contact_id` with the `gte` operator.",
              "title": "Contact Id.Gte"
            },
            "description": "Filter on `contact_id` with the `gte` operator."
          },
          {
            "name": "contact_id.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `contact_id` with the `lte` operator.",
              "title": "Contact Id.Lte"
            },
            "description": "Filter on `contact_id` with the `lte` operator."
          },
          {
            "name": "contact_id.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `contact_id` with the `gt` operator.",
              "title": "Contact Id.Gt"
            },
            "description": "Filter on `contact_id` with the `gt` operator."
          },
          {
            "name": "contact_id.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `contact_id` with the `lt` operator.",
              "title": "Contact Id.Lt"
            },
            "description": "Filter on `contact_id` with the `lt` operator."
          },
          {
            "name": "contact_id.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `contact_id` with the `in` operator.",
              "title": "Contact Id.In"
            },
            "description": "Filter on `contact_id` with the `in` operator."
          },
          {
            "name": "disposition",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `disposition`. Comma-separated values are OR.",
              "title": "Disposition"
            },
            "description": "Filter on `disposition`. Comma-separated values are OR."
          },
          {
            "name": "disposition.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `disposition` with the `gte` operator.",
              "title": "Disposition.Gte"
            },
            "description": "Filter on `disposition` with the `gte` operator."
          },
          {
            "name": "disposition.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `disposition` with the `lte` operator.",
              "title": "Disposition.Lte"
            },
            "description": "Filter on `disposition` with the `lte` operator."
          },
          {
            "name": "disposition.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `disposition` with the `gt` operator.",
              "title": "Disposition.Gt"
            },
            "description": "Filter on `disposition` with the `gt` operator."
          },
          {
            "name": "disposition.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `disposition` with the `lt` operator.",
              "title": "Disposition.Lt"
            },
            "description": "Filter on `disposition` with the `lt` operator."
          },
          {
            "name": "disposition.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `disposition` with the `in` operator.",
              "title": "Disposition.In"
            },
            "description": "Filter on `disposition` with the `in` operator."
          },
          {
            "name": "next_eligible_at",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `next_eligible_at`. Comma-separated values are OR.",
              "title": "Next Eligible At"
            },
            "description": "Filter on `next_eligible_at`. Comma-separated values are OR."
          },
          {
            "name": "next_eligible_at.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `next_eligible_at` with the `gte` operator.",
              "title": "Next Eligible At.Gte"
            },
            "description": "Filter on `next_eligible_at` with the `gte` operator."
          },
          {
            "name": "next_eligible_at.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `next_eligible_at` with the `lte` operator.",
              "title": "Next Eligible At.Lte"
            },
            "description": "Filter on `next_eligible_at` with the `lte` operator."
          },
          {
            "name": "next_eligible_at.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `next_eligible_at` with the `gt` operator.",
              "title": "Next Eligible At.Gt"
            },
            "description": "Filter on `next_eligible_at` with the `gt` operator."
          },
          {
            "name": "next_eligible_at.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `next_eligible_at` with the `lt` operator.",
              "title": "Next Eligible At.Lt"
            },
            "description": "Filter on `next_eligible_at` with the `lt` operator."
          },
          {
            "name": "next_eligible_at.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `next_eligible_at` with the `in` operator.",
              "title": "Next Eligible At.In"
            },
            "description": "Filter on `next_eligible_at` with the `in` operator."
          },
          {
            "name": "origin_kind",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `origin_kind`. Comma-separated values are OR.",
              "title": "Origin Kind"
            },
            "description": "Filter on `origin_kind`. Comma-separated values are OR."
          },
          {
            "name": "origin_kind.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `origin_kind` with the `gte` operator.",
              "title": "Origin Kind.Gte"
            },
            "description": "Filter on `origin_kind` with the `gte` operator."
          },
          {
            "name": "origin_kind.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `origin_kind` with the `lte` operator.",
              "title": "Origin Kind.Lte"
            },
            "description": "Filter on `origin_kind` with the `lte` operator."
          },
          {
            "name": "origin_kind.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `origin_kind` with the `gt` operator.",
              "title": "Origin Kind.Gt"
            },
            "description": "Filter on `origin_kind` with the `gt` operator."
          },
          {
            "name": "origin_kind.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `origin_kind` with the `lt` operator.",
              "title": "Origin Kind.Lt"
            },
            "description": "Filter on `origin_kind` with the `lt` operator."
          },
          {
            "name": "origin_kind.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `origin_kind` with the `in` operator.",
              "title": "Origin Kind.In"
            },
            "description": "Filter on `origin_kind` with the `in` operator."
          },
          {
            "name": "state",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `state`. Comma-separated values are OR.",
              "title": "State"
            },
            "description": "Filter on `state`. Comma-separated values are OR."
          },
          {
            "name": "state.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `state` with the `gte` operator.",
              "title": "State.Gte"
            },
            "description": "Filter on `state` with the `gte` operator."
          },
          {
            "name": "state.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `state` with the `lte` operator.",
              "title": "State.Lte"
            },
            "description": "Filter on `state` with the `lte` operator."
          },
          {
            "name": "state.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `state` with the `gt` operator.",
              "title": "State.Gt"
            },
            "description": "Filter on `state` with the `gt` operator."
          },
          {
            "name": "state.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `state` with the `lt` operator.",
              "title": "State.Lt"
            },
            "description": "Filter on `state` with the `lt` operator."
          },
          {
            "name": "state.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `state` with the `in` operator.",
              "title": "State.In"
            },
            "description": "Filter on `state` with the `in` operator."
          },
          {
            "name": "updated_at",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `updated_at`. Comma-separated values are OR.",
              "title": "Updated At"
            },
            "description": "Filter on `updated_at`. Comma-separated values are OR."
          },
          {
            "name": "updated_at.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `updated_at` with the `gte` operator.",
              "title": "Updated At.Gte"
            },
            "description": "Filter on `updated_at` with the `gte` operator."
          },
          {
            "name": "updated_at.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `updated_at` with the `lte` operator.",
              "title": "Updated At.Lte"
            },
            "description": "Filter on `updated_at` with the `lte` operator."
          },
          {
            "name": "updated_at.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `updated_at` with the `gt` operator.",
              "title": "Updated At.Gt"
            },
            "description": "Filter on `updated_at` with the `gt` operator."
          },
          {
            "name": "updated_at.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `updated_at` with the `lt` operator.",
              "title": "Updated At.Lt"
            },
            "description": "Filter on `updated_at` with the `lt` operator."
          },
          {
            "name": "updated_at.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `updated_at` with the `in` operator.",
              "title": "Updated At.In"
            },
            "description": "Filter on `updated_at` with the `in` operator."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorPage_AttemptSummary_"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/campaigns/{campaign_id}/outcomes": {
      "get": {
        "tags": [
          "campaigns"
        ],
        "summary": "Per-contact reconciliation: the latest attempt and its structured outcome",
        "operationId": "list_campaign_outcomes_v1_campaigns__campaign_id__outcomes_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "campaign_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Campaign Id"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 200,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          },
          {
            "name": "disposition",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `disposition`. Comma-separated values are OR.",
              "title": "Disposition"
            },
            "description": "Filter on `disposition`. Comma-separated values are OR."
          },
          {
            "name": "disposition.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `disposition` with the `gte` operator.",
              "title": "Disposition.Gte"
            },
            "description": "Filter on `disposition` with the `gte` operator."
          },
          {
            "name": "disposition.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `disposition` with the `lte` operator.",
              "title": "Disposition.Lte"
            },
            "description": "Filter on `disposition` with the `lte` operator."
          },
          {
            "name": "disposition.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `disposition` with the `gt` operator.",
              "title": "Disposition.Gt"
            },
            "description": "Filter on `disposition` with the `gt` operator."
          },
          {
            "name": "disposition.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `disposition` with the `lt` operator.",
              "title": "Disposition.Lt"
            },
            "description": "Filter on `disposition` with the `lt` operator."
          },
          {
            "name": "disposition.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `disposition` with the `in` operator.",
              "title": "Disposition.In"
            },
            "description": "Filter on `disposition` with the `in` operator."
          },
          {
            "name": "has_outcome",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `has_outcome`. Comma-separated values are OR.",
              "title": "Has Outcome"
            },
            "description": "Filter on `has_outcome`. Comma-separated values are OR."
          },
          {
            "name": "has_outcome.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `has_outcome` with the `gte` operator.",
              "title": "Has Outcome.Gte"
            },
            "description": "Filter on `has_outcome` with the `gte` operator."
          },
          {
            "name": "has_outcome.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `has_outcome` with the `lte` operator.",
              "title": "Has Outcome.Lte"
            },
            "description": "Filter on `has_outcome` with the `lte` operator."
          },
          {
            "name": "has_outcome.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `has_outcome` with the `gt` operator.",
              "title": "Has Outcome.Gt"
            },
            "description": "Filter on `has_outcome` with the `gt` operator."
          },
          {
            "name": "has_outcome.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `has_outcome` with the `lt` operator.",
              "title": "Has Outcome.Lt"
            },
            "description": "Filter on `has_outcome` with the `lt` operator."
          },
          {
            "name": "has_outcome.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `has_outcome` with the `in` operator.",
              "title": "Has Outcome.In"
            },
            "description": "Filter on `has_outcome` with the `in` operator."
          },
          {
            "name": "sub_code",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `sub_code`. Comma-separated values are OR.",
              "title": "Sub Code"
            },
            "description": "Filter on `sub_code`. Comma-separated values are OR."
          },
          {
            "name": "sub_code.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `sub_code` with the `gte` operator.",
              "title": "Sub Code.Gte"
            },
            "description": "Filter on `sub_code` with the `gte` operator."
          },
          {
            "name": "sub_code.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `sub_code` with the `lte` operator.",
              "title": "Sub Code.Lte"
            },
            "description": "Filter on `sub_code` with the `lte` operator."
          },
          {
            "name": "sub_code.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `sub_code` with the `gt` operator.",
              "title": "Sub Code.Gt"
            },
            "description": "Filter on `sub_code` with the `gt` operator."
          },
          {
            "name": "sub_code.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `sub_code` with the `lt` operator.",
              "title": "Sub Code.Lt"
            },
            "description": "Filter on `sub_code` with the `lt` operator."
          },
          {
            "name": "sub_code.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `sub_code` with the `in` operator.",
              "title": "Sub Code.In"
            },
            "description": "Filter on `sub_code` with the `in` operator."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorPage_CampaignOutcomeSummary_"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/campaigns/{campaign_id}/survey-rollup": {
      "get": {
        "tags": [
          "campaigns"
        ],
        "summary": "Survey rollup: response funnel, per-question distributions, CSAT/NPS aggregates",
        "operationId": "read_survey_rollup_v1_campaigns__campaign_id__survey_rollup_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "campaign_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Campaign Id"
            }
          },
          {
            "name": "created_at",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at`. Comma-separated values are OR.",
              "title": "Created At"
            },
            "description": "Filter on `created_at`. Comma-separated values are OR."
          },
          {
            "name": "created_at.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `gte` operator.",
              "title": "Created At.Gte"
            },
            "description": "Filter on `created_at` with the `gte` operator."
          },
          {
            "name": "created_at.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `lte` operator.",
              "title": "Created At.Lte"
            },
            "description": "Filter on `created_at` with the `lte` operator."
          },
          {
            "name": "created_at.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `gt` operator.",
              "title": "Created At.Gt"
            },
            "description": "Filter on `created_at` with the `gt` operator."
          },
          {
            "name": "created_at.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `lt` operator.",
              "title": "Created At.Lt"
            },
            "description": "Filter on `created_at` with the `lt` operator."
          },
          {
            "name": "created_at.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `in` operator.",
              "title": "Created At.In"
            },
            "description": "Filter on `created_at` with the `in` operator."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SurveyRollup"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/dashboard-summary": {
      "get": {
        "tags": [
          "analytics"
        ],
        "summary": "Read the compact customer-portal Home summary",
        "description": "Return bounded carrier activity, current work, outcomes, and attention states.",
        "operationId": "read_dashboard_summary_v1_dashboard_summary_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "start",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date-time"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Inclusive lower bound, ISO-8601. The attempt and turn ledgers are month-partitioned, so a report must name both sides of its window and may span at most 93 days.",
              "title": "Start"
            },
            "description": "Inclusive lower bound, ISO-8601. The attempt and turn ledgers are month-partitioned, so a report must name both sides of its window and may span at most 93 days."
          },
          {
            "name": "end",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date-time"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Exclusive upper bound, ISO-8601.",
              "title": "End"
            },
            "description": "Exclusive upper bound, ISO-8601."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DashboardSummary"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/analytics/funnel": {
      "get": {
        "tags": [
          "analytics"
        ],
        "summary": "Dial → connect → conversation → outcome, with stage rates",
        "operationId": "read_funnel_v1_analytics_funnel_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "start",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date-time"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Inclusive lower bound, ISO-8601. The attempt and turn ledgers are month-partitioned, so a report must name both sides of its window and may span at most 93 days.",
              "title": "Start"
            },
            "description": "Inclusive lower bound, ISO-8601. The attempt and turn ledgers are month-partitioned, so a report must name both sides of its window and may span at most 93 days."
          },
          {
            "name": "end",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date-time"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Exclusive upper bound, ISO-8601.",
              "title": "End"
            },
            "description": "Exclusive upper bound, ISO-8601."
          },
          {
            "name": "group_by",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "array",
                  "items": {
                    "enum": [
                      "campaign",
                      "agent_version",
                      "day"
                    ],
                    "type": "string"
                  }
                },
                {
                  "type": "null"
                }
              ],
              "description": "Repeatable. Omit for a single total across the window.",
              "title": "Group By"
            },
            "description": "Repeatable. Omit for a single total across the window."
          },
          {
            "name": "campaign_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Narrow to one campaign.",
              "title": "Campaign Id"
            },
            "description": "Narrow to one campaign."
          },
          {
            "name": "agent_version_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Narrow to one published agent version.",
              "title": "Agent Version Id"
            },
            "description": "Narrow to one published agent version."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FunnelReport"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/analytics/dispositions": {
      "get": {
        "tags": [
          "analytics"
        ],
        "summary": "Disposition mix, with each disposition's share of its group",
        "operationId": "read_dispositions_v1_analytics_dispositions_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "start",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date-time"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Inclusive lower bound, ISO-8601. The attempt and turn ledgers are month-partitioned, so a report must name both sides of its window and may span at most 93 days.",
              "title": "Start"
            },
            "description": "Inclusive lower bound, ISO-8601. The attempt and turn ledgers are month-partitioned, so a report must name both sides of its window and may span at most 93 days."
          },
          {
            "name": "end",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date-time"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Exclusive upper bound, ISO-8601.",
              "title": "End"
            },
            "description": "Exclusive upper bound, ISO-8601."
          },
          {
            "name": "group_by",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "array",
                  "items": {
                    "enum": [
                      "campaign",
                      "agent_version",
                      "day"
                    ],
                    "type": "string"
                  }
                },
                {
                  "type": "null"
                }
              ],
              "description": "Repeatable. Omit for a single total across the window.",
              "title": "Group By"
            },
            "description": "Repeatable. Omit for a single total across the window."
          },
          {
            "name": "campaign_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Narrow to one campaign.",
              "title": "Campaign Id"
            },
            "description": "Narrow to one campaign."
          },
          {
            "name": "agent_version_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Narrow to one published agent version.",
              "title": "Agent Version Id"
            },
            "description": "Narrow to one published agent version."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DispositionReport"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/analytics/pathways": {
      "get": {
        "tags": [
          "analytics"
        ],
        "summary": "Business-pathway counters: leads, messages, tickets, callbacks, appointments",
        "description": "What the receptionist's conversations actually left behind (ADR-0037).\n\nCounts durable rows only - never the outbox, which is a delivery artifact - so the\nreport and the resources it summarizes can never disagree.",
        "operationId": "read_pathways_v1_analytics_pathways_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "start",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date-time"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Inclusive lower bound, ISO-8601. The attempt and turn ledgers are month-partitioned, so a report must name both sides of its window and may span at most 93 days.",
              "title": "Start"
            },
            "description": "Inclusive lower bound, ISO-8601. The attempt and turn ledgers are month-partitioned, so a report must name both sides of its window and may span at most 93 days."
          },
          {
            "name": "end",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date-time"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Exclusive upper bound, ISO-8601.",
              "title": "End"
            },
            "description": "Exclusive upper bound, ISO-8601."
          },
          {
            "name": "group_by",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "array",
                  "items": {
                    "enum": [
                      "agent_version",
                      "day"
                    ],
                    "type": "string"
                  }
                },
                {
                  "type": "null"
                }
              ],
              "description": "Repeatable: agent_version and/or day. Omit for one total.",
              "title": "Group By"
            },
            "description": "Repeatable: agent_version and/or day. Omit for one total."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PathwaysReport"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/analytics/latency": {
      "get": {
        "tags": [
          "analytics"
        ],
        "summary": "Voice-to-voice and LLM-TTFT percentiles over the turn ledger",
        "operationId": "read_latency_v1_analytics_latency_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "start",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date-time"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Inclusive lower bound, ISO-8601. The attempt and turn ledgers are month-partitioned, so a report must name both sides of its window and may span at most 93 days.",
              "title": "Start"
            },
            "description": "Inclusive lower bound, ISO-8601. The attempt and turn ledgers are month-partitioned, so a report must name both sides of its window and may span at most 93 days."
          },
          {
            "name": "end",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date-time"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Exclusive upper bound, ISO-8601.",
              "title": "End"
            },
            "description": "Exclusive upper bound, ISO-8601."
          },
          {
            "name": "group_by",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "array",
                  "items": {
                    "enum": [
                      "campaign",
                      "agent_version",
                      "day"
                    ],
                    "type": "string"
                  }
                },
                {
                  "type": "null"
                }
              ],
              "description": "Repeatable. Omit for a single total across the window.",
              "title": "Group By"
            },
            "description": "Repeatable. Omit for a single total across the window."
          },
          {
            "name": "campaign_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Narrow to one campaign.",
              "title": "Campaign Id"
            },
            "description": "Narrow to one campaign."
          },
          {
            "name": "agent_version_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Narrow to one published agent version.",
              "title": "Agent Version Id"
            },
            "description": "Narrow to one published agent version."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LatencyReport"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/scrub-runs": {
      "post": {
        "tags": [
          "compliance"
        ],
        "summary": "Queue a pre-campaign scrub of a contact list",
        "operationId": "create_scrub_run_v1_scrub_runs_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ScrubRunCreateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScrubRun"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/v1/scrub-runs/{run_id}": {
      "get": {
        "tags": [
          "compliance"
        ],
        "summary": "Read a scrub report",
        "operationId": "read_scrub_run_v1_scrub_runs__run_id__get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "run_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Run Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScrubRun"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/scrub-runs/{run_id}/results": {
      "get": {
        "tags": [
          "compliance"
        ],
        "summary": "List a scrub run's per-contact rows",
        "operationId": "list_scrub_results_v1_scrub_runs__run_id__results_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "run_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Run Id"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 200,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          },
          {
            "name": "verdict",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `verdict`. Comma-separated values are OR.",
              "title": "Verdict"
            },
            "description": "Filter on `verdict`. Comma-separated values are OR."
          },
          {
            "name": "verdict.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `verdict` with the `gte` operator.",
              "title": "Verdict.Gte"
            },
            "description": "Filter on `verdict` with the `gte` operator."
          },
          {
            "name": "verdict.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `verdict` with the `lte` operator.",
              "title": "Verdict.Lte"
            },
            "description": "Filter on `verdict` with the `lte` operator."
          },
          {
            "name": "verdict.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `verdict` with the `gt` operator.",
              "title": "Verdict.Gt"
            },
            "description": "Filter on `verdict` with the `gt` operator."
          },
          {
            "name": "verdict.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `verdict` with the `lt` operator.",
              "title": "Verdict.Lt"
            },
            "description": "Filter on `verdict` with the `lt` operator."
          },
          {
            "name": "verdict.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `verdict` with the `in` operator.",
              "title": "Verdict.In"
            },
            "description": "Filter on `verdict` with the `in` operator."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorPage_ScrubResultSummary_"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/scrub-runs/{run_id}/acknowledge": {
      "post": {
        "tags": [
          "compliance"
        ],
        "summary": "Acknowledge a scrub report so it can authorize a launch",
        "operationId": "acknowledge_scrub_run_v1_scrub_runs__run_id__acknowledge_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "run_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Run Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ScrubRunAcknowledgeRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScrubRunAcknowledgement"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/dnc-entries": {
      "get": {
        "tags": [
          "compliance"
        ],
        "summary": "List this tenant's internal DNC",
        "operationId": "list_dnc_entries_v1_dnc_entries_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 200,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          },
          {
            "name": "phone_e164",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `phone_e164`. Comma-separated values are OR.",
              "title": "Phone E164"
            },
            "description": "Filter on `phone_e164`. Comma-separated values are OR."
          },
          {
            "name": "phone_e164.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `phone_e164` with the `gte` operator.",
              "title": "Phone E164.Gte"
            },
            "description": "Filter on `phone_e164` with the `gte` operator."
          },
          {
            "name": "phone_e164.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `phone_e164` with the `lte` operator.",
              "title": "Phone E164.Lte"
            },
            "description": "Filter on `phone_e164` with the `lte` operator."
          },
          {
            "name": "phone_e164.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `phone_e164` with the `gt` operator.",
              "title": "Phone E164.Gt"
            },
            "description": "Filter on `phone_e164` with the `gt` operator."
          },
          {
            "name": "phone_e164.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `phone_e164` with the `lt` operator.",
              "title": "Phone E164.Lt"
            },
            "description": "Filter on `phone_e164` with the `lt` operator."
          },
          {
            "name": "phone_e164.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `phone_e164` with the `in` operator.",
              "title": "Phone E164.In"
            },
            "description": "Filter on `phone_e164` with the `in` operator."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorPage_DncEntrySummary_"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "compliance"
        ],
        "summary": "Record a revocation: suppress a number across every channel",
        "description": "Suppress a number on this tenant's internal DNC - and everything that implies.\n\nA tenant writing this row is recording a revocation, so it takes the same path a\nmid-call opt-out takes: the suppression, `optout.recorded`, and the withdrawal of the\nconsent standing behind the number, in one transaction. Writing the row alone would\nleave the consent ledger saying this person still consents - the suppression blocks the\ndial either way (internal DNC is an unwaivable floor, CANON fact 71), but the ledger is\nwhat an evidence request is answered from, so it may not contradict the opt-out beside\nit.\n\nWhich is why a revocation may not be time-limited here, and `expires_at` is refused by\nname rather than accepted and quietly ignored - the same reason `scope` is expressible\nat all (docs/07-compliance.md: internal DNC is a suppression record that persists, and\nis carved out of erasure for exactly that reason).",
        "operationId": "create_dnc_entry_v1_dnc_entries_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DncEntryCreateRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DncEntrySummary"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/consents": {
      "get": {
        "tags": [
          "compliance"
        ],
        "summary": "List this tenant's consent records",
        "operationId": "list_consents_v1_consents_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 200,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          },
          {
            "name": "contact_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `contact_id`. Comma-separated values are OR.",
              "title": "Contact Id"
            },
            "description": "Filter on `contact_id`. Comma-separated values are OR."
          },
          {
            "name": "contact_id.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `contact_id` with the `gte` operator.",
              "title": "Contact Id.Gte"
            },
            "description": "Filter on `contact_id` with the `gte` operator."
          },
          {
            "name": "contact_id.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `contact_id` with the `lte` operator.",
              "title": "Contact Id.Lte"
            },
            "description": "Filter on `contact_id` with the `lte` operator."
          },
          {
            "name": "contact_id.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `contact_id` with the `gt` operator.",
              "title": "Contact Id.Gt"
            },
            "description": "Filter on `contact_id` with the `gt` operator."
          },
          {
            "name": "contact_id.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `contact_id` with the `lt` operator.",
              "title": "Contact Id.Lt"
            },
            "description": "Filter on `contact_id` with the `lt` operator."
          },
          {
            "name": "contact_id.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `contact_id` with the `in` operator.",
              "title": "Contact Id.In"
            },
            "description": "Filter on `contact_id` with the `in` operator."
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status`. Comma-separated values are OR.",
              "title": "Status"
            },
            "description": "Filter on `status`. Comma-separated values are OR."
          },
          {
            "name": "status.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `gte` operator.",
              "title": "Status.Gte"
            },
            "description": "Filter on `status` with the `gte` operator."
          },
          {
            "name": "status.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `lte` operator.",
              "title": "Status.Lte"
            },
            "description": "Filter on `status` with the `lte` operator."
          },
          {
            "name": "status.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `gt` operator.",
              "title": "Status.Gt"
            },
            "description": "Filter on `status` with the `gt` operator."
          },
          {
            "name": "status.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `lt` operator.",
              "title": "Status.Lt"
            },
            "description": "Filter on `status` with the `lt` operator."
          },
          {
            "name": "status.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `in` operator.",
              "title": "Status.In"
            },
            "description": "Filter on `status` with the `in` operator."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorPage_ConsentRecordSummary_"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "compliance"
        ],
        "summary": "Append a consent record, or a revocation of one",
        "operationId": "create_consent_v1_consents_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ConsentCreateRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConsentRecordSummary"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/dnc-subscriptions": {
      "get": {
        "tags": [
          "compliance"
        ],
        "summary": "List this tenant's DNC registry subscriptions (SANs)",
        "operationId": "list_dnc_subscriptions_v1_dnc_subscriptions_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/DncSubscriptionSummary"
                  },
                  "type": "array",
                  "title": "Response List Dnc Subscriptions V1 Dnc Subscriptions Get"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      },
      "post": {
        "tags": [
          "compliance"
        ],
        "summary": "Register this tenant's federal SAN and the area codes it covers",
        "description": "Register (or refresh) this tenant's own FTC SAN - its federal DNC authorization.\n\nThis records authorization, not data. The federal registry is platform reference data\nrefreshed by ingestion and shared across tenants (the same boundary\n`POST /dnc-entries` enforces when it refuses a federal scope); a tenant's subscription is\nwhat gates that tenant's access to it. Re-registering the same SAN updates its coverage\nrather than duplicating it. The credential is not accepted here - it is held in the\nplatform vault - so this endpoint records the account reference and coverage only.",
        "operationId": "register_dnc_subscription_v1_dnc_subscriptions_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DncSubscriptionRegisterRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DncSubscriptionSummary"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/v1/workflow-outcomes": {
      "get": {
        "tags": [
          "calls",
          "calls"
        ],
        "summary": "List latest saved workforce and qualification responses",
        "operationId": "list_workflow_outcomes_v1_workflow_outcomes_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "fit_status",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "enum": [
                    "good_fit",
                    "not_a_fit",
                    "needs_follow_up",
                    "unreviewed",
                    "superseded"
                  ],
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Fit Status"
            }
          },
          {
            "name": "workflow",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "enum": [
                    "workforce",
                    "sales",
                    "recruiting"
                  ],
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Workflow"
            }
          },
          {
            "name": "response",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 64
                },
                {
                  "type": "null"
                }
              ],
              "title": "Response"
            }
          },
          {
            "name": "agent_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "Agent Id"
            }
          },
          {
            "name": "campaign_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "Campaign Id"
            }
          },
          {
            "name": "start",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date-time"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Inclusive lower bound, ISO-8601. The attempt and turn ledgers are month-partitioned, so a report must name both sides of its window and may span at most 93 days.",
              "title": "Start"
            },
            "description": "Inclusive lower bound, ISO-8601. The attempt and turn ledgers are month-partitioned, so a report must name both sides of its window and may span at most 93 days."
          },
          {
            "name": "end",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date-time"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Exclusive upper bound, ISO-8601.",
              "title": "End"
            },
            "description": "Exclusive upper bound, ISO-8601."
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 200,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorPage_WorkflowOutcome_"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/qualification-fit-metrics": {
      "get": {
        "tags": [
          "calls",
          "calls"
        ],
        "summary": "Count current team decisions for a response cohort",
        "operationId": "summarize_qualification_fit_v1_qualification_fit_metrics_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "workflow",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "enum": [
                    "workforce",
                    "sales",
                    "recruiting"
                  ],
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Workflow"
            }
          },
          {
            "name": "response",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 64
                },
                {
                  "type": "null"
                }
              ],
              "title": "Response"
            }
          },
          {
            "name": "agent_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "Agent Id"
            }
          },
          {
            "name": "campaign_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "Campaign Id"
            }
          },
          {
            "name": "start",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date-time"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Inclusive lower bound, ISO-8601. The attempt and turn ledgers are month-partitioned, so a report must name both sides of its window and may span at most 93 days.",
              "title": "Start"
            },
            "description": "Inclusive lower bound, ISO-8601. The attempt and turn ledgers are month-partitioned, so a report must name both sides of its window and may span at most 93 days."
          },
          {
            "name": "end",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date-time"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Exclusive upper bound, ISO-8601.",
              "title": "End"
            },
            "description": "Exclusive upper bound, ISO-8601."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QualificationFitSummary"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/workflow-outcomes/summary": {
      "get": {
        "tags": [
          "calls",
          "calls"
        ],
        "summary": "Count current saved responses across a bounded window",
        "operationId": "summarize_workflow_outcomes_v1_workflow_outcomes_summary_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "workflow",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "enum": [
                    "workforce",
                    "sales",
                    "recruiting"
                  ],
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Workflow"
            }
          },
          {
            "name": "response",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 64
                },
                {
                  "type": "null"
                }
              ],
              "title": "Response"
            }
          },
          {
            "name": "agent_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "Agent Id"
            }
          },
          {
            "name": "campaign_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "Campaign Id"
            }
          },
          {
            "name": "start",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date-time"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Inclusive lower bound, ISO-8601. The attempt and turn ledgers are month-partitioned, so a report must name both sides of its window and may span at most 93 days.",
              "title": "Start"
            },
            "description": "Inclusive lower bound, ISO-8601. The attempt and turn ledgers are month-partitioned, so a report must name both sides of its window and may span at most 93 days."
          },
          {
            "name": "end",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date-time"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Exclusive upper bound, ISO-8601.",
              "title": "End"
            },
            "description": "Exclusive upper bound, ISO-8601."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkflowOutcomeSummary"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/workflow-outcomes/{action_id}/fit-reviews": {
      "get": {
        "tags": [
          "calls",
          "calls"
        ],
        "summary": "Read the team review history for these exact answers",
        "operationId": "list_fit_reviews_v1_workflow_outcomes__action_id__fit_reviews_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "action_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Action Id"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 200,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorPage_QualificationReview_"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "calls",
          "calls"
        ],
        "summary": "Save a team decision against the current qualification answers",
        "operationId": "create_fit_review_v1_workflow_outcomes__action_id__fit_reviews_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "action_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Action Id"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "Unique key for this request, so a retry replays the original result instead of repeating the work. Stored for 24 hours; a replayed response carries `Idempotent-Replay: true`. A UUID is the documented shape. **Required on this endpoint**: a retry without one would dial a human twice or spend money twice.",
            "schema": {
              "type": "string",
              "maxLength": 255
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/QualificationReviewRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QualificationReview"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/workflow-outcomes/{action_id}/contact-correction": {
      "get": {
        "tags": [
          "calls",
          "calls"
        ],
        "summary": "Review a caller proposal against the current contact",
        "operationId": "get_contact_correction_v1_workflow_outcomes__action_id__contact_correction_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "action_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Action Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactCorrectionReviewState"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/workflow-outcomes/{action_id}/contact-correction-reviews": {
      "post": {
        "tags": [
          "calls",
          "calls"
        ],
        "summary": "Apply or reject this caller correction with a final recorded decision",
        "operationId": "create_contact_correction_review_v1_workflow_outcomes__action_id__contact_correction_reviews_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "action_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Action Id"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "Unique key for this request, so a retry replays the original result instead of repeating the work. Stored for 24 hours; a replayed response carries `Idempotent-Replay: true`. A UUID is the documented shape. **Required on this endpoint**: a retry without one would dial a human twice or spend money twice.",
            "schema": {
              "type": "string",
              "maxLength": 255
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ContactCorrectionReviewRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactCorrectionReview"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/calls": {
      "post": {
        "tags": [
          "calls"
        ],
        "summary": "Queue one contact-bound campaign-less outbound call",
        "description": "Queue one compliant API-key-originated campaign-less outbound call.",
        "operationId": "create_ad_hoc_call_v1_calls_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AdHocCallRequest"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AdHocCall"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "Unique key for this request, so a retry replays the original result instead of repeating the work. Stored for 24 hours; a replayed response carries `Idempotent-Replay: true`. A UUID is the documented shape. **Required on this endpoint**: a retry without one would dial a human twice or spend money twice.",
            "schema": {
              "type": "string",
              "maxLength": 255
            }
          }
        ]
      },
      "get": {
        "tags": [
          "calls"
        ],
        "summary": "List calls",
        "operationId": "list_calls_v1_calls_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 200,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          },
          {
            "name": "agent_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `agent_id`. Comma-separated values are OR.",
              "title": "Agent Id"
            },
            "description": "Filter on `agent_id`. Comma-separated values are OR."
          },
          {
            "name": "agent_id.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `agent_id` with the `gte` operator.",
              "title": "Agent Id.Gte"
            },
            "description": "Filter on `agent_id` with the `gte` operator."
          },
          {
            "name": "agent_id.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `agent_id` with the `lte` operator.",
              "title": "Agent Id.Lte"
            },
            "description": "Filter on `agent_id` with the `lte` operator."
          },
          {
            "name": "agent_id.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `agent_id` with the `gt` operator.",
              "title": "Agent Id.Gt"
            },
            "description": "Filter on `agent_id` with the `gt` operator."
          },
          {
            "name": "agent_id.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `agent_id` with the `lt` operator.",
              "title": "Agent Id.Lt"
            },
            "description": "Filter on `agent_id` with the `lt` operator."
          },
          {
            "name": "agent_id.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `agent_id` with the `in` operator.",
              "title": "Agent Id.In"
            },
            "description": "Filter on `agent_id` with the `in` operator."
          },
          {
            "name": "agent_version_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `agent_version_id`. Comma-separated values are OR.",
              "title": "Agent Version Id"
            },
            "description": "Filter on `agent_version_id`. Comma-separated values are OR."
          },
          {
            "name": "agent_version_id.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `agent_version_id` with the `gte` operator.",
              "title": "Agent Version Id.Gte"
            },
            "description": "Filter on `agent_version_id` with the `gte` operator."
          },
          {
            "name": "agent_version_id.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `agent_version_id` with the `lte` operator.",
              "title": "Agent Version Id.Lte"
            },
            "description": "Filter on `agent_version_id` with the `lte` operator."
          },
          {
            "name": "agent_version_id.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `agent_version_id` with the `gt` operator.",
              "title": "Agent Version Id.Gt"
            },
            "description": "Filter on `agent_version_id` with the `gt` operator."
          },
          {
            "name": "agent_version_id.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `agent_version_id` with the `lt` operator.",
              "title": "Agent Version Id.Lt"
            },
            "description": "Filter on `agent_version_id` with the `lt` operator."
          },
          {
            "name": "agent_version_id.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `agent_version_id` with the `in` operator.",
              "title": "Agent Version Id.In"
            },
            "description": "Filter on `agent_version_id` with the `in` operator."
          },
          {
            "name": "campaign_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `campaign_id`. Comma-separated values are OR.",
              "title": "Campaign Id"
            },
            "description": "Filter on `campaign_id`. Comma-separated values are OR."
          },
          {
            "name": "campaign_id.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `campaign_id` with the `gte` operator.",
              "title": "Campaign Id.Gte"
            },
            "description": "Filter on `campaign_id` with the `gte` operator."
          },
          {
            "name": "campaign_id.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `campaign_id` with the `lte` operator.",
              "title": "Campaign Id.Lte"
            },
            "description": "Filter on `campaign_id` with the `lte` operator."
          },
          {
            "name": "campaign_id.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `campaign_id` with the `gt` operator.",
              "title": "Campaign Id.Gt"
            },
            "description": "Filter on `campaign_id` with the `gt` operator."
          },
          {
            "name": "campaign_id.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `campaign_id` with the `lt` operator.",
              "title": "Campaign Id.Lt"
            },
            "description": "Filter on `campaign_id` with the `lt` operator."
          },
          {
            "name": "campaign_id.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `campaign_id` with the `in` operator.",
              "title": "Campaign Id.In"
            },
            "description": "Filter on `campaign_id` with the `in` operator."
          },
          {
            "name": "contact_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `contact_id`. Comma-separated values are OR.",
              "title": "Contact Id"
            },
            "description": "Filter on `contact_id`. Comma-separated values are OR."
          },
          {
            "name": "contact_id.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `contact_id` with the `gte` operator.",
              "title": "Contact Id.Gte"
            },
            "description": "Filter on `contact_id` with the `gte` operator."
          },
          {
            "name": "contact_id.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `contact_id` with the `lte` operator.",
              "title": "Contact Id.Lte"
            },
            "description": "Filter on `contact_id` with the `lte` operator."
          },
          {
            "name": "contact_id.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `contact_id` with the `gt` operator.",
              "title": "Contact Id.Gt"
            },
            "description": "Filter on `contact_id` with the `gt` operator."
          },
          {
            "name": "contact_id.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `contact_id` with the `lt` operator.",
              "title": "Contact Id.Lt"
            },
            "description": "Filter on `contact_id` with the `lt` operator."
          },
          {
            "name": "contact_id.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `contact_id` with the `in` operator.",
              "title": "Contact Id.In"
            },
            "description": "Filter on `contact_id` with the `in` operator."
          },
          {
            "name": "created_at",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at`. Comma-separated values are OR.",
              "title": "Created At"
            },
            "description": "Filter on `created_at`. Comma-separated values are OR."
          },
          {
            "name": "created_at.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `gte` operator.",
              "title": "Created At.Gte"
            },
            "description": "Filter on `created_at` with the `gte` operator."
          },
          {
            "name": "created_at.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `lte` operator.",
              "title": "Created At.Lte"
            },
            "description": "Filter on `created_at` with the `lte` operator."
          },
          {
            "name": "created_at.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `gt` operator.",
              "title": "Created At.Gt"
            },
            "description": "Filter on `created_at` with the `gt` operator."
          },
          {
            "name": "created_at.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `lt` operator.",
              "title": "Created At.Lt"
            },
            "description": "Filter on `created_at` with the `lt` operator."
          },
          {
            "name": "created_at.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `in` operator.",
              "title": "Created At.In"
            },
            "description": "Filter on `created_at` with the `in` operator."
          },
          {
            "name": "direction",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `direction`. Comma-separated values are OR.",
              "title": "Direction"
            },
            "description": "Filter on `direction`. Comma-separated values are OR."
          },
          {
            "name": "direction.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `direction` with the `gte` operator.",
              "title": "Direction.Gte"
            },
            "description": "Filter on `direction` with the `gte` operator."
          },
          {
            "name": "direction.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `direction` with the `lte` operator.",
              "title": "Direction.Lte"
            },
            "description": "Filter on `direction` with the `lte` operator."
          },
          {
            "name": "direction.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `direction` with the `gt` operator.",
              "title": "Direction.Gt"
            },
            "description": "Filter on `direction` with the `gt` operator."
          },
          {
            "name": "direction.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `direction` with the `lt` operator.",
              "title": "Direction.Lt"
            },
            "description": "Filter on `direction` with the `lt` operator."
          },
          {
            "name": "direction.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `direction` with the `in` operator.",
              "title": "Direction.In"
            },
            "description": "Filter on `direction` with the `in` operator."
          },
          {
            "name": "disposition",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `disposition`. Comma-separated values are OR.",
              "title": "Disposition"
            },
            "description": "Filter on `disposition`. Comma-separated values are OR."
          },
          {
            "name": "disposition.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `disposition` with the `gte` operator.",
              "title": "Disposition.Gte"
            },
            "description": "Filter on `disposition` with the `gte` operator."
          },
          {
            "name": "disposition.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `disposition` with the `lte` operator.",
              "title": "Disposition.Lte"
            },
            "description": "Filter on `disposition` with the `lte` operator."
          },
          {
            "name": "disposition.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `disposition` with the `gt` operator.",
              "title": "Disposition.Gt"
            },
            "description": "Filter on `disposition` with the `gt` operator."
          },
          {
            "name": "disposition.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `disposition` with the `lt` operator.",
              "title": "Disposition.Lt"
            },
            "description": "Filter on `disposition` with the `lt` operator."
          },
          {
            "name": "disposition.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `disposition` with the `in` operator.",
              "title": "Disposition.In"
            },
            "description": "Filter on `disposition` with the `in` operator."
          },
          {
            "name": "has_campaign",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `has_campaign`. Comma-separated values are OR.",
              "title": "Has Campaign"
            },
            "description": "Filter on `has_campaign`. Comma-separated values are OR."
          },
          {
            "name": "has_campaign.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `has_campaign` with the `gte` operator.",
              "title": "Has Campaign.Gte"
            },
            "description": "Filter on `has_campaign` with the `gte` operator."
          },
          {
            "name": "has_campaign.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `has_campaign` with the `lte` operator.",
              "title": "Has Campaign.Lte"
            },
            "description": "Filter on `has_campaign` with the `lte` operator."
          },
          {
            "name": "has_campaign.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `has_campaign` with the `gt` operator.",
              "title": "Has Campaign.Gt"
            },
            "description": "Filter on `has_campaign` with the `gt` operator."
          },
          {
            "name": "has_campaign.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `has_campaign` with the `lt` operator.",
              "title": "Has Campaign.Lt"
            },
            "description": "Filter on `has_campaign` with the `lt` operator."
          },
          {
            "name": "has_campaign.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `has_campaign` with the `in` operator.",
              "title": "Has Campaign.In"
            },
            "description": "Filter on `has_campaign` with the `in` operator."
          },
          {
            "name": "started_at",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `started_at`. Comma-separated values are OR.",
              "title": "Started At"
            },
            "description": "Filter on `started_at`. Comma-separated values are OR."
          },
          {
            "name": "started_at.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `started_at` with the `gte` operator.",
              "title": "Started At.Gte"
            },
            "description": "Filter on `started_at` with the `gte` operator."
          },
          {
            "name": "started_at.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `started_at` with the `lte` operator.",
              "title": "Started At.Lte"
            },
            "description": "Filter on `started_at` with the `lte` operator."
          },
          {
            "name": "started_at.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `started_at` with the `gt` operator.",
              "title": "Started At.Gt"
            },
            "description": "Filter on `started_at` with the `gt` operator."
          },
          {
            "name": "started_at.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `started_at` with the `lt` operator.",
              "title": "Started At.Lt"
            },
            "description": "Filter on `started_at` with the `lt` operator."
          },
          {
            "name": "started_at.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `started_at` with the `in` operator.",
              "title": "Started At.In"
            },
            "description": "Filter on `started_at` with the `in` operator."
          },
          {
            "name": "state",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `state`. Comma-separated values are OR.",
              "title": "State"
            },
            "description": "Filter on `state`. Comma-separated values are OR."
          },
          {
            "name": "state.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `state` with the `gte` operator.",
              "title": "State.Gte"
            },
            "description": "Filter on `state` with the `gte` operator."
          },
          {
            "name": "state.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `state` with the `lte` operator.",
              "title": "State.Lte"
            },
            "description": "Filter on `state` with the `lte` operator."
          },
          {
            "name": "state.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `state` with the `gt` operator.",
              "title": "State.Gt"
            },
            "description": "Filter on `state` with the `gt` operator."
          },
          {
            "name": "state.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `state` with the `lt` operator.",
              "title": "State.Lt"
            },
            "description": "Filter on `state` with the `lt` operator."
          },
          {
            "name": "state.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `state` with the `in` operator.",
              "title": "State.In"
            },
            "description": "Filter on `state` with the `in` operator."
          },
          {
            "name": "sub_code",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `sub_code`. Comma-separated values are OR.",
              "title": "Sub Code"
            },
            "description": "Filter on `sub_code`. Comma-separated values are OR."
          },
          {
            "name": "sub_code.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `sub_code` with the `gte` operator.",
              "title": "Sub Code.Gte"
            },
            "description": "Filter on `sub_code` with the `gte` operator."
          },
          {
            "name": "sub_code.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `sub_code` with the `lte` operator.",
              "title": "Sub Code.Lte"
            },
            "description": "Filter on `sub_code` with the `lte` operator."
          },
          {
            "name": "sub_code.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `sub_code` with the `gt` operator.",
              "title": "Sub Code.Gt"
            },
            "description": "Filter on `sub_code` with the `gt` operator."
          },
          {
            "name": "sub_code.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `sub_code` with the `lt` operator.",
              "title": "Sub Code.Lt"
            },
            "description": "Filter on `sub_code` with the `lt` operator."
          },
          {
            "name": "sub_code.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `sub_code` with the `in` operator.",
              "title": "Sub Code.In"
            },
            "description": "Filter on `sub_code` with the `in` operator."
          },
          {
            "name": "use_case",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `use_case`. Comma-separated values are OR.",
              "title": "Use Case"
            },
            "description": "Filter on `use_case`. Comma-separated values are OR."
          },
          {
            "name": "use_case.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `use_case` with the `gte` operator.",
              "title": "Use Case.Gte"
            },
            "description": "Filter on `use_case` with the `gte` operator."
          },
          {
            "name": "use_case.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `use_case` with the `lte` operator.",
              "title": "Use Case.Lte"
            },
            "description": "Filter on `use_case` with the `lte` operator."
          },
          {
            "name": "use_case.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `use_case` with the `gt` operator.",
              "title": "Use Case.Gt"
            },
            "description": "Filter on `use_case` with the `gt` operator."
          },
          {
            "name": "use_case.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `use_case` with the `lt` operator.",
              "title": "Use Case.Lt"
            },
            "description": "Filter on `use_case` with the `lt` operator."
          },
          {
            "name": "use_case.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `use_case` with the `in` operator.",
              "title": "Use Case.In"
            },
            "description": "Filter on `use_case` with the `in` operator."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorPage_CallSummary_"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/calls/inbound-voicemails": {
      "get": {
        "tags": [
          "calls"
        ],
        "summary": "List inbound voicemail inbox receipts",
        "description": "List admitted inbound messages, including explicit import failures and absences.\n\nThis is a receipt inbox, not a second recordings API. When an item says ``available``,\nits ``call_id`` can be read through the ordinary call detail and recording endpoints;\nevery other state is intentionally non-playable.",
        "operationId": "list_inbound_voicemails_v1_calls_inbound_voicemails_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 200,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorPage_InboundVoicemailSummary_"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/calls/inbound-voicemails/{voicemail_id}": {
      "get": {
        "tags": [
          "calls"
        ],
        "summary": "Read one inbound voicemail receipt",
        "description": "Return receipt state and timing, never audio bytes or a carrier callback URL.",
        "operationId": "read_inbound_voicemail_v1_calls_inbound_voicemails__voicemail_id__get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "voicemail_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Voicemail Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InboundVoicemail"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/calls/{call_id}": {
      "get": {
        "tags": [
          "calls"
        ],
        "summary": "Read a call",
        "description": "The call detail, with its `analysis` object once post-call scoring has run.\n\n`analysis` is null until the worker scores the call (docs/04-api.md Step 8a). It is\nalso served null - with a warning logged - when the stored verdict was written by a\nresults schema this deploy cannot read (a rollback across a schema bump): the call\ndetail is the primary resource and must not fail for a sidecar document, and the\nverdict itself stays in the `eval_runs` ledger, readable again once the deploy\ncatches up.",
        "operationId": "read_call_v1_calls__call_id__get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "call_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Call Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Call"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/calls/{call_id}/dispositions": {
      "get": {
        "tags": [
          "calls"
        ],
        "summary": "A call's disposition history, oldest first",
        "description": "Every verdict ever written for this call, agent and human alike.\n\nNot paginated: the list is one agent row plus however many times a person revisited\nit, which is a handful, and a review UI needs all of them at once to show what changed.",
        "operationId": "list_call_dispositions_v1_calls__call_id__dispositions_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "call_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Call Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DispositionRecordSummary"
                  },
                  "title": "Response List Call Dispositions V1 Calls  Call Id  Dispositions Get"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/calls/{call_id}/disposition": {
      "post": {
        "tags": [
          "calls"
        ],
        "summary": "Record a human's verdict on a reviewed call",
        "description": "Append a `human_review` disposition and make it the call's current one.\n\nAn append, never an edit. The agent's original verdict stays exactly as written - the\n`dispositions` table carries no `updated_at` for that reason - and this row becomes\nwhat `GET /v1/calls/{id}` reports. `GET /calls/{id}/dispositions` shows both.\n\nReporting only. A disposition authorizes nothing and suppresses nothing: labelling a\ncall `opt_out` here does not put the number on the internal DNC list, and labelling it\n`completed_goal` does not make the contact dialable. Suppression is\n`POST /v1/dnc-entries`, which writes the entry, withdraws the consent standing behind\nthe number, and emits `optout.recorded`.",
        "operationId": "override_call_disposition_v1_calls__call_id__disposition_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "call_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Call Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DispositionOverrideRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DispositionRecordSummary"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/calls/{call_id}/turns": {
      "get": {
        "tags": [
          "calls"
        ],
        "summary": "List a call's turns in order",
        "operationId": "list_call_turns_v1_calls__call_id__turns_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "call_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Call Id"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 200,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorPage_CallTurn_"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/calls/{call_id}/transcript": {
      "get": {
        "tags": [
          "calls"
        ],
        "summary": "Read a call's transcript with its turns",
        "operationId": "read_call_transcript_v1_calls__call_id__transcript_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "call_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Call Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CallTranscript"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/calls/{call_id}/recording": {
      "get": {
        "tags": [
          "calls"
        ],
        "summary": "Redirect to a short-lived signed URL for a call's recording",
        "operationId": "read_call_recording_v1_calls__call_id__recording_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "call_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Call Id"
            }
          }
        ],
        "responses": {
          "302": {
            "description": "Successful Response"
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/appointments": {
      "get": {
        "tags": [
          "calls"
        ],
        "summary": "List booked appointments",
        "operationId": "list_appointments_v1_appointments_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 200,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          },
          {
            "name": "call_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `call_id`. Comma-separated values are OR.",
              "title": "Call Id"
            },
            "description": "Filter on `call_id`. Comma-separated values are OR."
          },
          {
            "name": "call_id.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `call_id` with the `gte` operator.",
              "title": "Call Id.Gte"
            },
            "description": "Filter on `call_id` with the `gte` operator."
          },
          {
            "name": "call_id.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `call_id` with the `lte` operator.",
              "title": "Call Id.Lte"
            },
            "description": "Filter on `call_id` with the `lte` operator."
          },
          {
            "name": "call_id.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `call_id` with the `gt` operator.",
              "title": "Call Id.Gt"
            },
            "description": "Filter on `call_id` with the `gt` operator."
          },
          {
            "name": "call_id.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `call_id` with the `lt` operator.",
              "title": "Call Id.Lt"
            },
            "description": "Filter on `call_id` with the `lt` operator."
          },
          {
            "name": "call_id.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `call_id` with the `in` operator.",
              "title": "Call Id.In"
            },
            "description": "Filter on `call_id` with the `in` operator."
          },
          {
            "name": "campaign_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `campaign_id`. Comma-separated values are OR.",
              "title": "Campaign Id"
            },
            "description": "Filter on `campaign_id`. Comma-separated values are OR."
          },
          {
            "name": "campaign_id.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `campaign_id` with the `gte` operator.",
              "title": "Campaign Id.Gte"
            },
            "description": "Filter on `campaign_id` with the `gte` operator."
          },
          {
            "name": "campaign_id.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `campaign_id` with the `lte` operator.",
              "title": "Campaign Id.Lte"
            },
            "description": "Filter on `campaign_id` with the `lte` operator."
          },
          {
            "name": "campaign_id.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `campaign_id` with the `gt` operator.",
              "title": "Campaign Id.Gt"
            },
            "description": "Filter on `campaign_id` with the `gt` operator."
          },
          {
            "name": "campaign_id.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `campaign_id` with the `lt` operator.",
              "title": "Campaign Id.Lt"
            },
            "description": "Filter on `campaign_id` with the `lt` operator."
          },
          {
            "name": "campaign_id.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `campaign_id` with the `in` operator.",
              "title": "Campaign Id.In"
            },
            "description": "Filter on `campaign_id` with the `in` operator."
          },
          {
            "name": "contact_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `contact_id`. Comma-separated values are OR.",
              "title": "Contact Id"
            },
            "description": "Filter on `contact_id`. Comma-separated values are OR."
          },
          {
            "name": "contact_id.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `contact_id` with the `gte` operator.",
              "title": "Contact Id.Gte"
            },
            "description": "Filter on `contact_id` with the `gte` operator."
          },
          {
            "name": "contact_id.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `contact_id` with the `lte` operator.",
              "title": "Contact Id.Lte"
            },
            "description": "Filter on `contact_id` with the `lte` operator."
          },
          {
            "name": "contact_id.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `contact_id` with the `gt` operator.",
              "title": "Contact Id.Gt"
            },
            "description": "Filter on `contact_id` with the `gt` operator."
          },
          {
            "name": "contact_id.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `contact_id` with the `lt` operator.",
              "title": "Contact Id.Lt"
            },
            "description": "Filter on `contact_id` with the `lt` operator."
          },
          {
            "name": "contact_id.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `contact_id` with the `in` operator.",
              "title": "Contact Id.In"
            },
            "description": "Filter on `contact_id` with the `in` operator."
          },
          {
            "name": "created_at",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at`. Comma-separated values are OR.",
              "title": "Created At"
            },
            "description": "Filter on `created_at`. Comma-separated values are OR."
          },
          {
            "name": "created_at.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `gte` operator.",
              "title": "Created At.Gte"
            },
            "description": "Filter on `created_at` with the `gte` operator."
          },
          {
            "name": "created_at.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `lte` operator.",
              "title": "Created At.Lte"
            },
            "description": "Filter on `created_at` with the `lte` operator."
          },
          {
            "name": "created_at.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `gt` operator.",
              "title": "Created At.Gt"
            },
            "description": "Filter on `created_at` with the `gt` operator."
          },
          {
            "name": "created_at.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `lt` operator.",
              "title": "Created At.Lt"
            },
            "description": "Filter on `created_at` with the `lt` operator."
          },
          {
            "name": "created_at.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `in` operator.",
              "title": "Created At.In"
            },
            "description": "Filter on `created_at` with the `in` operator."
          },
          {
            "name": "starts_at",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `starts_at`. Comma-separated values are OR.",
              "title": "Starts At"
            },
            "description": "Filter on `starts_at`. Comma-separated values are OR."
          },
          {
            "name": "starts_at.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `starts_at` with the `gte` operator.",
              "title": "Starts At.Gte"
            },
            "description": "Filter on `starts_at` with the `gte` operator."
          },
          {
            "name": "starts_at.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `starts_at` with the `lte` operator.",
              "title": "Starts At.Lte"
            },
            "description": "Filter on `starts_at` with the `lte` operator."
          },
          {
            "name": "starts_at.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `starts_at` with the `gt` operator.",
              "title": "Starts At.Gt"
            },
            "description": "Filter on `starts_at` with the `gt` operator."
          },
          {
            "name": "starts_at.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `starts_at` with the `lt` operator.",
              "title": "Starts At.Lt"
            },
            "description": "Filter on `starts_at` with the `lt` operator."
          },
          {
            "name": "starts_at.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `starts_at` with the `in` operator.",
              "title": "Starts At.In"
            },
            "description": "Filter on `starts_at` with the `in` operator."
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status`. Comma-separated values are OR.",
              "title": "Status"
            },
            "description": "Filter on `status`. Comma-separated values are OR."
          },
          {
            "name": "status.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `gte` operator.",
              "title": "Status.Gte"
            },
            "description": "Filter on `status` with the `gte` operator."
          },
          {
            "name": "status.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `lte` operator.",
              "title": "Status.Lte"
            },
            "description": "Filter on `status` with the `lte` operator."
          },
          {
            "name": "status.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `gt` operator.",
              "title": "Status.Gt"
            },
            "description": "Filter on `status` with the `gt` operator."
          },
          {
            "name": "status.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `lt` operator.",
              "title": "Status.Lt"
            },
            "description": "Filter on `status` with the `lt` operator."
          },
          {
            "name": "status.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `in` operator.",
              "title": "Status.In"
            },
            "description": "Filter on `status` with the `in` operator."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorPage_Appointment_"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/survey-responses": {
      "get": {
        "tags": [
          "calls"
        ],
        "summary": "List survey responses",
        "operationId": "list_survey_responses_v1_survey_responses_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 200,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          },
          {
            "name": "agent_version_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `agent_version_id`. Comma-separated values are OR.",
              "title": "Agent Version Id"
            },
            "description": "Filter on `agent_version_id`. Comma-separated values are OR."
          },
          {
            "name": "agent_version_id.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `agent_version_id` with the `gte` operator.",
              "title": "Agent Version Id.Gte"
            },
            "description": "Filter on `agent_version_id` with the `gte` operator."
          },
          {
            "name": "agent_version_id.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `agent_version_id` with the `lte` operator.",
              "title": "Agent Version Id.Lte"
            },
            "description": "Filter on `agent_version_id` with the `lte` operator."
          },
          {
            "name": "agent_version_id.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `agent_version_id` with the `gt` operator.",
              "title": "Agent Version Id.Gt"
            },
            "description": "Filter on `agent_version_id` with the `gt` operator."
          },
          {
            "name": "agent_version_id.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `agent_version_id` with the `lt` operator.",
              "title": "Agent Version Id.Lt"
            },
            "description": "Filter on `agent_version_id` with the `lt` operator."
          },
          {
            "name": "agent_version_id.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `agent_version_id` with the `in` operator.",
              "title": "Agent Version Id.In"
            },
            "description": "Filter on `agent_version_id` with the `in` operator."
          },
          {
            "name": "call_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `call_id`. Comma-separated values are OR.",
              "title": "Call Id"
            },
            "description": "Filter on `call_id`. Comma-separated values are OR."
          },
          {
            "name": "call_id.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `call_id` with the `gte` operator.",
              "title": "Call Id.Gte"
            },
            "description": "Filter on `call_id` with the `gte` operator."
          },
          {
            "name": "call_id.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `call_id` with the `lte` operator.",
              "title": "Call Id.Lte"
            },
            "description": "Filter on `call_id` with the `lte` operator."
          },
          {
            "name": "call_id.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `call_id` with the `gt` operator.",
              "title": "Call Id.Gt"
            },
            "description": "Filter on `call_id` with the `gt` operator."
          },
          {
            "name": "call_id.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `call_id` with the `lt` operator.",
              "title": "Call Id.Lt"
            },
            "description": "Filter on `call_id` with the `lt` operator."
          },
          {
            "name": "call_id.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `call_id` with the `in` operator.",
              "title": "Call Id.In"
            },
            "description": "Filter on `call_id` with the `in` operator."
          },
          {
            "name": "campaign_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `campaign_id`. Comma-separated values are OR.",
              "title": "Campaign Id"
            },
            "description": "Filter on `campaign_id`. Comma-separated values are OR."
          },
          {
            "name": "campaign_id.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `campaign_id` with the `gte` operator.",
              "title": "Campaign Id.Gte"
            },
            "description": "Filter on `campaign_id` with the `gte` operator."
          },
          {
            "name": "campaign_id.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `campaign_id` with the `lte` operator.",
              "title": "Campaign Id.Lte"
            },
            "description": "Filter on `campaign_id` with the `lte` operator."
          },
          {
            "name": "campaign_id.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `campaign_id` with the `gt` operator.",
              "title": "Campaign Id.Gt"
            },
            "description": "Filter on `campaign_id` with the `gt` operator."
          },
          {
            "name": "campaign_id.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `campaign_id` with the `lt` operator.",
              "title": "Campaign Id.Lt"
            },
            "description": "Filter on `campaign_id` with the `lt` operator."
          },
          {
            "name": "campaign_id.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `campaign_id` with the `in` operator.",
              "title": "Campaign Id.In"
            },
            "description": "Filter on `campaign_id` with the `in` operator."
          },
          {
            "name": "completion_status",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `completion_status`. Comma-separated values are OR.",
              "title": "Completion Status"
            },
            "description": "Filter on `completion_status`. Comma-separated values are OR."
          },
          {
            "name": "completion_status.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `completion_status` with the `gte` operator.",
              "title": "Completion Status.Gte"
            },
            "description": "Filter on `completion_status` with the `gte` operator."
          },
          {
            "name": "completion_status.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `completion_status` with the `lte` operator.",
              "title": "Completion Status.Lte"
            },
            "description": "Filter on `completion_status` with the `lte` operator."
          },
          {
            "name": "completion_status.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `completion_status` with the `gt` operator.",
              "title": "Completion Status.Gt"
            },
            "description": "Filter on `completion_status` with the `gt` operator."
          },
          {
            "name": "completion_status.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `completion_status` with the `lt` operator.",
              "title": "Completion Status.Lt"
            },
            "description": "Filter on `completion_status` with the `lt` operator."
          },
          {
            "name": "completion_status.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `completion_status` with the `in` operator.",
              "title": "Completion Status.In"
            },
            "description": "Filter on `completion_status` with the `in` operator."
          },
          {
            "name": "created_at",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at`. Comma-separated values are OR.",
              "title": "Created At"
            },
            "description": "Filter on `created_at`. Comma-separated values are OR."
          },
          {
            "name": "created_at.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `gte` operator.",
              "title": "Created At.Gte"
            },
            "description": "Filter on `created_at` with the `gte` operator."
          },
          {
            "name": "created_at.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `lte` operator.",
              "title": "Created At.Lte"
            },
            "description": "Filter on `created_at` with the `lte` operator."
          },
          {
            "name": "created_at.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `gt` operator.",
              "title": "Created At.Gt"
            },
            "description": "Filter on `created_at` with the `gt` operator."
          },
          {
            "name": "created_at.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `lt` operator.",
              "title": "Created At.Lt"
            },
            "description": "Filter on `created_at` with the `lt` operator."
          },
          {
            "name": "created_at.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `in` operator.",
              "title": "Created At.In"
            },
            "description": "Filter on `created_at` with the `in` operator."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorPage_SurveyResponse_"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/calls/{call_id}/survey-response": {
      "get": {
        "tags": [
          "calls"
        ],
        "summary": "Read the one survey response a call produced",
        "description": "The single-fetch convenience over the collection filter.\n\nA call produces at most one response (`uq_survey_responses_call_id`), so the\nintegrator's common path - \"the webhook named this call; give me its answers\" - is\none GET rather than a filtered list walk. 404 when the call collected none.",
        "operationId": "read_call_survey_response_v1_calls__call_id__survey_response_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "call_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Call Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SurveyResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/shift-confirmations": {
      "get": {
        "tags": [
          "calls"
        ],
        "summary": "List shift confirmations",
        "operationId": "list_shift_confirmations_v1_shift_confirmations_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 200,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          },
          {
            "name": "call_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `call_id`. Comma-separated values are OR.",
              "title": "Call Id"
            },
            "description": "Filter on `call_id`. Comma-separated values are OR."
          },
          {
            "name": "call_id.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `call_id` with the `gte` operator.",
              "title": "Call Id.Gte"
            },
            "description": "Filter on `call_id` with the `gte` operator."
          },
          {
            "name": "call_id.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `call_id` with the `lte` operator.",
              "title": "Call Id.Lte"
            },
            "description": "Filter on `call_id` with the `lte` operator."
          },
          {
            "name": "call_id.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `call_id` with the `gt` operator.",
              "title": "Call Id.Gt"
            },
            "description": "Filter on `call_id` with the `gt` operator."
          },
          {
            "name": "call_id.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `call_id` with the `lt` operator.",
              "title": "Call Id.Lt"
            },
            "description": "Filter on `call_id` with the `lt` operator."
          },
          {
            "name": "call_id.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `call_id` with the `in` operator.",
              "title": "Call Id.In"
            },
            "description": "Filter on `call_id` with the `in` operator."
          },
          {
            "name": "campaign_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `campaign_id`. Comma-separated values are OR.",
              "title": "Campaign Id"
            },
            "description": "Filter on `campaign_id`. Comma-separated values are OR."
          },
          {
            "name": "campaign_id.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `campaign_id` with the `gte` operator.",
              "title": "Campaign Id.Gte"
            },
            "description": "Filter on `campaign_id` with the `gte` operator."
          },
          {
            "name": "campaign_id.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `campaign_id` with the `lte` operator.",
              "title": "Campaign Id.Lte"
            },
            "description": "Filter on `campaign_id` with the `lte` operator."
          },
          {
            "name": "campaign_id.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `campaign_id` with the `gt` operator.",
              "title": "Campaign Id.Gt"
            },
            "description": "Filter on `campaign_id` with the `gt` operator."
          },
          {
            "name": "campaign_id.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `campaign_id` with the `lt` operator.",
              "title": "Campaign Id.Lt"
            },
            "description": "Filter on `campaign_id` with the `lt` operator."
          },
          {
            "name": "campaign_id.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `campaign_id` with the `in` operator.",
              "title": "Campaign Id.In"
            },
            "description": "Filter on `campaign_id` with the `in` operator."
          },
          {
            "name": "contact_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `contact_id`. Comma-separated values are OR.",
              "title": "Contact Id"
            },
            "description": "Filter on `contact_id`. Comma-separated values are OR."
          },
          {
            "name": "contact_id.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `contact_id` with the `gte` operator.",
              "title": "Contact Id.Gte"
            },
            "description": "Filter on `contact_id` with the `gte` operator."
          },
          {
            "name": "contact_id.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `contact_id` with the `lte` operator.",
              "title": "Contact Id.Lte"
            },
            "description": "Filter on `contact_id` with the `lte` operator."
          },
          {
            "name": "contact_id.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `contact_id` with the `gt` operator.",
              "title": "Contact Id.Gt"
            },
            "description": "Filter on `contact_id` with the `gt` operator."
          },
          {
            "name": "contact_id.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `contact_id` with the `lt` operator.",
              "title": "Contact Id.Lt"
            },
            "description": "Filter on `contact_id` with the `lt` operator."
          },
          {
            "name": "contact_id.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `contact_id` with the `in` operator.",
              "title": "Contact Id.In"
            },
            "description": "Filter on `contact_id` with the `in` operator."
          },
          {
            "name": "created_at",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at`. Comma-separated values are OR.",
              "title": "Created At"
            },
            "description": "Filter on `created_at`. Comma-separated values are OR."
          },
          {
            "name": "created_at.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `gte` operator.",
              "title": "Created At.Gte"
            },
            "description": "Filter on `created_at` with the `gte` operator."
          },
          {
            "name": "created_at.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `lte` operator.",
              "title": "Created At.Lte"
            },
            "description": "Filter on `created_at` with the `lte` operator."
          },
          {
            "name": "created_at.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `gt` operator.",
              "title": "Created At.Gt"
            },
            "description": "Filter on `created_at` with the `gt` operator."
          },
          {
            "name": "created_at.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `lt` operator.",
              "title": "Created At.Lt"
            },
            "description": "Filter on `created_at` with the `lt` operator."
          },
          {
            "name": "created_at.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `in` operator.",
              "title": "Created At.In"
            },
            "description": "Filter on `created_at` with the `in` operator."
          },
          {
            "name": "response",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `response`. Comma-separated values are OR.",
              "title": "Response"
            },
            "description": "Filter on `response`. Comma-separated values are OR."
          },
          {
            "name": "response.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `response` with the `gte` operator.",
              "title": "Response.Gte"
            },
            "description": "Filter on `response` with the `gte` operator."
          },
          {
            "name": "response.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `response` with the `lte` operator.",
              "title": "Response.Lte"
            },
            "description": "Filter on `response` with the `lte` operator."
          },
          {
            "name": "response.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `response` with the `gt` operator.",
              "title": "Response.Gt"
            },
            "description": "Filter on `response` with the `gt` operator."
          },
          {
            "name": "response.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `response` with the `lt` operator.",
              "title": "Response.Lt"
            },
            "description": "Filter on `response` with the `lt` operator."
          },
          {
            "name": "response.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `response` with the `in` operator.",
              "title": "Response.In"
            },
            "description": "Filter on `response` with the `in` operator."
          },
          {
            "name": "shift_ref",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `shift_ref`. Comma-separated values are OR.",
              "title": "Shift Ref"
            },
            "description": "Filter on `shift_ref`. Comma-separated values are OR."
          },
          {
            "name": "shift_ref.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `shift_ref` with the `gte` operator.",
              "title": "Shift Ref.Gte"
            },
            "description": "Filter on `shift_ref` with the `gte` operator."
          },
          {
            "name": "shift_ref.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `shift_ref` with the `lte` operator.",
              "title": "Shift Ref.Lte"
            },
            "description": "Filter on `shift_ref` with the `lte` operator."
          },
          {
            "name": "shift_ref.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `shift_ref` with the `gt` operator.",
              "title": "Shift Ref.Gt"
            },
            "description": "Filter on `shift_ref` with the `gt` operator."
          },
          {
            "name": "shift_ref.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `shift_ref` with the `lt` operator.",
              "title": "Shift Ref.Lt"
            },
            "description": "Filter on `shift_ref` with the `lt` operator."
          },
          {
            "name": "shift_ref.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `shift_ref` with the `in` operator.",
              "title": "Shift Ref.In"
            },
            "description": "Filter on `shift_ref` with the `in` operator."
          },
          {
            "name": "shift_starts_at",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `shift_starts_at`. Comma-separated values are OR.",
              "title": "Shift Starts At"
            },
            "description": "Filter on `shift_starts_at`. Comma-separated values are OR."
          },
          {
            "name": "shift_starts_at.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `shift_starts_at` with the `gte` operator.",
              "title": "Shift Starts At.Gte"
            },
            "description": "Filter on `shift_starts_at` with the `gte` operator."
          },
          {
            "name": "shift_starts_at.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `shift_starts_at` with the `lte` operator.",
              "title": "Shift Starts At.Lte"
            },
            "description": "Filter on `shift_starts_at` with the `lte` operator."
          },
          {
            "name": "shift_starts_at.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `shift_starts_at` with the `gt` operator.",
              "title": "Shift Starts At.Gt"
            },
            "description": "Filter on `shift_starts_at` with the `gt` operator."
          },
          {
            "name": "shift_starts_at.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `shift_starts_at` with the `lt` operator.",
              "title": "Shift Starts At.Lt"
            },
            "description": "Filter on `shift_starts_at` with the `lt` operator."
          },
          {
            "name": "shift_starts_at.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `shift_starts_at` with the `in` operator.",
              "title": "Shift Starts At.In"
            },
            "description": "Filter on `shift_starts_at` with the `in` operator."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorPage_ShiftConfirmation_"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/caller-request-metrics": {
      "get": {
        "tags": [
          "inbox"
        ],
        "summary": "Current resolution of messages and tickets received in a bounded period",
        "operationId": "caller_request_metrics_v1_caller_request_metrics_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "agent_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "Agent Id"
            }
          },
          {
            "name": "campaign_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 128
                },
                {
                  "type": "null"
                }
              ],
              "title": "Campaign Id"
            }
          },
          {
            "name": "start",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date-time"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Inclusive lower bound, ISO-8601. The attempt and turn ledgers are month-partitioned, so a report must name both sides of its window and may span at most 93 days.",
              "title": "Start"
            },
            "description": "Inclusive lower bound, ISO-8601. The attempt and turn ledgers are month-partitioned, so a report must name both sides of its window and may span at most 93 days."
          },
          {
            "name": "end",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date-time"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Exclusive upper bound, ISO-8601.",
              "title": "End"
            },
            "description": "Exclusive upper bound, ISO-8601."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RequestResolutionSummary"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/caller-requests": {
      "get": {
        "tags": [
          "inbox"
        ],
        "summary": "The caller-request queue: messages and tickets the AI took mid-call",
        "description": "Cursor + filters + a watermark ETag, exactly like the attempt feed it sits beside.",
        "operationId": "list_caller_requests_v1_caller_requests_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 200,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          },
          {
            "name": "agent_version_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `agent_version_id`. Comma-separated values are OR.",
              "title": "Agent Version Id"
            },
            "description": "Filter on `agent_version_id`. Comma-separated values are OR."
          },
          {
            "name": "agent_version_id.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `agent_version_id` with the `gte` operator.",
              "title": "Agent Version Id.Gte"
            },
            "description": "Filter on `agent_version_id` with the `gte` operator."
          },
          {
            "name": "agent_version_id.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `agent_version_id` with the `lte` operator.",
              "title": "Agent Version Id.Lte"
            },
            "description": "Filter on `agent_version_id` with the `lte` operator."
          },
          {
            "name": "agent_version_id.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `agent_version_id` with the `gt` operator.",
              "title": "Agent Version Id.Gt"
            },
            "description": "Filter on `agent_version_id` with the `gt` operator."
          },
          {
            "name": "agent_version_id.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `agent_version_id` with the `lt` operator.",
              "title": "Agent Version Id.Lt"
            },
            "description": "Filter on `agent_version_id` with the `lt` operator."
          },
          {
            "name": "agent_version_id.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `agent_version_id` with the `in` operator.",
              "title": "Agent Version Id.In"
            },
            "description": "Filter on `agent_version_id` with the `in` operator."
          },
          {
            "name": "call_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `call_id`. Comma-separated values are OR.",
              "title": "Call Id"
            },
            "description": "Filter on `call_id`. Comma-separated values are OR."
          },
          {
            "name": "call_id.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `call_id` with the `gte` operator.",
              "title": "Call Id.Gte"
            },
            "description": "Filter on `call_id` with the `gte` operator."
          },
          {
            "name": "call_id.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `call_id` with the `lte` operator.",
              "title": "Call Id.Lte"
            },
            "description": "Filter on `call_id` with the `lte` operator."
          },
          {
            "name": "call_id.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `call_id` with the `gt` operator.",
              "title": "Call Id.Gt"
            },
            "description": "Filter on `call_id` with the `gt` operator."
          },
          {
            "name": "call_id.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `call_id` with the `lt` operator.",
              "title": "Call Id.Lt"
            },
            "description": "Filter on `call_id` with the `lt` operator."
          },
          {
            "name": "call_id.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `call_id` with the `in` operator.",
              "title": "Call Id.In"
            },
            "description": "Filter on `call_id` with the `in` operator."
          },
          {
            "name": "contact_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `contact_id`. Comma-separated values are OR.",
              "title": "Contact Id"
            },
            "description": "Filter on `contact_id`. Comma-separated values are OR."
          },
          {
            "name": "contact_id.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `contact_id` with the `gte` operator.",
              "title": "Contact Id.Gte"
            },
            "description": "Filter on `contact_id` with the `gte` operator."
          },
          {
            "name": "contact_id.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `contact_id` with the `lte` operator.",
              "title": "Contact Id.Lte"
            },
            "description": "Filter on `contact_id` with the `lte` operator."
          },
          {
            "name": "contact_id.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `contact_id` with the `gt` operator.",
              "title": "Contact Id.Gt"
            },
            "description": "Filter on `contact_id` with the `gt` operator."
          },
          {
            "name": "contact_id.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `contact_id` with the `lt` operator.",
              "title": "Contact Id.Lt"
            },
            "description": "Filter on `contact_id` with the `lt` operator."
          },
          {
            "name": "contact_id.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `contact_id` with the `in` operator.",
              "title": "Contact Id.In"
            },
            "description": "Filter on `contact_id` with the `in` operator."
          },
          {
            "name": "created_at",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at`. Comma-separated values are OR.",
              "title": "Created At"
            },
            "description": "Filter on `created_at`. Comma-separated values are OR."
          },
          {
            "name": "created_at.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `gte` operator.",
              "title": "Created At.Gte"
            },
            "description": "Filter on `created_at` with the `gte` operator."
          },
          {
            "name": "created_at.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `lte` operator.",
              "title": "Created At.Lte"
            },
            "description": "Filter on `created_at` with the `lte` operator."
          },
          {
            "name": "created_at.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `gt` operator.",
              "title": "Created At.Gt"
            },
            "description": "Filter on `created_at` with the `gt` operator."
          },
          {
            "name": "created_at.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `lt` operator.",
              "title": "Created At.Lt"
            },
            "description": "Filter on `created_at` with the `lt` operator."
          },
          {
            "name": "created_at.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `in` operator.",
              "title": "Created At.In"
            },
            "description": "Filter on `created_at` with the `in` operator."
          },
          {
            "name": "kind",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `kind`. Comma-separated values are OR.",
              "title": "Kind"
            },
            "description": "Filter on `kind`. Comma-separated values are OR."
          },
          {
            "name": "kind.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `kind` with the `gte` operator.",
              "title": "Kind.Gte"
            },
            "description": "Filter on `kind` with the `gte` operator."
          },
          {
            "name": "kind.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `kind` with the `lte` operator.",
              "title": "Kind.Lte"
            },
            "description": "Filter on `kind` with the `lte` operator."
          },
          {
            "name": "kind.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `kind` with the `gt` operator.",
              "title": "Kind.Gt"
            },
            "description": "Filter on `kind` with the `gt` operator."
          },
          {
            "name": "kind.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `kind` with the `lt` operator.",
              "title": "Kind.Lt"
            },
            "description": "Filter on `kind` with the `lt` operator."
          },
          {
            "name": "kind.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `kind` with the `in` operator.",
              "title": "Kind.In"
            },
            "description": "Filter on `kind` with the `in` operator."
          },
          {
            "name": "severity",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `severity`. Comma-separated values are OR.",
              "title": "Severity"
            },
            "description": "Filter on `severity`. Comma-separated values are OR."
          },
          {
            "name": "severity.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `severity` with the `gte` operator.",
              "title": "Severity.Gte"
            },
            "description": "Filter on `severity` with the `gte` operator."
          },
          {
            "name": "severity.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `severity` with the `lte` operator.",
              "title": "Severity.Lte"
            },
            "description": "Filter on `severity` with the `lte` operator."
          },
          {
            "name": "severity.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `severity` with the `gt` operator.",
              "title": "Severity.Gt"
            },
            "description": "Filter on `severity` with the `gt` operator."
          },
          {
            "name": "severity.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `severity` with the `lt` operator.",
              "title": "Severity.Lt"
            },
            "description": "Filter on `severity` with the `lt` operator."
          },
          {
            "name": "severity.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `severity` with the `in` operator.",
              "title": "Severity.In"
            },
            "description": "Filter on `severity` with the `in` operator."
          },
          {
            "name": "state",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `state`. Comma-separated values are OR.",
              "title": "State"
            },
            "description": "Filter on `state`. Comma-separated values are OR."
          },
          {
            "name": "state.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `state` with the `gte` operator.",
              "title": "State.Gte"
            },
            "description": "Filter on `state` with the `gte` operator."
          },
          {
            "name": "state.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `state` with the `lte` operator.",
              "title": "State.Lte"
            },
            "description": "Filter on `state` with the `lte` operator."
          },
          {
            "name": "state.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `state` with the `gt` operator.",
              "title": "State.Gt"
            },
            "description": "Filter on `state` with the `gt` operator."
          },
          {
            "name": "state.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `state` with the `lt` operator.",
              "title": "State.Lt"
            },
            "description": "Filter on `state` with the `lt` operator."
          },
          {
            "name": "state.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `state` with the `in` operator.",
              "title": "State.In"
            },
            "description": "Filter on `state` with the `in` operator."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorPage_CallerRequestSummary_"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/caller-requests/{request_id}": {
      "get": {
        "tags": [
          "inbox"
        ],
        "summary": "Read one caller request with its full event trail",
        "operationId": "read_caller_request_v1_caller_requests__request_id__get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "request_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Request Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CallerRequestResource"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "inbox"
        ],
        "summary": "Acknowledge, resolve, or assign a caller request",
        "description": "One optimistic-concurrency move: the caller names the version they read.\n\nA version mismatch and an illegal transition are both 409s with distinct codes, so\nthe portal can tell \"refresh and retry\" from \"someone already resolved this\".\n`ticket.resolved` is appended in this same transaction (`append_once` on the request\nid - resolved is terminal, so once is all there ever is).",
        "operationId": "update_caller_request_v1_caller_requests__request_id__patch",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "request_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Request Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CallerRequestUpdateRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CallerRequestResource"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/inbox": {
      "get": {
        "tags": [
          "inbox"
        ],
        "summary": "The merged inbox: everything a caller asked the business to do",
        "description": "One keyset timeline (created_at desc) over the five inbox kinds, caller included.\n\nThe per-kind resources remain authoritative for their own lifecycles - a client\nnavigates by the returned durable id, and this feed synthesizes no event table.\n\nWithout a `created_at.gte`, the feed defaults to the last 30 days\n(`DEFAULT_INBOX_WINDOW`): five sources - one month-partitioned - must not make the\nlaziest request the most expensive one. An explicit `created_at.gte` overrides the\ndefault entirely (docs/04-api.md §2).",
        "operationId": "read_inbox_v1_inbox_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 200,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          },
          {
            "name": "agent_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `agent_id`. Comma-separated values are OR.",
              "title": "Agent Id"
            },
            "description": "Filter on `agent_id`. Comma-separated values are OR."
          },
          {
            "name": "agent_id.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `agent_id` with the `gte` operator.",
              "title": "Agent Id.Gte"
            },
            "description": "Filter on `agent_id` with the `gte` operator."
          },
          {
            "name": "agent_id.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `agent_id` with the `lte` operator.",
              "title": "Agent Id.Lte"
            },
            "description": "Filter on `agent_id` with the `lte` operator."
          },
          {
            "name": "agent_id.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `agent_id` with the `gt` operator.",
              "title": "Agent Id.Gt"
            },
            "description": "Filter on `agent_id` with the `gt` operator."
          },
          {
            "name": "agent_id.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `agent_id` with the `lt` operator.",
              "title": "Agent Id.Lt"
            },
            "description": "Filter on `agent_id` with the `lt` operator."
          },
          {
            "name": "agent_id.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `agent_id` with the `in` operator.",
              "title": "Agent Id.In"
            },
            "description": "Filter on `agent_id` with the `in` operator."
          },
          {
            "name": "agent_version_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `agent_version_id`. Comma-separated values are OR.",
              "title": "Agent Version Id"
            },
            "description": "Filter on `agent_version_id`. Comma-separated values are OR."
          },
          {
            "name": "agent_version_id.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `agent_version_id` with the `gte` operator.",
              "title": "Agent Version Id.Gte"
            },
            "description": "Filter on `agent_version_id` with the `gte` operator."
          },
          {
            "name": "agent_version_id.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `agent_version_id` with the `lte` operator.",
              "title": "Agent Version Id.Lte"
            },
            "description": "Filter on `agent_version_id` with the `lte` operator."
          },
          {
            "name": "agent_version_id.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `agent_version_id` with the `gt` operator.",
              "title": "Agent Version Id.Gt"
            },
            "description": "Filter on `agent_version_id` with the `gt` operator."
          },
          {
            "name": "agent_version_id.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `agent_version_id` with the `lt` operator.",
              "title": "Agent Version Id.Lt"
            },
            "description": "Filter on `agent_version_id` with the `lt` operator."
          },
          {
            "name": "agent_version_id.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `agent_version_id` with the `in` operator.",
              "title": "Agent Version Id.In"
            },
            "description": "Filter on `agent_version_id` with the `in` operator."
          },
          {
            "name": "campaign_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `campaign_id`. Comma-separated values are OR.",
              "title": "Campaign Id"
            },
            "description": "Filter on `campaign_id`. Comma-separated values are OR."
          },
          {
            "name": "campaign_id.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `campaign_id` with the `gte` operator.",
              "title": "Campaign Id.Gte"
            },
            "description": "Filter on `campaign_id` with the `gte` operator."
          },
          {
            "name": "campaign_id.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `campaign_id` with the `lte` operator.",
              "title": "Campaign Id.Lte"
            },
            "description": "Filter on `campaign_id` with the `lte` operator."
          },
          {
            "name": "campaign_id.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `campaign_id` with the `gt` operator.",
              "title": "Campaign Id.Gt"
            },
            "description": "Filter on `campaign_id` with the `gt` operator."
          },
          {
            "name": "campaign_id.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `campaign_id` with the `lt` operator.",
              "title": "Campaign Id.Lt"
            },
            "description": "Filter on `campaign_id` with the `lt` operator."
          },
          {
            "name": "campaign_id.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `campaign_id` with the `in` operator.",
              "title": "Campaign Id.In"
            },
            "description": "Filter on `campaign_id` with the `in` operator."
          },
          {
            "name": "created_at",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at`. Comma-separated values are OR.",
              "title": "Created At"
            },
            "description": "Filter on `created_at`. Comma-separated values are OR."
          },
          {
            "name": "created_at.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `gte` operator.",
              "title": "Created At.Gte"
            },
            "description": "Filter on `created_at` with the `gte` operator."
          },
          {
            "name": "created_at.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `lte` operator.",
              "title": "Created At.Lte"
            },
            "description": "Filter on `created_at` with the `lte` operator."
          },
          {
            "name": "created_at.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `gt` operator.",
              "title": "Created At.Gt"
            },
            "description": "Filter on `created_at` with the `gt` operator."
          },
          {
            "name": "created_at.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `lt` operator.",
              "title": "Created At.Lt"
            },
            "description": "Filter on `created_at` with the `lt` operator."
          },
          {
            "name": "created_at.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `in` operator.",
              "title": "Created At.In"
            },
            "description": "Filter on `created_at` with the `in` operator."
          },
          {
            "name": "kind",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `kind`. Comma-separated values are OR.",
              "title": "Kind"
            },
            "description": "Filter on `kind`. Comma-separated values are OR."
          },
          {
            "name": "kind.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `kind` with the `gte` operator.",
              "title": "Kind.Gte"
            },
            "description": "Filter on `kind` with the `gte` operator."
          },
          {
            "name": "kind.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `kind` with the `lte` operator.",
              "title": "Kind.Lte"
            },
            "description": "Filter on `kind` with the `lte` operator."
          },
          {
            "name": "kind.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `kind` with the `gt` operator.",
              "title": "Kind.Gt"
            },
            "description": "Filter on `kind` with the `gt` operator."
          },
          {
            "name": "kind.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `kind` with the `lt` operator.",
              "title": "Kind.Lt"
            },
            "description": "Filter on `kind` with the `lt` operator."
          },
          {
            "name": "kind.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `kind` with the `in` operator.",
              "title": "Kind.In"
            },
            "description": "Filter on `kind` with the `in` operator."
          },
          {
            "name": "phone_number_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `phone_number_id`. Comma-separated values are OR.",
              "title": "Phone Number Id"
            },
            "description": "Filter on `phone_number_id`. Comma-separated values are OR."
          },
          {
            "name": "phone_number_id.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `phone_number_id` with the `gte` operator.",
              "title": "Phone Number Id.Gte"
            },
            "description": "Filter on `phone_number_id` with the `gte` operator."
          },
          {
            "name": "phone_number_id.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `phone_number_id` with the `lte` operator.",
              "title": "Phone Number Id.Lte"
            },
            "description": "Filter on `phone_number_id` with the `lte` operator."
          },
          {
            "name": "phone_number_id.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `phone_number_id` with the `gt` operator.",
              "title": "Phone Number Id.Gt"
            },
            "description": "Filter on `phone_number_id` with the `gt` operator."
          },
          {
            "name": "phone_number_id.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `phone_number_id` with the `lt` operator.",
              "title": "Phone Number Id.Lt"
            },
            "description": "Filter on `phone_number_id` with the `lt` operator."
          },
          {
            "name": "phone_number_id.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `phone_number_id` with the `in` operator.",
              "title": "Phone Number Id.In"
            },
            "description": "Filter on `phone_number_id` with the `in` operator."
          },
          {
            "name": "state",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `state`. Comma-separated values are OR.",
              "title": "State"
            },
            "description": "Filter on `state`. Comma-separated values are OR."
          },
          {
            "name": "state.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `state` with the `gte` operator.",
              "title": "State.Gte"
            },
            "description": "Filter on `state` with the `gte` operator."
          },
          {
            "name": "state.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `state` with the `lte` operator.",
              "title": "State.Lte"
            },
            "description": "Filter on `state` with the `lte` operator."
          },
          {
            "name": "state.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `state` with the `gt` operator.",
              "title": "State.Gt"
            },
            "description": "Filter on `state` with the `gt` operator."
          },
          {
            "name": "state.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `state` with the `lt` operator.",
              "title": "State.Lt"
            },
            "description": "Filter on `state` with the `lt` operator."
          },
          {
            "name": "state.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `state` with the `in` operator.",
              "title": "State.In"
            },
            "description": "Filter on `state` with the `in` operator."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InboxPage"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/human-reps": {
      "get": {
        "tags": [
          "handoff"
        ],
        "summary": "List human handoff destinations",
        "operationId": "list_human_reps_v1_human_reps_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 200,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorPage_HumanRep_"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "handoff"
        ],
        "summary": "Create a tenant-owned human handoff destination",
        "operationId": "create_human_rep_v1_human_reps_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Unique key for this request, so a retry replays the original result instead of repeating the work. Stored for 24 hours; a replayed response carries `Idempotent-Replay: true`. A UUID is the documented shape.",
              "title": "Idempotency-Key"
            },
            "description": "Unique key for this request, so a retry replays the original result instead of repeating the work. Stored for 24 hours; a replayed response carries `Idempotent-Replay: true`. A UUID is the documented shape."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/HumanRepCreateRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HumanRep"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/human-reps/{rep_id}": {
      "patch": {
        "tags": [
          "handoff"
        ],
        "summary": "Update a human handoff destination",
        "operationId": "update_human_rep_v1_human_reps__rep_id__patch",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "rep_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Rep Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/HumanRepUpdateRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HumanRep"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/rep-groups": {
      "get": {
        "tags": [
          "handoff"
        ],
        "summary": "List human-rep groups",
        "operationId": "list_rep_groups_v1_rep_groups_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 200,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorPage_RepGroup_"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "handoff"
        ],
        "summary": "Create a tenant-owned human-rep group",
        "operationId": "create_rep_group_v1_rep_groups_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Unique key for this request, so a retry replays the original result instead of repeating the work. Stored for 24 hours; a replayed response carries `Idempotent-Replay: true`. A UUID is the documented shape.",
              "title": "Idempotency-Key"
            },
            "description": "Unique key for this request, so a retry replays the original result instead of repeating the work. Stored for 24 hours; a replayed response carries `Idempotent-Replay: true`. A UUID is the documented shape."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RepGroupCreateRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RepGroup"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/rep-groups/{rep_group_id}/members": {
      "get": {
        "tags": [
          "handoff"
        ],
        "summary": "List members of a human-rep group",
        "operationId": "list_rep_group_members_v1_rep_groups__rep_group_id__members_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "rep_group_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Rep Group Id"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 200,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorPage_RepGroupMember_"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/rep-groups/{rep_group_id}/members/{rep_id}": {
      "put": {
        "tags": [
          "handoff"
        ],
        "summary": "Ensure a human rep belongs to a group",
        "operationId": "ensure_rep_group_member_v1_rep_groups__rep_group_id__members__rep_id__put",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "rep_group_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Rep Group Id"
            }
          },
          {
            "name": "rep_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Rep Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RepGroupMember"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/human-reps/{rep_id}/presence": {
      "put": {
        "tags": [
          "handoff"
        ],
        "summary": "Renew a short-lived manual human-rep availability lease",
        "operationId": "heartbeat_human_rep_presence_v1_human_reps__rep_id__presence_put",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "rep_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Rep Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RepPresenceHeartbeatRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RepPresence"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/calls/{call_id}/handoff-readiness": {
      "get": {
        "tags": [
          "handoff"
        ],
        "summary": "Read truthful live handoff and supervision prerequisites for a call",
        "description": "Return a conservative capability answer; never imply carrier media exists.\n\nIt intentionally yields `200` with ``active: false`` for an absent/expired call rather\nthan using the permanent ``calls`` resource as a live-state oracle.  A caller can poll\nthis during a conversation without learning whether an arbitrary historical call id\nexists, and no follow-up mutation becomes possible from this response alone.",
        "operationId": "handoff_readiness_v1_calls__call_id__handoff_readiness_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "call_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Call Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HandoffReadiness"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/calls/{call_id}/live-listen-token": {
      "post": {
        "tags": [
          "handoff"
        ],
        "summary": "Mint a single-use short-lived listener capability for an eligible live call",
        "description": "Issue no token unless the external listener will have a real, lawful source.\n\nThe token goes in the first WSS frame, never a URL.  Its opaque JTI is consumed by the\ngateway's private attach request only after the socket is established; no bearer bytes\nland in the database or audit log.",
        "operationId": "create_live_listen_token_v1_calls__call_id__live_listen_token_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "call_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Call Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RealtimeToken"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/calls/{call_id}/billing": {
      "get": {
        "tags": [
          "calls",
          "billing"
        ],
        "summary": "Read the ledger-backed usage and current-plan projection for a call",
        "description": "One tenant-owned call's exact recorded usage and conservative cost visibility.\n\nA live call receives ``completed: false``.  Its ``live_projection`` is populated only\nfor a verified managed prepaid test-call receipt; every other active lane is explicitly\npending rather than a partial carrier cost.  For a completed call, `meters` combines\ndirect runtime attribution with a managed carrier's attempt-linked minute row.  That\ncarrier row may still be absent while the callback is in flight; an empty list means no\nusage row has landed, not that a future invoice is $0.",
        "operationId": "read_call_billing_v1_calls__call_id__billing_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "call_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Call Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CallBilling"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/agents/{agent_id}/test-call": {
      "post": {
        "tags": [
          "test-calls"
        ],
        "summary": "Hear your agent: one campaign-less call to a verified own number",
        "operationId": "create_test_call_v1_agents__agent_id__test_call_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "agent_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Agent Id"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Unique key for this request, so a retry replays the original result instead of repeating the work. Stored for 24 hours; a replayed response carries `Idempotent-Replay: true`. A UUID is the documented shape.",
              "title": "Idempotency-Key"
            },
            "description": "Unique key for this request, so a retry replays the original result instead of repeating the work. Stored for 24 hours; a replayed response carries `Idempotent-Replay: true`. A UUID is the documented shape."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TestCallRequest"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TestCall"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/agents/{agent_id}/voice-session": {
      "post": {
        "tags": [
          "voice-sessions"
        ],
        "summary": "Open an in-browser voice session - the published version, or the draft when none is published (no phone call)",
        "description": "Mint one browser session against the agent's latest published version.\n\nEverything that can refuse this session refuses it **here, in HTTP, with a body**. The\nalternative is what the runtime would otherwise do: accept the socket, redeem the token,\nfail a floor check, and close with a WSS 1008 and no payload - the worst diagnostic in\nthe product, because the operator learns only that \"it didn't work\". So the same four\nchecks the redemption runs (`modules/internal/bootstrap_checks.py`, imported rather than\nreimplemented) run against the same pinned version before a token is minted at all:\n`voice_profile_missing` and `disclosure_opener_missing` as 409s the tenant can fix,\n`llm_chain_unresolvable` and `runtime_plane_unavailable` as 503s only a deployment can.\n\nNothing is written. A browser session's durable state begins at teardown, which is where\nits `calls` row and its compliance evidence land (migration 0031) - so a session the\noperator never connects leaves no attempt, no call and no meter behind it.\n\n## The admission gates, and why they run where they do\n\nThe budget gates (`.admission`) run **first**, before any read: a caller who has spent\ntheir address's hourly budget or their account's daily one must not cost us four queries\nto find that out, and both refusals are the same whatever agent was named.\n\nThe lane reservation runs **last**, immediately before the mint. It is the one gate that\n*holds* something, so it is taken only once every reason to refuse this session has been\nruled out - a reservation abandoned behind a `voice_profile_missing` would block that\naccount's next attempt for the reservation's whole life. If minting fails after it is\ntaken, it is given back in the same request.",
        "operationId": "create_voice_session_v1_agents__agent_id__voice_session_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "agent_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Agent Id"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VoiceSession"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/agents/{agent_id}/chat": {
      "post": {
        "tags": [
          "agent-chat"
        ],
        "summary": "Chat with this agent draft in text - no publish, no dial, no recording",
        "operationId": "chat_with_draft_v1_agents__agent_id__chat_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "agent_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Agent Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AgentChatRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Server-sent events: delta / guard / proposal / done / problem.",
            "content": {
              "application/json": {
                "schema": {}
              },
              "text/event-stream": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/agents/{agent_id}/setup-chat": {
      "post": {
        "tags": [
          "agent-chat"
        ],
        "summary": "Assisted setup: interview + reviewable draft-patch proposals, never writes",
        "operationId": "setup_chat_v1_agents__agent_id__setup_chat_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "agent_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Agent Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AgentChatRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Server-sent events: delta / guard / proposal / done / problem.",
            "content": {
              "application/json": {
                "schema": {}
              },
              "text/event-stream": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/telephony-accounts": {
      "get": {
        "tags": [
          "numbers"
        ],
        "summary": "List this tenant's telephony accounts",
        "operationId": "list_telephony_accounts_v1_telephony_accounts_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 200,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          },
          {
            "name": "mode",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `mode`. Comma-separated values are OR.",
              "title": "Mode"
            },
            "description": "Filter on `mode`. Comma-separated values are OR."
          },
          {
            "name": "mode.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `mode` with the `gte` operator.",
              "title": "Mode.Gte"
            },
            "description": "Filter on `mode` with the `gte` operator."
          },
          {
            "name": "mode.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `mode` with the `lte` operator.",
              "title": "Mode.Lte"
            },
            "description": "Filter on `mode` with the `lte` operator."
          },
          {
            "name": "mode.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `mode` with the `gt` operator.",
              "title": "Mode.Gt"
            },
            "description": "Filter on `mode` with the `gt` operator."
          },
          {
            "name": "mode.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `mode` with the `lt` operator.",
              "title": "Mode.Lt"
            },
            "description": "Filter on `mode` with the `lt` operator."
          },
          {
            "name": "mode.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `mode` with the `in` operator.",
              "title": "Mode.In"
            },
            "description": "Filter on `mode` with the `in` operator."
          },
          {
            "name": "provider",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `provider`. Comma-separated values are OR.",
              "title": "Provider"
            },
            "description": "Filter on `provider`. Comma-separated values are OR."
          },
          {
            "name": "provider.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `provider` with the `gte` operator.",
              "title": "Provider.Gte"
            },
            "description": "Filter on `provider` with the `gte` operator."
          },
          {
            "name": "provider.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `provider` with the `lte` operator.",
              "title": "Provider.Lte"
            },
            "description": "Filter on `provider` with the `lte` operator."
          },
          {
            "name": "provider.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `provider` with the `gt` operator.",
              "title": "Provider.Gt"
            },
            "description": "Filter on `provider` with the `gt` operator."
          },
          {
            "name": "provider.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `provider` with the `lt` operator.",
              "title": "Provider.Lt"
            },
            "description": "Filter on `provider` with the `lt` operator."
          },
          {
            "name": "provider.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `provider` with the `in` operator.",
              "title": "Provider.In"
            },
            "description": "Filter on `provider` with the `in` operator."
          },
          {
            "name": "verification_status",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `verification_status`. Comma-separated values are OR.",
              "title": "Verification Status"
            },
            "description": "Filter on `verification_status`. Comma-separated values are OR."
          },
          {
            "name": "verification_status.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `verification_status` with the `gte` operator.",
              "title": "Verification Status.Gte"
            },
            "description": "Filter on `verification_status` with the `gte` operator."
          },
          {
            "name": "verification_status.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `verification_status` with the `lte` operator.",
              "title": "Verification Status.Lte"
            },
            "description": "Filter on `verification_status` with the `lte` operator."
          },
          {
            "name": "verification_status.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `verification_status` with the `gt` operator.",
              "title": "Verification Status.Gt"
            },
            "description": "Filter on `verification_status` with the `gt` operator."
          },
          {
            "name": "verification_status.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `verification_status` with the `lt` operator.",
              "title": "Verification Status.Lt"
            },
            "description": "Filter on `verification_status` with the `lt` operator."
          },
          {
            "name": "verification_status.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `verification_status` with the `in` operator.",
              "title": "Verification Status.In"
            },
            "description": "Filter on `verification_status` with the `in` operator."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorPage_TelephonyAccountSummary_"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "numbers"
        ],
        "summary": "Connect a BYO subaccount or elect the platform account",
        "operationId": "create_telephony_account_v1_telephony_accounts_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TelephonyAccountCreateRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TelephonyAccountSummary"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/telephony-accounts/{account_id}": {
      "get": {
        "tags": [
          "numbers"
        ],
        "summary": "Read one telephony account",
        "operationId": "read_telephony_account_v1_telephony_accounts__account_id__get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "account_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Account Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TelephonyAccountSummary"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "numbers"
        ],
        "summary": "Update an account, or rotate its carrier credentials",
        "operationId": "update_telephony_account_v1_telephony_accounts__account_id__patch",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "account_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Account Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TelephonyAccountUpdateRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TelephonyAccountSummary"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/telephony-accounts/{account_id}/default": {
      "put": {
        "tags": [
          "numbers"
        ],
        "summary": "Make a verified telephony account the default for future account-omitted calls",
        "description": "Move only the tenant fallback; existing campaigns keep their elected account.\n\nThis is intentionally explicit rather than a side effect of connecting a later BYO\naccount. It lets a sandbox customer use the managed verified-number test lane first,\nthen choose verified BYO Twilio as the production fallback without silently rerouting\nany campaign that already named an account.",
        "operationId": "set_default_telephony_account_v1_telephony_accounts__account_id__default_put",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "account_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Account Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TelephonyAccountSummary"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/telephony-accounts/{account_id}/inbound-sms-webhook": {
      "get": {
        "tags": [
          "numbers"
        ],
        "summary": "Get the signed Twilio inbound-SMS webhook URL for a verified BYO account",
        "description": "Return the one account-level URL a customer copies into Twilio's Messaging config.\n\nThe route is visible only after the BYO account is verified.  It does not try to make an\nunverified credential or a platform-managed account look messaging-ready, and it never\nserializes the credential reference or either credential field.",
        "operationId": "inbound_sms_webhook_v1_telephony_accounts__account_id__inbound_sms_webhook_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "account_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Account Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InboundSmsWebhookSummary"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/telephony-accounts/{account_id}/inbound-voice-webhook": {
      "get": {
        "tags": [
          "numbers"
        ],
        "summary": "Get the signed Twilio inbound-Voice webhook URL for a verified BYO account",
        "description": "Return the account-level Voice URL a customer copies into Twilio's number config.\n\nThe URL remains useless without Twilio's account-specific request signature, and every\naccepted callback re-resolves its signed destination against an active carrier-owned\nvoice number with a selected published agent.  Managed or unverified accounts cannot\npublish an inbound route, so they never become a back door around the BYO verification\nboundary.",
        "operationId": "inbound_voice_webhook_v1_telephony_accounts__account_id__inbound_voice_webhook_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "account_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Account Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InboundVoiceWebhookSummary"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/telephony-accounts/{account_id}/verify": {
      "post": {
        "tags": [
          "numbers"
        ],
        "summary": "Prove the account's credentials and read its CPS ceiling back",
        "operationId": "verify_telephony_account_v1_telephony_accounts__account_id__verify_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "account_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Account Id"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Unique key for this request, so a retry replays the original result instead of repeating the work. Stored for 24 hours; a replayed response carries `Idempotent-Replay: true`. A UUID is the documented shape.",
              "title": "Idempotency-Key"
            },
            "description": "Unique key for this request, so a retry replays the original result instead of repeating the work. Stored for 24 hours; a replayed response carries `Idempotent-Replay: true`. A UUID is the documented shape."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TelephonyAccountSummary"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/phone-numbers": {
      "get": {
        "tags": [
          "numbers"
        ],
        "summary": "List numbers and inventory",
        "description": "This tenant's numbers plus the unassigned platform inventory it may claim.",
        "operationId": "list_phone_numbers_v1_phone_numbers_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 200,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          },
          {
            "name": "reputation_state",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `reputation_state`. Comma-separated values are OR.",
              "title": "Reputation State"
            },
            "description": "Filter on `reputation_state`. Comma-separated values are OR."
          },
          {
            "name": "reputation_state.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `reputation_state` with the `gte` operator.",
              "title": "Reputation State.Gte"
            },
            "description": "Filter on `reputation_state` with the `gte` operator."
          },
          {
            "name": "reputation_state.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `reputation_state` with the `lte` operator.",
              "title": "Reputation State.Lte"
            },
            "description": "Filter on `reputation_state` with the `lte` operator."
          },
          {
            "name": "reputation_state.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `reputation_state` with the `gt` operator.",
              "title": "Reputation State.Gt"
            },
            "description": "Filter on `reputation_state` with the `gt` operator."
          },
          {
            "name": "reputation_state.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `reputation_state` with the `lt` operator.",
              "title": "Reputation State.Lt"
            },
            "description": "Filter on `reputation_state` with the `lt` operator."
          },
          {
            "name": "reputation_state.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `reputation_state` with the `in` operator.",
              "title": "Reputation State.In"
            },
            "description": "Filter on `reputation_state` with the `in` operator."
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status`. Comma-separated values are OR.",
              "title": "Status"
            },
            "description": "Filter on `status`. Comma-separated values are OR."
          },
          {
            "name": "status.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `gte` operator.",
              "title": "Status.Gte"
            },
            "description": "Filter on `status` with the `gte` operator."
          },
          {
            "name": "status.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `lte` operator.",
              "title": "Status.Lte"
            },
            "description": "Filter on `status` with the `lte` operator."
          },
          {
            "name": "status.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `gt` operator.",
              "title": "Status.Gt"
            },
            "description": "Filter on `status` with the `gt` operator."
          },
          {
            "name": "status.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `lt` operator.",
              "title": "Status.Lt"
            },
            "description": "Filter on `status` with the `lt` operator."
          },
          {
            "name": "status.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `in` operator.",
              "title": "Status.In"
            },
            "description": "Filter on `status` with the `in` operator."
          },
          {
            "name": "telephony_account_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `telephony_account_id`. Comma-separated values are OR.",
              "title": "Telephony Account Id"
            },
            "description": "Filter on `telephony_account_id`. Comma-separated values are OR."
          },
          {
            "name": "telephony_account_id.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `telephony_account_id` with the `gte` operator.",
              "title": "Telephony Account Id.Gte"
            },
            "description": "Filter on `telephony_account_id` with the `gte` operator."
          },
          {
            "name": "telephony_account_id.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `telephony_account_id` with the `lte` operator.",
              "title": "Telephony Account Id.Lte"
            },
            "description": "Filter on `telephony_account_id` with the `lte` operator."
          },
          {
            "name": "telephony_account_id.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `telephony_account_id` with the `gt` operator.",
              "title": "Telephony Account Id.Gt"
            },
            "description": "Filter on `telephony_account_id` with the `gt` operator."
          },
          {
            "name": "telephony_account_id.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `telephony_account_id` with the `lt` operator.",
              "title": "Telephony Account Id.Lt"
            },
            "description": "Filter on `telephony_account_id` with the `lt` operator."
          },
          {
            "name": "telephony_account_id.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `telephony_account_id` with the `in` operator.",
              "title": "Telephony Account Id.In"
            },
            "description": "Filter on `telephony_account_id` with the `in` operator."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorPage_PhoneNumberSummary_"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "numbers"
        ],
        "summary": "Buy or connect a number on one of this tenant's telephony accounts",
        "operationId": "create_phone_number_v1_phone_numbers_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Unique key for this request, so a retry replays the original result instead of repeating the work. Stored for 24 hours; a replayed response carries `Idempotent-Replay: true`. A UUID is the documented shape.",
              "title": "Idempotency-Key"
            },
            "description": "Unique key for this request, so a retry replays the original result instead of repeating the work. Stored for 24 hours; a replayed response carries `Idempotent-Replay: true`. A UUID is the documented shape."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PhoneNumberCreateRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PhoneNumberSummary"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/phone-numbers/{number_id}/assign": {
      "post": {
        "tags": [
          "numbers"
        ],
        "summary": "Claim a number for this tenant and put it into service",
        "operationId": "assign_phone_number_v1_phone_numbers__number_id__assign_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "number_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Number Id"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Unique key for this request, so a retry replays the original result instead of repeating the work. Stored for 24 hours; a replayed response carries `Idempotent-Replay: true`. A UUID is the documented shape.",
              "title": "Idempotency-Key"
            },
            "description": "Unique key for this request, so a retry replays the original result instead of repeating the work. Stored for 24 hours; a replayed response carries `Idempotent-Replay: true`. A UUID is the documented shape."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PhoneNumberSummary"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/phone-numbers/{number_id}/release": {
      "post": {
        "tags": [
          "numbers"
        ],
        "summary": "Take a number out of service",
        "operationId": "release_phone_number_v1_phone_numbers__number_id__release_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "number_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Number Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PhoneNumberSummary"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/phone-numbers/{number_id}/inbound-voice-routing": {
      "patch": {
        "tags": [
          "numbers"
        ],
        "summary": "Choose the live-agent or consent-gated voicemail route for a verified BYO number",
        "description": "Set or clear a number's inbound receiving route without widening carrier ingress.\n\nOnly an active number this tenant owns, whose carrier `PN…` identity was confirmed on a\nverified BYO Twilio account, can carry a non-null route. Setting an agent additionally proves\nthe tenant has already published an immutable version; the carrier callback freezes that\nversion before returning TwiML, so this mutable setting is never read by a live stream.\nClearing remains allowed after an account is unverified or a number is released, because\nthe safe way to turn a stale route off must never depend on a carrier.",
        "operationId": "update_inbound_voice_routing_v1_phone_numbers__number_id__inbound_voice_routing_patch",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "number_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Number Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InboundVoiceRoutingUpdateRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PhoneNumberSummary"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/phone-numbers/{number_id}/answering-policy": {
      "get": {
        "tags": [
          "numbers"
        ],
        "summary": "Read the answering policy one number answers by",
        "description": "The stored document, re-validated against the contract on the way out.\n\nReadable without any carrier eligibility: a customer whose account has since been\nunverified must still be able to see what their number is configured to do, exactly as\nclearing a stale route never depends on a carrier.",
        "operationId": "read_answering_policy_v1_phone_numbers__number_id__answering_policy_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "number_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Number Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnsweringPolicy"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "numbers"
        ],
        "summary": "Write the answering policy a verified BYO number answers by",
        "description": "Replace one number's whole answering document and put it on the `policy` route.\n\nThe same eligibility a live-agent route requires, for the same reason: a policy arms\ncarrier ingress just as an agent does. What it additionally proves is that every\nreference inside the document resolves *now* - each `ai` step's agent has a published\nimmutable version, and every `ring_humans` rep is an active transfer-enabled rep of this\ntenant. Those are the two ways a policy could otherwise be written that answers a real\ncaller with a dead end, and a carrier callback is the wrong place to discover either.\n\nThe document is written before the route is moved, so a number is never in `policy` mode\nwith nothing to execute; both statements share the request transaction, so a failure at\neither point leaves the number on the route it already had.",
        "operationId": "write_answering_policy_v1_phone_numbers__number_id__answering_policy_put",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "number_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Number Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AnsweringPolicyUpsertRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnsweringPolicy"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "numbers"
        ],
        "summary": "Remove a number's answering policy and return it to the agent route",
        "description": "Delete the document and restore the `agent` route the number had before.\n\nDeliberately not gated on carrier eligibility or on a live key. This is the only way to\ndisarm a policy route, and the safe way to turn a route off must never depend on the\ncarrier account still verifying - the same rule the legacy clear already follows.\n\nThe route is only moved when the number is actually on `policy`: a number a later\n`inbound-voice-routing` PATCH already returned to an agent keeps that agent instead of\nhaving it silently cleared by this call.",
        "operationId": "delete_answering_policy_v1_phone_numbers__number_id__answering_policy_delete",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "number_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Number Id"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/number-pools": {
      "get": {
        "tags": [
          "numbers"
        ],
        "summary": "List caller-ID pools",
        "operationId": "list_number_pools_v1_number_pools_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 200,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorPage_NumberPoolSummary_"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "numbers"
        ],
        "summary": "Create a caller-ID pool",
        "operationId": "create_number_pool_v1_number_pools_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NumberPoolCreateRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NumberPoolSummary"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/number-pools/{pool_id}/members": {
      "post": {
        "tags": [
          "numbers"
        ],
        "summary": "Add a phone number to a caller-ID pool",
        "operationId": "add_number_pool_member_v1_number_pools__pool_id__members_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "pool_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Pool Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NumberPoolMemberCreateRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NumberPoolMemberSummary"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/verified-numbers": {
      "get": {
        "tags": [
          "verified-numbers"
        ],
        "summary": "List this tenant's verified-number registrations",
        "operationId": "list_verified_numbers_v1_verified_numbers_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 200,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status`. Comma-separated values are OR.",
              "title": "Status"
            },
            "description": "Filter on `status`. Comma-separated values are OR."
          },
          {
            "name": "status.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `gte` operator.",
              "title": "Status.Gte"
            },
            "description": "Filter on `status` with the `gte` operator."
          },
          {
            "name": "status.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `lte` operator.",
              "title": "Status.Lte"
            },
            "description": "Filter on `status` with the `lte` operator."
          },
          {
            "name": "status.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `gt` operator.",
              "title": "Status.Gt"
            },
            "description": "Filter on `status` with the `gt` operator."
          },
          {
            "name": "status.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `lt` operator.",
              "title": "Status.Lt"
            },
            "description": "Filter on `status` with the `lt` operator."
          },
          {
            "name": "status.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `in` operator.",
              "title": "Status.In"
            },
            "description": "Filter on `status` with the `in` operator."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorPage_VerifiedNumberSummary_"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "verified-numbers"
        ],
        "summary": "Register a destination and deliver its one-time code",
        "operationId": "create_verified_number_v1_verified_numbers_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Unique key for this request, so a retry replays the original result instead of repeating the work. Stored for 24 hours; a replayed response carries `Idempotent-Replay: true`. A UUID is the documented shape.",
              "title": "Idempotency-Key"
            },
            "description": "Unique key for this request, so a retry replays the original result instead of repeating the work. Stored for 24 hours; a replayed response carries `Idempotent-Replay: true`. A UUID is the documented shape."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VerifiedNumberCreateRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VerifiedNumberCreated"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/verified-numbers/{verified_number_id}/check": {
      "post": {
        "tags": [
          "verified-numbers"
        ],
        "summary": "Confirm the one-time code delivered to the number",
        "operationId": "check_verified_number_v1_verified_numbers__verified_number_id__check_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "verified_number_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Verified Number Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VerifiedNumberCheckRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VerifiedNumberSummary"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/integration-connections": {
      "post": {
        "tags": [
          "scheduling"
        ],
        "summary": "Start a calendar OAuth consent",
        "description": "Mint the tenant-bound consent state and hand back the provider's consent URL.\n\n**No row is written here.** `integration_connections.status` has no `pending` value\n(docs/03-domain-model.md) - a connection exists only once consent has completed at the\ncallback, so an abandoned consent leaves nothing behind to expire or clean up.",
        "operationId": "create_integration_connection_v1_integration_connections_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IntegrationConnectionCreateRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IntegrationAuthorization"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "scheduling"
        ],
        "summary": "List this tenant's integration connections",
        "operationId": "list_integration_connections_v1_integration_connections_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 200,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          },
          {
            "name": "provider",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `provider`. Comma-separated values are OR.",
              "title": "Provider"
            },
            "description": "Filter on `provider`. Comma-separated values are OR."
          },
          {
            "name": "provider.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `provider` with the `gte` operator.",
              "title": "Provider.Gte"
            },
            "description": "Filter on `provider` with the `gte` operator."
          },
          {
            "name": "provider.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `provider` with the `lte` operator.",
              "title": "Provider.Lte"
            },
            "description": "Filter on `provider` with the `lte` operator."
          },
          {
            "name": "provider.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `provider` with the `gt` operator.",
              "title": "Provider.Gt"
            },
            "description": "Filter on `provider` with the `gt` operator."
          },
          {
            "name": "provider.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `provider` with the `lt` operator.",
              "title": "Provider.Lt"
            },
            "description": "Filter on `provider` with the `lt` operator."
          },
          {
            "name": "provider.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `provider` with the `in` operator.",
              "title": "Provider.In"
            },
            "description": "Filter on `provider` with the `in` operator."
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status`. Comma-separated values are OR.",
              "title": "Status"
            },
            "description": "Filter on `status`. Comma-separated values are OR."
          },
          {
            "name": "status.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `gte` operator.",
              "title": "Status.Gte"
            },
            "description": "Filter on `status` with the `gte` operator."
          },
          {
            "name": "status.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `lte` operator.",
              "title": "Status.Lte"
            },
            "description": "Filter on `status` with the `lte` operator."
          },
          {
            "name": "status.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `gt` operator.",
              "title": "Status.Gt"
            },
            "description": "Filter on `status` with the `gt` operator."
          },
          {
            "name": "status.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `lt` operator.",
              "title": "Status.Lt"
            },
            "description": "Filter on `status` with the `lt` operator."
          },
          {
            "name": "status.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `in` operator.",
              "title": "Status.In"
            },
            "description": "Filter on `status` with the `in` operator."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorPage_IntegrationConnectionSummary_"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/integration-connections/callback": {
      "get": {
        "tags": [
          "scheduling"
        ],
        "summary": "Complete a calendar OAuth consent",
        "description": "Unauthenticated by design: the customer's admin lands here from the provider's\nconsent screen carrying no API key, so the signed, tenant-bound, 10-minute state **is**\nthe admission control (docs/04-api.md §7).",
        "operationId": "integration_connection_callback_v1_integration_connections_callback_get",
        "parameters": [
          {
            "name": "state",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "title": "State"
            }
          },
          {
            "name": "code",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Code"
            }
          },
          {
            "name": "error",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Error"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IntegrationConnectionSummary"
                }
              }
            }
          },
          "303": {
            "description": "Consent completed and the browser was redirected to the deployment's fixed portal Settings URL.",
            "headers": {
              "Location": {
                "description": "The fixed portal Settings URL.",
                "schema": {
                  "type": "string",
                  "format": "uri"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/calendar/availability": {
      "post": {
        "tags": [
          "scheduling"
        ],
        "summary": "Free slots on the connected calendar (check_calendar's backing operation)",
        "operationId": "check_calendar_availability_v1_calendar_availability_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CalendarAvailabilityRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalendarAvailability"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/v1/calendar/events": {
      "post": {
        "tags": [
          "scheduling"
        ],
        "summary": "Book a meeting (book_meeting's backing operation)",
        "description": "Replay-safe without idempotency middleware.\n\nThe runtime derives its tool idempotency key from the same arguments, so a replayed\n`book_meeting` turn re-presents the same `(call_id, start_time)` pair:\n`find_for_call` returns the existing appointment **before any provider call**, and\n`uq_appointments_integration_connection_id_external_event_id` closes the race two\nconcurrent replays could still slip through.",
        "operationId": "create_calendar_event_v1_calendar_events_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CalendarEventCreateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Appointment"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/v1/usage/summary": {
      "get": {
        "tags": [
          "billing"
        ],
        "summary": "One billing month across all nine meters",
        "operationId": "read_usage_summary_v1_usage_summary_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "period",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\d{4}-(0[1-9]|1[0-2])$"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Billing month, YYYY-MM",
              "title": "Period"
            },
            "description": "Billing month, YYYY-MM"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UsageSummary"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/usage/events": {
      "get": {
        "tags": [
          "billing"
        ],
        "summary": "Page through the usage-event ledger",
        "operationId": "list_usage_events_v1_usage_events_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 200,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          },
          {
            "name": "call_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `call_id`. Comma-separated values are OR.",
              "title": "Call Id"
            },
            "description": "Filter on `call_id`. Comma-separated values are OR."
          },
          {
            "name": "call_id.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `call_id` with the `gte` operator.",
              "title": "Call Id.Gte"
            },
            "description": "Filter on `call_id` with the `gte` operator."
          },
          {
            "name": "call_id.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `call_id` with the `lte` operator.",
              "title": "Call Id.Lte"
            },
            "description": "Filter on `call_id` with the `lte` operator."
          },
          {
            "name": "call_id.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `call_id` with the `gt` operator.",
              "title": "Call Id.Gt"
            },
            "description": "Filter on `call_id` with the `gt` operator."
          },
          {
            "name": "call_id.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `call_id` with the `lt` operator.",
              "title": "Call Id.Lt"
            },
            "description": "Filter on `call_id` with the `lt` operator."
          },
          {
            "name": "call_id.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `call_id` with the `in` operator.",
              "title": "Call Id.In"
            },
            "description": "Filter on `call_id` with the `in` operator."
          },
          {
            "name": "campaign_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `campaign_id`. Comma-separated values are OR.",
              "title": "Campaign Id"
            },
            "description": "Filter on `campaign_id`. Comma-separated values are OR."
          },
          {
            "name": "campaign_id.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `campaign_id` with the `gte` operator.",
              "title": "Campaign Id.Gte"
            },
            "description": "Filter on `campaign_id` with the `gte` operator."
          },
          {
            "name": "campaign_id.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `campaign_id` with the `lte` operator.",
              "title": "Campaign Id.Lte"
            },
            "description": "Filter on `campaign_id` with the `lte` operator."
          },
          {
            "name": "campaign_id.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `campaign_id` with the `gt` operator.",
              "title": "Campaign Id.Gt"
            },
            "description": "Filter on `campaign_id` with the `gt` operator."
          },
          {
            "name": "campaign_id.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `campaign_id` with the `lt` operator.",
              "title": "Campaign Id.Lt"
            },
            "description": "Filter on `campaign_id` with the `lt` operator."
          },
          {
            "name": "campaign_id.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `campaign_id` with the `in` operator.",
              "title": "Campaign Id.In"
            },
            "description": "Filter on `campaign_id` with the `in` operator."
          },
          {
            "name": "meter",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `meter`. Comma-separated values are OR.",
              "title": "Meter"
            },
            "description": "Filter on `meter`. Comma-separated values are OR."
          },
          {
            "name": "meter.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `meter` with the `gte` operator.",
              "title": "Meter.Gte"
            },
            "description": "Filter on `meter` with the `gte` operator."
          },
          {
            "name": "meter.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `meter` with the `lte` operator.",
              "title": "Meter.Lte"
            },
            "description": "Filter on `meter` with the `lte` operator."
          },
          {
            "name": "meter.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `meter` with the `gt` operator.",
              "title": "Meter.Gt"
            },
            "description": "Filter on `meter` with the `gt` operator."
          },
          {
            "name": "meter.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `meter` with the `lt` operator.",
              "title": "Meter.Lt"
            },
            "description": "Filter on `meter` with the `lt` operator."
          },
          {
            "name": "meter.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `meter` with the `in` operator.",
              "title": "Meter.In"
            },
            "description": "Filter on `meter` with the `in` operator."
          },
          {
            "name": "occurred_at",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `occurred_at`. Comma-separated values are OR.",
              "title": "Occurred At"
            },
            "description": "Filter on `occurred_at`. Comma-separated values are OR."
          },
          {
            "name": "occurred_at.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `occurred_at` with the `gte` operator.",
              "title": "Occurred At.Gte"
            },
            "description": "Filter on `occurred_at` with the `gte` operator."
          },
          {
            "name": "occurred_at.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `occurred_at` with the `lte` operator.",
              "title": "Occurred At.Lte"
            },
            "description": "Filter on `occurred_at` with the `lte` operator."
          },
          {
            "name": "occurred_at.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `occurred_at` with the `gt` operator.",
              "title": "Occurred At.Gt"
            },
            "description": "Filter on `occurred_at` with the `gt` operator."
          },
          {
            "name": "occurred_at.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `occurred_at` with the `lt` operator.",
              "title": "Occurred At.Lt"
            },
            "description": "Filter on `occurred_at` with the `lt` operator."
          },
          {
            "name": "occurred_at.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `occurred_at` with the `in` operator.",
              "title": "Occurred At.In"
            },
            "description": "Filter on `occurred_at` with the `in` operator."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorPage_UsageEventSummary_"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/invoices": {
      "get": {
        "tags": [
          "billing"
        ],
        "summary": "List invoices",
        "operationId": "list_invoices_v1_invoices_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 200,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          },
          {
            "name": "created_at",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at`. Comma-separated values are OR.",
              "title": "Created At"
            },
            "description": "Filter on `created_at`. Comma-separated values are OR."
          },
          {
            "name": "created_at.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `gte` operator.",
              "title": "Created At.Gte"
            },
            "description": "Filter on `created_at` with the `gte` operator."
          },
          {
            "name": "created_at.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `lte` operator.",
              "title": "Created At.Lte"
            },
            "description": "Filter on `created_at` with the `lte` operator."
          },
          {
            "name": "created_at.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `gt` operator.",
              "title": "Created At.Gt"
            },
            "description": "Filter on `created_at` with the `gt` operator."
          },
          {
            "name": "created_at.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `lt` operator.",
              "title": "Created At.Lt"
            },
            "description": "Filter on `created_at` with the `lt` operator."
          },
          {
            "name": "created_at.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `in` operator.",
              "title": "Created At.In"
            },
            "description": "Filter on `created_at` with the `in` operator."
          },
          {
            "name": "period_start",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `period_start`. Comma-separated values are OR.",
              "title": "Period Start"
            },
            "description": "Filter on `period_start`. Comma-separated values are OR."
          },
          {
            "name": "period_start.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `period_start` with the `gte` operator.",
              "title": "Period Start.Gte"
            },
            "description": "Filter on `period_start` with the `gte` operator."
          },
          {
            "name": "period_start.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `period_start` with the `lte` operator.",
              "title": "Period Start.Lte"
            },
            "description": "Filter on `period_start` with the `lte` operator."
          },
          {
            "name": "period_start.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `period_start` with the `gt` operator.",
              "title": "Period Start.Gt"
            },
            "description": "Filter on `period_start` with the `gt` operator."
          },
          {
            "name": "period_start.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `period_start` with the `lt` operator.",
              "title": "Period Start.Lt"
            },
            "description": "Filter on `period_start` with the `lt` operator."
          },
          {
            "name": "period_start.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `period_start` with the `in` operator.",
              "title": "Period Start.In"
            },
            "description": "Filter on `period_start` with the `in` operator."
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status`. Comma-separated values are OR.",
              "title": "Status"
            },
            "description": "Filter on `status`. Comma-separated values are OR."
          },
          {
            "name": "status.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `gte` operator.",
              "title": "Status.Gte"
            },
            "description": "Filter on `status` with the `gte` operator."
          },
          {
            "name": "status.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `lte` operator.",
              "title": "Status.Lte"
            },
            "description": "Filter on `status` with the `lte` operator."
          },
          {
            "name": "status.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `gt` operator.",
              "title": "Status.Gt"
            },
            "description": "Filter on `status` with the `gt` operator."
          },
          {
            "name": "status.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `lt` operator.",
              "title": "Status.Lt"
            },
            "description": "Filter on `status` with the `lt` operator."
          },
          {
            "name": "status.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `in` operator.",
              "title": "Status.In"
            },
            "description": "Filter on `status` with the `in` operator."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorPage_Invoice_"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/subscription": {
      "get": {
        "tags": [
          "billing"
        ],
        "summary": "Read this tenant's subscription",
        "operationId": "read_subscription_v1_subscription_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Subscription"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      },
      "post": {
        "tags": [
          "billing"
        ],
        "summary": "Start this tenant's production subscription",
        "description": "Subscribe this tenant without ever retrying an ambiguous Stripe create blindly.\n\nThe request has three independently committed phases: a tenant-unique operation before\nStripe I/O, the provider correlation after Stripe answers, then the local subscription\nmirror.  A crash after any phase leaves a durable recovery point.  In particular, a\nretry that finds ``pending`` does **not** make another Stripe POST: its first outcome is\nunknown and a signed ``customer.subscription.created`` webhook must reconcile it.",
        "operationId": "start_subscription_v1_subscription_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SubscriptionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SubscriptionCreated"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/v1/subscription/commitment": {
      "get": {
        "tags": [
          "billing"
        ],
        "summary": "Read verified original commitment dates",
        "description": "Read the original 36-calendar-month term without changing billing or service.\n\nDates require verified checkout and agreement provenance and survive paid plan upgrades.\nMonthly terms return `not_committed`; unverified histories return `review_required`.\n`term_elapsed` reports the anniversary only, not a renewal or cancellation decision.",
        "operationId": "read_subscription_commitment_v1_subscription_commitment_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SubscriptionCommitment"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/v1/billing/budget": {
      "get": {
        "tags": [
          "billing"
        ],
        "summary": "Read this tenant's budget",
        "operationId": "read_budget_v1_billing_budget_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Budget"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      },
      "put": {
        "tags": [
          "billing"
        ],
        "summary": "Set this tenant's budget",
        "description": "Set the spend cap and the low-balance floor. This is the cap the pacer enforces.\n\nNo audit action id and no step-up: this is the *tenant* setting its own budget on its\nown money, not staff moving someone else's (that path is\n`PATCH /admin/tenants/{id}/subscription`, which is `critical` and step-up-gated for\nexactly that reason - docs/19 §6.1).",
        "operationId": "write_budget_v1_billing_budget_put",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BudgetRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Budget"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/v1/subscription/extra-sessions": {
      "put": {
        "tags": [
          "billing"
        ],
        "summary": "Set this tenant's purchased extra concurrent sessions",
        "description": "Set purchased outbound capacity using a durable provider operation.\n\nRead live items before claiming the frozen mutation. A committed claim owns the\nsource across provider I/O; exact provider correlation and local completion are\nrequired before returning success. A retry can recover an earlier request before\napplying a different absolute target. Stripe's default proration is retained.",
        "operationId": "update_extra_sessions_v1_subscription_extra_sessions_put",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExtraSessionsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Subscription"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/v1/subscription/receptionist-connections": {
      "put": {
        "tags": [
          "billing"
        ],
        "summary": "Set this tenant's purchased receptionist connections",
        "description": "Converge the receptionist connection count at Stripe and locally (ADR-0025).\n\n**An added connection is paid for before it is reserved, and it is paid for a full\nmonth** (the owner's decision of 2026-08-18). A receptionist connection is not a line\non a bill - it is a GPU slot withheld from every other claim on this platform for as\nlong as the tenant holds it, so granting one on the strength of an invoice that\nrenders up to a month later hands out physical capacity on credit. So an INCREASE\ncollects `250·Δbase + 150·Δadditional` immediately\n(`_receptionist_month_due_minor`), and only a collected charge reaches\n`set_receptionist_connections` and the capacity refresh below. The recurring items are\nmoved with `proration_behavior=\"none\"` because Stripe would otherwise ALSO invoice a\nprorated stub for the same days at the next renewal - the customer would pay the\nremainder of this month twice - and the recurring price then simply starts at the next\nrenewal.\n\nA DECREASE is gated on no payment and on no billing state a customer can be trapped\nin: giving capacity back costs this platform nothing to accept, and refusing it would\nbe refusing to stop charging someone. That last clause used to be a claim the code did\nnot keep - the `subscription_inactive` guard ran before the direction was known and\nrefused BOTH directions, so a `past_due` tenant could not lower the bill it was\nalready behind on, which is the one tenant most likely to be asking. The guard is now\nsplit by direction: only an INCREASE is held to `_RECEPTIONIST_PURCHASE_STATUSES`,\nwhile a decrease is accepted wherever the Stripe subscription still has items to\nchange (`_RECEPTIONIST_RELEASE_STATUSES`). It refunds nothing either - the month was\nprepaid, which is the honest consequence of the decision above and which the portal\nstates before the customer confirms rather than this endpoint discovering for them.\n\nThe extra-sessions endpoint's discipline over TWO items instead of one. Absolute\nsemantics are what make it safely retryable without a durable provisioning operation:\nan ambiguous outcome cannot double a fee, because setting N twice is setting N. A\ndefinite Stripe success updates the local row; an ambiguous outcome leaves it untouched\nand answers 502 `receptionist_connections_update_unconfirmed`, with the signed\n`customer.subscription.updated` webhook as the reconciler.\n\nThe charge is under that same definite-versus-ambiguous split and carries codes of its\nown, because \"your card said no\" and \"the item change failed\" send the customer to\ndifferent places: `402 receptionist_connections_charge_declined` is a clean refusal\nthat changed nothing at all, and `502 receptionist_connections_charge_unconfirmed`\nsays the money may have moved while no subscription item did - the local count is\nuntouched, no webhook is coming for it, and the resolution is re-sending the same\nabsolute target, which replays the same charge instead of collecting a second month\n(`_receptionist_charge_idempotency_key`).\n\nA third, `402 receptionist_connections_charge_authentication_required`, makes the same\nstatement about the money as the decline and the opposite statement about the cure: the\ncard works and the issuer wants the customer present to authenticate, so the invoice\nthe attempt left open is where the payment is completed and the card must NOT be\nreplaced. It is a separate code because the code is the only thing a client can branch\non, and while it shared the decline's every portal pinned to that code told the\ncustomer to change a payment method that was never refused.\n\nBoth 402s name the invoice their attempt left behind rather than pretending it is not\nthere. A failed `pay` leaves a FINALIZED, OPEN invoice that the tenant's own\n`GET /v1/invoices` mirror shows, voiding it would break the \"send the same number\nagain\" cure that replays onto it, and a refusal that told a customer to ignore an\ninvoice they can see is how a support ticket becomes a chargeback.\n\nThat promise needs one thing absolute semantics cannot supply on their own, and it is\nthe same thing in every part of the request: what Stripe actually holds. Every\nambiguous outcome here leaves the local row behind on purpose, so the row lags a change\nthat landed - in its item ids, which would make a retried 0 -> N first purchase ADD a\nsecond item and invoice $250 or $150 twice, AND in its count, which would make the\nnext genuinely different target collect a month for connections Stripe already bills.\nSo the request reads the live item set once (`_held_licensed_items`) and that one read\ndecides all four of whether there is anything to do, the mutation, the amount, and the\ncharge's idempotency key.\n\n**Whether there is anything to do is the one that is not obvious, and it is not a\nquestion the local row may answer.** A target equal to the count the row shows looks\nlike a request with nothing to do - and that is precisely the shape of the customer's\nnatural \"give the connection back\" after an ambiguous 1 -> 2 landed at Stripe and not\nhere: it answered 200, sent Stripe nothing, and left the $150 item billing for as long\nas the subscription lived. The undocumented cure was to set a HIGHER number first and\nthen the lower one, which no customer discovers. So a request that would change\nStripe's items now makes that change whatever the local row says, and only a\nsubscription Stripe already holds at the target quantities is answered without a\nmutation. The money rules are unmoved by it: a decrease still collects nothing, and an\nincrease is still priced from what Stripe holds, so converging a row onto items the\ncustomer already paid for is free.\n\nTwo items rather than one because the first connection is $250 and the rest are $150\neach, and which of them a subscription holds depends on its plan: a standalone\nreceptionist plan already includes the first, an outbound plan attaching a receptionist\nbuys it. `rate_card.receptionist_line_items` owns that split; this route only converges\nwhatever it returns, and it moves both items in ONE Stripe request so no invoice can\nshow the additional connections billed while the first one is not.\n\n**A comped or internal tenant skips the prepay entirely**\n(`_PREPAY_EXEMPT_COMMERCIAL_STATUSES`): the ADR-0026 d3 hardening removed their\ndefault payment method on purpose, so collecting would 402 on every increase forever.\nThe items move, the local count is written, no invoice is raised and no card exists to\ncharge - the recurring price simply lands on the next `send_invoice` invoice at full\nvalue, where the credit note offsets it.",
        "operationId": "update_receptionist_connections_v1_subscription_receptionist_connections_put",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReceptionistConnectionsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Subscription"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/v1/subscription/expansions": {
      "get": {
        "tags": [
          "billing"
        ],
        "summary": "Active Expansion",
        "description": "Recover the in-progress purchase when the customer returns on another device.",
        "operationId": "active_expansion_v1_subscription_expansions_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "anyOf": [
                    {
                      "$ref": "#/components/schemas/ExpansionQuoteResponse"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "title": "Response Active Expansion V1 Subscription Expansions Get"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      },
      "post": {
        "tags": [
          "billing"
        ],
        "summary": "Quote Expansion",
        "operationId": "quote_expansion_v1_subscription_expansions_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExpansionQuoteRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExpansionQuoteResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/v1/subscription/expansions/{intent_id}": {
      "get": {
        "tags": [
          "billing"
        ],
        "summary": "Get Expansion",
        "operationId": "get_expansion_v1_subscription_expansions__intent_id__get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "intent_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Intent Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExpansionQuoteResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "billing"
        ],
        "summary": "Cancel Expansion",
        "operationId": "cancel_expansion_v1_subscription_expansions__intent_id__delete",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "intent_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Intent Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExpansionQuoteResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/subscription/expansions/{intent_id}/checkout": {
      "post": {
        "tags": [
          "billing"
        ],
        "summary": "Checkout Expansion",
        "description": "Confirm a reviewed price and open its original hosted payment page.\n\nA 202 response retains the same purchase for recovery; it is not proof of payment.",
        "operationId": "checkout_expansion_v1_subscription_expansions__intent_id__checkout_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "intent_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Intent Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExpansionCheckoutRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExpansionQuoteResponse"
                }
              }
            }
          },
          "202": {
            "description": "Purchase remains pending",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExpansionQuoteResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/subscription/expansions/{intent_id}/recover": {
      "post": {
        "tags": [
          "billing"
        ],
        "summary": "Recover Expansion",
        "description": "Recover the original payment and activation; never create another Checkout.\n\nRecovery remains available when new purchases are disabled. A verified payment\ncan finish its existing plan change and refresh purchased capacity.",
        "operationId": "recover_expansion_v1_subscription_expansions__intent_id__recover_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "intent_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Intent Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExpansionQuoteResponse"
                }
              }
            }
          },
          "202": {
            "description": "Recovery remains pending",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExpansionQuoteResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/subscription/receptionist-connections/quote": {
      "post": {
        "tags": [
          "billing"
        ],
        "summary": "Quote Receptionist Connections",
        "operationId": "quote_receptionist_connections_v1_subscription_receptionist_connections_quote_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReceptionistQuoteRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceptionistConnectionQuote"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/v1/subscription/receptionist-purchases": {
      "get": {
        "tags": [
          "billing"
        ],
        "summary": "Active Receptionist Purchase",
        "operationId": "active_receptionist_purchase_v1_subscription_receptionist_purchases_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "request_key",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 200,
                  "pattern": "\\S"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Request Key"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "anyOf": [
                    {
                      "$ref": "#/components/schemas/ReceptionistPurchaseResponse"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "title": "Response Active Receptionist Purchase V1 Subscription Receptionist Purchases Get"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "billing"
        ],
        "summary": "Purchase Receptionist Connections",
        "operationId": "purchase_receptionist_connections_v1_subscription_receptionist_purchases_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReceptionistPurchaseInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceptionistPurchaseResponse"
                }
              }
            }
          },
          "202": {
            "description": "Purchase remains pending",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceptionistPurchaseResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/subscription/receptionist-purchases/{purchase_id}": {
      "get": {
        "tags": [
          "billing"
        ],
        "summary": "Get Receptionist Purchase",
        "operationId": "get_receptionist_purchase_v1_subscription_receptionist_purchases__purchase_id__get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "purchase_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Purchase Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceptionistPurchaseResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/subscription/receptionist-purchases/{purchase_id}/recover": {
      "post": {
        "tags": [
          "billing"
        ],
        "summary": "Recover Receptionist Purchase",
        "operationId": "recover_receptionist_purchase_v1_subscription_receptionist_purchases__purchase_id__recover_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "purchase_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Purchase Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceptionistPurchaseResponse"
                }
              }
            }
          },
          "202": {
            "description": "Recovery remains pending",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceptionistPurchaseResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/billing/prepaid": {
      "get": {
        "tags": [
          "billing"
        ],
        "summary": "Read prepaid managed-call credit",
        "operationId": "read_prepaid_wallet_v1_billing_prepaid_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PrepaidWallet"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/v1/billing/prepaid/funding-intents": {
      "post": {
        "tags": [
          "billing"
        ],
        "summary": "Open Stripe Checkout for manual prepaid managed-call credit",
        "description": "Create/recover one funding intent, then ask Stripe for its hosted Checkout URL.\n\nA transport timeout deliberately returns ``202`` *without* rolling the new intent\nback.  Stripe may have accepted the request, so retrying the same key reuses the local\nintent id and Stripe idempotency key instead of risking a second charge.",
        "operationId": "create_prepaid_funding_intent_v1_billing_prepaid_funding_intents_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PrepaidFundingRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PrepaidFundingIntent"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/v1/billing/prepaid/auto-fund": {
      "get": {
        "tags": [
          "billing"
        ],
        "summary": "Read automatic prepaid managed-test-call funding configuration",
        "operationId": "read_auto_fund_v1_billing_prepaid_auto_fund_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AutoFundResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      },
      "put": {
        "tags": [
          "billing"
        ],
        "summary": "Enable, change, or disable automatic prepaid managed-test-call funding",
        "operationId": "configure_auto_fund_v1_billing_prepaid_auto_fund_put",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AutoFundConfigRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AutoFundResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/v1/billing/customer-portal": {
      "post": {
        "tags": [
          "billing"
        ],
        "summary": "Open Stripe-hosted payment, invoice, and subscription management",
        "description": "Mint a customer-scoped Stripe portal session for the authenticated tenant.\n\nWe resolve the customer and subscription from the tenant database rather than accepting\neither ID from the browser.  Otherwise a tenant that guessed another ``cus_`` or ``sub_``\nidentifier could be handed a management link for someone else's account.",
        "operationId": "open_customer_portal_v1_billing_customer_portal_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerPortalRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerPortalSession"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/v1/exports": {
      "post": {
        "tags": [
          "exports"
        ],
        "summary": "Submit an async CSV export",
        "description": "Queue one extraction and answer 202 with the poll contract on `GET /exports/{id}`.",
        "operationId": "create_export_v1_exports_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Unique key for this request, so a retry replays the original result instead of repeating the work. Stored for 24 hours; a replayed response carries `Idempotent-Replay: true`. A UUID is the documented shape.",
              "title": "Idempotency-Key"
            },
            "description": "Unique key for this request, so a retry replays the original result instead of repeating the work. Stored for 24 hours; a replayed response carries `Idempotent-Replay: true`. A UUID is the documented shape."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExportCreateRequest"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExportJob"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/exports/{export_id}": {
      "get": {
        "tags": [
          "exports"
        ],
        "summary": "Read an export job",
        "operationId": "read_export_v1_exports__export_id__get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "export_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Export Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExportJob"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/webhook-endpoint": {
      "get": {
        "tags": [
          "integrations"
        ],
        "summary": "Read the tenant's webhook endpoint",
        "operationId": "read_webhook_endpoint_v1_webhook_endpoint_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookEndpointSummary"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      },
      "put": {
        "tags": [
          "integrations"
        ],
        "summary": "Create or replace the tenant's webhook endpoint",
        "description": "Upsert the tenant's single endpoint.\n\nCreating mints a signing secret and returns it - the only time it is ever readable.\nReplacing keeps the stored secret (``secret: null``) and re-activates an endpoint\nthat was `disabled_by_failures`: fixing the URL and re-`PUT`ting is the documented\nway back after an auto-disable.",
        "operationId": "put_webhook_endpoint_v1_webhook_endpoint_put",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WebhookEndpointRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookEndpointSecretView"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/v1/webhook-endpoint/rotate-secret": {
      "post": {
        "tags": [
          "integrations"
        ],
        "summary": "Rotate the endpoint's signing secret",
        "description": "Mint a new signing secret, keeping the superseded one valid for 24 hours.\n\nDuring the overlap every delivery carries two `v1=` signatures - one per secret - so\na receiver can be redeployed with the new key at any point inside the window\n(docs/04-api.md §5 signing). `previous_secret_expires_at` on the response is when\nthe old key stops verifying.\n\nAn `Idempotency-Key` is honored so a retried rotate replays the first rotation's minted\nsecret rather than rotating a second time - a double rotate would collapse the previous\nsecret's 24-hour overlap before a receiver could pick up the new one. The claim shares\nthis request's transaction with the rotation, so a failure frees the key.",
        "operationId": "rotate_webhook_secret_v1_webhook_endpoint_rotate_secret_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Unique key for this request, so a retry replays the original result instead of repeating the work. Stored for 24 hours; a replayed response carries `Idempotent-Replay: true`. A UUID is the documented shape.",
              "title": "Idempotency-Key"
            },
            "description": "Unique key for this request, so a retry replays the original result instead of repeating the work. Stored for 24 hours; a replayed response carries `Idempotent-Replay: true`. A UUID is the documented shape."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookEndpointSecretView"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/webhook-deliveries": {
      "get": {
        "tags": [
          "integrations"
        ],
        "summary": "List webhook deliveries",
        "description": "The inspectable delivery ledger, newest first.\n\nFilterable on `event_id`, `endpoint_id`, `status`, and `created_at` ranges - the\ndocumented recovery path is `?event_id=…` plus re-fetching the underlying resource.",
        "operationId": "list_webhook_deliveries_v1_webhook_deliveries_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 200,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          },
          {
            "name": "created_at",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at`. Comma-separated values are OR.",
              "title": "Created At"
            },
            "description": "Filter on `created_at`. Comma-separated values are OR."
          },
          {
            "name": "created_at.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `gte` operator.",
              "title": "Created At.Gte"
            },
            "description": "Filter on `created_at` with the `gte` operator."
          },
          {
            "name": "created_at.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `lte` operator.",
              "title": "Created At.Lte"
            },
            "description": "Filter on `created_at` with the `lte` operator."
          },
          {
            "name": "created_at.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `gt` operator.",
              "title": "Created At.Gt"
            },
            "description": "Filter on `created_at` with the `gt` operator."
          },
          {
            "name": "created_at.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `lt` operator.",
              "title": "Created At.Lt"
            },
            "description": "Filter on `created_at` with the `lt` operator."
          },
          {
            "name": "created_at.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `in` operator.",
              "title": "Created At.In"
            },
            "description": "Filter on `created_at` with the `in` operator."
          },
          {
            "name": "endpoint_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `endpoint_id`. Comma-separated values are OR.",
              "title": "Endpoint Id"
            },
            "description": "Filter on `endpoint_id`. Comma-separated values are OR."
          },
          {
            "name": "endpoint_id.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `endpoint_id` with the `gte` operator.",
              "title": "Endpoint Id.Gte"
            },
            "description": "Filter on `endpoint_id` with the `gte` operator."
          },
          {
            "name": "endpoint_id.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `endpoint_id` with the `lte` operator.",
              "title": "Endpoint Id.Lte"
            },
            "description": "Filter on `endpoint_id` with the `lte` operator."
          },
          {
            "name": "endpoint_id.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `endpoint_id` with the `gt` operator.",
              "title": "Endpoint Id.Gt"
            },
            "description": "Filter on `endpoint_id` with the `gt` operator."
          },
          {
            "name": "endpoint_id.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `endpoint_id` with the `lt` operator.",
              "title": "Endpoint Id.Lt"
            },
            "description": "Filter on `endpoint_id` with the `lt` operator."
          },
          {
            "name": "endpoint_id.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `endpoint_id` with the `in` operator.",
              "title": "Endpoint Id.In"
            },
            "description": "Filter on `endpoint_id` with the `in` operator."
          },
          {
            "name": "event_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `event_id`. Comma-separated values are OR.",
              "title": "Event Id"
            },
            "description": "Filter on `event_id`. Comma-separated values are OR."
          },
          {
            "name": "event_id.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `event_id` with the `gte` operator.",
              "title": "Event Id.Gte"
            },
            "description": "Filter on `event_id` with the `gte` operator."
          },
          {
            "name": "event_id.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `event_id` with the `lte` operator.",
              "title": "Event Id.Lte"
            },
            "description": "Filter on `event_id` with the `lte` operator."
          },
          {
            "name": "event_id.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `event_id` with the `gt` operator.",
              "title": "Event Id.Gt"
            },
            "description": "Filter on `event_id` with the `gt` operator."
          },
          {
            "name": "event_id.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `event_id` with the `lt` operator.",
              "title": "Event Id.Lt"
            },
            "description": "Filter on `event_id` with the `lt` operator."
          },
          {
            "name": "event_id.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `event_id` with the `in` operator.",
              "title": "Event Id.In"
            },
            "description": "Filter on `event_id` with the `in` operator."
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status`. Comma-separated values are OR.",
              "title": "Status"
            },
            "description": "Filter on `status`. Comma-separated values are OR."
          },
          {
            "name": "status.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `gte` operator.",
              "title": "Status.Gte"
            },
            "description": "Filter on `status` with the `gte` operator."
          },
          {
            "name": "status.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `lte` operator.",
              "title": "Status.Lte"
            },
            "description": "Filter on `status` with the `lte` operator."
          },
          {
            "name": "status.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `gt` operator.",
              "title": "Status.Gt"
            },
            "description": "Filter on `status` with the `gt` operator."
          },
          {
            "name": "status.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `lt` operator.",
              "title": "Status.Lt"
            },
            "description": "Filter on `status` with the `lt` operator."
          },
          {
            "name": "status.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `in` operator.",
              "title": "Status.In"
            },
            "description": "Filter on `status` with the `in` operator."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorPage_WebhookDelivery_"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/webhook-endpoint/test": {
      "post": {
        "tags": [
          "integrations"
        ],
        "summary": "Send one signed sample event to the endpoint, synchronously",
        "description": "Prove the receiver end to end before any real call depends on it.\n\nThe sample rides the exact production mechanics - same envelope keys, same compact\nkey-ordered serialization, same `Vocapable-Signature` scheme signed with the same\nsecrets (both, during a rotation overlap), same 10-second success rule - so a\nreceiver that verifies this ping verifies real traffic. `data.test: true` is the\nmarker; nothing durable is written and no outbox row is minted.",
        "operationId": "test_webhook_endpoint_v1_webhook_endpoint_test_post",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookTestResult"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/v1/webhook-deliveries/{delivery_id}/redrive": {
      "post": {
        "tags": [
          "integrations"
        ],
        "summary": "Put one exhausted delivery back on the retry ladder",
        "description": "Self-service recovery after an outage outlasted the 24-hour retry window.\n\nOnly an `exhausted` delivery moves: `pending`/`failed` are already on the ladder,\nand a `delivered` one was received - re-sending it would deliver the same event\ntwice on a human's timescale. The requeued delivery gets exactly one more POST\n(the enqueue window is never reopened); a receiver that is still down returns it\nto `exhausted`, one press at a time.",
        "operationId": "redrive_webhook_delivery_v1_webhook_deliveries__delivery_id__redrive_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "delivery_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Delivery Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookDelivery"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/receptionist-action-targets": {
      "get": {
        "tags": [
          "integrations"
        ],
        "summary": "List bounded receptionist outcome delivery targets",
        "description": "The control-center view of native outcome routing and its latest evidence.\n\nThe catalog is fixed in ``ReceptionistActionOutcome``; this route never renders a\ntenant-defined executable tool, schema, command, or signing secret. Delivery counts\nare an observation of the durable ledger, not a promise that an external receiver\ncompleted business work.",
        "operationId": "list_receptionist_action_targets_v1_receptionist_action_targets_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/ReceptionistActionTargetSummary"
                  },
                  "type": "array",
                  "title": "Response List Receptionist Action Targets V1 Receptionist Action Targets Get"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/v1/receptionist-action-targets/{outcome_type}": {
      "put": {
        "tags": [
          "integrations"
        ],
        "summary": "Bind one predefined receptionist outcome to the signed endpoint",
        "description": "Upsert one closed-catalog action binding.\n\nThe endpoint must already exist through ``PUT /webhook-endpoint``. That endpoint owns\nthe one-time HMAC secret and the durable retry worker; this resource only decides which\nnative outcome it may receive after its Inbox/resource transaction has committed.",
        "operationId": "put_receptionist_action_target_v1_receptionist_action_targets__outcome_type__put",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "outcome_type",
            "in": "path",
            "required": true,
            "schema": {
              "enum": [
                "message",
                "ticket",
                "lead",
                "booking"
              ],
              "type": "string",
              "title": "Outcome Type"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReceptionistActionTargetRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceptionistActionTargetSummary"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "integrations"
        ],
        "summary": "Remove one receptionist outcome delivery binding",
        "description": "Idempotently stop future external delivery for one outcome.\n\nExisting Inbox/resource rows and any already-enqueued delivery ledger rows remain\ndurable/auditable. Removing a binding cannot erase a caller's request or falsely turn a\ndelivered/failed historical outcome into a different state.",
        "operationId": "delete_receptionist_action_target_v1_receptionist_action_targets__outcome_type__delete",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "outcome_type",
            "in": "path",
            "required": true,
            "schema": {
              "enum": [
                "message",
                "ticket",
                "lead",
                "booking"
              ],
              "type": "string",
              "title": "Outcome Type"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/receptionist-action-targets/{outcome_type}/deliveries": {
      "get": {
        "tags": [
          "integrations"
        ],
        "summary": "List durable deliveries for one receptionist outcome",
        "description": "The exact retry/delivery history behind one bound native outcome.",
        "operationId": "list_receptionist_action_target_deliveries_v1_receptionist_action_targets__outcome_type__deliveries_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "outcome_type",
            "in": "path",
            "required": true,
            "schema": {
              "enum": [
                "message",
                "ticket",
                "lead",
                "booking"
              ],
              "type": "string",
              "title": "Outcome Type"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 200,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorPage_WebhookDelivery_"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/receptionist-action-targets/{outcome_type}/test": {
      "post": {
        "tags": [
          "integrations"
        ],
        "summary": "Send a signed setup-check for one receptionist outcome target",
        "description": "Prove the exact action envelope/signature without creating a caller outcome.\n\nThis carries the real outcome event type but ``data.test: true`` and writes no Inbox,\nresource, event, or delivery ledger row. Its result is persisted on the binding so the\nportal can show the last setup check separately from the durable delivery ledger.",
        "operationId": "test_receptionist_action_target_v1_receptionist_action_targets__outcome_type__test_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "outcome_type",
            "in": "path",
            "required": true,
            "schema": {
              "enum": [
                "message",
                "ticket",
                "lead",
                "booking"
              ],
              "type": "string",
              "title": "Outcome Type"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookTestResult"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/webhook-targets": {
      "post": {
        "tags": [
          "integrations"
        ],
        "summary": "Register a custom_webhook tool target",
        "description": "Register one target, minting its signing secret - the only time it is readable.\n\nEverything bind time would refuse is refused here, where it costs one API request\ninstead of one tool on a live call: a reserved name, a schema the runtime's validator\ncannot enforce, one over the prompt budget, and a URL outside the delivery policy.",
        "operationId": "create_webhook_target_v1_webhook_targets_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WebhookTargetCreateRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookTargetSecretView"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "integrations"
        ],
        "summary": "List every webhook target, active and disabled",
        "operationId": "list_webhook_targets_v1_webhook_targets_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 200,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorPage_WebhookTargetSummary_"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/webhook-targets/{target_id}": {
      "get": {
        "tags": [
          "integrations"
        ],
        "summary": "Read one webhook target",
        "operationId": "read_webhook_target_v1_webhook_targets__target_id__get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "target_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Target Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookTargetSummary"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "integrations"
        ],
        "summary": "Update a webhook target",
        "description": "Apply the supplied fields, under the same boundary checks as registration.\n\nAn edit takes effect for calls redeemed after it commits; a call already running keeps\nthe configuration its session was bound with.",
        "operationId": "update_webhook_target_v1_webhook_targets__target_id__patch",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "target_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Target Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WebhookTargetUpdateRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookTargetSummary"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "integrations"
        ],
        "summary": "Disable a webhook target",
        "description": "Disable-not-delete: the id stays attributable in transcripts and eval history.\n\nIdempotent - deleting an already-disabled target changes nothing and answers 204,\nso a retried DELETE cannot fail its caller. Re-enabling is `PATCH {status: active}`.",
        "operationId": "disable_webhook_target_v1_webhook_targets__target_id__delete",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "target_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Target Id"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/webhook-targets/{target_id}/rotate-secret": {
      "post": {
        "tags": [
          "integrations"
        ],
        "summary": "Rotate the target's signing secret",
        "description": "Mint a new signing secret, keeping the superseded one valid for 24 hours.\n\nDuring the overlap every dispatch carries two `v1=` signatures - one per secret - so\nthe receiver can be redeployed with the new key at any point inside the window,\nexactly like the endpoint rotation above (docs/04-api.md §5 signing).\n\nAn `Idempotency-Key` is honored so a retried rotate replays the first rotation's minted\nsecret rather than rotating twice and collapsing the previous secret's overlap. The\nclaim shares this request's transaction with the rotation.",
        "operationId": "rotate_webhook_target_secret_v1_webhook_targets__target_id__rotate_secret_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "target_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Target Id"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Unique key for this request, so a retry replays the original result instead of repeating the work. Stored for 24 hours; a replayed response carries `Idempotent-Replay: true`. A UUID is the documented shape.",
              "title": "Idempotency-Key"
            },
            "description": "Unique key for this request, so a retry replays the original result instead of repeating the work. Stored for 24 hours; a replayed response carries `Idempotent-Replay: true`. A UUID is the documented shape."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookTargetSecretView"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/messages": {
      "get": {
        "tags": [
          "messages"
        ],
        "summary": "List this tenant's messages",
        "operationId": "list_messages_v1_messages_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 200,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          },
          {
            "name": "contact_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `contact_id`. Comma-separated values are OR.",
              "title": "Contact Id"
            },
            "description": "Filter on `contact_id`. Comma-separated values are OR."
          },
          {
            "name": "contact_id.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `contact_id` with the `gte` operator.",
              "title": "Contact Id.Gte"
            },
            "description": "Filter on `contact_id` with the `gte` operator."
          },
          {
            "name": "contact_id.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `contact_id` with the `lte` operator.",
              "title": "Contact Id.Lte"
            },
            "description": "Filter on `contact_id` with the `lte` operator."
          },
          {
            "name": "contact_id.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `contact_id` with the `gt` operator.",
              "title": "Contact Id.Gt"
            },
            "description": "Filter on `contact_id` with the `gt` operator."
          },
          {
            "name": "contact_id.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `contact_id` with the `lt` operator.",
              "title": "Contact Id.Lt"
            },
            "description": "Filter on `contact_id` with the `lt` operator."
          },
          {
            "name": "contact_id.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `contact_id` with the `in` operator.",
              "title": "Contact Id.In"
            },
            "description": "Filter on `contact_id` with the `in` operator."
          },
          {
            "name": "created_at",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at`. Comma-separated values are OR.",
              "title": "Created At"
            },
            "description": "Filter on `created_at`. Comma-separated values are OR."
          },
          {
            "name": "created_at.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `gte` operator.",
              "title": "Created At.Gte"
            },
            "description": "Filter on `created_at` with the `gte` operator."
          },
          {
            "name": "created_at.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `lte` operator.",
              "title": "Created At.Lte"
            },
            "description": "Filter on `created_at` with the `lte` operator."
          },
          {
            "name": "created_at.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `gt` operator.",
              "title": "Created At.Gt"
            },
            "description": "Filter on `created_at` with the `gt` operator."
          },
          {
            "name": "created_at.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `lt` operator.",
              "title": "Created At.Lt"
            },
            "description": "Filter on `created_at` with the `lt` operator."
          },
          {
            "name": "created_at.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `created_at` with the `in` operator.",
              "title": "Created At.In"
            },
            "description": "Filter on `created_at` with the `in` operator."
          },
          {
            "name": "direction",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `direction`. Comma-separated values are OR.",
              "title": "Direction"
            },
            "description": "Filter on `direction`. Comma-separated values are OR."
          },
          {
            "name": "direction.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `direction` with the `gte` operator.",
              "title": "Direction.Gte"
            },
            "description": "Filter on `direction` with the `gte` operator."
          },
          {
            "name": "direction.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `direction` with the `lte` operator.",
              "title": "Direction.Lte"
            },
            "description": "Filter on `direction` with the `lte` operator."
          },
          {
            "name": "direction.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `direction` with the `gt` operator.",
              "title": "Direction.Gt"
            },
            "description": "Filter on `direction` with the `gt` operator."
          },
          {
            "name": "direction.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `direction` with the `lt` operator.",
              "title": "Direction.Lt"
            },
            "description": "Filter on `direction` with the `lt` operator."
          },
          {
            "name": "direction.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `direction` with the `in` operator.",
              "title": "Direction.In"
            },
            "description": "Filter on `direction` with the `in` operator."
          },
          {
            "name": "inbound_intent",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `inbound_intent`. Comma-separated values are OR.",
              "title": "Inbound Intent"
            },
            "description": "Filter on `inbound_intent`. Comma-separated values are OR."
          },
          {
            "name": "inbound_intent.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `inbound_intent` with the `gte` operator.",
              "title": "Inbound Intent.Gte"
            },
            "description": "Filter on `inbound_intent` with the `gte` operator."
          },
          {
            "name": "inbound_intent.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `inbound_intent` with the `lte` operator.",
              "title": "Inbound Intent.Lte"
            },
            "description": "Filter on `inbound_intent` with the `lte` operator."
          },
          {
            "name": "inbound_intent.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `inbound_intent` with the `gt` operator.",
              "title": "Inbound Intent.Gt"
            },
            "description": "Filter on `inbound_intent` with the `gt` operator."
          },
          {
            "name": "inbound_intent.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `inbound_intent` with the `lt` operator.",
              "title": "Inbound Intent.Lt"
            },
            "description": "Filter on `inbound_intent` with the `lt` operator."
          },
          {
            "name": "inbound_intent.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `inbound_intent` with the `in` operator.",
              "title": "Inbound Intent.In"
            },
            "description": "Filter on `inbound_intent` with the `in` operator."
          },
          {
            "name": "origin_call_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `origin_call_id`. Comma-separated values are OR.",
              "title": "Origin Call Id"
            },
            "description": "Filter on `origin_call_id`. Comma-separated values are OR."
          },
          {
            "name": "origin_call_id.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `origin_call_id` with the `gte` operator.",
              "title": "Origin Call Id.Gte"
            },
            "description": "Filter on `origin_call_id` with the `gte` operator."
          },
          {
            "name": "origin_call_id.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `origin_call_id` with the `lte` operator.",
              "title": "Origin Call Id.Lte"
            },
            "description": "Filter on `origin_call_id` with the `lte` operator."
          },
          {
            "name": "origin_call_id.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `origin_call_id` with the `gt` operator.",
              "title": "Origin Call Id.Gt"
            },
            "description": "Filter on `origin_call_id` with the `gt` operator."
          },
          {
            "name": "origin_call_id.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `origin_call_id` with the `lt` operator.",
              "title": "Origin Call Id.Lt"
            },
            "description": "Filter on `origin_call_id` with the `lt` operator."
          },
          {
            "name": "origin_call_id.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `origin_call_id` with the `in` operator.",
              "title": "Origin Call Id.In"
            },
            "description": "Filter on `origin_call_id` with the `in` operator."
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status`. Comma-separated values are OR.",
              "title": "Status"
            },
            "description": "Filter on `status`. Comma-separated values are OR."
          },
          {
            "name": "status.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `gte` operator.",
              "title": "Status.Gte"
            },
            "description": "Filter on `status` with the `gte` operator."
          },
          {
            "name": "status.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `lte` operator.",
              "title": "Status.Lte"
            },
            "description": "Filter on `status` with the `lte` operator."
          },
          {
            "name": "status.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `gt` operator.",
              "title": "Status.Gt"
            },
            "description": "Filter on `status` with the `gt` operator."
          },
          {
            "name": "status.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `lt` operator.",
              "title": "Status.Lt"
            },
            "description": "Filter on `status` with the `lt` operator."
          },
          {
            "name": "status.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `in` operator.",
              "title": "Status.In"
            },
            "description": "Filter on `status` with the `in` operator."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorPage_MessageSummary_"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "messages"
        ],
        "summary": "Send an SMS from a number this tenant holds",
        "operationId": "send_message_v1_messages_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Unique key for this request, so a retry replays the original result instead of repeating the work. Stored for 24 hours; a replayed response carries `Idempotent-Replay: true`. A UUID is the documented shape.",
              "title": "Idempotency-Key"
            },
            "description": "Unique key for this request, so a retry replays the original result instead of repeating the work. Stored for 24 hours; a replayed response carries `Idempotent-Replay: true`. A UUID is the documented shape."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SmsSendRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageSummary"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/message-templates": {
      "get": {
        "tags": [
          "messages"
        ],
        "summary": "List this tenant's message templates",
        "operationId": "list_message_templates_v1_message_templates_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 200,
              "minimum": 1,
              "default": 50,
              "title": "Limit"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          },
          {
            "name": "locale",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `locale`. Comma-separated values are OR.",
              "title": "Locale"
            },
            "description": "Filter on `locale`. Comma-separated values are OR."
          },
          {
            "name": "locale.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `locale` with the `gte` operator.",
              "title": "Locale.Gte"
            },
            "description": "Filter on `locale` with the `gte` operator."
          },
          {
            "name": "locale.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `locale` with the `lte` operator.",
              "title": "Locale.Lte"
            },
            "description": "Filter on `locale` with the `lte` operator."
          },
          {
            "name": "locale.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `locale` with the `gt` operator.",
              "title": "Locale.Gt"
            },
            "description": "Filter on `locale` with the `gt` operator."
          },
          {
            "name": "locale.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `locale` with the `lt` operator.",
              "title": "Locale.Lt"
            },
            "description": "Filter on `locale` with the `lt` operator."
          },
          {
            "name": "locale.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `locale` with the `in` operator.",
              "title": "Locale.In"
            },
            "description": "Filter on `locale` with the `in` operator."
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status`. Comma-separated values are OR.",
              "title": "Status"
            },
            "description": "Filter on `status`. Comma-separated values are OR."
          },
          {
            "name": "status.gte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `gte` operator.",
              "title": "Status.Gte"
            },
            "description": "Filter on `status` with the `gte` operator."
          },
          {
            "name": "status.lte",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `lte` operator.",
              "title": "Status.Lte"
            },
            "description": "Filter on `status` with the `lte` operator."
          },
          {
            "name": "status.gt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `gt` operator.",
              "title": "Status.Gt"
            },
            "description": "Filter on `status` with the `gt` operator."
          },
          {
            "name": "status.lt",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `lt` operator.",
              "title": "Status.Lt"
            },
            "description": "Filter on `status` with the `lt` operator."
          },
          {
            "name": "status.in",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter on `status` with the `in` operator.",
              "title": "Status.In"
            },
            "description": "Filter on `status` with the `in` operator."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorPage_MessageTemplateSummary_"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "messages"
        ],
        "summary": "Create a message template",
        "operationId": "create_message_template_v1_message_templates_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MessageTemplateCreateRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageTemplateSummary"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/message-templates/{template_id}": {
      "patch": {
        "tags": [
          "messages"
        ],
        "summary": "Archive or reactivate a message template",
        "description": "The one legal template mutation: the status flip (see the request model).",
        "operationId": "update_message_template_v1_message_templates__template_id__patch",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "template_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Template Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MessageTemplateUpdateRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageTemplateSummary"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/messages/inbound": {
      "post": {
        "tags": [
          "messages"
        ],
        "summary": "Record an inbound SMS delivered by the provider",
        "operationId": "record_inbound_message_v1_messages_inbound_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InboundMessageRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InboundMessageAck"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/v1/workspace-capabilities": {
      "get": {
        "tags": [
          "workspace"
        ],
        "summary": "Read the deployment and tenant capability map for this workspace",
        "description": "Return one fresh readiness map without mutating a workspace or reserving capacity.",
        "operationId": "get_workspace_capabilities_v1_workspace_capabilities_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkspaceCapabilities"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/v1/workspace-telemetry": {
      "post": {
        "tags": [
          "workspace"
        ],
        "summary": "Record one privacy-safe customer portal funnel event",
        "description": "Write only finite, non-identifying portal dimensions to structured monitoring.\n\nThis endpoint deliberately owns no database model, progression record, counter, or\nresource join.  It is a best-effort operational signal; the browser never waits for\nit to decide whether a customer can keep setting up their workspace.",
        "operationId": "record_portal_telemetry_v1_workspace_telemetry_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PortalTelemetryEventRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PortalTelemetryReceipt"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "Accepted": {
        "properties": {
          "message": {
            "type": "string",
            "title": "Message"
          },
          "action_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Action Url"
          }
        },
        "type": "object",
        "required": [
          "message"
        ],
        "title": "Accepted"
      },
      "AccountDeletionBlocker": {
        "properties": {
          "code": {
            "type": "string",
            "title": "Code"
          },
          "title": {
            "type": "string",
            "title": "Title"
          },
          "detail": {
            "type": "string",
            "title": "Detail"
          },
          "next_action": {
            "type": "string",
            "title": "Next Action"
          }
        },
        "type": "object",
        "required": [
          "code",
          "title",
          "detail",
          "next_action"
        ],
        "title": "AccountDeletionBlocker"
      },
      "AccountDeletionImpact": {
        "properties": {
          "workspaces": {
            "items": {
              "$ref": "#/components/schemas/WorkspaceImpact"
            },
            "type": "array",
            "title": "Workspaces"
          },
          "active_membership_count": {
            "type": "integer",
            "title": "Active Membership Count"
          },
          "legacy_user_count": {
            "type": "integer",
            "title": "Legacy User Count"
          },
          "legacy_owner_workspace_count": {
            "type": "integer",
            "title": "Legacy Owner Workspace Count"
          },
          "last_owner_workspace_count": {
            "type": "integer",
            "title": "Last Owner Workspace Count"
          },
          "active_owner_subscription_workspace_count": {
            "type": "integer",
            "title": "Active Owner Subscription Workspace Count"
          },
          "staff_identity_count": {
            "type": "integer",
            "title": "Staff Identity Count"
          },
          "onboarding_application_count": {
            "type": "integer",
            "title": "Onboarding Application Count"
          },
          "invitation_reference_count": {
            "type": "integer",
            "title": "Invitation Reference Count"
          }
        },
        "type": "object",
        "required": [
          "workspaces",
          "active_membership_count",
          "legacy_user_count",
          "legacy_owner_workspace_count",
          "last_owner_workspace_count",
          "active_owner_subscription_workspace_count",
          "staff_identity_count",
          "onboarding_application_count",
          "invitation_reference_count"
        ],
        "title": "AccountDeletionImpact"
      },
      "AccountDeletionOverview": {
        "properties": {
          "fresh_auth_method": {
            "type": "string",
            "enum": [
              "password",
              "email_link"
            ],
            "title": "Fresh Auth Method"
          },
          "impact": {
            "$ref": "#/components/schemas/AccountDeletionImpact"
          },
          "blockers": {
            "items": {
              "$ref": "#/components/schemas/AccountDeletionBlocker"
            },
            "type": "array",
            "title": "Blockers"
          },
          "request": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/AccountDeletionRequestView"
              },
              {
                "type": "null"
              }
            ]
          },
          "can_confirm_or_reconfirm": {
            "type": "boolean",
            "title": "Can Confirm Or Reconfirm"
          },
          "retention_notices": {
            "items": {
              "$ref": "#/components/schemas/RetentionNotice"
            },
            "type": "array",
            "title": "Retention Notices"
          }
        },
        "type": "object",
        "required": [
          "fresh_auth_method",
          "impact",
          "blockers",
          "request",
          "can_confirm_or_reconfirm",
          "retention_notices"
        ],
        "title": "AccountDeletionOverview"
      },
      "AccountDeletionRequestView": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "status": {
            "type": "string",
            "enum": [
              "pending",
              "awaiting_owner_transfer",
              "awaiting_workspace_termination",
              "awaiting_staff_offboarding",
              "awaiting_retention_review",
              "processing",
              "completed",
              "refused"
            ],
            "title": "Status"
          },
          "verification_method": {
            "type": "string",
            "enum": [
              "password",
              "email_link"
            ],
            "title": "Verification Method"
          },
          "requested_at": {
            "type": "string",
            "format": "date-time",
            "title": "Requested At"
          },
          "confirmed_at": {
            "type": "string",
            "format": "date-time",
            "title": "Confirmed At"
          },
          "response_due_at": {
            "type": "string",
            "format": "date-time",
            "title": "Response Due At"
          },
          "processing_started_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Processing Started At"
          },
          "completed_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Completed At"
          },
          "refused_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Refused At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "status",
          "verification_method",
          "requested_at",
          "confirmed_at",
          "response_due_at",
          "processing_started_at",
          "completed_at",
          "refused_at"
        ],
        "title": "AccountDeletionRequestView"
      },
      "AccountSummary": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "email": {
            "type": "string",
            "title": "Email"
          },
          "email_verified": {
            "type": "boolean",
            "title": "Email Verified"
          }
        },
        "type": "object",
        "required": [
          "id",
          "email",
          "email_verified"
        ],
        "title": "AccountSummary"
      },
      "ActionConfirmationProof": {
        "properties": {
          "kind": {
            "type": "string",
            "enum": [
              "shift_response",
              "qualification"
            ],
            "title": "Kind"
          },
          "subject_ref": {
            "type": "string",
            "maxLength": 64,
            "minLength": 1,
            "title": "Subject Ref"
          },
          "response": {
            "type": "string",
            "enum": [
              "accepted",
              "declined",
              "tentative",
              "interested",
              "not_interested",
              "needs_follow_up",
              "unknown"
            ],
            "title": "Response"
          },
          "policy_version": {
            "type": "string",
            "const": "exact_action_v1",
            "title": "Policy Version",
            "default": "exact_action_v1"
          },
          "confirming_turn": {
            "$ref": "#/components/schemas/ConversationEvidence"
          },
          "method": {
            "type": "string",
            "enum": [
              "explicit_statement",
              "heard_readback"
            ],
            "title": "Method"
          },
          "readback": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/HeardReadbackEvidence"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "kind",
          "subject_ref",
          "response",
          "confirming_turn",
          "method"
        ],
        "title": "ActionConfirmationProof",
        "description": "Runtime-created attestation, never a model-authored tool argument.\n\nThis attests the trusted runtime's ledger, not independently verified audio.\nA fresh native tool call is still required before dispatch."
      },
      "ActionTokenRequest": {
        "properties": {
          "token": {
            "type": "string",
            "maxLength": 512,
            "minLength": 32,
            "title": "Token"
          }
        },
        "type": "object",
        "required": [
          "token"
        ],
        "title": "ActionTokenRequest"
      },
      "AdHocCall": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "agent_id": {
            "type": "string",
            "title": "Agent Id"
          },
          "agent_version_id": {
            "type": "string",
            "title": "Agent Version Id"
          },
          "contact_id": {
            "type": "string",
            "title": "Contact Id"
          },
          "telephony": {
            "type": "string",
            "enum": [
              "mock",
              "byo"
            ],
            "title": "Telephony"
          },
          "state": {
            "type": "string",
            "title": "State"
          },
          "disposition": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Disposition"
          },
          "call_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Call Id"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "agent_id",
          "agent_version_id",
          "contact_id",
          "telephony",
          "state",
          "created_at"
        ],
        "title": "AdHocCall",
        "description": "The queued campaign-less ContactAttempt returned by `POST /v1/calls`."
      },
      "AdHocCallRequest": {
        "properties": {
          "agent_id": {
            "type": "string",
            "maxLength": 64,
            "minLength": 1,
            "title": "Agent Id"
          },
          "contact_id": {
            "type": "string",
            "maxLength": 64,
            "minLength": 1,
            "title": "Contact Id"
          },
          "questions": {
            "items": {
              "$ref": "#/components/schemas/CallQuestion"
            },
            "type": "array",
            "maxItems": 10,
            "title": "Questions"
          },
          "context": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object",
            "title": "Context"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "agent_id",
          "contact_id"
        ],
        "title": "AdHocCallRequest",
        "description": "One contact-bound campaign-less outbound attempt (`POST /v1/calls`).\n\nThe deliberately small shape is the safety boundary: callers name durable tenant\nresources only. There is no raw E.164 destination, caller-id override, or carrier\nroute that could turn the endpoint into an ungoverned dialer. `questions` and\n`context` are bounded CONVERSATION inputs (migration 0070): additive survey\nquestions the pinned version's objectives do not carry, and key: value facts the\nagent may use - never dial-routing inputs, never platform-key shadows, and capped\nhard enough that the call context stays a context, not a document."
      },
      "AgentChatMessage": {
        "properties": {
          "role": {
            "type": "string",
            "enum": [
              "user",
              "assistant"
            ],
            "title": "Role"
          },
          "content": {
            "type": "string",
            "maxLength": 4000,
            "minLength": 1,
            "title": "Content"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "role",
          "content"
        ],
        "title": "AgentChatMessage"
      },
      "AgentChatRequest": {
        "properties": {
          "messages": {
            "items": {
              "$ref": "#/components/schemas/AgentChatMessage"
            },
            "type": "array",
            "maxItems": 40,
            "minItems": 1,
            "title": "Messages"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "messages"
        ],
        "title": "AgentChatRequest",
        "description": "The full visible transcript, oldest first, ending with the user's new message."
      },
      "AgentCreateRequest": {
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1,
            "title": "Name"
          },
          "use_case": {
            "type": "string",
            "enum": [
              "sdr",
              "staffing",
              "survey",
              "reminder",
              "custom",
              "receptionist",
              "recruiting"
            ],
            "title": "Use Case"
          },
          "conversation_settings": {
            "$ref": "#/components/schemas/ConversationSettings"
          },
          "persona": {
            "additionalProperties": true,
            "type": "object",
            "title": "Persona"
          },
          "objectives": {
            "items": {
              "additionalProperties": true,
              "type": "object"
            },
            "type": "array",
            "title": "Objectives"
          },
          "guardrails": {
            "$ref": "#/components/schemas/Guardrails"
          },
          "tools": {
            "items": {
              "type": "string",
              "enum": [
                "check_calendar",
                "book_meeting",
                "send_sms",
                "send_verification_code",
                "verify_identity",
                "record_sms_consent",
                "take_message",
                "open_ticket",
                "update_lead",
                "record_survey_answer",
                "confirm_shift",
                "record_shift_response",
                "record_qualification",
                "schedule_callback",
                "transfer_to_human",
                "record_optout",
                "end_call",
                "custom_webhook"
              ]
            },
            "type": "array",
            "title": "Tools"
          },
          "sms_template_ids": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Sms Template Ids"
          },
          "handoff_target_rep_ids": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Handoff Target Rep Ids"
          },
          "llm_route": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/LlmRoute"
              },
              {
                "type": "null"
              }
            ]
          },
          "stock_voice_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Stock Voice Id"
          },
          "voice_profile_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Voice Profile Id"
          },
          "knowledge_pack_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Knowledge Pack Id"
          },
          "knowledge_pack_version": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Knowledge Pack Version"
          },
          "disclosure_config": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object",
            "minProperties": 1,
            "title": "Disclosure Config"
          },
          "voicemail_config": {
            "$ref": "#/components/schemas/VoicemailConfig"
          },
          "compliance_profile_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Compliance Profile Id"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "name",
          "use_case",
          "disclosure_config"
        ],
        "title": "AgentCreateRequest",
        "description": "`POST /v1/agents`. Extra fields are refused, which is what rejects `stt_route`."
      },
      "AgentResource": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "use_case": {
            "type": "string",
            "enum": [
              "sdr",
              "staffing",
              "survey",
              "reminder",
              "custom",
              "receptionist",
              "recruiting"
            ],
            "title": "Use Case"
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "active",
              "archived"
            ],
            "title": "Status"
          },
          "latest_version": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Latest Version"
          },
          "stock_voice_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Stock Voice Id"
          },
          "voice_profile_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Voice Profile Id"
          },
          "knowledge_pack_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Knowledge Pack Id"
          },
          "seeded_from_template_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Seeded From Template Id"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
          },
          "persona": {
            "additionalProperties": true,
            "type": "object",
            "title": "Persona"
          },
          "conversation_settings": {
            "$ref": "#/components/schemas/ConversationSettings"
          },
          "objectives": {
            "items": {
              "additionalProperties": true,
              "type": "object"
            },
            "type": "array",
            "title": "Objectives"
          },
          "guardrails": {
            "$ref": "#/components/schemas/Guardrails"
          },
          "tools": {
            "items": {
              "type": "string",
              "enum": [
                "check_calendar",
                "book_meeting",
                "send_sms",
                "send_verification_code",
                "verify_identity",
                "record_sms_consent",
                "take_message",
                "open_ticket",
                "update_lead",
                "record_survey_answer",
                "confirm_shift",
                "record_shift_response",
                "record_qualification",
                "schedule_callback",
                "transfer_to_human",
                "record_optout",
                "end_call",
                "custom_webhook"
              ]
            },
            "type": "array",
            "title": "Tools"
          },
          "sms_template_ids": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Sms Template Ids"
          },
          "handoff_targets": {
            "items": {
              "$ref": "#/components/schemas/DirectRepHandoffTarget"
            },
            "type": "array",
            "title": "Handoff Targets"
          },
          "llm_route": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/LlmRoute"
              },
              {
                "type": "null"
              }
            ]
          },
          "knowledge_pack_version": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Knowledge Pack Version"
          },
          "disclosure_config": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object",
            "title": "Disclosure Config"
          },
          "voicemail_config": {
            "$ref": "#/components/schemas/VoicemailConfig"
          },
          "compliance_profile_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Compliance Profile Id"
          },
          "seeded_from_template_version": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Seeded From Template Version"
          }
        },
        "type": "object",
        "required": [
          "id",
          "name",
          "use_case",
          "status",
          "created_at",
          "updated_at",
          "persona",
          "objectives",
          "guardrails",
          "tools",
          "disclosure_config"
        ],
        "title": "AgentResource",
        "description": "A definition in full."
      },
      "AgentSummary": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "use_case": {
            "type": "string",
            "enum": [
              "sdr",
              "staffing",
              "survey",
              "reminder",
              "custom",
              "receptionist",
              "recruiting"
            ],
            "title": "Use Case"
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "active",
              "archived"
            ],
            "title": "Status"
          },
          "latest_version": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Latest Version"
          },
          "stock_voice_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Stock Voice Id"
          },
          "voice_profile_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Voice Profile Id"
          },
          "knowledge_pack_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Knowledge Pack Id"
          },
          "seeded_from_template_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Seeded From Template Id"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "name",
          "use_case",
          "status",
          "created_at",
          "updated_at"
        ],
        "title": "AgentSummary",
        "description": "A definition as a list row."
      },
      "AgentUpdateRequest": {
        "properties": {
          "name": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200,
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "use_case": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "sdr",
                  "staffing",
                  "survey",
                  "reminder",
                  "custom",
                  "receptionist",
                  "recruiting"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Use Case"
          },
          "conversation_settings": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ConversationSettings"
              },
              {
                "type": "null"
              }
            ]
          },
          "persona": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Persona"
          },
          "objectives": {
            "anyOf": [
              {
                "items": {
                  "additionalProperties": true,
                  "type": "object"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Objectives"
          },
          "guardrails": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Guardrails"
              },
              {
                "type": "null"
              }
            ]
          },
          "tools": {
            "anyOf": [
              {
                "items": {
                  "type": "string",
                  "enum": [
                    "check_calendar",
                    "book_meeting",
                    "send_sms",
                    "send_verification_code",
                    "verify_identity",
                    "record_sms_consent",
                    "take_message",
                    "open_ticket",
                    "update_lead",
                    "record_survey_answer",
                    "confirm_shift",
                    "record_shift_response",
                    "record_qualification",
                    "schedule_callback",
                    "transfer_to_human",
                    "record_optout",
                    "end_call",
                    "custom_webhook"
                  ]
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Tools"
          },
          "sms_template_ids": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Sms Template Ids"
          },
          "handoff_target_rep_ids": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Handoff Target Rep Ids"
          },
          "llm_route": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/LlmRoute"
              },
              {
                "type": "null"
              }
            ]
          },
          "stock_voice_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Stock Voice Id"
          },
          "voice_profile_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Voice Profile Id"
          },
          "knowledge_pack_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Knowledge Pack Id"
          },
          "knowledge_pack_version": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Knowledge Pack Version"
          },
          "disclosure_config": {
            "anyOf": [
              {
                "additionalProperties": {
                  "type": "string"
                },
                "type": "object",
                "minProperties": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Disclosure Config"
          },
          "voicemail_config": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/VoicemailConfig"
              },
              {
                "type": "null"
              }
            ]
          },
          "compliance_profile_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Compliance Profile Id"
          },
          "status": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "draft",
                  "archived"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Status"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "title": "AgentUpdateRequest",
        "description": "`PATCH /v1/agents/{id}`. Only the fields present in the body are applied."
      },
      "AgentVersionResource": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "agent_definition_id": {
            "type": "string",
            "title": "Agent Definition Id"
          },
          "version": {
            "type": "integer",
            "title": "Version"
          },
          "content_hash": {
            "type": "string",
            "title": "Content Hash"
          },
          "action_confirmation_policy": {
            "type": "string",
            "enum": [
              "legacy_v0",
              "exact_action_v1",
              "exact_action_v2"
            ],
            "title": "Action Confirmation Policy",
            "default": "legacy_v0"
          },
          "max_call_seconds": {
            "type": "integer",
            "title": "Max Call Seconds"
          },
          "stock_voice_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Stock Voice Id"
          },
          "voice_profile_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Voice Profile Id"
          },
          "knowledge_pack_version_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Knowledge Pack Version Id"
          },
          "receptionist_intelligence_version_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Receptionist Intelligence Version Id"
          },
          "receptionist_release_status": {
            "type": "string",
            "enum": [
              "not_applicable",
              "unqualified",
              "qualified",
              "draining"
            ],
            "title": "Receptionist Release Status",
            "default": "not_applicable"
          },
          "receptionist_capability_manifest_hash": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Receptionist Capability Manifest Hash"
          },
          "receptionist_rendered_token_budget": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Receptionist Rendered Token Budget"
          },
          "receptionist_live_preflight_eval_run_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Receptionist Live Preflight Eval Run Id"
          },
          "receptionist_canary_route_fingerprint": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Receptionist Canary Route Fingerprint"
          },
          "receptionist_qualified_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Receptionist Qualified At"
          },
          "compliance_profile_id": {
            "type": "string",
            "title": "Compliance Profile Id"
          },
          "gate_eval_run_id": {
            "type": "string",
            "title": "Gate Eval Run Id"
          },
          "published_by": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Published By"
          },
          "published_at": {
            "type": "string",
            "format": "date-time",
            "title": "Published At"
          },
          "persona": {
            "additionalProperties": true,
            "type": "object",
            "title": "Persona"
          },
          "use_case": {
            "type": "string",
            "enum": [
              "sdr",
              "staffing",
              "survey",
              "reminder",
              "custom",
              "receptionist",
              "recruiting"
            ],
            "title": "Use Case",
            "default": "custom"
          },
          "conversation_settings": {
            "$ref": "#/components/schemas/ConversationSettings"
          },
          "objectives": {
            "items": {
              "additionalProperties": true,
              "type": "object"
            },
            "type": "array",
            "title": "Objectives"
          },
          "guardrails": {
            "$ref": "#/components/schemas/Guardrails"
          },
          "tools": {
            "items": {
              "type": "string",
              "enum": [
                "check_calendar",
                "book_meeting",
                "send_sms",
                "send_verification_code",
                "verify_identity",
                "record_sms_consent",
                "take_message",
                "open_ticket",
                "update_lead",
                "record_survey_answer",
                "confirm_shift",
                "record_shift_response",
                "record_qualification",
                "schedule_callback",
                "transfer_to_human",
                "record_optout",
                "end_call",
                "custom_webhook"
              ]
            },
            "type": "array",
            "title": "Tools"
          },
          "sms_template_ids": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Sms Template Ids"
          },
          "handoff_targets": {
            "items": {
              "$ref": "#/components/schemas/DirectRepHandoffTarget"
            },
            "type": "array",
            "title": "Handoff Targets"
          },
          "llm_route": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/LlmRoute"
              },
              {
                "type": "null"
              }
            ]
          },
          "disclosure_config": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object",
            "title": "Disclosure Config"
          },
          "voicemail_config": {
            "$ref": "#/components/schemas/VoicemailConfig"
          }
        },
        "type": "object",
        "required": [
          "id",
          "agent_definition_id",
          "version",
          "content_hash",
          "max_call_seconds",
          "compliance_profile_id",
          "gate_eval_run_id",
          "published_at",
          "persona",
          "objectives",
          "guardrails",
          "tools",
          "disclosure_config"
        ],
        "title": "AgentVersionResource",
        "description": "The fully resolved configuration a call executes."
      },
      "AgentVersionSummary": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "agent_definition_id": {
            "type": "string",
            "title": "Agent Definition Id"
          },
          "version": {
            "type": "integer",
            "title": "Version"
          },
          "content_hash": {
            "type": "string",
            "title": "Content Hash"
          },
          "action_confirmation_policy": {
            "type": "string",
            "enum": [
              "legacy_v0",
              "exact_action_v1",
              "exact_action_v2"
            ],
            "title": "Action Confirmation Policy",
            "default": "legacy_v0"
          },
          "max_call_seconds": {
            "type": "integer",
            "title": "Max Call Seconds"
          },
          "stock_voice_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Stock Voice Id"
          },
          "voice_profile_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Voice Profile Id"
          },
          "knowledge_pack_version_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Knowledge Pack Version Id"
          },
          "receptionist_intelligence_version_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Receptionist Intelligence Version Id"
          },
          "receptionist_release_status": {
            "type": "string",
            "enum": [
              "not_applicable",
              "unqualified",
              "qualified",
              "draining"
            ],
            "title": "Receptionist Release Status",
            "default": "not_applicable"
          },
          "receptionist_capability_manifest_hash": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Receptionist Capability Manifest Hash"
          },
          "receptionist_rendered_token_budget": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Receptionist Rendered Token Budget"
          },
          "receptionist_live_preflight_eval_run_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Receptionist Live Preflight Eval Run Id"
          },
          "receptionist_canary_route_fingerprint": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Receptionist Canary Route Fingerprint"
          },
          "receptionist_qualified_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Receptionist Qualified At"
          },
          "compliance_profile_id": {
            "type": "string",
            "title": "Compliance Profile Id"
          },
          "gate_eval_run_id": {
            "type": "string",
            "title": "Gate Eval Run Id"
          },
          "published_by": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Published By"
          },
          "published_at": {
            "type": "string",
            "format": "date-time",
            "title": "Published At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "agent_definition_id",
          "version",
          "content_hash",
          "max_call_seconds",
          "compliance_profile_id",
          "gate_eval_run_id",
          "published_at"
        ],
        "title": "AgentVersionSummary",
        "description": "An immutable published snapshot, as a list row."
      },
      "AgreementAcceptRequest": {
        "properties": {
          "agreement_kind": {
            "type": "string",
            "enum": [
              "msa",
              "telecom_addendum",
              "test_calls_addendum",
              "aup",
              "dpa",
              "production_services_order",
              "scrub_attestation",
              "api_source_attestation",
              "three_year_commitment_addendum",
              "cold_outreach_waiver"
            ],
            "title": "Agreement Kind"
          },
          "version": {
            "type": "string",
            "maxLength": 100,
            "minLength": 1,
            "title": "Version"
          },
          "content_sha256": {
            "type": "string",
            "pattern": "^[0-9a-f]{64}$",
            "title": "Content Sha256"
          },
          "signer_name": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1,
            "title": "Signer Name"
          },
          "signer_title": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1,
            "title": "Signer Title"
          },
          "signer_email": {
            "type": "string",
            "maxLength": 320,
            "minLength": 3,
            "pattern": "^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$",
            "title": "Signer Email"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "agreement_kind",
          "version",
          "content_sha256",
          "signer_name",
          "signer_title",
          "signer_email"
        ],
        "title": "AgreementAcceptRequest",
        "description": "One click-through acceptance. The caller echoes the version and hash it was served;\n`signer_ip` and `accepted_at` are stamped by the API, never client input - the same\nposture as `ConsentAttestation`."
      },
      "AgreementAcceptance": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "agreement_kind": {
            "type": "string",
            "enum": [
              "msa",
              "telecom_addendum",
              "test_calls_addendum",
              "aup",
              "dpa",
              "production_services_order",
              "scrub_attestation",
              "api_source_attestation",
              "three_year_commitment_addendum",
              "cold_outreach_waiver"
            ],
            "title": "Agreement Kind"
          },
          "version": {
            "type": "string",
            "title": "Version"
          },
          "content_sha256": {
            "type": "string",
            "title": "Content Sha256"
          },
          "signer_name": {
            "type": "string",
            "title": "Signer Name"
          },
          "signer_title": {
            "type": "string",
            "title": "Signer Title"
          },
          "signer_email": {
            "type": "string",
            "title": "Signer Email"
          },
          "signer_ip": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Signer Ip"
          },
          "accepted_at": {
            "type": "string",
            "format": "date-time",
            "title": "Accepted At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "agreement_kind",
          "version",
          "content_sha256",
          "signer_name",
          "signer_title",
          "signer_email",
          "accepted_at"
        ],
        "title": "AgreementAcceptance",
        "description": "A recorded acceptance, as the append-only ledger holds it."
      },
      "AgreementDocument": {
        "properties": {
          "kind": {
            "type": "string",
            "enum": [
              "msa",
              "telecom_addendum",
              "test_calls_addendum",
              "aup",
              "dpa",
              "production_services_order",
              "scrub_attestation",
              "api_source_attestation",
              "three_year_commitment_addendum",
              "cold_outreach_waiver"
            ],
            "title": "Kind"
          },
          "version": {
            "type": "string",
            "title": "Version"
          },
          "content_sha256": {
            "type": "string",
            "title": "Content Sha256"
          },
          "markdown": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Markdown"
          },
          "gate_scope": {
            "type": "string",
            "enum": [
              "account",
              "production",
              "headless",
              "commitment",
              "cold_outreach"
            ],
            "title": "Gate Scope"
          },
          "draft": {
            "type": "boolean",
            "title": "Draft"
          },
          "accepted": {
            "type": "boolean",
            "title": "Accepted"
          },
          "accepted_version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Accepted Version"
          },
          "accepted_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Accepted At"
          }
        },
        "type": "object",
        "required": [
          "kind",
          "version",
          "content_sha256",
          "gate_scope",
          "draft",
          "accepted"
        ],
        "title": "AgreementDocument",
        "description": "One gated document as currently served, with the caller-tenant's acceptance state."
      },
      "AgreementList": {
        "properties": {
          "documents": {
            "items": {
              "$ref": "#/components/schemas/AgreementDocument"
            },
            "type": "array",
            "title": "Documents"
          }
        },
        "type": "object",
        "required": [
          "documents"
        ],
        "title": "AgreementList"
      },
      "AiStep": {
        "properties": {
          "type": {
            "type": "string",
            "const": "ai",
            "title": "Type",
            "default": "ai"
          },
          "agent_id": {
            "type": "string",
            "maxLength": 128,
            "minLength": 1,
            "title": "Agent Id"
          },
          "location_ref": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^[a-z][a-z0-9_-]{0,63}$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Location Ref"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "agent_id"
        ],
        "title": "AiStep",
        "description": "Hand the caller to one of this tenant's published agents.\n\nThe agent is named per step rather than by ``phone_numbers.inbound_agent_id`` so a\nsingle number can route sales and support to different agents without widening a\ncolumn three call paths already read as \"the one inbound agent\"."
      },
      "AnalysisDimensionResult": {
        "properties": {
          "result": {
            "type": "string",
            "enum": [
              "pass",
              "fail",
              "not_applicable",
              "unscored"
            ],
            "title": "Result"
          },
          "basis": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Basis"
          },
          "score": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Score"
          },
          "claims_checked": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Claims Checked"
          }
        },
        "type": "object",
        "required": [
          "result"
        ],
        "title": "AnalysisDimensionResult",
        "description": "One scored dimension inside `analysis.success_evaluation` (docs/04-api.md Step 8a).\n\n`not_applicable` means the call gave the dimension nothing to judge (no opt-out was\nsignalled, no pack is pinned); `unscored` means it could not be evaluated - reachable\nonly for a judge dimension, never for the compliance floor. `claims_checked` is\npopulated on `pack_grounded` alone."
      },
      "AnalysisDimensions": {
        "properties": {
          "goal_completion": {
            "$ref": "#/components/schemas/AnalysisDimensionResult"
          },
          "disclosure_given": {
            "$ref": "#/components/schemas/AnalysisDimensionResult"
          },
          "optout_honored": {
            "$ref": "#/components/schemas/AnalysisDimensionResult"
          },
          "pack_grounded": {
            "$ref": "#/components/schemas/AnalysisDimensionResult"
          },
          "latency": {
            "$ref": "#/components/schemas/AnalysisLatency"
          }
        },
        "type": "object",
        "required": [
          "goal_completion",
          "disclosure_given",
          "optout_honored",
          "pack_grounded",
          "latency"
        ],
        "title": "AnalysisDimensions",
        "description": "The per-dimension P1 verdicts (docs/08-ai-quality.md §Production auto-scoring).\n\nThe floor dimensions - `disclosure_given` and `optout_honored` - appear on every call\nand are never waivable; no field here is optional because the worker scores all of\nthem or writes nothing."
      },
      "AnalysisLatency": {
        "properties": {
          "turns_measured": {
            "type": "integer",
            "title": "Turns Measured",
            "default": 0
          },
          "voice_to_voice_p50_ms": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Voice To Voice P50 Ms"
          },
          "voice_to_voice_p95_ms": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Voice To Voice P95 Ms"
          },
          "llm_ttft_p50_ms": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Llm Ttft P50 Ms"
          },
          "llm_ttft_p95_ms": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Llm Ttft P95 Ms"
          }
        },
        "type": "object",
        "title": "AnalysisLatency",
        "description": "Per-call latency against the voice SLO, from the persisted turn ledger."
      },
      "AnsweringPolicy": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "phone_number_id": {
            "type": "string",
            "title": "Phone Number Id"
          },
          "timezone": {
            "type": "string",
            "title": "Timezone"
          },
          "business_hours": {
            "additionalProperties": {
              "items": {
                "$ref": "#/components/schemas/CallingWindow"
              },
              "type": "array"
            },
            "propertyNames": {
              "enum": [
                "mon",
                "tue",
                "wed",
                "thu",
                "fri",
                "sat",
                "sun"
              ]
            },
            "type": "object",
            "title": "Business Hours"
          },
          "holiday_dates": {
            "items": {
              "type": "string",
              "format": "date"
            },
            "type": "array",
            "title": "Holiday Dates"
          },
          "open_steps": {
            "items": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/MenuStep-Output"
                },
                {
                  "$ref": "#/components/schemas/RingHumansStep"
                },
                {
                  "$ref": "#/components/schemas/AiStep"
                },
                {
                  "$ref": "#/components/schemas/VoicemailStep"
                },
                {
                  "$ref": "#/components/schemas/SayStep"
                },
                {
                  "$ref": "#/components/schemas/ForwardStep"
                }
              ],
              "discriminator": {
                "propertyName": "type",
                "mapping": {
                  "ai": "#/components/schemas/AiStep",
                  "forward": "#/components/schemas/ForwardStep",
                  "menu": "#/components/schemas/MenuStep-Output",
                  "ring_humans": "#/components/schemas/RingHumansStep",
                  "say": "#/components/schemas/SayStep",
                  "voicemail": "#/components/schemas/VoicemailStep"
                }
              }
            },
            "type": "array",
            "title": "Open Steps"
          },
          "closed_steps": {
            "items": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/MenuStep-Output"
                },
                {
                  "$ref": "#/components/schemas/RingHumansStep"
                },
                {
                  "$ref": "#/components/schemas/AiStep"
                },
                {
                  "$ref": "#/components/schemas/VoicemailStep"
                },
                {
                  "$ref": "#/components/schemas/SayStep"
                },
                {
                  "$ref": "#/components/schemas/ForwardStep"
                }
              ],
              "discriminator": {
                "propertyName": "type",
                "mapping": {
                  "ai": "#/components/schemas/AiStep",
                  "forward": "#/components/schemas/ForwardStep",
                  "menu": "#/components/schemas/MenuStep-Output",
                  "ring_humans": "#/components/schemas/RingHumansStep",
                  "say": "#/components/schemas/SayStep",
                  "voicemail": "#/components/schemas/VoicemailStep"
                }
              }
            },
            "type": "array",
            "title": "Closed Steps"
          },
          "version": {
            "type": "integer",
            "title": "Version"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "phone_number_id",
          "timezone",
          "open_steps",
          "version",
          "created_at",
          "updated_at"
        ],
        "title": "AnsweringPolicy",
        "description": "One number's stored answering document, as its tenant reads it back.\n\n``version`` is server-owned and bumped on every write. It is not an optimistic-locking\ntoken for this endpoint: it exists so a signed callback URL can carry the exact document\nrevision it was minted against, and a caller walking a policy that was edited mid-call\nis detected rather than silently re-routed."
      },
      "AnsweringPolicySchedule": {
        "properties": {
          "policy_id": {
            "type": "string",
            "title": "Policy Id"
          },
          "phone_number_id": {
            "type": "string",
            "title": "Phone Number Id"
          },
          "timezone": {
            "type": "string",
            "title": "Timezone"
          },
          "business_hours": {
            "additionalProperties": {
              "items": {
                "$ref": "#/components/schemas/CallingWindow"
              },
              "type": "array"
            },
            "propertyNames": {
              "enum": [
                "mon",
                "tue",
                "wed",
                "thu",
                "fri",
                "sat",
                "sun"
              ]
            },
            "type": "object",
            "title": "Business Hours"
          },
          "holiday_dates": {
            "items": {
              "type": "string",
              "format": "date"
            },
            "type": "array",
            "title": "Holiday Dates"
          },
          "version": {
            "type": "integer",
            "title": "Version"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
          }
        },
        "type": "object",
        "required": [
          "policy_id",
          "phone_number_id",
          "timezone",
          "version",
          "updated_at"
        ],
        "title": "AnsweringPolicySchedule",
        "description": "The independently editable calendar portion of an answering policy."
      },
      "AnsweringPolicySchedulePatchRequest": {
        "properties": {
          "expected_version": {
            "type": "integer",
            "minimum": 1,
            "title": "Expected Version"
          },
          "business_hours": {
            "anyOf": [
              {
                "additionalProperties": {
                  "items": {
                    "$ref": "#/components/schemas/CallingWindow"
                  },
                  "type": "array",
                  "maxItems": 6
                },
                "propertyNames": {
                  "enum": [
                    "mon",
                    "tue",
                    "wed",
                    "thu",
                    "fri",
                    "sat",
                    "sun"
                  ]
                },
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Business Hours"
          },
          "holiday_dates": {
            "anyOf": [
              {
                "items": {
                  "type": "string",
                  "format": "date"
                },
                "type": "array",
                "maxItems": 60
              },
              {
                "type": "null"
              }
            ],
            "title": "Holiday Dates"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "expected_version"
        ],
        "title": "AnsweringPolicySchedulePatchRequest",
        "description": "Compare-and-swap patch of only a policy's business calendar.\n\nThe policy's route tree is deliberately absent.  A mobile calendar edit cannot race a\nweb route-tree edit into a half-valid document because the request carries the version\nit read and the repository updates only when that exact version is still current."
      },
      "AnsweringPolicyUpsertRequest": {
        "properties": {
          "timezone": {
            "type": "string",
            "maxLength": 64,
            "minLength": 1,
            "title": "Timezone"
          },
          "business_hours": {
            "additionalProperties": {
              "items": {
                "$ref": "#/components/schemas/CallingWindow"
              },
              "type": "array",
              "maxItems": 6
            },
            "propertyNames": {
              "enum": [
                "mon",
                "tue",
                "wed",
                "thu",
                "fri",
                "sat",
                "sun"
              ]
            },
            "type": "object",
            "title": "Business Hours"
          },
          "holiday_dates": {
            "items": {
              "type": "string",
              "format": "date"
            },
            "type": "array",
            "maxItems": 60,
            "title": "Holiday Dates"
          },
          "open_steps": {
            "items": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/MenuStep-Input"
                },
                {
                  "$ref": "#/components/schemas/RingHumansStep"
                },
                {
                  "$ref": "#/components/schemas/AiStep"
                },
                {
                  "$ref": "#/components/schemas/VoicemailStep"
                },
                {
                  "$ref": "#/components/schemas/SayStep"
                },
                {
                  "$ref": "#/components/schemas/ForwardStep"
                }
              ],
              "discriminator": {
                "propertyName": "type",
                "mapping": {
                  "ai": "#/components/schemas/AiStep",
                  "forward": "#/components/schemas/ForwardStep",
                  "menu": "#/components/schemas/MenuStep-Input",
                  "ring_humans": "#/components/schemas/RingHumansStep",
                  "say": "#/components/schemas/SayStep",
                  "voicemail": "#/components/schemas/VoicemailStep"
                }
              }
            },
            "type": "array",
            "maxItems": 60,
            "minItems": 1,
            "title": "Open Steps"
          },
          "closed_steps": {
            "items": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/MenuStep-Input"
                },
                {
                  "$ref": "#/components/schemas/RingHumansStep"
                },
                {
                  "$ref": "#/components/schemas/AiStep"
                },
                {
                  "$ref": "#/components/schemas/VoicemailStep"
                },
                {
                  "$ref": "#/components/schemas/SayStep"
                },
                {
                  "$ref": "#/components/schemas/ForwardStep"
                }
              ],
              "discriminator": {
                "propertyName": "type",
                "mapping": {
                  "ai": "#/components/schemas/AiStep",
                  "forward": "#/components/schemas/ForwardStep",
                  "menu": "#/components/schemas/MenuStep-Input",
                  "ring_humans": "#/components/schemas/RingHumansStep",
                  "say": "#/components/schemas/SayStep",
                  "voicemail": "#/components/schemas/VoicemailStep"
                }
              }
            },
            "type": "array",
            "maxItems": 60,
            "title": "Closed Steps"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "timezone",
          "open_steps"
        ],
        "title": "AnsweringPolicyUpsertRequest",
        "description": "The whole answering document for one number, written in a single call.\n\nWhole-document rather than patch: the steps form a tree whose branches reference each\nother by position, and a partial write is the shape in which a menu keeps pointing at a\nbranch the same request deleted.\n\n``business_hours`` is the tenant's own calendar in the tenant's own zone, and it shares\nonly the *vocabulary* of `campaign_schedules.calling_windows`, never its meaning: the\ncompliance layer's quiet hours are keyed to the callee's jurisdiction and are untouched\nhere. An empty map means the number is answered by ``open_steps`` at every hour; naming\nany day at all makes every unnamed day closed, which is the same load-bearing\nempty-versus-absent distinction `CallingSchedule.windows_for` carries."
      },
      "ApiContactConsentEvidence": {
        "properties": {
          "artifact_type": {
            "type": "string",
            "maxLength": 100,
            "minLength": 1,
            "title": "Artifact Type"
          },
          "artifact_ref": {
            "type": "string",
            "maxLength": 2000,
            "minLength": 1,
            "title": "Artifact Ref"
          },
          "content_hash": {
            "type": "string",
            "pattern": "^[0-9a-f]{64}$",
            "title": "Content Hash"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "artifact_type",
          "artifact_ref",
          "content_hash"
        ],
        "title": "ApiContactConsentEvidence",
        "description": "The immutable customer-side artifact behind one API-created contact's consent.\n\nA standing API-source attestation says the tenant may create contacts through this\nsurface; it does not replace evidence for an individual person.  The server links the\nresulting ConsentRecord to that standing attestation itself, so callers cannot name or\nsubstitute an attestation id here."
      },
      "ApiContactConsentInput": {
        "properties": {
          "consent_basis": {
            "$ref": "#/components/schemas/ConsentBasis"
          },
          "captured_at": {
            "type": "string",
            "format": "date-time",
            "title": "Captured At"
          },
          "scope": {
            "additionalProperties": true,
            "type": "object",
            "minProperties": 1,
            "title": "Scope"
          },
          "evidence": {
            "$ref": "#/components/schemas/ApiContactConsentEvidence"
          },
          "disclosure_text_shown": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Disclosure Text Shown"
          },
          "expires_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Expires At"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "consent_basis",
          "captured_at",
          "scope",
          "evidence"
        ],
        "title": "ApiContactConsentInput",
        "description": "Consent that must land atomically with a headless contact create.\n\n``scope`` is deliberately explicit rather than defaulting to ``{}``: an empty scope\nwould make a contact look broadly consented while saying nothing about which calls or\nchannels the customer captured permission for.  The policy engine remains the\nauthority for whether that stored scope covers a later call purpose."
      },
      "ApiKeyCreateRequest": {
        "properties": {
          "mode": {
            "type": "string",
            "enum": [
              "live",
              "test"
            ],
            "title": "Mode",
            "default": "test"
          },
          "scopes": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "minItems": 1,
            "title": "Scopes"
          },
          "name": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 120,
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "expires_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Expires At"
          }
        },
        "type": "object",
        "required": [
          "scopes"
        ],
        "title": "ApiKeyCreateRequest"
      },
      "ApiKeyCreateResponse": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "display_prefix": {
            "type": "string",
            "title": "Display Prefix"
          },
          "mode": {
            "type": "string",
            "enum": [
              "live",
              "test"
            ],
            "title": "Mode"
          },
          "scopes": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Scopes"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "expires_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Expires At"
          },
          "revoked_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Revoked At"
          },
          "secret": {
            "type": "string",
            "title": "Secret"
          }
        },
        "type": "object",
        "required": [
          "id",
          "display_prefix",
          "mode",
          "scopes",
          "created_at",
          "secret"
        ],
        "title": "ApiKeyCreateResponse",
        "description": "Returned once at creation - `secret` is unrecoverable afterwards."
      },
      "ApiKeyRotateRequest": {
        "properties": {
          "name": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 120,
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "expires_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Expires At"
          }
        },
        "type": "object",
        "title": "ApiKeyRotateRequest",
        "description": "Replace one key with another carrying the same authority.\n\nMode and scopes are deliberately **not** settable here: rotation replaces a\ncredential, it does not re-grant one. Widening on rotate would route around the\nscope-escalation refusal `POST /v1/api-keys` makes."
      },
      "ApiKeyRotateResponse": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "display_prefix": {
            "type": "string",
            "title": "Display Prefix"
          },
          "mode": {
            "type": "string",
            "enum": [
              "live",
              "test"
            ],
            "title": "Mode"
          },
          "scopes": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Scopes"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "expires_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Expires At"
          },
          "revoked_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Revoked At"
          },
          "secret": {
            "type": "string",
            "title": "Secret"
          },
          "replaced_api_key_id": {
            "type": "string",
            "title": "Replaced Api Key Id"
          }
        },
        "type": "object",
        "required": [
          "id",
          "display_prefix",
          "mode",
          "scopes",
          "created_at",
          "secret",
          "replaced_api_key_id"
        ],
        "title": "ApiKeyRotateResponse",
        "description": "The replacement key, plus the id of the credential it retired.\n\nBoth halves in one body because they happen in one transaction: a client that\nstored the new secret and never learned which key stopped working would have to\ndiff a list to find out."
      },
      "ApiKeySummary": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "display_prefix": {
            "type": "string",
            "title": "Display Prefix"
          },
          "mode": {
            "type": "string",
            "enum": [
              "live",
              "test"
            ],
            "title": "Mode"
          },
          "scopes": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Scopes"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "expires_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Expires At"
          },
          "revoked_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Revoked At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "display_prefix",
          "mode",
          "scopes",
          "created_at"
        ],
        "title": "ApiKeySummary",
        "description": "A key as its owning tenant sees it. The secret is never present."
      },
      "Appointment": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "call_id": {
            "type": "string",
            "title": "Call Id"
          },
          "contact_id": {
            "type": "string",
            "title": "Contact Id"
          },
          "integration_connection_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Integration Connection Id"
          },
          "external_event_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "External Event Id"
          },
          "starts_at": {
            "type": "string",
            "format": "date-time",
            "title": "Starts At"
          },
          "ends_at": {
            "type": "string",
            "format": "date-time",
            "title": "Ends At"
          },
          "contact_timezone": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Contact Timezone"
          },
          "attendees": {
            "items": {},
            "type": "array",
            "title": "Attendees"
          },
          "status": {
            "type": "string",
            "enum": [
              "booked",
              "rescheduled",
              "cancelled",
              "completed",
              "no_show"
            ],
            "title": "Status"
          },
          "invite_sent_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Invite Sent At"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "call_id",
          "contact_id",
          "starts_at",
          "ends_at",
          "status",
          "created_at",
          "updated_at"
        ],
        "title": "Appointment"
      },
      "AppointmentOutcome": {
        "properties": {
          "kind": {
            "type": "string",
            "const": "appointment",
            "title": "Kind",
            "default": "appointment"
          },
          "id": {
            "type": "string",
            "title": "Id"
          },
          "status": {
            "type": "string",
            "enum": [
              "booked",
              "rescheduled",
              "cancelled",
              "completed",
              "no_show"
            ],
            "title": "Status"
          },
          "starts_at": {
            "type": "string",
            "format": "date-time",
            "title": "Starts At"
          },
          "ends_at": {
            "type": "string",
            "format": "date-time",
            "title": "Ends At"
          },
          "contact_timezone": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Contact Timezone"
          }
        },
        "type": "object",
        "required": [
          "id",
          "status",
          "starts_at",
          "ends_at"
        ],
        "title": "AppointmentOutcome"
      },
      "AttemptState": {
        "type": "string",
        "enum": [
          "pending",
          "scrubbed",
          "scheduled",
          "dialing",
          "answered",
          "in_conversation",
          "completed",
          "machine",
          "no_answer",
          "busy",
          "failed",
          "disposed"
        ],
        "title": "AttemptState"
      },
      "AttemptSummary": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "contact_id": {
            "type": "string",
            "title": "Contact Id"
          },
          "contact_phone": {
            "type": "string",
            "title": "Contact Phone"
          },
          "attempt_number": {
            "type": "integer",
            "title": "Attempt Number"
          },
          "state": {
            "$ref": "#/components/schemas/AttemptState"
          },
          "disposition": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Disposition"
              },
              {
                "type": "null"
              }
            ]
          },
          "sub_code": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Sub Code"
          },
          "failure_reason": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/FailureReason"
              },
              {
                "type": "null"
              }
            ]
          },
          "call_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Call Id"
          },
          "scheduled_for": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Scheduled For"
          },
          "dialed_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Dialed At"
          },
          "ended_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ended At"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "contact_id",
          "contact_phone",
          "attempt_number",
          "state",
          "updated_at"
        ],
        "title": "AttemptSummary",
        "description": "One `ContactAttempt` row of the fill-status board."
      },
      "AttributionPayload": {
        "properties": {
          "utm_source": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128
              },
              {
                "type": "null"
              }
            ],
            "title": "Utm Source"
          },
          "utm_medium": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128
              },
              {
                "type": "null"
              }
            ],
            "title": "Utm Medium"
          },
          "utm_campaign": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128
              },
              {
                "type": "null"
              }
            ],
            "title": "Utm Campaign"
          },
          "utm_content": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128
              },
              {
                "type": "null"
              }
            ],
            "title": "Utm Content"
          },
          "utm_term": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128
              },
              {
                "type": "null"
              }
            ],
            "title": "Utm Term"
          },
          "gclid": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128
              },
              {
                "type": "null"
              }
            ],
            "title": "Gclid"
          },
          "msclkid": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128
              },
              {
                "type": "null"
              }
            ],
            "title": "Msclkid"
          },
          "ref": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128
              },
              {
                "type": "null"
              }
            ],
            "title": "Ref"
          },
          "landing_path": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128
              },
              {
                "type": "null"
              }
            ],
            "title": "Landing Path"
          },
          "referrer_host": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128
              },
              {
                "type": "null"
              }
            ],
            "title": "Referrer Host"
          },
          "first_seen_at": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128
              },
              {
                "type": "null"
              }
            ],
            "title": "First Seen At"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "title": "AttributionPayload",
        "description": "The published shape of an attribution blob.\n\nSpelled out field by field rather than as a ``dict[str, str]`` for one reason: this\nmodel is reachable from the consumer OpenAPI document through the onboarding step\nrequest, and a published ``additionalProperties`` map would tell an integrator that\nany key is accepted, which is exactly what the allow-list refuses. ``extra=\"forbid\"``\nmakes an off-list key a 422 on that route - the marketing endpoints, which take the\nsame values from a browser we do not control, use :func:`normalize_attribution`\ninstead and drop rather than refuse."
      },
      "AuthCredentials": {
        "properties": {
          "email": {
            "type": "string",
            "maxLength": 254,
            "minLength": 3,
            "title": "Email"
          },
          "password": {
            "type": "string",
            "maxLength": 1024,
            "minLength": 8,
            "title": "Password"
          }
        },
        "type": "object",
        "required": [
          "email",
          "password"
        ],
        "title": "AuthCredentials"
      },
      "AuthProviders": {
        "properties": {
          "google_client_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Google Client Id"
          }
        },
        "type": "object",
        "title": "AuthProviders",
        "description": "Which optional sign-in providers this deployment has wired.\n\nPublic identifiers only - the Google client id travels in every GIS widget the\nbrowser renders, so exposing it here leaks nothing and lets the portal discover\navailability at runtime instead of baking it into a build."
      },
      "AutoFundActiveOperation": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "status": {
            "type": "string",
            "title": "Status"
          },
          "amount_minor": {
            "type": "integer",
            "title": "Amount Minor"
          },
          "provider_requested_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Provider Requested At"
          },
          "payment_intent_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Payment Intent Id"
          },
          "failure_code": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Failure Code"
          }
        },
        "type": "object",
        "required": [
          "id",
          "status",
          "amount_minor",
          "provider_requested_at",
          "payment_intent_id",
          "failure_code"
        ],
        "title": "AutoFundActiveOperation"
      },
      "AutoFundCadenceOption": {
        "properties": {
          "cadence": {
            "type": "string",
            "enum": [
              "as_needed",
              "at_most_once_per_24h",
              "at_most_once_per_7d"
            ],
            "title": "Cadence"
          },
          "minimum_charge_interval_seconds": {
            "type": "integer",
            "minimum": 0,
            "title": "Minimum Charge Interval Seconds"
          }
        },
        "type": "object",
        "required": [
          "cadence",
          "minimum_charge_interval_seconds"
        ],
        "title": "AutoFundCadenceOption",
        "description": "One server-supported automatic-funding cadence choice.\n\n``minimum_charge_interval_seconds`` is an elapsed UTC duration measured from the prior\nsubmitted provider request.  It is not a scheduled future charge time."
      },
      "AutoFundConfigRequest": {
        "properties": {
          "enabled": {
            "type": "boolean",
            "title": "Enabled"
          },
          "threshold_minor": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 0
              },
              {
                "type": "null"
              }
            ],
            "title": "Threshold Minor"
          },
          "amount_minor": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Amount Minor"
          },
          "period_cap_minor": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Period Cap Minor"
          },
          "period": {
            "type": "string",
            "const": "calendar_month",
            "title": "Period",
            "default": "calendar_month"
          },
          "cadence": {
            "type": "string",
            "enum": [
              "as_needed",
              "at_most_once_per_24h",
              "at_most_once_per_7d"
            ],
            "title": "Cadence",
            "default": "as_needed"
          },
          "mandate_accepted": {
            "anyOf": [
              {
                "type": "boolean",
                "const": true
              },
              {
                "type": "null"
              }
            ],
            "title": "Mandate Accepted"
          },
          "idempotency_key": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 160,
                "minLength": 8
              },
              {
                "type": "null"
              }
            ],
            "title": "Idempotency Key"
          }
        },
        "type": "object",
        "required": [
          "enabled"
        ],
        "title": "AutoFundConfigRequest"
      },
      "AutoFundResponse": {
        "properties": {
          "available": {
            "type": "boolean",
            "title": "Available"
          },
          "funding_min_minor": {
            "type": "integer",
            "minimum": 1,
            "title": "Funding Min Minor"
          },
          "funding_max_minor": {
            "type": "integer",
            "minimum": 1,
            "title": "Funding Max Minor"
          },
          "period_cap_max_minor": {
            "type": "integer",
            "minimum": 1,
            "title": "Period Cap Max Minor"
          },
          "enabled": {
            "type": "boolean",
            "title": "Enabled"
          },
          "status": {
            "type": "string",
            "title": "Status"
          },
          "currency": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Currency"
          },
          "threshold_minor": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Threshold Minor"
          },
          "amount_minor": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Amount Minor"
          },
          "period_cap_minor": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Period Cap Minor"
          },
          "period": {
            "type": "string",
            "const": "calendar_month",
            "title": "Period",
            "default": "calendar_month"
          },
          "period_used_minor": {
            "type": "integer",
            "title": "Period Used Minor",
            "default": 0
          },
          "period_pending_minor": {
            "type": "integer",
            "title": "Period Pending Minor",
            "default": 0
          },
          "period_remaining_minor": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Period Remaining Minor"
          },
          "setup": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/AutoFundSetup"
              },
              {
                "type": "null"
              }
            ]
          },
          "active_operation": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/AutoFundActiveOperation"
              },
              {
                "type": "null"
              }
            ]
          },
          "last_failure_code": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Failure Code"
          },
          "applies_to": {
            "type": "string",
            "const": "managed_verified_number_test_calls_only",
            "title": "Applies To",
            "default": "managed_verified_number_test_calls_only"
          },
          "byo_campaigns_chargeable": {
            "type": "boolean",
            "const": false,
            "title": "Byo Campaigns Chargeable",
            "default": false
          },
          "schedule": {
            "type": "string",
            "const": "server_threshold_polling",
            "title": "Schedule",
            "default": "server_threshold_polling"
          },
          "cadence": {
            "type": "string",
            "enum": [
              "as_needed",
              "at_most_once_per_24h",
              "at_most_once_per_7d"
            ],
            "title": "Cadence",
            "default": "as_needed"
          },
          "minimum_charge_interval_seconds": {
            "type": "integer",
            "minimum": 0,
            "title": "Minimum Charge Interval Seconds",
            "default": 0
          },
          "cadence_options": {
            "items": {
              "$ref": "#/components/schemas/AutoFundCadenceOption"
            },
            "type": "array",
            "title": "Cadence Options"
          },
          "cadence_hold_until": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Cadence Hold Until"
          },
          "accepted_mandate_version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Accepted Mandate Version"
          },
          "accepted_mandate_text": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Accepted Mandate Text"
          },
          "mandate_version": {
            "type": "string",
            "title": "Mandate Version",
            "default": "2026-08-12-cadence-v2"
          },
          "mandate_text": {
            "type": "string",
            "title": "Mandate Text",
            "default": "I authorize Vocapable to charge the payment method I set up for future automatic prepaid managed verified-number test-call credit when my eligible prepaid balance is at or below my selected threshold, for my selected amount, up to my selected calendar-month cap and no more often than my selected cadence measured from the prior submitted charge attempt. Vocapable does not promise a clock time or catch up a missed attempt. I can disable this at any time before a charge is submitted."
          }
        },
        "type": "object",
        "required": [
          "available",
          "funding_min_minor",
          "funding_max_minor",
          "period_cap_max_minor",
          "enabled",
          "status",
          "currency",
          "threshold_minor",
          "amount_minor",
          "period_cap_minor",
          "period_remaining_minor"
        ],
        "title": "AutoFundResponse"
      },
      "AutoFundSetup": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "status": {
            "type": "string",
            "title": "Status"
          },
          "checkout_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Checkout Url"
          },
          "pending": {
            "type": "boolean",
            "title": "Pending",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "id",
          "status"
        ],
        "title": "AutoFundSetup"
      },
      "BillingPeriodEstimate": {
        "properties": {
          "period_start": {
            "type": "string",
            "format": "date-time",
            "title": "Period Start"
          },
          "period_end": {
            "type": "string",
            "format": "date-time",
            "title": "Period End"
          },
          "base_price_minor": {
            "type": "integer",
            "title": "Base Price Minor"
          },
          "usage_amount_minor": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Usage Amount Minor"
          },
          "total_amount_minor": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Total Amount Minor"
          },
          "minutes_amount_minor": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Minutes Amount Minor"
          },
          "call_fees_amount_minor": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Call Fees Amount Minor"
          },
          "volume_tier": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/VolumeTierStatus"
              },
              {
                "type": "null"
              }
            ]
          },
          "unpriced_meters": {
            "items": {
              "type": "string",
              "enum": [
                "telephony_minutes",
                "stt_audio_seconds",
                "tts_characters",
                "llm_prompt_tokens",
                "llm_cached_prompt_tokens",
                "llm_completion_tokens",
                "gpu_seconds",
                "sms_segments",
                "lookup_requests"
              ]
            },
            "type": "array",
            "title": "Unpriced Meters"
          },
          "excluded_usage_types": {
            "items": {
              "type": "string",
              "enum": [
                "byo_carrier_usage",
                "separately_settled_prepaid_test_calls"
              ]
            },
            "type": "array",
            "title": "Excluded Usage Types"
          }
        },
        "type": "object",
        "required": [
          "period_start",
          "period_end",
          "base_price_minor"
        ],
        "title": "BillingPeriodEstimate",
        "description": "A live, read-only estimate for the subscription's actual billing period.\n\nStripe remains the source of truth for the final invoice. This value is calculated only\nfrom the current plan and usage ledger; it excludes tax, credits, discounts, proration,\nand any Stripe-side adjustment."
      },
      "Budget": {
        "properties": {
          "currency": {
            "type": "string",
            "title": "Currency"
          },
          "balance_minor": {
            "type": "integer",
            "title": "Balance Minor"
          },
          "spend_cap_minor": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Spend Cap Minor"
          },
          "spend_cap_period": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Spend Cap Period"
          },
          "low_balance_threshold_minor": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Low Balance Threshold Minor"
          },
          "period_spend_minor": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Period Spend Minor"
          },
          "unpriced_meters": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Unpriced Meters"
          }
        },
        "type": "object",
        "required": [
          "currency",
          "balance_minor",
          "spend_cap_minor",
          "spend_cap_period",
          "low_balance_threshold_minor",
          "period_spend_minor",
          "unpriced_meters"
        ],
        "title": "Budget",
        "description": "The tenant's budget as stored, plus what it has spent against it so far."
      },
      "BudgetRequest": {
        "properties": {
          "spend_cap_minor": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Spend Cap Minor"
          },
          "spend_cap_period": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(day|month)$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Spend Cap Period"
          },
          "low_balance_threshold_minor": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 0
              },
              {
                "type": "null"
              }
            ],
            "title": "Low Balance Threshold Minor"
          }
        },
        "type": "object",
        "title": "BudgetRequest",
        "description": "`PUT /v1/billing/budget`. Absent or `null` clears the field it names."
      },
      "BusinessAnswers": {
        "properties": {
          "legal_name": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1,
            "title": "Legal Name"
          },
          "website": {
            "type": "string",
            "maxLength": 2083,
            "minLength": 1,
            "format": "uri",
            "title": "Website"
          },
          "business_phone": {
            "type": "string",
            "maxLength": 20,
            "minLength": 7,
            "title": "Business Phone"
          },
          "signer_relationship": {
            "type": "string",
            "enum": [
              "owner",
              "officer",
              "employee_authorized",
              "employee_unauthorized",
              "agency",
              "other"
            ],
            "title": "Signer Relationship"
          },
          "signer_title": {
            "type": "string",
            "maxLength": 120,
            "minLength": 1,
            "title": "Signer Title"
          },
          "business_size": {
            "type": "string",
            "enum": [
              "1",
              "2-10",
              "11-50",
              "51-200",
              "201-1000",
              "1000+"
            ],
            "title": "Business Size"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "legal_name",
          "website",
          "business_phone",
          "signer_relationship",
          "signer_title",
          "business_size"
        ],
        "title": "BusinessAnswers",
        "description": "Step 2. Everything here is contact data as much as it is qualification data - it is\nwhat an abandoned-signup follow-up has to work with."
      },
      "CalendarAvailability": {
        "properties": {
          "connection_id": {
            "type": "string",
            "title": "Connection Id"
          },
          "timezone": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Timezone"
          },
          "slots": {
            "items": {
              "$ref": "#/components/schemas/CalendarSlot"
            },
            "type": "array",
            "title": "Slots"
          }
        },
        "type": "object",
        "required": [
          "connection_id"
        ],
        "title": "CalendarAvailability"
      },
      "CalendarAvailabilityRequest": {
        "properties": {
          "start_date": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "title": "Start Date"
          },
          "end_date": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "title": "End Date"
          },
          "duration_minutes": {
            "type": "integer",
            "maximum": 240,
            "minimum": 5,
            "title": "Duration Minutes"
          },
          "timezone": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 64,
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Timezone"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "start_date",
          "end_date",
          "duration_minutes"
        ],
        "title": "CalendarAvailabilityRequest",
        "description": "`check_calendar`'s backing request - the tool's argument schema, verbatim."
      },
      "CalendarEventCreateRequest": {
        "properties": {
          "call_id": {
            "type": "string",
            "title": "Call Id"
          },
          "contact_id": {
            "type": "string",
            "title": "Contact Id"
          },
          "start_time": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}(:\\d{2})?(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$",
            "title": "Start Time"
          },
          "duration_minutes": {
            "type": "integer",
            "maximum": 240,
            "minimum": 5,
            "title": "Duration Minutes"
          },
          "attendee_email": {
            "type": "string",
            "maxLength": 320,
            "pattern": "^[^@\\s]+@[^@\\s.]+\\.[^@\\s]+$",
            "title": "Attendee Email"
          },
          "attendee_name": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200,
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Attendee Name"
          },
          "notes": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 1000
              },
              {
                "type": "null"
              }
            ],
            "title": "Notes"
          },
          "contact_timezone": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 64,
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Contact Timezone"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "call_id",
          "contact_id",
          "start_time",
          "duration_minutes",
          "attendee_email"
        ],
        "title": "CalendarEventCreateRequest",
        "description": "`book_meeting`'s backing request: the tool arguments plus their call context.\n\n`call_id` and `contact_id` are supplied by the control-plane tool-execution path, never\nby the model; the remaining fields carry exactly the frozen tool schema's constraints."
      },
      "CalendarSlot": {
        "properties": {
          "starts_at": {
            "type": "string",
            "format": "date-time",
            "title": "Starts At"
          },
          "ends_at": {
            "type": "string",
            "format": "date-time",
            "title": "Ends At"
          }
        },
        "type": "object",
        "required": [
          "starts_at",
          "ends_at"
        ],
        "title": "CalendarSlot"
      },
      "Call": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "direction": {
            "$ref": "#/components/schemas/CallDirection"
          },
          "state": {
            "$ref": "#/components/schemas/CallState"
          },
          "campaign_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Campaign Id"
          },
          "contact_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Contact Id"
          },
          "contact_first_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Contact First Name"
          },
          "contact_last_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Contact Last Name"
          },
          "contact_company": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Contact Company"
          },
          "counterparty_e164": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Counterparty E164"
          },
          "dialed_e164": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Dialed E164"
          },
          "contact_attempt_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Contact Attempt Id"
          },
          "agent_version_id": {
            "type": "string",
            "title": "Agent Version Id"
          },
          "agent_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Agent Id"
          },
          "agent_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Agent Name"
          },
          "use_case": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Use Case"
          },
          "summary": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Summary"
          },
          "captured_fields": {
            "additionalProperties": true,
            "type": "object",
            "title": "Captured Fields"
          },
          "recorded_responses": {
            "items": {
              "$ref": "#/components/schemas/RecordedCallResponse"
            },
            "type": "array",
            "title": "Recorded Responses"
          },
          "recorded_response_count": {
            "type": "integer",
            "title": "Recorded Response Count",
            "default": 0
          },
          "started_at": {
            "type": "string",
            "format": "date-time",
            "title": "Started At"
          },
          "ended_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ended At"
          },
          "duration_ms": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Duration Ms"
          },
          "end_reason": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/CallEndReason"
              },
              {
                "type": "null"
              }
            ]
          },
          "disposition": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Disposition"
              },
              {
                "type": "null"
              }
            ]
          },
          "sub_code": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Sub Code"
          },
          "recording_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Recording Id"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "gpu_node_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Gpu Node Id"
          },
          "llm_provider_used": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Llm Provider Used"
          },
          "cost": {
            "additionalProperties": true,
            "type": "object",
            "title": "Cost"
          },
          "disposition_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Disposition Id"
          },
          "disposition_notes": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Disposition Notes"
          },
          "disposition_set_by": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "agent_llm",
                  "human_review"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Disposition Set By"
          },
          "structured_outcome": {
            "additionalProperties": true,
            "type": "object",
            "title": "Structured Outcome"
          },
          "conversation_actions": {
            "items": {
              "$ref": "#/components/schemas/ConversationAction"
            },
            "type": "array",
            "title": "Conversation Actions"
          },
          "qualification_reviews": {
            "additionalProperties": {
              "$ref": "#/components/schemas/QualificationReviewDetails"
            },
            "type": "object",
            "title": "Qualification Reviews"
          },
          "analysis": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/CallAnalysis"
              },
              {
                "type": "null"
              }
            ]
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "direction",
          "state",
          "agent_version_id",
          "started_at",
          "created_at",
          "updated_at"
        ],
        "title": "Call"
      },
      "CallAnalysis": {
        "properties": {
          "summary": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Summary"
          },
          "success_evaluation": {
            "$ref": "#/components/schemas/SuccessEvaluation"
          },
          "structured_data": {
            "additionalProperties": true,
            "type": "object",
            "title": "Structured Data"
          }
        },
        "type": "object",
        "required": [
          "success_evaluation"
        ],
        "title": "CallAnalysis",
        "description": "The customer-facing post-call analysis on the call detail (docs/04-api.md Step 8a)."
      },
      "CallBilling": {
        "properties": {
          "call_id": {
            "type": "string",
            "title": "Call Id"
          },
          "completed": {
            "type": "boolean",
            "title": "Completed"
          },
          "meters": {
            "items": {
              "$ref": "#/components/schemas/CallBillingMeter"
            },
            "type": "array",
            "title": "Meters"
          },
          "rating_status": {
            "type": "string",
            "enum": [
              "no_usage_recorded",
              "unrated",
              "partially_rated",
              "rated",
              "prepaid_settled"
            ],
            "title": "Rating Status"
          },
          "rated_usage_amount_minor": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Rated Usage Amount Minor"
          },
          "currency": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Currency"
          },
          "billing_period_start": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Billing Period Start"
          },
          "billing_period_end": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Billing Period End"
          },
          "projection_status": {
            "type": "string",
            "enum": [
              "not_available",
              "unpriced",
              "estimated"
            ],
            "title": "Projection Status"
          },
          "projected_marginal_usage_amount_minor": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Projected Marginal Usage Amount Minor"
          },
          "projection_unpriced_meters": {
            "items": {
              "type": "string",
              "enum": [
                "telephony_minutes",
                "stt_audio_seconds",
                "tts_characters",
                "llm_prompt_tokens",
                "llm_cached_prompt_tokens",
                "llm_completion_tokens",
                "gpu_seconds",
                "sms_segments",
                "lookup_requests"
              ]
            },
            "type": "array",
            "title": "Projection Unpriced Meters"
          },
          "prepaid_authorization_status": {
            "type": "string",
            "enum": [
              "not_applicable",
              "reserved",
              "captured",
              "released"
            ],
            "title": "Prepaid Authorization Status",
            "default": "not_applicable"
          },
          "prepaid_reserved_amount_minor": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Prepaid Reserved Amount Minor"
          },
          "prepaid_captured_amount_minor": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Prepaid Captured Amount Minor"
          },
          "live_projection": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/LiveCallBillingProjection"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "required": [
          "call_id",
          "completed",
          "rating_status",
          "projection_status"
        ],
        "title": "CallBilling",
        "description": "Ledger-backed usage and a deliberately limited estimate for one call.\n\n``rated_usage_amount_minor`` is never an inferred cost: it stays null until every\nlinked ledger event has a final Stripe allocation.  The projection is instead the\n*current-period marginal* plan/ledger estimate - the difference between the current\nbilling-period estimate with this call's rows and without them.  It excludes the base\nsubscription fee, tax, credits, discounts, proration, and Stripe-side adjustments; the\nStripe invoice remains authoritative."
      },
      "CallBillingMeter": {
        "properties": {
          "meter": {
            "type": "string",
            "enum": [
              "telephony_minutes",
              "stt_audio_seconds",
              "tts_characters",
              "llm_prompt_tokens",
              "llm_cached_prompt_tokens",
              "llm_completion_tokens",
              "gpu_seconds",
              "sms_segments",
              "lookup_requests"
            ],
            "title": "Meter"
          },
          "quantity": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Quantity"
          },
          "event_count": {
            "type": "integer",
            "title": "Event Count"
          },
          "rated_amount_minor": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Rated Amount Minor"
          },
          "unrated_event_count": {
            "type": "integer",
            "title": "Unrated Event Count"
          },
          "prepaid_event_count": {
            "type": "integer",
            "title": "Prepaid Event Count",
            "default": 0
          }
        },
        "type": "object",
        "required": [
          "meter",
          "quantity",
          "event_count",
          "unrated_event_count"
        ],
        "title": "CallBillingMeter",
        "description": "The exact ledger quantity currently attributable to one finished call.\n\nThe list is intentionally sparse.  An absent ``telephony_minutes`` row does not mean\nthe carrier charged zero: carrier usage arrives through an asynchronous status callback\nand can appear after the call teardown.  ``rated_amount_minor`` is non-null only once\nevery event for this meter has a final Stripe per-call allocation."
      },
      "CallDirection": {
        "type": "string",
        "enum": [
          "outbound",
          "inbound",
          "browser"
        ],
        "title": "CallDirection"
      },
      "CallEndReason": {
        "type": "string",
        "enum": [
          "agent_completed",
          "contact_hangup",
          "opt_out",
          "error",
          "max_duration"
        ],
        "title": "CallEndReason"
      },
      "CallQuestion": {
        "properties": {
          "id": {
            "type": "string",
            "maxLength": 64,
            "minLength": 1,
            "pattern": "^[A-Za-z0-9_.:\\-]+$",
            "title": "Id"
          },
          "prompt": {
            "type": "string",
            "maxLength": 500,
            "minLength": 1,
            "title": "Prompt"
          },
          "scoring": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ScoringBlock"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "prompt"
        ],
        "title": "CallQuestion",
        "description": "One per-call question - the strict profile of a version objective (docs/04 §3).\n\nUnlike `Objective` (open - goal graphs are legal on an agent), a per-call question\nis closed and fully required: it exists to be asked and recorded on THIS call, so\nan id and question text are not optional and unknown keys are typos, not shapes."
      },
      "CallState": {
        "type": "string",
        "enum": [
          "initiated",
          "ringing",
          "in_progress",
          "completed",
          "no_answer",
          "busy",
          "failed"
        ],
        "title": "CallState"
      },
      "CallSummary": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "direction": {
            "$ref": "#/components/schemas/CallDirection"
          },
          "state": {
            "$ref": "#/components/schemas/CallState"
          },
          "campaign_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Campaign Id"
          },
          "contact_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Contact Id"
          },
          "contact_first_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Contact First Name"
          },
          "contact_last_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Contact Last Name"
          },
          "contact_company": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Contact Company"
          },
          "counterparty_e164": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Counterparty E164"
          },
          "dialed_e164": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Dialed E164"
          },
          "contact_attempt_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Contact Attempt Id"
          },
          "agent_version_id": {
            "type": "string",
            "title": "Agent Version Id"
          },
          "agent_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Agent Id"
          },
          "agent_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Agent Name"
          },
          "use_case": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Use Case"
          },
          "summary": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Summary"
          },
          "captured_fields": {
            "additionalProperties": true,
            "type": "object",
            "title": "Captured Fields"
          },
          "recorded_responses": {
            "items": {
              "$ref": "#/components/schemas/RecordedCallResponse"
            },
            "type": "array",
            "title": "Recorded Responses"
          },
          "recorded_response_count": {
            "type": "integer",
            "title": "Recorded Response Count",
            "default": 0
          },
          "started_at": {
            "type": "string",
            "format": "date-time",
            "title": "Started At"
          },
          "ended_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ended At"
          },
          "duration_ms": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Duration Ms"
          },
          "end_reason": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/CallEndReason"
              },
              {
                "type": "null"
              }
            ]
          },
          "disposition": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Disposition"
              },
              {
                "type": "null"
              }
            ]
          },
          "sub_code": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Sub Code"
          },
          "recording_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Recording Id"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "direction",
          "state",
          "agent_version_id",
          "started_at",
          "created_at"
        ],
        "title": "CallSummary",
        "description": "A call as a list endpoint returns it, with its current disposition flattened on."
      },
      "CallTranscript": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "call_id": {
            "type": "string",
            "title": "Call Id"
          },
          "full_text": {
            "type": "string",
            "title": "Full Text"
          },
          "summary": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Summary"
          },
          "turns": {
            "items": {
              "$ref": "#/components/schemas/CallTurn"
            },
            "type": "array",
            "title": "Turns"
          },
          "turns_truncated": {
            "type": "boolean",
            "title": "Turns Truncated",
            "default": false
          },
          "extracted_entities": {
            "additionalProperties": true,
            "type": "object",
            "title": "Extracted Entities"
          },
          "language": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Language"
          },
          "redaction_status": {
            "type": "string",
            "enum": [
              "raw",
              "pii_redacted"
            ],
            "title": "Redaction Status"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "call_id",
          "full_text",
          "redaction_status",
          "created_at",
          "updated_at"
        ],
        "title": "CallTranscript",
        "description": "The materialized read model over a call's turns."
      },
      "CallTurn": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "seq": {
            "type": "integer",
            "title": "Seq"
          },
          "speaker": {
            "type": "string",
            "enum": [
              "agent",
              "contact"
            ],
            "title": "Speaker"
          },
          "text": {
            "type": "string",
            "title": "Text"
          },
          "started_at_ms": {
            "type": "integer",
            "title": "Started At Ms"
          },
          "ended_at_ms": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ended At Ms"
          },
          "interrupted": {
            "type": "boolean",
            "title": "Interrupted",
            "default": false
          },
          "revision": {
            "type": "integer",
            "title": "Revision",
            "default": 0
          },
          "llm_ttft_ms": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Llm Ttft Ms"
          },
          "voice_to_voice_ms": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Voice To Voice Ms"
          },
          "tool_calls": {
            "items": {},
            "type": "array",
            "title": "Tool Calls"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "seq",
          "speaker",
          "text",
          "started_at_ms",
          "created_at"
        ],
        "title": "CallTurn",
        "description": "One utterance. Offsets are call-relative milliseconds, never wall clock."
      },
      "CallerRequestEventOut": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "action": {
            "type": "string",
            "enum": [
              "opened",
              "acknowledged",
              "resolved",
              "assigned"
            ],
            "title": "Action"
          },
          "actor_ref": {
            "type": "string",
            "title": "Actor Ref"
          },
          "note": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Note"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "action",
          "actor_ref",
          "created_at"
        ],
        "title": "CallerRequestEventOut",
        "description": "One append-only transition on a request's trail."
      },
      "CallerRequestResource": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "kind": {
            "type": "string",
            "enum": [
              "message",
              "support_ticket"
            ],
            "title": "Kind"
          },
          "state": {
            "type": "string",
            "enum": [
              "open",
              "acknowledged",
              "resolved"
            ],
            "title": "State"
          },
          "severity": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "critical",
                  "high",
                  "normal",
                  "low"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Severity"
          },
          "contact_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Contact Id"
          },
          "call_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Call Id"
          },
          "agent_version_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Agent Version Id"
          },
          "phone_number_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Phone Number Id"
          },
          "caller_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Caller Name"
          },
          "subject": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Subject"
          },
          "body": {
            "type": "string",
            "title": "Body"
          },
          "assignee_user_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Assignee User Id"
          },
          "acknowledged_by_ref": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Acknowledged By Ref"
          },
          "acknowledged_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Acknowledged At"
          },
          "resolved_by_ref": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Resolved By Ref"
          },
          "resolved_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Resolved At"
          },
          "version": {
            "type": "integer",
            "title": "Version"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
          },
          "events": {
            "items": {
              "$ref": "#/components/schemas/CallerRequestEventOut"
            },
            "type": "array",
            "title": "Events"
          }
        },
        "type": "object",
        "required": [
          "id",
          "kind",
          "state",
          "body",
          "version",
          "created_at",
          "updated_at"
        ],
        "title": "CallerRequestResource",
        "description": "The single-request read, with its full event trail embedded oldest-first."
      },
      "CallerRequestSummary": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "kind": {
            "type": "string",
            "enum": [
              "message",
              "support_ticket"
            ],
            "title": "Kind"
          },
          "state": {
            "type": "string",
            "enum": [
              "open",
              "acknowledged",
              "resolved"
            ],
            "title": "State"
          },
          "severity": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "critical",
                  "high",
                  "normal",
                  "low"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Severity"
          },
          "contact_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Contact Id"
          },
          "call_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Call Id"
          },
          "agent_version_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Agent Version Id"
          },
          "phone_number_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Phone Number Id"
          },
          "caller_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Caller Name"
          },
          "subject": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Subject"
          },
          "body": {
            "type": "string",
            "title": "Body"
          },
          "assignee_user_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Assignee User Id"
          },
          "acknowledged_by_ref": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Acknowledged By Ref"
          },
          "acknowledged_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Acknowledged At"
          },
          "resolved_by_ref": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Resolved By Ref"
          },
          "resolved_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Resolved At"
          },
          "version": {
            "type": "integer",
            "title": "Version"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "kind",
          "state",
          "body",
          "version",
          "created_at",
          "updated_at"
        ],
        "title": "CallerRequestSummary",
        "description": "One caller request as the list endpoint renders it."
      },
      "CallerRequestUpdateRequest": {
        "properties": {
          "version": {
            "type": "integer",
            "minimum": 1,
            "title": "Version"
          },
          "state": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "acknowledged",
                  "resolved"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "State"
          },
          "assignee_user_id": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128,
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Assignee User Id"
          },
          "note": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 1000,
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Note"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "version"
        ],
        "title": "CallerRequestUpdateRequest",
        "description": "`PATCH /v1/caller-requests/{id}` - acknowledge, resolve, or (re)assign.\n\n``version`` is mandatory: the caller names the revision they read, and a mismatch is a\n409 rather than a silent last-write-wins. ``state`` may only move forward -\nopen → acknowledged → resolved, or open → resolved directly; resolved is terminal (no\nreopen in v1, ADR-0037 records the deferral). ``assignee_user_id`` uses PATCH\npresence semantics: absent means no assignment edit, an explicit ``null`` clears it."
      },
      "CallingWindow": {
        "properties": {
          "start": {
            "type": "string",
            "pattern": "^([01]\\d|2[0-3]):[0-5]\\d$",
            "title": "Start"
          },
          "end": {
            "type": "string",
            "pattern": "^([01]\\d|2[0-3]):[0-5]\\d$",
            "title": "End"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "start",
          "end"
        ],
        "title": "CallingWindow",
        "description": "One local-time window on one weekday."
      },
      "Campaign": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "status": {
            "$ref": "#/components/schemas/CampaignStatus"
          },
          "agent_definition_id": {
            "type": "string",
            "title": "Agent Definition Id"
          },
          "agent_version_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Agent Version Id"
          },
          "target": {
            "$ref": "#/components/schemas/CampaignTarget"
          },
          "number_pool_id": {
            "type": "string",
            "title": "Number Pool Id"
          },
          "telephony_account_id": {
            "type": "string",
            "title": "Telephony Account Id"
          },
          "compliance_profile_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Compliance Profile Id"
          },
          "scrub_run_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Scrub Run Id"
          },
          "max_attempts_per_contact": {
            "type": "integer",
            "title": "Max Attempts Per Contact"
          },
          "concurrency_cap": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Concurrency Cap"
          },
          "contacts_total": {
            "type": "integer",
            "title": "Contacts Total"
          },
          "dialed": {
            "type": "integer",
            "title": "Dialed"
          },
          "connected": {
            "type": "integer",
            "title": "Connected"
          },
          "completed_goal": {
            "type": "integer",
            "title": "Completed Goal"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
          },
          "retry_policy": {
            "$ref": "#/components/schemas/RetryPolicy"
          },
          "voicemail_drop": {
            "$ref": "#/components/schemas/VoicemailDropPolicy"
          },
          "goal": {
            "additionalProperties": true,
            "type": "object",
            "title": "Goal"
          },
          "schedule": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/CampaignSchedule"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "required": [
          "id",
          "name",
          "status",
          "agent_definition_id",
          "target",
          "number_pool_id",
          "telephony_account_id",
          "max_attempts_per_contact",
          "contacts_total",
          "dialed",
          "connected",
          "completed_goal",
          "created_at",
          "updated_at",
          "retry_policy"
        ],
        "title": "Campaign",
        "description": "One campaign in full, schedule included."
      },
      "CampaignActivity": {
        "properties": {
          "campaign_id": {
            "type": "string",
            "title": "Campaign Id"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "status": {
            "$ref": "#/components/schemas/CampaignStatus"
          },
          "workflows": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Workflows"
          },
          "calls_started": {
            "type": "integer",
            "minimum": 0,
            "title": "Calls Started"
          },
          "last_call_at": {
            "type": "string",
            "format": "date-time",
            "title": "Last Call At"
          }
        },
        "type": "object",
        "required": [
          "campaign_id",
          "name",
          "status",
          "workflows",
          "calls_started",
          "last_call_at"
        ],
        "title": "CampaignActivity"
      },
      "CampaignCreateRequest": {
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1,
            "title": "Name"
          },
          "agent_definition_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Agent Definition Id"
          },
          "agent_version_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Agent Version Id"
          },
          "target": {
            "$ref": "#/components/schemas/CampaignTarget"
          },
          "number_pool_id": {
            "type": "string",
            "title": "Number Pool Id"
          },
          "telephony_account_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Telephony Account Id"
          },
          "compliance_profile_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Compliance Profile Id"
          },
          "scrub_run_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Scrub Run Id"
          },
          "schedule": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/CampaignSchedule"
              },
              {
                "type": "null"
              }
            ]
          },
          "max_attempts_per_contact": {
            "type": "integer",
            "maximum": 10,
            "minimum": 1,
            "title": "Max Attempts Per Contact",
            "default": 3
          },
          "retry_policy": {
            "$ref": "#/components/schemas/RetryPolicy"
          },
          "voicemail_drop": {
            "$ref": "#/components/schemas/VoicemailDropPolicy"
          },
          "concurrency_cap": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Concurrency Cap"
          },
          "goal": {
            "additionalProperties": true,
            "type": "object",
            "title": "Goal"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "name",
          "target",
          "number_pool_id"
        ],
        "title": "CampaignCreateRequest",
        "description": "Create a campaign in `draft`. The agent version is pinned at launch, not here."
      },
      "CampaignLaunchResponse": {
        "properties": {
          "status": {
            "$ref": "#/components/schemas/CampaignStatus"
          },
          "dialable_contacts": {
            "type": "integer",
            "title": "Dialable Contacts"
          }
        },
        "type": "object",
        "required": [
          "status",
          "dialable_contacts"
        ],
        "title": "CampaignLaunchResponse",
        "description": "What a launch accepted, and how many contacts it may dial."
      },
      "CampaignOutcomeSummary": {
        "properties": {
          "contact_id": {
            "type": "string",
            "title": "Contact Id"
          },
          "contact_phone": {
            "type": "string",
            "title": "Contact Phone"
          },
          "attempts": {
            "type": "integer",
            "title": "Attempts"
          },
          "latest_attempt_id": {
            "type": "string",
            "title": "Latest Attempt Id"
          },
          "latest_attempt_state": {
            "$ref": "#/components/schemas/AttemptState"
          },
          "disposition": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Disposition"
              },
              {
                "type": "null"
              }
            ]
          },
          "sub_code": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Sub Code"
          },
          "call_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Call Id"
          },
          "outcome": {
            "anyOf": [
              {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ShiftConfirmationOutcome"
                  },
                  {
                    "$ref": "#/components/schemas/AppointmentOutcome"
                  },
                  {
                    "$ref": "#/components/schemas/SurveyResponseOutcome"
                  }
                ],
                "discriminator": {
                  "propertyName": "kind",
                  "mapping": {
                    "appointment": "#/components/schemas/AppointmentOutcome",
                    "shift_confirmation": "#/components/schemas/ShiftConfirmationOutcome",
                    "survey_response": "#/components/schemas/SurveyResponseOutcome"
                  }
                }
              },
              {
                "type": "null"
              }
            ],
            "title": "Outcome"
          },
          "last_activity_at": {
            "type": "string",
            "format": "date-time",
            "title": "Last Activity At"
          }
        },
        "type": "object",
        "required": [
          "contact_id",
          "contact_phone",
          "attempts",
          "latest_attempt_id",
          "latest_attempt_state",
          "last_activity_at"
        ],
        "title": "CampaignOutcomeSummary",
        "description": "One row per targeted contact: the latest attempt plus its structured outcome.\n\n`outcome` is null wherever no structured outcome was recorded - no answer, machine,\nopt-out, or a conversation that ended short of the objective."
      },
      "CampaignOverview": {
        "properties": {
          "start": {
            "type": "string",
            "format": "date-time",
            "title": "Start"
          },
          "end": {
            "type": "string",
            "format": "date-time",
            "title": "End"
          },
          "as_of": {
            "type": "string",
            "format": "date-time",
            "title": "As Of"
          },
          "total_campaigns": {
            "type": "integer",
            "minimum": 0,
            "title": "Total Campaigns"
          },
          "status_counts": {
            "items": {
              "$ref": "#/components/schemas/CampaignStatusCount"
            },
            "type": "array",
            "title": "Status Counts"
          },
          "calls_started": {
            "type": "integer",
            "minimum": 0,
            "title": "Calls Started"
          },
          "campaigns_with_calls": {
            "type": "integer",
            "minimum": 0,
            "title": "Campaigns With Calls"
          },
          "most_active": {
            "items": {
              "$ref": "#/components/schemas/CampaignActivity"
            },
            "type": "array",
            "title": "Most Active"
          },
          "most_active_limit": {
            "type": "integer",
            "minimum": 1,
            "title": "Most Active Limit"
          }
        },
        "type": "object",
        "required": [
          "start",
          "end",
          "as_of",
          "total_campaigns",
          "status_counts",
          "calls_started",
          "campaigns_with_calls",
          "most_active",
          "most_active_limit"
        ],
        "title": "CampaignOverview",
        "description": "Current statuses plus outbound campaign call records started in [start, end)."
      },
      "CampaignSchedule": {
        "properties": {
          "calling_windows": {
            "additionalProperties": {
              "items": {
                "$ref": "#/components/schemas/CallingWindow"
              },
              "type": "array"
            },
            "propertyNames": {
              "enum": [
                "mon",
                "tue",
                "wed",
                "thu",
                "fri",
                "sat",
                "sun"
              ]
            },
            "type": "object",
            "title": "Calling Windows"
          },
          "start_date": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Start Date"
          },
          "end_date": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "End Date"
          },
          "paused_dates": {
            "items": {
              "type": "string",
              "format": "date"
            },
            "type": "array",
            "title": "Paused Dates"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "title": "CampaignSchedule",
        "description": "Per-weekday calling windows plus the campaign's calendar bounds.\n\nDates, not instants: they bound the campaign in the callee's local day, and the policy\nlayer intersects the windows with jurisdictional quiet hours - the stricter wins."
      },
      "CampaignStats": {
        "properties": {
          "dials": {
            "type": "integer",
            "title": "Dials"
          },
          "connects": {
            "type": "integer",
            "title": "Connects"
          },
          "connect_rate": {
            "type": "number",
            "title": "Connect Rate"
          },
          "live_calls_now": {
            "type": "integer",
            "title": "Live Calls Now"
          },
          "goal_completions": {
            "type": "integer",
            "title": "Goal Completions"
          },
          "dispositions": {
            "additionalProperties": {
              "type": "integer"
            },
            "type": "object",
            "title": "Dispositions"
          },
          "sub_codes": {
            "additionalProperties": {
              "type": "integer"
            },
            "type": "object",
            "title": "Sub Codes"
          },
          "avg_call_duration_ms": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Avg Call Duration Ms"
          },
          "spend_to_date": {
            "$ref": "#/components/schemas/Money"
          }
        },
        "type": "object",
        "required": [
          "dials",
          "connects",
          "connect_rate",
          "live_calls_now",
          "goal_completions",
          "spend_to_date"
        ],
        "title": "CampaignStats",
        "description": "The 5-second monitor payload (docs/04-api.md §2 step 7).\n\nCounted from the attempt ledger and the billing ledger rather than from the campaign's\ndenormalized counters, so a stat is never stale relative to the rows behind it."
      },
      "CampaignStatus": {
        "type": "string",
        "enum": [
          "draft",
          "scrubbing",
          "ready",
          "running",
          "paused",
          "completed",
          "cancelled"
        ],
        "title": "CampaignStatus"
      },
      "CampaignStatusCount": {
        "properties": {
          "status": {
            "$ref": "#/components/schemas/CampaignStatus"
          },
          "count": {
            "type": "integer",
            "minimum": 0,
            "title": "Count"
          }
        },
        "type": "object",
        "required": [
          "status",
          "count"
        ],
        "title": "CampaignStatusCount"
      },
      "CampaignSummary": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "status": {
            "$ref": "#/components/schemas/CampaignStatus"
          },
          "agent_definition_id": {
            "type": "string",
            "title": "Agent Definition Id"
          },
          "agent_version_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Agent Version Id"
          },
          "target": {
            "$ref": "#/components/schemas/CampaignTarget"
          },
          "number_pool_id": {
            "type": "string",
            "title": "Number Pool Id"
          },
          "telephony_account_id": {
            "type": "string",
            "title": "Telephony Account Id"
          },
          "compliance_profile_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Compliance Profile Id"
          },
          "scrub_run_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Scrub Run Id"
          },
          "max_attempts_per_contact": {
            "type": "integer",
            "title": "Max Attempts Per Contact"
          },
          "concurrency_cap": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Concurrency Cap"
          },
          "contacts_total": {
            "type": "integer",
            "title": "Contacts Total"
          },
          "dialed": {
            "type": "integer",
            "title": "Dialed"
          },
          "connected": {
            "type": "integer",
            "title": "Connected"
          },
          "completed_goal": {
            "type": "integer",
            "title": "Completed Goal"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "name",
          "status",
          "agent_definition_id",
          "target",
          "number_pool_id",
          "telephony_account_id",
          "max_attempts_per_contact",
          "contacts_total",
          "dialed",
          "connected",
          "completed_goal",
          "created_at",
          "updated_at"
        ],
        "title": "CampaignSummary",
        "description": "A campaign as a list endpoint returns it, counters included."
      },
      "CampaignTarget": {
        "properties": {
          "contact_list_id": {
            "type": "string",
            "title": "Contact List Id"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "contact_list_id"
        ],
        "title": "CampaignTarget",
        "description": "v1 campaigns target a contact list; a `segment_id` target joins at P2."
      },
      "CampaignUpdateRequest": {
        "properties": {
          "name": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200,
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "agent_definition_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Agent Definition Id"
          },
          "agent_version_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Agent Version Id"
          },
          "target": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/CampaignTarget"
              },
              {
                "type": "null"
              }
            ]
          },
          "number_pool_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Number Pool Id"
          },
          "telephony_account_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Telephony Account Id"
          },
          "compliance_profile_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Compliance Profile Id"
          },
          "scrub_run_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Scrub Run Id"
          },
          "schedule": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/CampaignSchedule"
              },
              {
                "type": "null"
              }
            ]
          },
          "max_attempts_per_contact": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 10,
                "minimum": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Max Attempts Per Contact"
          },
          "retry_policy": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/RetryPolicy"
              },
              {
                "type": "null"
              }
            ]
          },
          "voicemail_drop": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/VoicemailDropPolicy"
              },
              {
                "type": "null"
              }
            ]
          },
          "concurrency_cap": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Concurrency Cap"
          },
          "goal": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Goal"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "title": "CampaignUpdateRequest",
        "description": "PATCH: only the fields present are written."
      },
      "ComplianceAnswers": {
        "properties": {
          "contact_source": {
            "type": "string",
            "enum": [
              "own_signup",
              "existing_customers",
              "own_employees",
              "own_crm",
              "purchased",
              "rented",
              "scraped",
              "appended",
              "unsure"
            ],
            "title": "Contact Source"
          },
          "call_purpose": {
            "type": "string",
            "enum": [
              "csat_survey",
              "appointment_reminder",
              "order_transactional",
              "staffing_shifts",
              "internal_team",
              "sales_outreach",
              "other"
            ],
            "title": "Call Purpose"
          },
          "consent_basis": {
            "type": "string",
            "enum": [
              "pewc",
              "pec",
              "ebr",
              "transactional",
              "none"
            ],
            "title": "Consent Basis"
          },
          "calls_mobile_numbers": {
            "type": "boolean",
            "title": "Calls Mobile Numbers"
          },
          "target_states": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "maxItems": 51,
            "minItems": 1,
            "title": "Target States"
          },
          "intends_voicemail_drop": {
            "type": "boolean",
            "title": "Intends Voicemail Drop"
          },
          "accepts_ai_disclosure": {
            "type": "boolean",
            "title": "Accepts Ai Disclosure"
          },
          "accepts_own_carrier": {
            "type": "boolean",
            "title": "Accepts Own Carrier"
          },
          "accepts_cold_outreach_waiver": {
            "type": "boolean",
            "title": "Accepts Cold Outreach Waiver"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "contact_source",
          "call_purpose",
          "consent_basis",
          "calls_mobile_numbers",
          "target_states",
          "intends_voicemail_drop",
          "accepts_ai_disclosure",
          "accepts_own_carrier",
          "accepts_cold_outreach_waiver"
        ],
        "title": "ComplianceAnswers",
        "description": "Step 3. Mirrors `vocapable_compliance.screening.ScreeningAnswers` field for field -\nevery question is required, because a screen with a hole in it is not a screen."
      },
      "ConsentAttestation": {
        "properties": {
          "signer_name": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1,
            "title": "Signer Name"
          },
          "signer_title": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1,
            "title": "Signer Title"
          },
          "affirmation": {
            "type": "string",
            "minLength": 1,
            "title": "Affirmation"
          },
          "consent_basis": {
            "$ref": "#/components/schemas/ConsentBasis"
          },
          "signer_ip": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Signer Ip"
          },
          "signed_at": {
            "type": "string",
            "format": "date-time",
            "title": "Signed At"
          }
        },
        "type": "object",
        "required": [
          "signer_name",
          "signer_title",
          "affirmation",
          "consent_basis",
          "signed_at"
        ],
        "title": "ConsentAttestation",
        "description": "The stored attestation. `signer_ip` and `signed_at` are stamped by the API - a\nclient-supplied timestamp is a claim, not evidence."
      },
      "ConsentAttestationInput": {
        "properties": {
          "signer_name": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1,
            "title": "Signer Name"
          },
          "signer_title": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1,
            "title": "Signer Title"
          },
          "affirmation": {
            "type": "string",
            "minLength": 1,
            "title": "Affirmation"
          },
          "consent_basis": {
            "$ref": "#/components/schemas/ConsentBasis"
          }
        },
        "type": "object",
        "required": [
          "signer_name",
          "signer_title",
          "affirmation",
          "consent_basis"
        ],
        "title": "ConsentAttestationInput",
        "description": "What the tenant affirms about the list they are uploading.\n\nRequired on every import: the affirmation is the evidence linking each later dial to a\nnamed human who declared the consent basis (docs/03-domain-model.md §Audience)."
      },
      "ConsentBasis": {
        "type": "string",
        "enum": [
          "pewc",
          "pec",
          "ebr",
          "transactional"
        ],
        "title": "ConsentBasis",
        "description": "CANON fact 18 - the four consent classes (docs/07-compliance.md §consent)."
      },
      "ConsentCreateRequest": {
        "properties": {
          "contact_id": {
            "type": "string",
            "title": "Contact Id"
          },
          "consent_class": {
            "$ref": "#/components/schemas/ConsentBasis"
          },
          "source": {
            "type": "string",
            "enum": [
              "web_form",
              "ivr",
              "recorded_call",
              "paper",
              "import_attestation"
            ],
            "title": "Source"
          },
          "captured_at": {
            "type": "string",
            "format": "date-time",
            "title": "Captured At"
          },
          "scope": {
            "additionalProperties": true,
            "type": "object",
            "title": "Scope"
          },
          "proof": {
            "additionalProperties": true,
            "type": "object",
            "title": "Proof"
          },
          "disclosure_text_shown": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Disclosure Text Shown"
          },
          "expires_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Expires At"
          },
          "revokes_consent_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Revokes Consent Id"
          }
        },
        "type": "object",
        "required": [
          "contact_id",
          "consent_class",
          "source",
          "captured_at"
        ],
        "title": "ConsentCreateRequest",
        "description": "Append a consent record, or - with `revokes_consent_id` - a revocation of one."
      },
      "ConsentRecordSummary": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "contact_id": {
            "type": "string",
            "title": "Contact Id"
          },
          "consent_class": {
            "$ref": "#/components/schemas/ConsentBasis"
          },
          "scope": {
            "additionalProperties": true,
            "type": "object",
            "title": "Scope"
          },
          "source": {
            "type": "string",
            "enum": [
              "web_form",
              "ivr",
              "recorded_call",
              "paper",
              "import_attestation",
              "api_attestation"
            ],
            "title": "Source"
          },
          "proof": {
            "additionalProperties": true,
            "type": "object",
            "title": "Proof"
          },
          "disclosure_text_shown": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Disclosure Text Shown"
          },
          "captured_at": {
            "type": "string",
            "format": "date-time",
            "title": "Captured At"
          },
          "expires_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Expires At"
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "expired",
              "revoked",
              "suspect"
            ],
            "title": "Status"
          },
          "revokes_consent_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Revokes Consent Id"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "contact_id",
          "consent_class",
          "source",
          "captured_at",
          "status",
          "created_at"
        ],
        "title": "ConsentRecordSummary"
      },
      "Contact": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "phone_e164": {
            "type": "string",
            "title": "Phone E164"
          },
          "first_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "First Name"
          },
          "last_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Name"
          },
          "company": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Company"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Title"
          },
          "email": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Email"
          },
          "timezone": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Timezone"
          },
          "best_consent_class": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ConsentBasis"
              },
              {
                "type": "null"
              }
            ]
          },
          "do_not_call": {
            "type": "boolean",
            "title": "Do Not Call",
            "default": false
          },
          "lead_status": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/LeadStatus"
              },
              {
                "type": "null"
              }
            ]
          },
          "owner_user_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Owner User Id"
          },
          "tags": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Tags"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
          },
          "jurisdictions": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Jurisdictions"
          },
          "attributes": {
            "additionalProperties": true,
            "type": "object",
            "title": "Attributes"
          }
        },
        "type": "object",
        "required": [
          "id",
          "phone_e164",
          "created_at",
          "updated_at"
        ],
        "title": "Contact"
      },
      "ContactAttemptSummary": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "contact_id": {
            "type": "string",
            "title": "Contact Id"
          },
          "contact_phone": {
            "type": "string",
            "title": "Contact Phone"
          },
          "attempt_number": {
            "type": "integer",
            "title": "Attempt Number"
          },
          "state": {
            "$ref": "#/components/schemas/AttemptState"
          },
          "disposition": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Disposition"
              },
              {
                "type": "null"
              }
            ]
          },
          "sub_code": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Sub Code"
          },
          "failure_reason": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/FailureReason"
              },
              {
                "type": "null"
              }
            ]
          },
          "call_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Call Id"
          },
          "scheduled_for": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Scheduled For"
          },
          "dialed_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Dialed At"
          },
          "ended_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ended At"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
          },
          "campaign_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Campaign Id"
          },
          "contact_first_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Contact First Name"
          },
          "contact_last_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Contact Last Name"
          },
          "origin_kind": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Origin Kind"
          },
          "callback_reason": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Callback Reason"
          }
        },
        "type": "object",
        "required": [
          "id",
          "contact_id",
          "contact_phone",
          "attempt_number",
          "state",
          "updated_at"
        ],
        "title": "ContactAttemptSummary",
        "description": "One attempt on the tenant-wide feed (`GET /v1/contact-attempts`).\n\nThe follow-up board. `scheduled_for` is the attempt's `next_eligible_at` - the\nearliest instant every window layer allows, which is what makes \"who is due today\" a\nserver-side range filter rather than a client-side scan.\n\nIt states scheduling facts and nothing more. An attempt appearing here is not a\npromise that the dial will be placed: every attempt is re-gated at dial time, and one\nlisted as due can still be refused then (docs/07-compliance.md)."
      },
      "ContactBulkRequest": {
        "properties": {
          "contact_ids": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "maxItems": 1000,
            "minItems": 1,
            "title": "Contact Ids"
          },
          "action": {
            "type": "string",
            "enum": [
              "add_to_list",
              "remove_from_list",
              "set_lead_status",
              "suppress",
              "delete"
            ],
            "title": "Action"
          },
          "contact_list_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Contact List Id"
          },
          "lead_status": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/LeadStatus"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "required": [
          "contact_ids",
          "action"
        ],
        "title": "ContactBulkRequest",
        "description": "One action over up to 1000 contacts.\n\nThe same cap as `POST /contact-lists/{id}/members`, for the same reason: the whole\naction runs in one request and one transaction."
      },
      "ContactBulkResponse": {
        "properties": {
          "action": {
            "type": "string",
            "enum": [
              "add_to_list",
              "remove_from_list",
              "set_lead_status",
              "suppress",
              "delete"
            ],
            "title": "Action"
          },
          "requested": {
            "type": "integer",
            "title": "Requested"
          },
          "matched": {
            "type": "integer",
            "title": "Matched"
          },
          "changed": {
            "type": "integer",
            "title": "Changed"
          },
          "unknown_contact_ids": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Unknown Contact Ids"
          }
        },
        "type": "object",
        "required": [
          "action",
          "requested",
          "matched",
          "changed"
        ],
        "title": "ContactBulkResponse",
        "description": "What the action did, per outcome rather than per id.\n\n`unknown_contact_ids` is enumerated because a caller pasting stale ids has to find\nout; `matched` and `changed` differ whenever an action was already applied - bulk\nwrites are idempotent, so re-running one reports `changed = 0` rather than failing."
      },
      "ContactCorrectionReview": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "action_id": {
            "type": "string",
            "title": "Action Id"
          },
          "contact_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Contact Id"
          },
          "field": {
            "type": "string",
            "enum": [
              "first_name",
              "last_name",
              "company",
              "title",
              "email"
            ],
            "title": "Field"
          },
          "decision": {
            "type": "string",
            "enum": [
              "applied",
              "rejected"
            ],
            "title": "Decision"
          },
          "reason": {
            "type": "string",
            "title": "Reason"
          },
          "reviewer_ref": {
            "type": "string",
            "title": "Reviewer Ref"
          },
          "before_value": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Before Value"
          },
          "after_value": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "After Value"
          },
          "proposed_value": {
            "type": "string",
            "title": "Proposed Value"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "action_id",
          "contact_id",
          "field",
          "decision",
          "reason",
          "reviewer_ref",
          "before_value",
          "after_value",
          "proposed_value",
          "created_at"
        ],
        "title": "ContactCorrectionReview"
      },
      "ContactCorrectionReviewRequest": {
        "properties": {
          "decision": {
            "type": "string",
            "enum": [
              "apply",
              "reject"
            ],
            "title": "Decision"
          },
          "reason": {
            "type": "string",
            "maxLength": 2000,
            "minLength": 1,
            "title": "Reason"
          },
          "expected_contact_updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Expected Contact Updated At"
          },
          "expected_value": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Expected Value"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "decision",
          "reason",
          "expected_contact_updated_at",
          "expected_value"
        ],
        "title": "ContactCorrectionReviewRequest"
      },
      "ContactCorrectionReviewState": {
        "properties": {
          "can_decide": {
            "type": "boolean",
            "title": "Can Decide",
            "default": false
          },
          "status": {
            "type": "string",
            "enum": [
              "unreviewed",
              "reviewed",
              "superseded",
              "contact_changed",
              "unavailable"
            ],
            "title": "Status"
          },
          "current_action_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Current Action Id"
          },
          "current_value": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Current Value"
          },
          "contact_updated_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Contact Updated At"
          },
          "review": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ContactCorrectionReview"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "required": [
          "status"
        ],
        "title": "ContactCorrectionReviewState"
      },
      "ContactCreateRequest": {
        "properties": {
          "phone_e164": {
            "type": "string",
            "pattern": "^\\+[1-9]\\d{6,14}$",
            "title": "Phone E164"
          },
          "first_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "First Name"
          },
          "last_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Name"
          },
          "company": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Company"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Title"
          },
          "email": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Email"
          },
          "timezone": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Timezone"
          },
          "jurisdictions": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Jurisdictions"
          },
          "attributes": {
            "additionalProperties": true,
            "type": "object",
            "title": "Attributes"
          },
          "lead_status": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/LeadStatus"
              },
              {
                "type": "null"
              }
            ]
          },
          "owner_user_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Owner User Id"
          },
          "tags": {
            "items": {
              "type": "string",
              "maxLength": 64,
              "minLength": 1
            },
            "type": "array",
            "maxItems": 32,
            "title": "Tags"
          },
          "consent": {
            "$ref": "#/components/schemas/ApiContactConsentInput"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "phone_e164",
          "consent"
        ],
        "title": "ContactCreateRequest",
        "description": "Create one API contact and its initial lawful-consent record together.\n\nThis is intentionally stricter than the operator fields below: a programmatic create\nis headless contact intake, so it cannot first land a dialable-looking contact and ask\nthe customer to append consent later.  The matching tenant-level API-source\nattestation is resolved only on the server and is written into the ConsentRecord proof."
      },
      "ContactDialability": {
        "properties": {
          "contact_id": {
            "type": "string",
            "title": "Contact Id"
          },
          "phone_e164": {
            "type": "string",
            "title": "Phone E164"
          },
          "purpose": {
            "type": "string",
            "enum": [
              "marketing",
              "informational",
              "transactional"
            ],
            "title": "Purpose"
          },
          "dialable": {
            "type": "boolean",
            "title": "Dialable"
          },
          "blocked_reasons": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Blocked Reasons"
          },
          "policy_refusals": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Policy Refusals"
          },
          "risk_flags": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Risk Flags"
          },
          "jurisdictions": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Jurisdictions"
          },
          "timezone": {
            "type": "string",
            "title": "Timezone"
          },
          "evaluated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Evaluated At"
          },
          "policy_snapshot": {
            "additionalProperties": true,
            "type": "object",
            "title": "Policy Snapshot"
          }
        },
        "type": "object",
        "required": [
          "contact_id",
          "phone_e164",
          "purpose",
          "dialable",
          "timezone",
          "evaluated_at"
        ],
        "title": "ContactDialability",
        "description": "The pre-dial verdict for one contact.\n\nEvaluated over the contact's own record - the denormalized DNC flag, the consent class,\nthe jurisdictions, and the callee-local clock. Bureau scrub stages are not run here:\nthey are billed per query and belong to a ScrubRun, so `policy_snapshot.stages` is\nempty and a dial still passes the full gate."
      },
      "ContactImportRequest": {
        "properties": {
          "file_name": {
            "type": "string",
            "maxLength": 255,
            "minLength": 1,
            "title": "File Name"
          },
          "content": {
            "type": "string",
            "minLength": 1,
            "title": "Content"
          },
          "column_mapping": {
            "additionalProperties": {
              "type": "string",
              "enum": [
                "phone_e164",
                "first_name",
                "last_name",
                "company",
                "title",
                "email",
                "timezone"
              ]
            },
            "type": "object",
            "title": "Column Mapping"
          },
          "consent_attestation": {
            "$ref": "#/components/schemas/ConsentAttestationInput"
          },
          "target_list_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Target List Id"
          },
          "list_name": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ],
            "title": "List Name"
          },
          "on_duplicate": {
            "type": "string",
            "enum": [
              "reject",
              "skip",
              "update"
            ],
            "title": "On Duplicate",
            "default": "reject"
          }
        },
        "type": "object",
        "required": [
          "file_name",
          "content",
          "column_mapping",
          "consent_attestation"
        ],
        "title": "ContactImportRequest",
        "description": "An import submission.\n\nThe CSV arrives as a text field rather than `multipart/form-data`: multipart needs\n`python-multipart`, which is not a workspace dependency. The parser takes the file's\ntext either way, so the wire shape can change without touching it."
      },
      "ContactListCreateRequest": {
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1,
            "title": "Name"
          },
          "source": {
            "type": "string",
            "enum": [
              "upload",
              "api"
            ],
            "title": "Source",
            "default": "api"
          },
          "consent_basis": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ConsentBasis"
              },
              {
                "type": "null"
              }
            ]
          },
          "attestation_ref": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Attestation Ref"
          }
        },
        "type": "object",
        "required": [
          "name"
        ],
        "title": "ContactListCreateRequest"
      },
      "ContactListMembersRemovedResponse": {
        "properties": {
          "contact_list_id": {
            "type": "string",
            "title": "Contact List Id"
          },
          "removed": {
            "type": "integer",
            "title": "Removed"
          },
          "not_present": {
            "type": "integer",
            "title": "Not Present"
          },
          "contact_count": {
            "type": "integer",
            "title": "Contact Count"
          }
        },
        "type": "object",
        "required": [
          "contact_list_id",
          "removed",
          "not_present",
          "contact_count"
        ],
        "title": "ContactListMembersRemovedResponse",
        "description": "The mirror of :class:`ContactListMembersResponse` for a removal.\n\n`not_present` rather than `already_present`, and no `unknown_contact_ids`: a removal\ncannot distinguish an id that names no contact from one that names a contact not on\nthis list, and reporting a guess would be worse than reporting the count."
      },
      "ContactListMembersRequest": {
        "properties": {
          "contact_ids": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "maxItems": 1000,
            "minItems": 1,
            "title": "Contact Ids"
          }
        },
        "type": "object",
        "required": [
          "contact_ids"
        ],
        "title": "ContactListMembersRequest"
      },
      "ContactListMembersResponse": {
        "properties": {
          "contact_list_id": {
            "type": "string",
            "title": "Contact List Id"
          },
          "added": {
            "type": "integer",
            "title": "Added"
          },
          "already_present": {
            "type": "integer",
            "title": "Already Present"
          },
          "unknown_contact_ids": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Unknown Contact Ids"
          },
          "contact_count": {
            "type": "integer",
            "title": "Contact Count"
          }
        },
        "type": "object",
        "required": [
          "contact_list_id",
          "added",
          "already_present",
          "contact_count"
        ],
        "title": "ContactListMembersResponse"
      },
      "ContactListSummary": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "source": {
            "type": "string",
            "enum": [
              "upload",
              "api"
            ],
            "title": "Source"
          },
          "consent_basis": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ConsentBasis"
              },
              {
                "type": "null"
              }
            ]
          },
          "attestation_ref": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Attestation Ref"
          },
          "contact_count": {
            "type": "integer",
            "title": "Contact Count"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "name",
          "source",
          "contact_count",
          "created_at",
          "updated_at"
        ],
        "title": "ContactListSummary"
      },
      "ContactListUpdateRequest": {
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1,
            "title": "Name"
          }
        },
        "type": "object",
        "required": [
          "name"
        ],
        "title": "ContactListUpdateRequest",
        "description": "PATCH on a list: the name, and nothing else.\n\n`consent_basis` and `attestation_ref` are deliberately not writable. They record what\na named human affirmed about the rows on this list at the moment it was created, and\nevery dial made against it cites them - an attestation that can be edited afterwards\nis not evidence of anything (docs/03-domain-model.md §Audience)."
      },
      "ContactNote": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "contact_id": {
            "type": "string",
            "title": "Contact Id"
          },
          "call_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Call Id"
          },
          "author_ref": {
            "type": "string",
            "title": "Author Ref"
          },
          "body": {
            "type": "string",
            "title": "Body"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "contact_id",
          "author_ref",
          "body",
          "created_at",
          "updated_at"
        ],
        "title": "ContactNote",
        "description": "One working note a rep left on a contact.\n\n`author_ref` is whichever credential wrote it - an API key id, or a user id when a\ndashboard session did. It is not a person's name, and nothing here resolves it to one."
      },
      "ContactNoteCreateRequest": {
        "properties": {
          "body": {
            "type": "string",
            "maxLength": 10000,
            "minLength": 1,
            "title": "Body"
          },
          "call_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Call Id"
          }
        },
        "type": "object",
        "required": [
          "body"
        ],
        "title": "ContactNoteCreateRequest"
      },
      "ContactSummary": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "phone_e164": {
            "type": "string",
            "title": "Phone E164"
          },
          "first_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "First Name"
          },
          "last_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Name"
          },
          "company": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Company"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Title"
          },
          "email": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Email"
          },
          "timezone": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Timezone"
          },
          "best_consent_class": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ConsentBasis"
              },
              {
                "type": "null"
              }
            ]
          },
          "do_not_call": {
            "type": "boolean",
            "title": "Do Not Call",
            "default": false
          },
          "lead_status": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/LeadStatus"
              },
              {
                "type": "null"
              }
            ]
          },
          "owner_user_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Owner User Id"
          },
          "tags": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Tags"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "phone_e164",
          "created_at",
          "updated_at"
        ],
        "title": "ContactSummary",
        "description": "A contact as a list endpoint returns it."
      },
      "ContactUpdateRequest": {
        "properties": {
          "phone_e164": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^\\+[1-9]\\d{6,14}$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Phone E164"
          },
          "first_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "First Name"
          },
          "last_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Name"
          },
          "company": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Company"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Title"
          },
          "email": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Email"
          },
          "timezone": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Timezone"
          },
          "jurisdictions": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Jurisdictions"
          },
          "attributes": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Attributes"
          },
          "lead_status": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/LeadStatus"
              },
              {
                "type": "null"
              }
            ]
          },
          "owner_user_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Owner User Id"
          },
          "tags": {
            "anyOf": [
              {
                "items": {
                  "type": "string",
                  "maxLength": 64,
                  "minLength": 1
                },
                "type": "array",
                "maxItems": 32
              },
              {
                "type": "null"
              }
            ],
            "title": "Tags"
          }
        },
        "type": "object",
        "title": "ContactUpdateRequest",
        "description": "PATCH: only the fields present are written, and an explicit null clears one."
      },
      "ConversationAction": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "call_id": {
            "type": "string",
            "title": "Call Id"
          },
          "contact_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Contact Id"
          },
          "kind": {
            "type": "string",
            "enum": [
              "shift_response",
              "qualification",
              "identity_capture",
              "identity_correction"
            ],
            "title": "Kind"
          },
          "subject_ref": {
            "type": "string",
            "title": "Subject Ref"
          },
          "revision": {
            "type": "integer",
            "minimum": 1,
            "title": "Revision"
          },
          "response": {
            "type": "string",
            "title": "Response"
          },
          "payload": {
            "additionalProperties": true,
            "type": "object",
            "title": "Payload"
          },
          "source_turns": {
            "items": {
              "$ref": "#/components/schemas/ConversationEvidence"
            },
            "type": "array",
            "title": "Source Turns"
          },
          "action_confirmation": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ActionConfirmationProof"
              },
              {
                "type": "null"
              }
            ]
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "call_id",
          "contact_id",
          "kind",
          "subject_ref",
          "revision",
          "response",
          "payload",
          "created_at"
        ],
        "title": "ConversationAction",
        "description": "One immutable receipt; latest caller evidence per kind/subject is current.\n\nRevisions record database arrival order and break ties within the same caller turn.\nEvidence-free legacy receipts rank below receipts with validated caller evidence."
      },
      "ConversationEvidence": {
        "properties": {
          "turn_number": {
            "type": "integer",
            "minimum": 1,
            "title": "Turn Number"
          },
          "text": {
            "type": "string",
            "maxLength": 6000,
            "minLength": 1,
            "title": "Text"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "turn_number",
          "text"
        ],
        "title": "ConversationEvidence"
      },
      "ConversationSettings": {
        "properties": {
          "default_language": {
            "type": "string",
            "enum": [
              "en",
              "es"
            ],
            "title": "Default Language",
            "default": "en"
          },
          "supported_languages": {
            "items": {
              "type": "string",
              "enum": [
                "en",
                "es"
              ]
            },
            "type": "array",
            "title": "Supported Languages"
          },
          "allow_language_switch": {
            "type": "boolean",
            "title": "Allow Language Switch",
            "default": true
          }
        },
        "additionalProperties": false,
        "type": "object",
        "title": "ConversationSettings",
        "description": "Versioned dialogue policy; language availability is qualified by the speech service."
      },
      "CurrentPrincipalResource": {
        "properties": {
          "tenant_id": {
            "type": "string",
            "title": "Tenant Id"
          },
          "api_key_id": {
            "type": "string",
            "title": "Api Key Id"
          },
          "mode": {
            "type": "string",
            "enum": [
              "live",
              "test"
            ],
            "title": "Mode"
          },
          "scopes": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Scopes"
          },
          "user_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "User Id"
          }
        },
        "type": "object",
        "required": [
          "tenant_id",
          "api_key_id",
          "mode",
          "scopes"
        ],
        "title": "CurrentPrincipalResource",
        "description": "`GET /v1/me` - the principal, plus the human behind it where one is resolvable.\n\n``user_id`` is the ``usr_`` id of the tenant user whose first-party dashboard session\naccompanied the request (the browser attaches the session cookie alongside the console\nkey). It is what lets the portal offer \"assign to me\" against surfaces keyed on\n`users.id`. Null - and typed that way - for a key-only caller: an API key names an\nintegration, not a person, and inventing one would be worse than answering none."
      },
      "CursorPage_AgentSummary_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/AgentSummary"
            },
            "type": "array",
            "title": "Data"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "has_more": {
            "type": "boolean",
            "title": "Has More",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "data"
        ],
        "title": "CursorPage[AgentSummary]"
      },
      "CursorPage_AgentVersionSummary_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/AgentVersionSummary"
            },
            "type": "array",
            "title": "Data"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "has_more": {
            "type": "boolean",
            "title": "Has More",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "data"
        ],
        "title": "CursorPage[AgentVersionSummary]"
      },
      "CursorPage_ApiKeySummary_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/ApiKeySummary"
            },
            "type": "array",
            "title": "Data"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "has_more": {
            "type": "boolean",
            "title": "Has More",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "data"
        ],
        "title": "CursorPage[ApiKeySummary]"
      },
      "CursorPage_Appointment_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/Appointment"
            },
            "type": "array",
            "title": "Data"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "has_more": {
            "type": "boolean",
            "title": "Has More",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "data"
        ],
        "title": "CursorPage[Appointment]"
      },
      "CursorPage_AttemptSummary_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/AttemptSummary"
            },
            "type": "array",
            "title": "Data"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "has_more": {
            "type": "boolean",
            "title": "Has More",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "data"
        ],
        "title": "CursorPage[AttemptSummary]"
      },
      "CursorPage_CallSummary_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/CallSummary"
            },
            "type": "array",
            "title": "Data"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "has_more": {
            "type": "boolean",
            "title": "Has More",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "data"
        ],
        "title": "CursorPage[CallSummary]"
      },
      "CursorPage_CallTurn_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/CallTurn"
            },
            "type": "array",
            "title": "Data"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "has_more": {
            "type": "boolean",
            "title": "Has More",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "data"
        ],
        "title": "CursorPage[CallTurn]"
      },
      "CursorPage_CallerRequestSummary_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/CallerRequestSummary"
            },
            "type": "array",
            "title": "Data"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "has_more": {
            "type": "boolean",
            "title": "Has More",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "data"
        ],
        "title": "CursorPage[CallerRequestSummary]"
      },
      "CursorPage_CampaignOutcomeSummary_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/CampaignOutcomeSummary"
            },
            "type": "array",
            "title": "Data"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "has_more": {
            "type": "boolean",
            "title": "Has More",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "data"
        ],
        "title": "CursorPage[CampaignOutcomeSummary]"
      },
      "CursorPage_CampaignSummary_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/CampaignSummary"
            },
            "type": "array",
            "title": "Data"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "has_more": {
            "type": "boolean",
            "title": "Has More",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "data"
        ],
        "title": "CursorPage[CampaignSummary]"
      },
      "CursorPage_ConsentRecordSummary_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/ConsentRecordSummary"
            },
            "type": "array",
            "title": "Data"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "has_more": {
            "type": "boolean",
            "title": "Has More",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "data"
        ],
        "title": "CursorPage[ConsentRecordSummary]"
      },
      "CursorPage_ContactAttemptSummary_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/ContactAttemptSummary"
            },
            "type": "array",
            "title": "Data"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "has_more": {
            "type": "boolean",
            "title": "Has More",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "data"
        ],
        "title": "CursorPage[ContactAttemptSummary]"
      },
      "CursorPage_ContactListSummary_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/ContactListSummary"
            },
            "type": "array",
            "title": "Data"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "has_more": {
            "type": "boolean",
            "title": "Has More",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "data"
        ],
        "title": "CursorPage[ContactListSummary]"
      },
      "CursorPage_ContactNote_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/ContactNote"
            },
            "type": "array",
            "title": "Data"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "has_more": {
            "type": "boolean",
            "title": "Has More",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "data"
        ],
        "title": "CursorPage[ContactNote]"
      },
      "CursorPage_ContactSummary_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/ContactSummary"
            },
            "type": "array",
            "title": "Data"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "has_more": {
            "type": "boolean",
            "title": "Has More",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "data"
        ],
        "title": "CursorPage[ContactSummary]"
      },
      "CursorPage_DncEntrySummary_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/DncEntrySummary"
            },
            "type": "array",
            "title": "Data"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "has_more": {
            "type": "boolean",
            "title": "Has More",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "data"
        ],
        "title": "CursorPage[DncEntrySummary]"
      },
      "CursorPage_HumanRep_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/HumanRep"
            },
            "type": "array",
            "title": "Data"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "has_more": {
            "type": "boolean",
            "title": "Has More",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "data"
        ],
        "title": "CursorPage[HumanRep]"
      },
      "CursorPage_ImportJob_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/ImportJob"
            },
            "type": "array",
            "title": "Data"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "has_more": {
            "type": "boolean",
            "title": "Has More",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "data"
        ],
        "title": "CursorPage[ImportJob]"
      },
      "CursorPage_ImportRowError_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/ImportRowError"
            },
            "type": "array",
            "title": "Data"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "has_more": {
            "type": "boolean",
            "title": "Has More",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "data"
        ],
        "title": "CursorPage[ImportRowError]"
      },
      "CursorPage_InboundVoicemailSummary_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/InboundVoicemailSummary"
            },
            "type": "array",
            "title": "Data"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "has_more": {
            "type": "boolean",
            "title": "Has More",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "data"
        ],
        "title": "CursorPage[InboundVoicemailSummary]"
      },
      "CursorPage_IntegrationConnectionSummary_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/IntegrationConnectionSummary"
            },
            "type": "array",
            "title": "Data"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "has_more": {
            "type": "boolean",
            "title": "Has More",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "data"
        ],
        "title": "CursorPage[IntegrationConnectionSummary]"
      },
      "CursorPage_Invoice_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/Invoice"
            },
            "type": "array",
            "title": "Data"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "has_more": {
            "type": "boolean",
            "title": "Has More",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "data"
        ],
        "title": "CursorPage[Invoice]"
      },
      "CursorPage_KnowledgePackSummary_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/KnowledgePackSummary"
            },
            "type": "array",
            "title": "Data"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "has_more": {
            "type": "boolean",
            "title": "Has More",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "data"
        ],
        "title": "CursorPage[KnowledgePackSummary]"
      },
      "CursorPage_MessageSummary_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/MessageSummary"
            },
            "type": "array",
            "title": "Data"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "has_more": {
            "type": "boolean",
            "title": "Has More",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "data"
        ],
        "title": "CursorPage[MessageSummary]"
      },
      "CursorPage_MessageTemplateSummary_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/MessageTemplateSummary"
            },
            "type": "array",
            "title": "Data"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "has_more": {
            "type": "boolean",
            "title": "Has More",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "data"
        ],
        "title": "CursorPage[MessageTemplateSummary]"
      },
      "CursorPage_MobileCallAiContact_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/MobileCallAiContact"
            },
            "type": "array",
            "title": "Data"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "has_more": {
            "type": "boolean",
            "title": "Has More",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "data"
        ],
        "title": "CursorPage[MobileCallAiContact]"
      },
      "CursorPage_MobileReceptionistActivity_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/MobileReceptionistActivity"
            },
            "type": "array",
            "title": "Data"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "has_more": {
            "type": "boolean",
            "title": "Has More",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "data"
        ],
        "title": "CursorPage[MobileReceptionistActivity]"
      },
      "CursorPage_MobileTransferHistoryEntry_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/MobileTransferHistoryEntry"
            },
            "type": "array",
            "title": "Data"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "has_more": {
            "type": "boolean",
            "title": "Has More",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "data"
        ],
        "title": "CursorPage[MobileTransferHistoryEntry]"
      },
      "CursorPage_NumberPoolSummary_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/NumberPoolSummary"
            },
            "type": "array",
            "title": "Data"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "has_more": {
            "type": "boolean",
            "title": "Has More",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "data"
        ],
        "title": "CursorPage[NumberPoolSummary]"
      },
      "CursorPage_PhoneNumberSummary_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/PhoneNumberSummary"
            },
            "type": "array",
            "title": "Data"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "has_more": {
            "type": "boolean",
            "title": "Has More",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "data"
        ],
        "title": "CursorPage[PhoneNumberSummary]"
      },
      "CursorPage_QualificationReview_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/QualificationReview"
            },
            "type": "array",
            "title": "Data"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "has_more": {
            "type": "boolean",
            "title": "Has More",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "data"
        ],
        "title": "CursorPage[QualificationReview]"
      },
      "CursorPage_ReleaseGateEvaluation_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/ReleaseGateEvaluation"
            },
            "type": "array",
            "title": "Data"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "has_more": {
            "type": "boolean",
            "title": "Has More",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "data"
        ],
        "title": "CursorPage[ReleaseGateEvaluation]"
      },
      "CursorPage_RepGroupMember_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/RepGroupMember"
            },
            "type": "array",
            "title": "Data"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "has_more": {
            "type": "boolean",
            "title": "Has More",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "data"
        ],
        "title": "CursorPage[RepGroupMember]"
      },
      "CursorPage_RepGroup_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/RepGroup"
            },
            "type": "array",
            "title": "Data"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "has_more": {
            "type": "boolean",
            "title": "Has More",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "data"
        ],
        "title": "CursorPage[RepGroup]"
      },
      "CursorPage_ScrubResultSummary_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/ScrubResultSummary"
            },
            "type": "array",
            "title": "Data"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "has_more": {
            "type": "boolean",
            "title": "Has More",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "data"
        ],
        "title": "CursorPage[ScrubResultSummary]"
      },
      "CursorPage_ShiftConfirmation_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/ShiftConfirmation"
            },
            "type": "array",
            "title": "Data"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "has_more": {
            "type": "boolean",
            "title": "Has More",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "data"
        ],
        "title": "CursorPage[ShiftConfirmation]"
      },
      "CursorPage_SurveyResponse_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/SurveyResponse"
            },
            "type": "array",
            "title": "Data"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "has_more": {
            "type": "boolean",
            "title": "Has More",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "data"
        ],
        "title": "CursorPage[SurveyResponse]"
      },
      "CursorPage_TelephonyAccountSummary_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/TelephonyAccountSummary"
            },
            "type": "array",
            "title": "Data"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "has_more": {
            "type": "boolean",
            "title": "Has More",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "data"
        ],
        "title": "CursorPage[TelephonyAccountSummary]"
      },
      "CursorPage_TemplateSummary_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/TemplateSummary"
            },
            "type": "array",
            "title": "Data"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "has_more": {
            "type": "boolean",
            "title": "Has More",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "data"
        ],
        "title": "CursorPage[TemplateSummary]"
      },
      "CursorPage_TenantUserSummary_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/TenantUserSummary"
            },
            "type": "array",
            "title": "Data"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "has_more": {
            "type": "boolean",
            "title": "Has More",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "data"
        ],
        "title": "CursorPage[TenantUserSummary]"
      },
      "CursorPage_UsageEventSummary_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/UsageEventSummary"
            },
            "type": "array",
            "title": "Data"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "has_more": {
            "type": "boolean",
            "title": "Has More",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "data"
        ],
        "title": "CursorPage[UsageEventSummary]"
      },
      "CursorPage_VerifiedNumberSummary_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/VerifiedNumberSummary"
            },
            "type": "array",
            "title": "Data"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "has_more": {
            "type": "boolean",
            "title": "Has More",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "data"
        ],
        "title": "CursorPage[VerifiedNumberSummary]"
      },
      "CursorPage_VoiceProfileSummary_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/VoiceProfileSummary"
            },
            "type": "array",
            "title": "Data"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "has_more": {
            "type": "boolean",
            "title": "Has More",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "data"
        ],
        "title": "CursorPage[VoiceProfileSummary]"
      },
      "CursorPage_VoiceSummary_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/VoiceSummary"
            },
            "type": "array",
            "title": "Data"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "has_more": {
            "type": "boolean",
            "title": "Has More",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "data"
        ],
        "title": "CursorPage[VoiceSummary]"
      },
      "CursorPage_WebhookDelivery_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/WebhookDelivery"
            },
            "type": "array",
            "title": "Data"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "has_more": {
            "type": "boolean",
            "title": "Has More",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "data"
        ],
        "title": "CursorPage[WebhookDelivery]"
      },
      "CursorPage_WebhookTargetSummary_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/WebhookTargetSummary"
            },
            "type": "array",
            "title": "Data"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "has_more": {
            "type": "boolean",
            "title": "Has More",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "data"
        ],
        "title": "CursorPage[WebhookTargetSummary]"
      },
      "CursorPage_WorkflowOutcome_": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/WorkflowOutcome"
            },
            "type": "array",
            "title": "Data"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "has_more": {
            "type": "boolean",
            "title": "Has More",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "data"
        ],
        "title": "CursorPage[WorkflowOutcome]"
      },
      "CustomerPortalRequest": {
        "properties": {
          "flow": {
            "type": "string",
            "enum": [
              "manage",
              "payment_method",
              "subscription_update",
              "subscription_cancel"
            ],
            "title": "Flow",
            "default": "manage"
          }
        },
        "type": "object",
        "title": "CustomerPortalRequest",
        "description": "The one action the customer wants Stripe to foreground."
      },
      "CustomerPortalSession": {
        "properties": {
          "url": {
            "type": "string",
            "title": "Url"
          },
          "flow": {
            "type": "string",
            "enum": [
              "manage",
              "payment_method",
              "subscription_update",
              "subscription_cancel"
            ],
            "title": "Flow"
          }
        },
        "type": "object",
        "required": [
          "url",
          "flow"
        ],
        "title": "CustomerPortalSession",
        "description": "A one-use-at-a-time redirect target, not a persisted customer credential."
      },
      "DashboardAgentHeadline": {
        "properties": {
          "id": {
            "type": "string",
            "maxLength": 128,
            "minLength": 1,
            "title": "Id"
          },
          "name": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1,
            "title": "Name"
          },
          "use_case": {
            "type": "string",
            "enum": [
              "sdr",
              "staffing",
              "survey",
              "reminder",
              "custom",
              "receptionist",
              "recruiting"
            ],
            "title": "Use Case"
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "active",
              "archived"
            ],
            "title": "Status"
          },
          "health": {
            "type": "string",
            "enum": [
              "live",
              "setup_needed",
              "attention",
              "archived"
            ],
            "title": "Health"
          },
          "latest_version": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Latest Version"
          },
          "calls": {
            "$ref": "#/components/schemas/DashboardCallTotals"
          },
          "call_records": {
            "$ref": "#/components/schemas/DashboardCallRecords"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "name",
          "use_case",
          "status",
          "health",
          "calls",
          "call_records"
        ],
        "title": "DashboardAgentHeadline",
        "description": "One configured agent's compact health and activity headline."
      },
      "DashboardAttention": {
        "properties": {
          "key": {
            "type": "string",
            "enum": [
              "caller_work",
              "receptionist_health",
              "agent_setup"
            ],
            "title": "Key"
          },
          "state": {
            "type": "string",
            "enum": [
              "ready",
              "attention"
            ],
            "title": "State"
          },
          "count": {
            "type": "integer",
            "minimum": 0,
            "title": "Count"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "key",
          "state",
          "count"
        ],
        "title": "DashboardAttention",
        "description": "A small server-derived work signal; zero means the item is ready."
      },
      "DashboardCallRecords": {
        "properties": {
          "inbound_calls": {
            "type": "integer",
            "minimum": 0,
            "title": "Inbound Calls"
          },
          "outbound_calls": {
            "type": "integer",
            "minimum": 0,
            "title": "Outbound Calls"
          },
          "browser_calls": {
            "type": "integer",
            "minimum": 0,
            "title": "Browser Calls"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "inbound_calls",
          "outbound_calls",
          "browser_calls"
        ],
        "title": "DashboardCallRecords",
        "description": "Durable calls by direction whose started_at is inside the response window.\n\nThese match /v1/calls with direction and started_at >= start, < end filters.\nCalls persisted after a read can appear on a subsequent read of the same window."
      },
      "DashboardCallTotals": {
        "properties": {
          "inbound_calls": {
            "type": "integer",
            "minimum": 0,
            "title": "Inbound Calls"
          },
          "outbound_dials": {
            "type": "integer",
            "minimum": 0,
            "title": "Outbound Dials"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "inbound_calls",
          "outbound_dials"
        ],
        "title": "DashboardCallTotals",
        "description": "Legacy ingress/attempt activity by creation time; not call-log counts."
      },
      "DashboardOpenCallerWork": {
        "properties": {
          "total": {
            "type": "integer",
            "minimum": 0,
            "title": "Total"
          },
          "messages": {
            "type": "integer",
            "minimum": 0,
            "title": "Messages"
          },
          "support_tickets": {
            "type": "integer",
            "minimum": 0,
            "title": "Support Tickets"
          },
          "high_priority_tickets": {
            "type": "integer",
            "minimum": 0,
            "title": "High Priority Tickets"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "total",
          "messages",
          "support_tickets",
          "high_priority_tickets"
        ],
        "title": "DashboardOpenCallerWork",
        "description": "Current unresolved caller requests, regardless of when they were opened."
      },
      "DashboardOutcomes": {
        "properties": {
          "leads_captured": {
            "type": "integer",
            "minimum": 0,
            "title": "Leads Captured"
          },
          "messages_taken": {
            "type": "integer",
            "minimum": 0,
            "title": "Messages Taken"
          },
          "tickets_opened": {
            "type": "integer",
            "minimum": 0,
            "title": "Tickets Opened"
          },
          "callbacks_scheduled": {
            "type": "integer",
            "minimum": 0,
            "title": "Callbacks Scheduled"
          },
          "appointments_created": {
            "type": "integer",
            "minimum": 0,
            "title": "Appointments Created"
          },
          "shifts_confirmed": {
            "type": "integer",
            "minimum": 0,
            "title": "Shifts Confirmed"
          },
          "survey_responses": {
            "type": "integer",
            "minimum": 0,
            "title": "Survey Responses"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "leads_captured",
          "messages_taken",
          "tickets_opened",
          "callbacks_scheduled",
          "appointments_created",
          "shifts_confirmed",
          "survey_responses"
        ],
        "title": "DashboardOutcomes",
        "description": "Durable business results created inside the requested historical window."
      },
      "DashboardSummary": {
        "properties": {
          "window": {
            "$ref": "#/components/schemas/DashboardWindow"
          },
          "as_of": {
            "type": "string",
            "format": "date-time",
            "title": "As Of"
          },
          "call_totals": {
            "$ref": "#/components/schemas/DashboardCallTotals"
          },
          "call_records": {
            "$ref": "#/components/schemas/DashboardCallRecords"
          },
          "agents": {
            "items": {
              "$ref": "#/components/schemas/DashboardAgentHeadline"
            },
            "type": "array",
            "title": "Agents"
          },
          "open_caller_work": {
            "$ref": "#/components/schemas/DashboardOpenCallerWork"
          },
          "outcomes": {
            "$ref": "#/components/schemas/DashboardOutcomes"
          },
          "attention": {
            "items": {
              "$ref": "#/components/schemas/DashboardAttention"
            },
            "type": "array",
            "title": "Attention"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "window",
          "as_of",
          "call_totals",
          "call_records",
          "open_caller_work",
          "outcomes"
        ],
        "title": "DashboardSummary",
        "description": "`GET /v1/dashboard-summary` response for the portal Home screen."
      },
      "DashboardWindow": {
        "properties": {
          "start": {
            "type": "string",
            "format": "date-time",
            "title": "Start"
          },
          "end": {
            "type": "string",
            "format": "date-time",
            "title": "End"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "start",
          "end"
        ],
        "title": "DashboardWindow",
        "description": "The exact half-open UTC interval the historical counts cover."
      },
      "DeleteAccountRequest": {
        "properties": {
          "confirmation": {
            "type": "string",
            "const": "DELETE",
            "title": "Confirmation"
          },
          "password": {
            "type": "string",
            "maxLength": 1024,
            "minLength": 8,
            "title": "Password"
          }
        },
        "type": "object",
        "required": [
          "confirmation",
          "password"
        ],
        "title": "DeleteAccountRequest",
        "description": "Password-account's final, fresh confirmation.\n\nA typed phrase makes the last step unambiguous.  The server still recomputes impact\nand verifies the password; this model is never treated as authority by itself."
      },
      "DeviceAuthorizationApprovalRequest": {
        "properties": {
          "user_code": {
            "type": "string",
            "maxLength": 32,
            "minLength": 8,
            "title": "User Code"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "user_code"
        ],
        "title": "DeviceAuthorizationApprovalRequest",
        "description": "A human code copied from a local CLI into the signed-in portal.\n\nThe code is deliberately the only customer-controlled field: a browser owner cannot\nchoose a tenant, scopes, API-key mode, or a target device identity.  Those facts come\nfrom the active dashboard session and the unread provisioning key respectively."
      },
      "DeviceAuthorizationApprovalResponse": {
        "properties": {
          "status": {
            "type": "string",
            "const": "approved",
            "title": "Status"
          },
          "expires_at": {
            "type": "string",
            "format": "date-time",
            "title": "Expires At"
          }
        },
        "type": "object",
        "required": [
          "status",
          "expires_at"
        ],
        "title": "DeviceAuthorizationApprovalResponse",
        "description": "A receipt for a CSRF-protected owner approval; it contains no bearer grant."
      },
      "DeviceAuthorizationFirstKeyClaimRequest": {
        "properties": {
          "grant": {
            "type": "string",
            "maxLength": 256,
            "minLength": 32,
            "title": "Grant"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "grant"
        ],
        "title": "DeviceAuthorizationFirstKeyClaimRequest",
        "description": "The opaque grant accepted only by the first-key claim endpoint."
      },
      "DeviceAuthorizationGrantRequest": {
        "properties": {
          "device_code": {
            "type": "string",
            "maxLength": 256,
            "minLength": 32,
            "title": "Device Code"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "device_code"
        ],
        "title": "DeviceAuthorizationGrantRequest",
        "description": "The high-entropy device credential used only to poll its own pairing request."
      },
      "DeviceAuthorizationGrantResponse": {
        "properties": {
          "grant": {
            "type": "string",
            "title": "Grant"
          },
          "expires_at": {
            "type": "string",
            "format": "date-time",
            "title": "Expires At"
          }
        },
        "type": "object",
        "required": [
          "grant",
          "expires_at"
        ],
        "title": "DeviceAuthorizationGrantResponse",
        "description": "A route-limited, short-lived bridge to one first-key claim."
      },
      "DeviceAuthorizationPendingResponse": {
        "properties": {
          "status": {
            "type": "string",
            "const": "pending",
            "title": "Status"
          },
          "expires_at": {
            "type": "string",
            "format": "date-time",
            "title": "Expires At"
          },
          "interval_seconds": {
            "type": "integer",
            "title": "Interval Seconds"
          }
        },
        "type": "object",
        "required": [
          "status",
          "expires_at",
          "interval_seconds"
        ],
        "title": "DeviceAuthorizationPendingResponse",
        "description": "A poll-safe response: approval has not happened, and no grant exists yet."
      },
      "DeviceAuthorizationStartResponse": {
        "properties": {
          "device_code": {
            "type": "string",
            "title": "Device Code"
          },
          "user_code": {
            "type": "string",
            "title": "User Code"
          },
          "verification_uri": {
            "type": "string",
            "title": "Verification Uri"
          },
          "verification_uri_complete": {
            "type": "string",
            "title": "Verification Uri Complete"
          },
          "expires_at": {
            "type": "string",
            "format": "date-time",
            "title": "Expires At"
          },
          "interval_seconds": {
            "type": "integer",
            "title": "Interval Seconds"
          }
        },
        "type": "object",
        "required": [
          "device_code",
          "user_code",
          "verification_uri",
          "verification_uri_complete",
          "expires_at",
          "interval_seconds"
        ],
        "title": "DeviceAuthorizationStartResponse",
        "description": "What an unauthenticated local device receives before owner approval."
      },
      "DirectRepHandoffTarget": {
        "properties": {
          "rep_id": {
            "type": "string",
            "maxLength": 128,
            "minLength": 1,
            "title": "Rep Id"
          },
          "display_name": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1,
            "title": "Display Name"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "rep_id",
          "display_name"
        ],
        "title": "DirectRepHandoffTarget",
        "description": "One server-resolved, immutable direct-rep target in an agent snapshot.\n\nA write request names only ``rep_id`` values.  Control-api resolves those ids against\nactive, transfer-enabled tenant reps and persists this compact snapshot so an AgentVersion\nnever follows a later mutable Settings record.  A raw destination is deliberately not part\nof this customer/model/runtime representation."
      },
      "Disposition": {
        "type": "string",
        "enum": [
          "completed_goal",
          "completed_no_goal",
          "answered_incomplete",
          "voicemail_machine",
          "no_answer",
          "busy",
          "failed",
          "opt_out",
          "wrong_person_opt_out",
          "dnc_hit",
          "scrub_blocked",
          "blocked_by_policy",
          "abandoned_no_slot",
          "inbound_unavailable",
          "browser_unavailable"
        ],
        "title": "Disposition",
        "description": "Terminal outcome of a contact attempt (docs/06-campaign-engine.md)."
      },
      "DispositionBucketOut": {
        "properties": {
          "campaign_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Campaign Id"
          },
          "agent_version_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Agent Version Id"
          },
          "day": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Day"
          },
          "disposition": {
            "type": "string",
            "title": "Disposition"
          },
          "attempts": {
            "type": "integer",
            "title": "Attempts"
          },
          "share": {
            "type": "number",
            "title": "Share"
          }
        },
        "type": "object",
        "required": [
          "disposition",
          "attempts",
          "share"
        ],
        "title": "DispositionBucketOut",
        "description": "One disposition's weight inside its group."
      },
      "DispositionOverrideRequest": {
        "properties": {
          "code": {
            "$ref": "#/components/schemas/Disposition"
          },
          "sub_code": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ],
            "title": "Sub Code"
          },
          "notes": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 10000
              },
              {
                "type": "null"
              }
            ],
            "title": "Notes"
          }
        },
        "type": "object",
        "required": [
          "code"
        ],
        "title": "DispositionOverrideRequest",
        "description": "A human's verdict on a reviewed call (`POST /v1/calls/{id}/disposition`).\n\n`code` is the pinned platform vocabulary (CANON fact 28) - the same list the agent\nwrites, because \"what happened on this dial\" is one question with one answer set.\n\nThis changes the tenant's own reporting and nothing else. A disposition is not a\ncompliance control: labelling a call `opt_out` here records an opinion about the call,\nit does not suppress the number. Suppression is `POST /v1/dnc-entries`, which writes\nthe DNC entry, withdraws the consent behind the number and emits `optout.recorded` -\nnone of which this request can do."
      },
      "DispositionRecordSummary": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "call_id": {
            "type": "string",
            "title": "Call Id"
          },
          "code": {
            "$ref": "#/components/schemas/Disposition"
          },
          "sub_code": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Sub Code"
          },
          "notes": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Notes"
          },
          "set_by": {
            "type": "string",
            "enum": [
              "agent_llm",
              "human_review"
            ],
            "title": "Set By"
          },
          "structured_outcome": {
            "additionalProperties": true,
            "type": "object",
            "title": "Structured Outcome"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "call_id",
          "code",
          "set_by",
          "created_at"
        ],
        "title": "DispositionRecordSummary",
        "description": "One row of a call's disposition history.\n\n`dispositions` is append-only: a human review adds a row and repoints the call at it\nrather than editing the agent's verdict, so a call whose label was corrected reads as\ntwo rows and `set_by` says which was which."
      },
      "DispositionReport": {
        "properties": {
          "window": {
            "$ref": "#/components/schemas/ReportWindow"
          },
          "group_by": {
            "items": {
              "type": "string",
              "enum": [
                "campaign",
                "agent_version",
                "day"
              ]
            },
            "type": "array",
            "title": "Group By"
          },
          "buckets": {
            "items": {
              "$ref": "#/components/schemas/DispositionBucketOut"
            },
            "type": "array",
            "title": "Buckets"
          }
        },
        "type": "object",
        "required": [
          "window"
        ],
        "title": "DispositionReport"
      },
      "DncEntryCreateRequest": {
        "properties": {
          "phone_e164": {
            "type": "string",
            "pattern": "^\\+[1-9]\\d{1,14}$",
            "title": "Phone E164"
          },
          "scope": {
            "$ref": "#/components/schemas/DncScope",
            "default": "internal"
          },
          "source": {
            "type": "string",
            "enum": [
              "opt_out_call",
              "sms_stop",
              "manual",
              "import",
              "api"
            ],
            "title": "Source",
            "default": "api"
          }
        },
        "type": "object",
        "required": [
          "phone_e164"
        ],
        "title": "DncEntryCreateRequest",
        "description": "What a tenant may send to `POST /v1/dnc-entries`, which records a revocation.\n\n`expires_at` is **parsed but not published**. Recording this entry withdraws the consent\nbehind the number and sets the contact's do-not-call flag, and neither is restorable\nwhen a suppression lapses, so an expiry is refused with `dnc_expiry_not_supported`\n(docs/04-api.md §9). `SkipJsonSchema` keeps the field out of the generated OpenAPI -\na published optional field whose only legal value is null is a setter every SDK offers\nand every call to it 422s - while leaving the refusal reachable, so a client sending one\nis told why instead of having it silently dropped. Same reason `scope` is expressible."
      },
      "DncEntrySummary": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "phone_e164": {
            "type": "string",
            "title": "Phone E164"
          },
          "scope": {
            "$ref": "#/components/schemas/DncScope"
          },
          "state_code": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "State Code"
          },
          "source": {
            "type": "string",
            "enum": [
              "opt_out_call",
              "sms_stop",
              "manual",
              "import",
              "api"
            ],
            "title": "Source"
          },
          "origin_call_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Origin Call Id"
          },
          "added_at": {
            "type": "string",
            "format": "date-time",
            "title": "Added At"
          },
          "expires_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Expires At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "phone_e164",
          "scope",
          "source",
          "added_at"
        ],
        "title": "DncEntrySummary"
      },
      "DncScope": {
        "type": "string",
        "enum": [
          "internal",
          "federal",
          "state"
        ],
        "title": "DncScope"
      },
      "DncSubscriptionRegisterRequest": {
        "properties": {
          "account_ref": {
            "type": "string",
            "maxLength": 64,
            "minLength": 1,
            "title": "Account Ref"
          },
          "area_codes": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "maxItems": 400,
            "minItems": 1,
            "title": "Area Codes"
          },
          "expires_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Expires At"
          }
        },
        "type": "object",
        "required": [
          "account_ref",
          "area_codes"
        ],
        "title": "DncSubscriptionRegisterRequest",
        "description": "Register (or refresh) this tenant's federal SAN and the area codes it covers.\n\nThe SAN is the tenant's own FTC Subscription Account Number, obtained at\ntelemarketing.donotcall.gov - registering it is what authorizes this tenant's federal\nDo-Not-Call screening. Re-registering the same SAN updates its coverage rather than\nduplicating it. One SAN serves one seller (an FTC rule), so a tenant registers its own\nand attests to that; the credential is never sent here.\n\nThis does not load DNC data. The federal registry is platform reference data, refreshed\nby ingestion and shared across tenants; a customer's subscription authorizes that tenant's\naccess to it, and its own upload is not accepted for the same reason a tenant cannot write\na federal DNC entry (the shared dataset must not be tenant-writable)."
      },
      "DncSubscriptionSummary": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "kind": {
            "type": "string",
            "title": "Kind"
          },
          "account_ref": {
            "type": "string",
            "title": "Account Ref"
          },
          "area_codes": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Area Codes"
          },
          "status": {
            "type": "string",
            "title": "Status"
          },
          "effective_at": {
            "type": "string",
            "format": "date-time",
            "title": "Effective At"
          },
          "expires_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Expires At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "kind",
          "account_ref",
          "area_codes",
          "status",
          "effective_at"
        ],
        "title": "DncSubscriptionSummary",
        "description": "A tenant's registered DNC registry subscription - its SAN and the NPAs it covers.\n\nThe credential behind the SAN is held in the platform vault and is never returned; only\nthe account reference and the coverage are."
      },
      "EmailConfirmationAccepted": {
        "properties": {
          "message": {
            "type": "string",
            "title": "Message"
          },
          "action_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Action Url"
          }
        },
        "type": "object",
        "required": [
          "message"
        ],
        "title": "EmailConfirmationAccepted"
      },
      "EmailRequest": {
        "properties": {
          "email": {
            "type": "string",
            "maxLength": 254,
            "minLength": 3,
            "title": "Email"
          }
        },
        "type": "object",
        "required": [
          "email"
        ],
        "title": "EmailRequest"
      },
      "EmergencyOverride": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "phone_number_id": {
            "type": "string",
            "title": "Phone Number Id"
          },
          "mode": {
            "type": "string",
            "enum": [
              "ai",
              "voicemail",
              "forward"
            ],
            "title": "Mode"
          },
          "rep_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Rep Id"
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "cleared",
              "expired",
              "invalid"
            ],
            "title": "Status"
          },
          "version": {
            "type": "integer",
            "minimum": 1,
            "title": "Version"
          },
          "expires_at": {
            "type": "string",
            "format": "date-time",
            "title": "Expires At"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
          },
          "cleared_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Cleared At"
          },
          "invalidated_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Invalidated At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "phone_number_id",
          "mode",
          "status",
          "version",
          "expires_at",
          "created_at",
          "updated_at"
        ],
        "title": "EmergencyOverride",
        "description": "The durable current override for one inbound number."
      },
      "EmergencyOverrideClearRequest": {
        "properties": {
          "override_id": {
            "type": "string",
            "maxLength": 128,
            "minLength": 1,
            "title": "Override Id"
          },
          "expected_version": {
            "type": "integer",
            "minimum": 1,
            "title": "Expected Version"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "override_id",
          "expected_version"
        ],
        "title": "EmergencyOverrideClearRequest",
        "description": "Compare-and-swap clear for the exact emergency route the operator reviewed.\n\nAn override row is retained and reused for a number so ``override_id`` alone cannot\ndistinguish a prior arm from a later re-arm.  The client sends the current routing\n``version`` returned by the read model; the router and repository bind and condition\nthe clear against both values."
      },
      "EmergencyOverrideRequest": {
        "properties": {
          "mode": {
            "type": "string",
            "enum": [
              "ai",
              "voicemail",
              "forward"
            ],
            "title": "Mode"
          },
          "rep_id": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128,
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Rep Id"
          },
          "expires_at": {
            "type": "string",
            "format": "date-time",
            "title": "Expires At"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "mode",
          "expires_at"
        ],
        "title": "EmergencyOverrideRequest",
        "description": "A time-bounded emergency route above one number's ordinary policy.\n\n``forward`` accepts a tenant-owned human-rep id only.  The router resolves it again at\nwrite time and the carrier ingress resolves it again at execution time, so a client can\nnever turn this into an arbitrary-number dialer or leave a stale forwarding destination\nactive after a rep is disabled."
      },
      "EstimateAnswers": {
        "properties": {
          "calls_per_month": {
            "type": "integer",
            "maximum": 10000000,
            "minimum": 0,
            "title": "Calls Per Month"
          },
          "average_call_seconds": {
            "type": "integer",
            "maximum": 1800,
            "minimum": 1,
            "title": "Average Call Seconds"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "calls_per_month",
          "average_call_seconds"
        ],
        "title": "EstimateAnswers",
        "description": "Step 4. What the applicant expects to run, so the calculator can price it. These are\nthe applicant's own numbers and nothing downstream treats them as a commitment."
      },
      "ExpansionCheckoutRequest": {
        "properties": {
          "amount_due_minor": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "title": "Amount Due Minor"
          },
          "currency": {
            "type": "string",
            "const": "usd",
            "title": "Currency"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "amount_due_minor",
          "currency"
        ],
        "title": "ExpansionCheckoutRequest",
        "description": "Confirm the exact displayed quote; prices and redirect URLs remain server-owned."
      },
      "ExpansionQuoteRequest": {
        "properties": {
          "target_class": {
            "type": "string",
            "enum": [
              "engage",
              "workforce",
              "sales"
            ],
            "title": "Target Class"
          },
          "request_key": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1,
            "title": "Request Key"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "target_class",
          "request_key"
        ],
        "title": "ExpansionQuoteRequest"
      },
      "ExpansionQuoteResponse": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "status": {
            "type": "string",
            "title": "Status"
          },
          "source_plan_id": {
            "type": "string",
            "title": "Source Plan Id"
          },
          "target_plan_id": {
            "type": "string",
            "title": "Target Plan Id"
          },
          "source_class": {
            "type": "string",
            "enum": [
              "engage",
              "workforce",
              "sales",
              "receptionist"
            ],
            "title": "Source Class"
          },
          "target_class": {
            "type": "string",
            "enum": [
              "engage",
              "workforce",
              "sales",
              "receptionist"
            ],
            "title": "Target Class"
          },
          "term": {
            "type": "string",
            "enum": [
              "mtm",
              "three_year"
            ],
            "title": "Term"
          },
          "amount_due_minor": {
            "type": "integer",
            "title": "Amount Due Minor"
          },
          "currency": {
            "type": "string",
            "title": "Currency"
          },
          "source_monthly_minor": {
            "type": "integer",
            "title": "Source Monthly Minor"
          },
          "target_monthly_minor": {
            "type": "integer",
            "title": "Target Monthly Minor"
          },
          "total_inbound_connections": {
            "type": "integer",
            "title": "Total Inbound Connections"
          },
          "total_outbound_sessions": {
            "type": "integer",
            "title": "Total Outbound Sessions"
          },
          "minute_rate_minor": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Minute Rate Minor"
          },
          "attempt_fee_minor": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Attempt Fee Minor"
          },
          "volume_ladder_applies": {
            "type": "boolean",
            "title": "Volume Ladder Applies"
          },
          "expires_at": {
            "type": "string",
            "format": "date-time",
            "title": "Expires At"
          },
          "checkout_available": {
            "type": "boolean",
            "title": "Checkout Available",
            "default": false
          },
          "checkout_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Checkout Url"
          },
          "checkout_expires_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Checkout Expires At"
          },
          "payment_received": {
            "type": "boolean",
            "title": "Payment Received",
            "default": false
          },
          "failure_code": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Failure Code"
          }
        },
        "type": "object",
        "required": [
          "id",
          "status",
          "source_plan_id",
          "target_plan_id",
          "source_class",
          "target_class",
          "term",
          "amount_due_minor",
          "currency",
          "source_monthly_minor",
          "target_monthly_minor",
          "total_inbound_connections",
          "total_outbound_sessions",
          "minute_rate_minor",
          "attempt_fee_minor",
          "volume_ladder_applies",
          "expires_at"
        ],
        "title": "ExpansionQuoteResponse",
        "description": "Customer figures only; provider IDs and commercial evidence stay private."
      },
      "ExportCreateRequest": {
        "properties": {
          "resource": {
            "type": "string",
            "enum": [
              "contacts",
              "contact_attempts",
              "calls",
              "survey_responses",
              "shift_confirmations",
              "appointments",
              "dnc_entries",
              "scrub_results",
              "usage_events",
              "caller_requests"
            ],
            "title": "Resource"
          },
          "format": {
            "type": "string",
            "const": "csv",
            "title": "Format",
            "default": "csv"
          },
          "filters": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object",
            "title": "Filters"
          },
          "columns": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Columns"
          }
        },
        "type": "object",
        "required": [
          "resource"
        ],
        "title": "ExportCreateRequest",
        "description": "A submission. `filters` uses the query-filter grammar of `vocapable_contracts.filters`\n(`{\"campaign_id\": \"camp_…\", \"created_at.gte\": \"2026-08-03T00:00:00Z\"}`), validated\nagainst the per-resource allowlist; `columns` empty means the resource's default set."
      },
      "ExportJob": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "resource": {
            "type": "string",
            "enum": [
              "contacts",
              "contact_attempts",
              "calls",
              "survey_responses",
              "shift_confirmations",
              "appointments",
              "dnc_entries",
              "scrub_results",
              "usage_events",
              "caller_requests"
            ],
            "title": "Resource"
          },
          "format": {
            "type": "string",
            "const": "csv",
            "title": "Format",
            "default": "csv"
          },
          "status": {
            "$ref": "#/components/schemas/JobStatus"
          },
          "filters": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object",
            "title": "Filters"
          },
          "columns": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Columns"
          },
          "row_count": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Row Count"
          },
          "download_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Download Url"
          },
          "expires_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Expires At"
          },
          "requested_by": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Requested By"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "resource",
          "status",
          "created_at",
          "updated_at"
        ],
        "title": "ExportJob",
        "description": "A job as `POST /v1/exports` and `GET /v1/exports/{id}` return it.\n\n`columns` is always the resolved list, never the empty request default: the set a job\nwas accepted with is frozen at submission so a later change to a resource's defaults\ncannot silently reshape a queued extraction."
      },
      "ExtraSessionsRequest": {
        "properties": {
          "extra_sessions": {
            "type": "integer",
            "minimum": 0,
            "title": "Extra Sessions"
          }
        },
        "type": "object",
        "required": [
          "extra_sessions"
        ],
        "title": "ExtraSessionsRequest",
        "description": "The absolute purchased quantity - never a delta, so retries converge on N."
      },
      "FailureReason": {
        "type": "string",
        "enum": [
          "wss_dropped",
          "carrier_block",
          "bootstrap_timeout",
          "provider_error"
        ],
        "title": "FailureReason",
        "description": "Why an attempt failed. Exactly four values (CANON fact 64).\n\nMachine detection is not here - it lands the attempt in the `machine` state. A\nmissing conversation slot is not here either - that is the `abandoned_no_slot`\ndisposition."
      },
      "ForwardStep": {
        "properties": {
          "type": {
            "type": "string",
            "const": "forward",
            "title": "Type",
            "default": "forward"
          },
          "to_e164": {
            "type": "string",
            "pattern": "^\\+[1-9]\\d{7,14}$",
            "title": "To E164"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "to_e164"
        ],
        "title": "ForwardStep",
        "description": "Bridge the caller to one number the tenant configured.\n\nE.164 is carried here and nowhere near a model-visible shape: this is a customer typing\na destination into their own answering policy, which is the same act as configuring a\n``HumanRep``. :class:`DirectRepHandoffTarget` deliberately carries no destination and\nis not widened by this - a live model still cannot name a number to dial."
      },
      "FtcSanRef": {
        "properties": {
          "san": {
            "type": "string",
            "title": "San"
          },
          "area_codes": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Area Codes"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "san"
        ],
        "title": "FtcSanRef",
        "description": "One FTC Subscription Account Number and the area codes it covers (CANON fact 5)."
      },
      "FunnelBucketOut": {
        "properties": {
          "campaign_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Campaign Id"
          },
          "agent_version_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Agent Version Id"
          },
          "day": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Day"
          },
          "attempts": {
            "type": "integer",
            "title": "Attempts"
          },
          "dials": {
            "type": "integer",
            "title": "Dials"
          },
          "connects": {
            "type": "integer",
            "title": "Connects"
          },
          "conversations": {
            "type": "integer",
            "title": "Conversations"
          },
          "outcomes": {
            "type": "integer",
            "title": "Outcomes"
          },
          "goal_completions": {
            "type": "integer",
            "title": "Goal Completions"
          },
          "connect_rate": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Connect Rate"
          },
          "conversation_rate": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Conversation Rate"
          },
          "outcome_rate": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Outcome Rate"
          },
          "goal_rate": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Goal Rate"
          }
        },
        "type": "object",
        "required": [
          "attempts",
          "dials",
          "connects",
          "conversations",
          "outcomes",
          "goal_completions"
        ],
        "title": "FunnelBucketOut",
        "description": "One group of the dial → connect → conversation → outcome funnel."
      },
      "FunnelReport": {
        "properties": {
          "window": {
            "$ref": "#/components/schemas/ReportWindow"
          },
          "group_by": {
            "items": {
              "type": "string",
              "enum": [
                "campaign",
                "agent_version",
                "day"
              ]
            },
            "type": "array",
            "title": "Group By"
          },
          "buckets": {
            "items": {
              "$ref": "#/components/schemas/FunnelBucketOut"
            },
            "type": "array",
            "title": "Buckets"
          }
        },
        "type": "object",
        "required": [
          "window"
        ],
        "title": "FunnelReport"
      },
      "GoogleCredential": {
        "properties": {
          "credential": {
            "type": "string",
            "maxLength": 4096,
            "minLength": 20,
            "title": "Credential"
          }
        },
        "type": "object",
        "required": [
          "credential"
        ],
        "title": "GoogleCredential",
        "description": "The GIS ID token, exactly as Google Identity Services hands it to the page."
      },
      "Guardrails": {
        "properties": {
          "disallowed_topics": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Disallowed Topics"
          },
          "blocklist_patterns": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Blocklist Patterns"
          },
          "judge": {
            "additionalProperties": true,
            "type": "object",
            "title": "Judge"
          },
          "max_call_seconds": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 900,
                "minimum": 30
              },
              {
                "type": "null"
              }
            ],
            "title": "Max Call Seconds"
          },
          "max_turns": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Max Turns"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "title": "Guardrails",
        "description": "Conversation-level controls frozen into the published version."
      },
      "HTTPValidationError": {
        "properties": {
          "detail": {
            "items": {
              "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
          }
        },
        "type": "object",
        "title": "HTTPValidationError"
      },
      "HandoffReadiness": {
        "properties": {
          "call_id": {
            "type": "string",
            "title": "Call Id"
          },
          "active": {
            "type": "boolean",
            "title": "Active"
          },
          "transport": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "phone",
                  "browser"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Transport"
          },
          "state": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "active",
                  "handoff_pending",
                  "transferred",
                  "ended",
                  "expired"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "State"
          },
          "expires_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Expires At"
          },
          "manual_available_rep_ids": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Manual Available Rep Ids"
          },
          "transfer_available": {
            "type": "boolean",
            "title": "Transfer Available"
          },
          "listen_in_available": {
            "type": "boolean",
            "title": "Listen In Available"
          },
          "blockers": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Blockers"
          }
        },
        "type": "object",
        "required": [
          "call_id",
          "active",
          "transfer_available",
          "listen_in_available"
        ],
        "title": "HandoffReadiness",
        "description": "Truthful live-call capability view, not a promise that the carrier supports it.\n\n``manual_available_rep_ids`` is a dashboard advertisement only. It is deliberately not\ncalled an eligible-target list: no current executor can auto-transfer a caller from a\nREST heartbeat, and both live-action flags stay false until the gateway/media path exists."
      },
      "HeardReadbackEvidence": {
        "properties": {
          "question_id": {
            "type": "string",
            "maxLength": 128,
            "minLength": 1,
            "title": "Question Id"
          },
          "question_text": {
            "type": "string",
            "maxLength": 6000,
            "minLength": 1,
            "title": "Question Text"
          },
          "playback_completed_at": {
            "type": "string",
            "format": "date-time",
            "title": "Playback Completed At"
          },
          "caller_started_at": {
            "type": "string",
            "format": "date-time",
            "title": "Caller Started At"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "question_id",
          "question_text",
          "playback_completed_at",
          "caller_started_at"
        ],
        "title": "HeardReadbackEvidence",
        "description": "Known playback completion followed by a trusted caller speech onset.\n\nQueue/send times do not establish playback start or completion. Receive time\nis not caller onset. Unknown or cleared playback cannot produce this proof."
      },
      "HumanRep": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "display_name": {
            "type": "string",
            "title": "Display Name"
          },
          "destination_e164": {
            "type": "string",
            "title": "Destination E164"
          },
          "user_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "User Id"
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "inactive"
            ],
            "title": "Status"
          },
          "transfer_enabled": {
            "type": "boolean",
            "title": "Transfer Enabled"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "display_name",
          "destination_e164",
          "status",
          "transfer_enabled",
          "created_at",
          "updated_at"
        ],
        "title": "HumanRep"
      },
      "HumanRepCreateRequest": {
        "properties": {
          "display_name": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1,
            "title": "Display Name"
          },
          "destination_e164": {
            "type": "string",
            "pattern": "^\\+[1-9]\\d{7,14}$",
            "title": "Destination E164"
          },
          "user_id": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "User Id"
          },
          "transfer_enabled": {
            "type": "boolean",
            "title": "Transfer Enabled",
            "default": true
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "display_name",
          "destination_e164"
        ],
        "title": "HumanRepCreateRequest",
        "description": "Create a tenant-owned human handoff destination."
      },
      "HumanRepUpdateRequest": {
        "properties": {
          "display_name": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200,
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Display Name"
          },
          "destination_e164": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^\\+[1-9]\\d{7,14}$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Destination E164"
          },
          "user_id": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "User Id"
          },
          "status": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "active",
                  "inactive"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Status"
          },
          "transfer_enabled": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Transfer Enabled"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "title": "HumanRepUpdateRequest",
        "description": "Change a destination deliberately; an inactive rep is never selected."
      },
      "ImportJob": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "status": {
            "$ref": "#/components/schemas/JobStatus"
          },
          "file_uri": {
            "type": "string",
            "title": "File Uri"
          },
          "column_mapping": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object",
            "title": "Column Mapping"
          },
          "target_list_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Target List Id"
          },
          "consent_attestation": {
            "$ref": "#/components/schemas/ConsentAttestation"
          },
          "rows_accepted": {
            "type": "integer",
            "title": "Rows Accepted"
          },
          "rows_rejected": {
            "type": "integer",
            "title": "Rows Rejected"
          },
          "rows_skipped": {
            "type": "integer",
            "title": "Rows Skipped",
            "default": 0
          },
          "on_duplicate": {
            "type": "string",
            "enum": [
              "reject",
              "skip",
              "update"
            ],
            "title": "On Duplicate",
            "default": "reject"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "status",
          "file_uri",
          "consent_attestation",
          "rows_accepted",
          "rows_rejected",
          "created_at",
          "updated_at"
        ],
        "title": "ImportJob"
      },
      "ImportRowError": {
        "properties": {
          "row": {
            "type": "integer",
            "title": "Row"
          },
          "code": {
            "type": "string",
            "enum": [
              "parse_failure",
              "invalid_e164",
              "duplicate",
              "mapping_error"
            ],
            "title": "Code"
          },
          "detail": {
            "type": "string",
            "title": "Detail"
          },
          "column": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Column"
          },
          "value": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Value"
          }
        },
        "type": "object",
        "required": [
          "row",
          "code",
          "detail"
        ],
        "title": "ImportRowError",
        "description": "One rejected row. `row` counts the header as row 1, as a spreadsheet does."
      },
      "InboundIntent": {
        "type": "string",
        "enum": [
          "stop",
          "help",
          "other"
        ],
        "title": "InboundIntent",
        "description": "Classification of an inbound SMS; `STOP` writes an internal DNC entry."
      },
      "InboundMessageAck": {
        "properties": {
          "message_id": {
            "type": "string",
            "title": "Message Id"
          },
          "intent": {
            "$ref": "#/components/schemas/InboundIntent"
          },
          "dnc_entry_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Dnc Entry Id"
          },
          "dnc_entry_created": {
            "type": "boolean",
            "title": "Dnc Entry Created"
          }
        },
        "type": "object",
        "required": [
          "message_id",
          "intent",
          "dnc_entry_id",
          "dnc_entry_created"
        ],
        "title": "InboundMessageAck"
      },
      "InboundMessageRequest": {
        "properties": {
          "from_e164": {
            "type": "string",
            "pattern": "^\\+[1-9]\\d{1,14}$",
            "title": "From E164"
          },
          "to_e164": {
            "type": "string",
            "pattern": "^\\+[1-9]\\d{1,14}$",
            "title": "To E164"
          },
          "body": {
            "type": "string",
            "title": "Body"
          },
          "provider_sid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Provider Sid"
          }
        },
        "type": "object",
        "required": [
          "from_e164",
          "to_e164",
          "body"
        ],
        "title": "InboundMessageRequest",
        "description": "The normalized provider callback body (see the module docstring)."
      },
      "InboundSmsWebhookSummary": {
        "properties": {
          "url": {
            "type": "string",
            "title": "Url"
          }
        },
        "type": "object",
        "required": [
          "url"
        ],
        "title": "InboundSmsWebhookSummary",
        "description": "The exact signed Twilio Messaging URL for one eligible BYO account.\n\nThis is a configuration address, not a credential: Twilio still proves every request\nagainst the account's vaulted auth token, and the destination number is signed and\nrouted again on receipt."
      },
      "InboundVoiceRoutingUpdateRequest": {
        "properties": {
          "inbound_agent_id": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Inbound Agent Id"
          },
          "mode": {
            "type": "string",
            "enum": [
              "agent",
              "voicemail",
              "policy"
            ],
            "title": "Mode",
            "default": "agent"
          },
          "voicemail_greeting": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 1000,
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Voicemail Greeting"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "title": "InboundVoiceRoutingUpdateRequest",
        "description": "Choose (or clear) the receiving mode for one inbound voice number.\n\n``None`` intentionally clears the route.  A non-null value is validated server-side as\na tenant-owned agent with an already-published immutable version before the number can\naccept a call, so configuring this endpoint can never make a draft callable.  A\n``voicemail`` route is *inbound caller voicemail only*: its greeting is immutable per\nadmitted call, and the server refuses it unless the published profile and exact matched\ncaller jurisdiction permit a durable one-party recording. It does not enable outbound\nanswering-machine drops.\n\n``policy`` is deliberately unreachable here even though it is a member of the shared\nmode vocabulary: an answering-policy route is only meaningful alongside the document\nthat describes it, so it is armed by writing that document and cleared by deleting it.\nAccepting the mode on this endpoint would let a number claim a route with no policy\nbehind it, which the `inbound_route_shape` CHECK exists to make impossible."
      },
      "InboundVoiceWebhookSummary": {
        "properties": {
          "url": {
            "type": "string",
            "title": "Url"
          },
          "status_callback_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Status Callback Url"
          }
        },
        "type": "object",
        "required": [
          "url"
        ],
        "title": "InboundVoiceWebhookSummary",
        "description": "The exact signed Twilio Voice URL for one eligible BYO account.\n\nIt is publishable configuration, not a bearer capability: Twilio still signs every\nrequest with the account's vaulted auth token, and the signed destination is then\nresolved against one active carrier-confirmed voice number with an explicit receiving\nagent.  The route returns no useful response until all of those server-side checks pass."
      },
      "InboundVoicemail": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "status": {
            "type": "string",
            "enum": [
              "recording",
              "ready",
              "importing",
              "available",
              "absent",
              "failed"
            ],
            "title": "Status"
          },
          "call_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Call Id"
          },
          "recording_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Recording Id"
          },
          "phone_number_id": {
            "type": "string",
            "title": "Phone Number Id"
          },
          "agent_version_id": {
            "type": "string",
            "title": "Agent Version Id"
          },
          "contact_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Contact Id"
          },
          "from_e164": {
            "type": "string",
            "title": "From E164"
          },
          "to_e164": {
            "type": "string",
            "title": "To E164"
          },
          "duration_seconds": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Duration Seconds"
          },
          "received_at": {
            "type": "string",
            "format": "date-time",
            "title": "Received At"
          },
          "completed_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Completed At"
          },
          "failure_code": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Failure Code"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
          },
          "recording_action_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Recording Action At"
          },
          "max_recording_seconds": {
            "type": "integer",
            "title": "Max Recording Seconds"
          }
        },
        "type": "object",
        "required": [
          "id",
          "status",
          "phone_number_id",
          "agent_version_id",
          "from_e164",
          "to_e164",
          "received_at",
          "updated_at",
          "max_recording_seconds"
        ],
        "title": "InboundVoicemail",
        "description": "The full non-audio receipt for ``GET /calls/inbound-voicemails/{id}``."
      },
      "InboundVoicemailSummary": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "status": {
            "type": "string",
            "enum": [
              "recording",
              "ready",
              "importing",
              "available",
              "absent",
              "failed"
            ],
            "title": "Status"
          },
          "call_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Call Id"
          },
          "recording_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Recording Id"
          },
          "phone_number_id": {
            "type": "string",
            "title": "Phone Number Id"
          },
          "agent_version_id": {
            "type": "string",
            "title": "Agent Version Id"
          },
          "contact_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Contact Id"
          },
          "from_e164": {
            "type": "string",
            "title": "From E164"
          },
          "to_e164": {
            "type": "string",
            "title": "To E164"
          },
          "duration_seconds": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Duration Seconds"
          },
          "received_at": {
            "type": "string",
            "format": "date-time",
            "title": "Received At"
          },
          "completed_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Completed At"
          },
          "failure_code": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Failure Code"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "status",
          "phone_number_id",
          "agent_version_id",
          "from_e164",
          "to_e164",
          "received_at",
          "updated_at"
        ],
        "title": "InboundVoicemailSummary",
        "description": "One inbound voicemail receipt in the customer inbox.\n\nA receipt appears as soon as a lawful caller is invited to record, so a carrier or\nstorage failure is visible rather than silently dropping the message. ``call_id`` and\n``recording_id`` stay null until private audio has been imported into the ordinary Call\nand Recording records; clients must not construct an audio URL from this response."
      },
      "InboxContactRef": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "company": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Company"
          },
          "phone_e164": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Phone E164"
          }
        },
        "type": "object",
        "required": [
          "id"
        ],
        "title": "InboxContactRef",
        "description": "The caller, as the inbox names them - enough to render a row, never the full CRM."
      },
      "InboxEntry": {
        "properties": {
          "kind": {
            "type": "string",
            "enum": [
              "message",
              "support_ticket",
              "callback",
              "appointment",
              "voicemail"
            ],
            "title": "Kind"
          },
          "id": {
            "type": "string",
            "title": "Id"
          },
          "state": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "State"
          },
          "contact": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/InboxContactRef"
              },
              {
                "type": "null"
              }
            ]
          },
          "call_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Call Id"
          },
          "agent_version_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Agent Version Id"
          },
          "phone_number_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Phone Number Id"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "snippet": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Snippet"
          }
        },
        "type": "object",
        "required": [
          "kind",
          "id",
          "created_at"
        ],
        "title": "InboxEntry",
        "description": "One row of the merged feed. ``kind`` says which durable resource ``id`` names.\n\nA single shape rather than a five-member discriminated union: every kind carries the\nsame fields, only their nullability differs by source (an appointment names no line,\nan anonymous voicemail names no contact), and one shape is what lets the portal render\none list component over the whole queue."
      },
      "InboxPage": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/InboxEntry"
            },
            "type": "array",
            "title": "Data"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "has_more": {
            "type": "boolean",
            "title": "Has More",
            "default": false
          }
        },
        "type": "object",
        "title": "InboxPage",
        "description": "`GET /v1/inbox` - the merged keyset page (created_at desc, id desc)."
      },
      "IngestedDocumentReport": {
        "properties": {
          "file_name": {
            "type": "string",
            "title": "File Name"
          },
          "format": {
            "type": "string",
            "title": "Format"
          },
          "sections": {
            "type": "integer",
            "title": "Sections"
          },
          "tokens": {
            "type": "integer",
            "title": "Tokens"
          }
        },
        "type": "object",
        "required": [
          "file_name",
          "format",
          "sections",
          "tokens"
        ],
        "title": "IngestedDocumentReport",
        "description": "What one uploaded document cost, so \"distill harder\" names a file.\n\nThe parts need not sum to the version's `compiled_token_count`: a BPE tokenizer merges\nacross the joins between documents, so the pack is counted once as a whole."
      },
      "IntegrationAuthorization": {
        "properties": {
          "provider": {
            "type": "string",
            "const": "calendar",
            "title": "Provider"
          },
          "authorization_url": {
            "type": "string",
            "title": "Authorization Url"
          },
          "state_expires_at": {
            "type": "string",
            "format": "date-time",
            "title": "State Expires At"
          }
        },
        "type": "object",
        "required": [
          "provider",
          "authorization_url",
          "state_expires_at"
        ],
        "title": "IntegrationAuthorization",
        "description": "Where to send the customer's admin, and how long the signed state admits them."
      },
      "IntegrationConnectionCreateRequest": {
        "properties": {
          "provider": {
            "type": "string",
            "const": "calendar",
            "title": "Provider"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "provider"
        ],
        "title": "IntegrationConnectionCreateRequest",
        "description": "Start an OAuth consent. No connection exists until the callback completes it."
      },
      "IntegrationConnectionSummary": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "provider": {
            "type": "string",
            "title": "Provider"
          },
          "external_account_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "External Account Id"
          },
          "scopes": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Scopes"
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "expired",
              "revoked",
              "error"
            ],
            "title": "Status"
          },
          "last_refreshed_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Refreshed At"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "provider",
          "status",
          "created_at",
          "updated_at"
        ],
        "title": "IntegrationConnectionSummary",
        "description": "A connection as its tenant sees it - token material is structurally absent."
      },
      "Invoice": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "period_start": {
            "type": "string",
            "format": "date-time",
            "title": "Period Start"
          },
          "period_end": {
            "type": "string",
            "format": "date-time",
            "title": "Period End"
          },
          "line_items": {
            "items": {},
            "type": "array",
            "title": "Line Items"
          },
          "total_minor": {
            "type": "integer",
            "title": "Total Minor"
          },
          "currency": {
            "type": "string",
            "title": "Currency"
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "open",
              "paid",
              "void",
              "uncollectible"
            ],
            "title": "Status"
          },
          "external_ref": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "External Ref"
          },
          "hosted_invoice_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Hosted Invoice Url"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "period_start",
          "period_end",
          "total_minor",
          "currency",
          "status",
          "created_at",
          "updated_at"
        ],
        "title": "Invoice"
      },
      "JobStatus": {
        "type": "string",
        "enum": [
          "queued",
          "running",
          "completed",
          "failed"
        ],
        "title": "JobStatus",
        "description": "Lifecycle shared by the async import and export jobs."
      },
      "KnowledgePackCreateRequest": {
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1,
            "title": "Name"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "name"
        ],
        "title": "KnowledgePackCreateRequest",
        "description": "`POST /v1/knowledge-packs`. Content arrives as versions, never on the pack itself."
      },
      "KnowledgePackDocumentUpload": {
        "properties": {
          "file_name": {
            "type": "string",
            "maxLength": 255,
            "minLength": 1,
            "title": "File Name"
          },
          "content": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Content"
          },
          "content_base64": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Content Base64"
          },
          "format": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "pdf",
                  "docx",
                  "csv",
                  "md",
                  "txt"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Format"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "file_name"
        ],
        "title": "KnowledgePackDocumentUpload",
        "description": "One uploaded file.\n\nThe bytes arrive base64-encoded (`content_base64`) or, for the three text formats, as\nplain text (`content`) - never as `multipart/form-data`, which needs `python-multipart`\nand is not a workspace dependency. `ContactImportRequest` made the same call for CSV\nuploads, and the extractor takes bytes either way, so the wire shape can change later\nwithout touching ingestion."
      },
      "KnowledgePackIngestRequest": {
        "properties": {
          "documents": {
            "items": {
              "$ref": "#/components/schemas/KnowledgePackDocumentUpload"
            },
            "type": "array",
            "maxItems": 20,
            "minItems": 1,
            "title": "Documents"
          },
          "budget_tokens": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 16000,
                "minimum": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Budget Tokens"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "documents"
        ],
        "title": "KnowledgePackIngestRequest",
        "description": "`POST /v1/knowledge-packs/{id}/documents` - upload documents as the next version.\n\n`budget_tokens` is the caller's own ceiling, not the platform's. The 16,000-token hard\ncap (docs/08-ai-quality.md, CANON fact 12) always applies and bounds this field; leaving\nit unset means only the hard cap is enforced, which is exactly what the hand-authored\nversion endpoint does."
      },
      "KnowledgePackIngestResponse": {
        "properties": {
          "version": {
            "$ref": "#/components/schemas/KnowledgePackVersionResource"
          },
          "documents": {
            "items": {
              "$ref": "#/components/schemas/IngestedDocumentReport"
            },
            "type": "array",
            "title": "Documents"
          }
        },
        "type": "object",
        "required": [
          "version",
          "documents"
        ],
        "title": "KnowledgePackIngestResponse",
        "description": "The created version plus the ingest accounting behind it."
      },
      "KnowledgePackSummary": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "current_version": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Current Version"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "name",
          "created_at",
          "updated_at"
        ],
        "title": "KnowledgePackSummary",
        "description": "A pack as a list row. `current_version` is the highest version that reached `ready`."
      },
      "KnowledgePackVersionCreateRequest": {
        "properties": {
          "sources": {
            "items": {
              "$ref": "#/components/schemas/PackSource"
            },
            "type": "array",
            "minItems": 1,
            "title": "Sources"
          },
          "compiled_token_count": {
            "type": "integer",
            "minimum": 1,
            "title": "Compiled Token Count"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "sources",
          "compiled_token_count"
        ],
        "title": "KnowledgePackVersionCreateRequest",
        "description": "`POST /v1/knowledge-packs/{id}/versions` - publish an edit as a new version.\n\n`compiled_token_count` is measured by whatever compiled the pack - the distillation\njob, or the authoring editor's live token meter. The control plane holds no model\ntokenizer (the tokenizer lives with the serving model on the GPU plane), so it\nvalidates the declared count against the budget rather than recomputing it. The count\nis checked, never clamped: over the hard cap the request is refused and no version is\nwritten."
      },
      "KnowledgePackVersionResource": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "knowledge_pack_id": {
            "type": "string",
            "title": "Knowledge Pack Id"
          },
          "version": {
            "type": "integer",
            "title": "Version"
          },
          "content_hash": {
            "type": "string",
            "title": "Content Hash"
          },
          "compiled_token_count": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Compiled Token Count"
          },
          "status": {
            "type": "string",
            "enum": [
              "compiling",
              "ready",
              "failed"
            ],
            "title": "Status"
          },
          "sources": {
            "items": {
              "$ref": "#/components/schemas/PackSource"
            },
            "type": "array",
            "title": "Sources"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
          },
          "over_default_budget": {
            "type": "boolean",
            "title": "Over Default Budget",
            "description": "Compiled above the 8k default budget but inside the 16k hard cap.\n\nPermitted, and worth telling the tenant: a cap-size pack roughly doubles cold\nprefill and halves the number of warm pack prefixes a node holds.",
            "readOnly": true
          }
        },
        "type": "object",
        "required": [
          "id",
          "knowledge_pack_id",
          "version",
          "content_hash",
          "status",
          "sources",
          "created_at",
          "updated_at",
          "over_default_budget"
        ],
        "title": "KnowledgePackVersionResource",
        "description": "A compiled version. Immutable once `ready` - an edit is the next version."
      },
      "LatencyBucketOut": {
        "properties": {
          "campaign_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Campaign Id"
          },
          "agent_version_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Agent Version Id"
          },
          "day": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Day"
          },
          "turns": {
            "type": "integer",
            "title": "Turns"
          },
          "voice_to_voice_samples": {
            "type": "integer",
            "title": "Voice To Voice Samples"
          },
          "voice_to_voice_p50_ms": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Voice To Voice P50 Ms"
          },
          "voice_to_voice_p95_ms": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Voice To Voice P95 Ms"
          },
          "voice_to_voice_p99_ms": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Voice To Voice P99 Ms"
          },
          "llm_ttft_samples": {
            "type": "integer",
            "title": "Llm Ttft Samples"
          },
          "llm_ttft_p50_ms": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Llm Ttft P50 Ms"
          },
          "llm_ttft_p95_ms": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Llm Ttft P95 Ms"
          },
          "llm_ttft_p99_ms": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Llm Ttft P99 Ms"
          }
        },
        "type": "object",
        "required": [
          "turns",
          "voice_to_voice_samples",
          "llm_ttft_samples"
        ],
        "title": "LatencyBucketOut",
        "description": "Turn-latency percentiles for one group; `null` means the group had no sample."
      },
      "LatencyReport": {
        "properties": {
          "window": {
            "$ref": "#/components/schemas/ReportWindow"
          },
          "group_by": {
            "items": {
              "type": "string",
              "enum": [
                "campaign",
                "agent_version",
                "day"
              ]
            },
            "type": "array",
            "title": "Group By"
          },
          "buckets": {
            "items": {
              "$ref": "#/components/schemas/LatencyBucketOut"
            },
            "type": "array",
            "title": "Buckets"
          }
        },
        "type": "object",
        "required": [
          "window"
        ],
        "title": "LatencyReport"
      },
      "LeadStatus": {
        "type": "string",
        "enum": [
          "new",
          "working",
          "qualified",
          "unqualified",
          "won",
          "lost"
        ],
        "title": "LeadStatus",
        "description": "Where the tenant's own pipeline holds a contact (migration 0035).\n\nDurable per-contact intent, deliberately separate from `Disposition`, which is pinned\n(CANON fact 28) and answers \"what happened to the dial\" rather than \"is this person\ninterested\". A contact is dialed many times and disposed once per attempt; the lead\nstatus is the one value that survives across those attempts.\n\nIt carries NO compliance meaning whatsoever: `LOST` is not a suppression, and marking\na contact `WON` neither grants nor implies consent. Suppression is `dnc_entries` and\nconsent is `consent_records` - both have their own writers, and neither reads this\ncolumn."
      },
      "LineType": {
        "type": "string",
        "enum": [
          "landline",
          "mobile",
          "fixed_voip",
          "nonfixed_voip",
          "unknown"
        ],
        "title": "LineType"
      },
      "LiveCallBillingProjection": {
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "not_available",
              "estimated"
            ],
            "title": "Status"
          },
          "basis": {
            "anyOf": [
              {
                "type": "string",
                "const": "managed_test_call_prepaid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Basis"
          },
          "connected_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Connected At"
          },
          "projected_through": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Projected Through"
          },
          "elapsed_seconds": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Elapsed Seconds"
          },
          "projected_billable_seconds": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Projected Billable Seconds"
          },
          "projected_amount_minor": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Projected Amount Minor"
          },
          "platform_rate_per_minute_minor": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Platform Rate Per Minute Minor"
          },
          "currency": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Currency"
          }
        },
        "type": "object",
        "required": [
          "status"
        ],
        "title": "LiveCallBillingProjection",
        "description": "A bounded elapsed-time estimate for the one live lane with a frozen platform rate.\n\nIt is available only while a platform-managed, prepaid, campaignless test call holds a\ndurable authorization.  ``connected_at`` is the redeemed live-session receipt's trusted\nstart, while the carrier's terminal callback remains the authority for the actual debit.\nBYO carrier prices and ordinary production-call carrier amounts are intentionally absent."
      },
      "LlmRoute": {
        "properties": {
          "primary": {
            "type": "string",
            "minLength": 1,
            "title": "Primary"
          },
          "fallbacks": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Fallbacks"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "primary"
        ],
        "title": "LlmRoute",
        "description": "Provider routing chain with health-checked failover (CANON fact 24).\n\nLLM chain only. STT and TTS chains are platform-defaulted at P1 and are not\nAPI-settable (CANON fact 80), which is what `extra=\"forbid\"` refuses here."
      },
      "MenuStep-Input": {
        "properties": {
          "type": {
            "type": "string",
            "const": "menu",
            "title": "Type",
            "default": "menu"
          },
          "prompt": {
            "type": "string",
            "maxLength": 1000,
            "minLength": 1,
            "title": "Prompt"
          },
          "branches": {
            "patternProperties": {
              "^[0-9*#]$": {
                "items": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/MenuStep-Input"
                    },
                    {
                      "$ref": "#/components/schemas/RingHumansStep"
                    },
                    {
                      "$ref": "#/components/schemas/AiStep"
                    },
                    {
                      "$ref": "#/components/schemas/VoicemailStep"
                    },
                    {
                      "$ref": "#/components/schemas/SayStep"
                    },
                    {
                      "$ref": "#/components/schemas/ForwardStep"
                    }
                  ],
                  "discriminator": {
                    "propertyName": "type",
                    "mapping": {
                      "ai": "#/components/schemas/AiStep",
                      "forward": "#/components/schemas/ForwardStep",
                      "menu": "#/components/schemas/MenuStep-Input",
                      "ring_humans": "#/components/schemas/RingHumansStep",
                      "say": "#/components/schemas/SayStep",
                      "voicemail": "#/components/schemas/VoicemailStep"
                    }
                  }
                },
                "type": "array",
                "maxItems": 12,
                "minItems": 1
              }
            },
            "type": "object",
            "maxProperties": 12,
            "minProperties": 1,
            "title": "Branches"
          },
          "timeout_seconds": {
            "type": "integer",
            "maximum": 30,
            "minimum": 1,
            "title": "Timeout Seconds",
            "default": 5
          },
          "max_invalid_attempts": {
            "type": "integer",
            "maximum": 5,
            "minimum": 1,
            "title": "Max Invalid Attempts",
            "default": 2
          },
          "timeout_branch": {
            "items": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/MenuStep-Input"
                },
                {
                  "$ref": "#/components/schemas/RingHumansStep"
                },
                {
                  "$ref": "#/components/schemas/AiStep"
                },
                {
                  "$ref": "#/components/schemas/VoicemailStep"
                },
                {
                  "$ref": "#/components/schemas/SayStep"
                },
                {
                  "$ref": "#/components/schemas/ForwardStep"
                }
              ],
              "discriminator": {
                "propertyName": "type",
                "mapping": {
                  "ai": "#/components/schemas/AiStep",
                  "forward": "#/components/schemas/ForwardStep",
                  "menu": "#/components/schemas/MenuStep-Input",
                  "ring_humans": "#/components/schemas/RingHumansStep",
                  "say": "#/components/schemas/SayStep",
                  "voicemail": "#/components/schemas/VoicemailStep"
                }
              }
            },
            "type": "array",
            "maxItems": 12,
            "minItems": 1,
            "title": "Timeout Branch"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "prompt",
          "branches",
          "timeout_branch"
        ],
        "title": "MenuStep",
        "description": "Read options, then follow the branch the caller pressed.\n\n``timeout_branch`` is required rather than optional, and it is also where the invalid\nbudget lands once it is spent: a menu whose silent or fumbling caller has nowhere to go\nre-prompts forever, which is the single most common way a keypress tree becomes a trap."
      },
      "MenuStep-Output": {
        "properties": {
          "type": {
            "type": "string",
            "const": "menu",
            "title": "Type",
            "default": "menu"
          },
          "prompt": {
            "type": "string",
            "maxLength": 1000,
            "minLength": 1,
            "title": "Prompt"
          },
          "branches": {
            "patternProperties": {
              "^[0-9*#]$": {
                "items": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/MenuStep-Output"
                    },
                    {
                      "$ref": "#/components/schemas/RingHumansStep"
                    },
                    {
                      "$ref": "#/components/schemas/AiStep"
                    },
                    {
                      "$ref": "#/components/schemas/VoicemailStep"
                    },
                    {
                      "$ref": "#/components/schemas/SayStep"
                    },
                    {
                      "$ref": "#/components/schemas/ForwardStep"
                    }
                  ],
                  "discriminator": {
                    "propertyName": "type",
                    "mapping": {
                      "ai": "#/components/schemas/AiStep",
                      "forward": "#/components/schemas/ForwardStep",
                      "menu": "#/components/schemas/MenuStep-Output",
                      "ring_humans": "#/components/schemas/RingHumansStep",
                      "say": "#/components/schemas/SayStep",
                      "voicemail": "#/components/schemas/VoicemailStep"
                    }
                  }
                },
                "type": "array",
                "maxItems": 12,
                "minItems": 1
              }
            },
            "type": "object",
            "maxProperties": 12,
            "minProperties": 1,
            "title": "Branches"
          },
          "timeout_seconds": {
            "type": "integer",
            "maximum": 30,
            "minimum": 1,
            "title": "Timeout Seconds",
            "default": 5
          },
          "max_invalid_attempts": {
            "type": "integer",
            "maximum": 5,
            "minimum": 1,
            "title": "Max Invalid Attempts",
            "default": 2
          },
          "timeout_branch": {
            "items": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/MenuStep-Output"
                },
                {
                  "$ref": "#/components/schemas/RingHumansStep"
                },
                {
                  "$ref": "#/components/schemas/AiStep"
                },
                {
                  "$ref": "#/components/schemas/VoicemailStep"
                },
                {
                  "$ref": "#/components/schemas/SayStep"
                },
                {
                  "$ref": "#/components/schemas/ForwardStep"
                }
              ],
              "discriminator": {
                "propertyName": "type",
                "mapping": {
                  "ai": "#/components/schemas/AiStep",
                  "forward": "#/components/schemas/ForwardStep",
                  "menu": "#/components/schemas/MenuStep-Output",
                  "ring_humans": "#/components/schemas/RingHumansStep",
                  "say": "#/components/schemas/SayStep",
                  "voicemail": "#/components/schemas/VoicemailStep"
                }
              }
            },
            "type": "array",
            "maxItems": 12,
            "minItems": 1,
            "title": "Timeout Branch"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "prompt",
          "branches",
          "timeout_branch"
        ],
        "title": "MenuStep",
        "description": "Read options, then follow the branch the caller pressed.\n\n``timeout_branch`` is required rather than optional, and it is also where the invalid\nbudget lands once it is spent: a menu whose silent or fumbling caller has nowhere to go\nre-prompts forever, which is the single most common way a keypress tree becomes a trap."
      },
      "MessageDirection": {
        "type": "string",
        "enum": [
          "outbound",
          "inbound"
        ],
        "title": "MessageDirection"
      },
      "MessageStatus": {
        "type": "string",
        "enum": [
          "queued",
          "sent",
          "delivered",
          "failed",
          "received"
        ],
        "title": "MessageStatus"
      },
      "MessageSummary": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "direction": {
            "$ref": "#/components/schemas/MessageDirection"
          },
          "phone_number_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Phone Number Id"
          },
          "contact_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Contact Id"
          },
          "to_e164": {
            "type": "string",
            "title": "To E164"
          },
          "from_e164": {
            "type": "string",
            "title": "From E164"
          },
          "template_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Template Id"
          },
          "body_rendered": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Body Rendered"
          },
          "status": {
            "$ref": "#/components/schemas/MessageStatus"
          },
          "provider_sid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Provider Sid"
          },
          "origin_call_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Origin Call Id"
          },
          "inbound_intent": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/InboundIntent"
              },
              {
                "type": "null"
              }
            ]
          },
          "segments": {
            "type": "integer",
            "title": "Segments"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "direction",
          "phone_number_id",
          "contact_id",
          "to_e164",
          "from_e164",
          "template_id",
          "body_rendered",
          "status",
          "provider_sid",
          "origin_call_id",
          "inbound_intent",
          "segments",
          "created_at",
          "updated_at"
        ],
        "title": "MessageSummary"
      },
      "MessageTemplateCreateRequest": {
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1,
            "title": "Name"
          },
          "locale": {
            "type": "string",
            "maxLength": 35,
            "minLength": 2,
            "title": "Locale",
            "default": "en"
          },
          "body": {
            "type": "string",
            "minLength": 1,
            "title": "Body"
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "active"
            ],
            "title": "Status",
            "default": "active"
          }
        },
        "type": "object",
        "required": [
          "name",
          "body"
        ],
        "title": "MessageTemplateCreateRequest"
      },
      "MessageTemplateSummary": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "locale": {
            "type": "string",
            "title": "Locale"
          },
          "body": {
            "type": "string",
            "title": "Body"
          },
          "status": {
            "type": "string",
            "title": "Status"
          },
          "variables": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Variables"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "name",
          "locale",
          "body",
          "status",
          "variables",
          "created_at",
          "updated_at"
        ],
        "title": "MessageTemplateSummary"
      },
      "MessageTemplateUpdateRequest": {
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "active",
              "archived"
            ],
            "title": "Status"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "status"
        ],
        "title": "MessageTemplateUpdateRequest",
        "description": "`PATCH /v1/message-templates/{id}` - a status flip and NOTHING else (ADR-0037).\n\nBody, name, and locale are immutable by construction: agent versions pin templates by\nid (`sms_template_ids`), so an editable body would let a live agent send text nobody\nreviewed under an id that was. `extra=\"forbid\"` is what refuses the attempt with a\n422 naming the field. `archived` retires a template from sending without deleting the\nrow the pins reference; `active` restores it (and activates a draft)."
      },
      "MeterUsage": {
        "properties": {
          "meter": {
            "type": "string",
            "enum": [
              "telephony_minutes",
              "stt_audio_seconds",
              "tts_characters",
              "llm_prompt_tokens",
              "llm_cached_prompt_tokens",
              "llm_completion_tokens",
              "gpu_seconds",
              "sms_segments",
              "lookup_requests"
            ],
            "title": "Meter"
          },
          "billing": {
            "type": "string",
            "enum": [
              "billed",
              "bundled",
              "internal",
              "carrier_billed"
            ],
            "title": "Billing"
          },
          "quantity": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Quantity"
          },
          "event_count": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Event Count"
          },
          "rated_amount_minor": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Rated Amount Minor"
          },
          "included_quantity": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included Quantity"
          },
          "overage_quantity": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Overage Quantity"
          }
        },
        "type": "object",
        "required": [
          "meter",
          "billing"
        ],
        "title": "MeterUsage",
        "description": "One meter's totals for the period.\n\nThe component's headline invariant is the ``quantity is None`` vs\n``billing == \"carrier_billed\"`` split - they are **independent facts**:\n\n* ``quantity is None`` - the ledger holds no rows for this meter. Nothing was metered.\n* ``billing == \"carrier_billed\"`` - this tenant's own carrier bills the meter directly\n  (CANON fact 70), so Vocapable never writes a row for it.\n\nA tenant that switched managed→byo mid-period therefore still reports the minutes it\nreally accrued while carrying ``carrier_billed``, and a managed tenant with no calls\nreports ``0``, never ``null``."
      },
      "MobileAiContentReportReceipt": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "call_id": {
            "type": "string",
            "title": "Call Id"
          },
          "reason": {
            "type": "string",
            "enum": [
              "inaccurate_or_misleading",
              "unsafe_or_harmful",
              "offensive_or_abusive",
              "privacy_or_personal_data"
            ],
            "title": "Reason"
          },
          "review_status": {
            "type": "string",
            "const": "pending",
            "title": "Review Status"
          },
          "created": {
            "type": "boolean",
            "title": "Created"
          },
          "reported_at": {
            "type": "string",
            "format": "date-time",
            "title": "Reported At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "call_id",
          "reason",
          "review_status",
          "created",
          "reported_at"
        ],
        "title": "MobileAiContentReportReceipt",
        "description": "A truthful acknowledgement that an authorized review request was received."
      },
      "MobileAiContentReportRequest": {
        "properties": {
          "reason": {
            "type": "string",
            "enum": [
              "inaccurate_or_misleading",
              "unsafe_or_harmful",
              "offensive_or_abusive",
              "privacy_or_personal_data"
            ],
            "title": "Reason"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "reason"
        ],
        "title": "MobileAiContentReportRequest",
        "description": "A no-free-text report about AI-generated call/transcript output.\n\nThe source call is supplied only in the authenticated route path.  Keeping this body to\none controlled reason prevents a mobile report flow from duplicating transcript text,\nrecording audio, customer contact details, or other sensitive content into a separate\nreporting store."
      },
      "MobileAppointment": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "call_id": {
            "type": "string",
            "title": "Call Id"
          },
          "starts_at": {
            "type": "string",
            "format": "date-time",
            "title": "Starts At"
          },
          "ends_at": {
            "type": "string",
            "format": "date-time",
            "title": "Ends At"
          },
          "contact_timezone": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Contact Timezone"
          },
          "status": {
            "type": "string",
            "enum": [
              "booked",
              "rescheduled",
              "cancelled",
              "completed",
              "no_show"
            ],
            "title": "Status"
          },
          "invite_sent_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Invite Sent At"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "call_id",
          "starts_at",
          "ends_at",
          "status",
          "created_at",
          "updated_at"
        ],
        "title": "MobileAppointment",
        "description": "A mobile appointment receipt without contact, attendee, or provider identifiers."
      },
      "MobileAvailabilitySetRequest": {
        "properties": {
          "available_until": {
            "type": "string",
            "format": "date-time",
            "title": "Available Until"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "available_until"
        ],
        "title": "MobileAvailabilitySetRequest",
        "description": "Set the caller's own availability until one explicit UTC instant."
      },
      "MobileAvailabilityWindow": {
        "properties": {
          "membership_id": {
            "type": "string",
            "title": "Membership Id"
          },
          "rep_id": {
            "type": "string",
            "title": "Rep Id"
          },
          "status": {
            "type": "string",
            "enum": [
              "available",
              "ended",
              "expired"
            ],
            "title": "Status"
          },
          "available": {
            "type": "boolean",
            "title": "Available"
          },
          "available_until": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Available Until"
          },
          "declared_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Declared At"
          },
          "ended_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ended At"
          },
          "updated_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At"
          }
        },
        "type": "object",
        "required": [
          "membership_id",
          "rep_id",
          "status",
          "available"
        ],
        "title": "MobileAvailabilityWindow",
        "description": "The privacy-minimized state shown in the mobile team view."
      },
      "MobileBillingBudget": {
        "properties": {
          "amount_minor": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Amount Minor"
          },
          "currency": {
            "type": "string",
            "maxLength": 12,
            "minLength": 3,
            "title": "Currency"
          },
          "period": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "daily",
                  "monthly"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Period"
          },
          "low_balance_threshold_minor": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 0
              },
              {
                "type": "null"
              }
            ],
            "title": "Low Balance Threshold Minor"
          },
          "version": {
            "type": "integer",
            "minimum": 1,
            "title": "Version"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "currency",
          "version",
          "updated_at"
        ],
        "title": "MobileBillingBudget",
        "description": "The current spend guardrails; no payment method or provider data is representable."
      },
      "MobileBillingBudgetUpdateRequest": {
        "properties": {
          "expected_version": {
            "type": "integer",
            "minimum": 1,
            "title": "Expected Version"
          },
          "amount_minor": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Amount Minor"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "expected_version",
          "amount_minor"
        ],
        "title": "MobileBillingBudgetUpdateRequest",
        "description": "One displayed spend-cap edit bound to a browser step-up grant and a revision.\n\nThe server preserves the wallet's existing low-balance threshold and known period.\nThis keeps the small native editor from silently clearing a browser-configured setting."
      },
      "MobileBillingInvoiceSummary": {
        "properties": {
          "id": {
            "type": "string",
            "maxLength": 128,
            "minLength": 1,
            "title": "Id"
          },
          "status": {
            "type": "string",
            "enum": [
              "paid",
              "open",
              "past_due",
              "void",
              "unavailable"
            ],
            "title": "Status"
          },
          "amount_minor": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Amount Minor"
          },
          "currency": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 12,
                "minLength": 3
              },
              {
                "type": "null"
              }
            ],
            "title": "Currency"
          },
          "due_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Due At"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "status"
        ],
        "title": "MobileBillingInvoiceSummary",
        "description": "A compact mirror summary.  Stripe-hosted invoice links stay browser-only."
      },
      "MobileBillingPortalRequest": {
        "properties": {},
        "additionalProperties": false,
        "type": "object",
        "title": "MobileBillingPortalRequest",
        "description": "An intentionally empty command; the server always opens the generic safe portal."
      },
      "MobileBillingPortalSession": {
        "properties": {
          "url": {
            "type": "string",
            "maxLength": 2048,
            "minLength": 8,
            "title": "Url"
          },
          "expires_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Expires At"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "url"
        ],
        "title": "MobileBillingPortalSession",
        "description": "One ephemeral Stripe-hosted URL, never a stored/customer/provider identifier."
      },
      "MobileBootstrapProfile": {
        "properties": {
          "tenant_id": {
            "type": "string",
            "title": "Tenant Id"
          },
          "membership": {
            "$ref": "#/components/schemas/TenantMembershipSummary"
          },
          "capabilities": {
            "items": {
              "$ref": "#/components/schemas/MobileCapability"
            },
            "type": "array",
            "title": "Capabilities"
          },
          "device": {
            "$ref": "#/components/schemas/MobileDeviceSummary"
          }
        },
        "type": "object",
        "required": [
          "tenant_id",
          "membership",
          "capabilities",
          "device"
        ],
        "title": "MobileBootstrapProfile",
        "description": "The authenticated app's identity/bootstrap response at ``GET /v1/mobile/me``.\n\nOperational selector data (contacts, agents, schedules, team rows) deliberately\nstays on its own capability-gated endpoints.  This profile contains only the facts\nevery app boot needs and no push token or refresh/session secret."
      },
      "MobileCalendarIntegrationReadiness": {
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "connected",
              "reconnect_required",
              "not_connected",
              "unavailable"
            ],
            "title": "Status"
          },
          "provider": {
            "anyOf": [
              {
                "type": "string",
                "const": "google_calendar"
              },
              {
                "type": "null"
              }
            ],
            "title": "Provider"
          },
          "booking_enabled": {
            "type": "boolean",
            "title": "Booking Enabled"
          },
          "manage_on_web": {
            "type": "boolean",
            "const": true,
            "title": "Manage On Web",
            "default": true
          }
        },
        "type": "object",
        "required": [
          "status",
          "booking_enabled"
        ],
        "title": "MobileCalendarIntegrationReadiness",
        "description": "The connection state relevant to call-bound calendar booking.\n\n``provider`` identifies only the deployment-supported adapter.  It is never an OAuth\naccount identity.  ``booking_enabled`` is deliberately conservative: an active\nconnection is necessary, but a particular agent still needs the approved calendar tools\nand a live call still evaluates its normal server-side policy."
      },
      "MobileCallAiAgent": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "published_version": {
            "type": "integer",
            "minimum": 1,
            "title": "Published Version"
          },
          "eligibility": {
            "type": "string",
            "const": "published_active",
            "title": "Eligibility",
            "default": "published_active"
          }
        },
        "type": "object",
        "required": [
          "id",
          "name",
          "published_version"
        ],
        "title": "MobileCallAiAgent",
        "description": "An active agent with the published snapshot a mobile launch may pin."
      },
      "MobileCallAiContact": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "display_name": {
            "type": "string",
            "title": "Display Name"
          },
          "company": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Company"
          }
        },
        "type": "object",
        "required": [
          "id",
          "display_name"
        ],
        "title": "MobileCallAiContact",
        "description": "A live contact offered by the mobile Call AI selector.\n\nIts direct phone number and email intentionally stay out of this shape.  Listing a\ncontact does not assert it is dialable: the shared launch path still evaluates DNC,\nconsent, jurisdiction, frequency, caller-ID, agreement, and spend controls."
      },
      "MobileCallAiRequest": {
        "properties": {
          "agent_id": {
            "type": "string",
            "maxLength": 64,
            "minLength": 1,
            "title": "Agent Id"
          },
          "contact_id": {
            "type": "string",
            "maxLength": 64,
            "minLength": 1,
            "title": "Contact Id"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "agent_id",
          "contact_id"
        ],
        "title": "MobileCallAiRequest",
        "description": "A deliberately narrow native request for one compliant outbound AI call.\n\nThe app chooses both durable resources from the companion read models.  It cannot\nprovide an E.164 destination, caller-ID override, carrier account, telephony mode,\nor a list of contacts, so this endpoint cannot become an alternate bulk dialer."
      },
      "MobileCallAiResponse": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "agent_id": {
            "type": "string",
            "title": "Agent Id"
          },
          "agent_version_id": {
            "type": "string",
            "title": "Agent Version Id"
          },
          "contact_id": {
            "type": "string",
            "title": "Contact Id"
          },
          "telephony": {
            "type": "string",
            "const": "byo",
            "title": "Telephony"
          },
          "state": {
            "type": "string",
            "title": "State"
          },
          "disposition": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Disposition"
          },
          "call_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Call Id"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "agent_id",
          "agent_version_id",
          "contact_id",
          "telephony",
          "state",
          "created_at"
        ],
        "title": "MobileCallAiResponse",
        "description": "The queued result of one native Call AI request.\n\nMobile launch is always routed through the tenant's verified BYO carrier plane.  The\ngeneric call contract also permits the test-only mock transport, so it must not be\nused as this endpoint's response model or a native client could be told an impossible\ntransport state."
      },
      "MobileCallTranscript": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "call_id": {
            "type": "string",
            "title": "Call Id"
          },
          "full_text": {
            "type": "string",
            "title": "Full Text"
          },
          "summary": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Summary"
          },
          "turns": {
            "items": {
              "$ref": "#/components/schemas/MobileCallTranscriptTurn"
            },
            "type": "array",
            "title": "Turns"
          },
          "turns_truncated": {
            "type": "boolean",
            "title": "Turns Truncated",
            "default": false
          },
          "language": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Language"
          },
          "redaction_status": {
            "type": "string",
            "enum": [
              "raw",
              "pii_redacted"
            ],
            "title": "Redaction Status"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "call_id",
          "full_text",
          "redaction_status",
          "created_at",
          "updated_at"
        ],
        "title": "MobileCallTranscript",
        "description": "A mobile-safe transcript detail with no extracted entities or tool payloads."
      },
      "MobileCallTranscriptTurn": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "seq": {
            "type": "integer",
            "title": "Seq"
          },
          "speaker": {
            "type": "string",
            "enum": [
              "agent",
              "contact"
            ],
            "title": "Speaker"
          },
          "text": {
            "type": "string",
            "title": "Text"
          },
          "started_at_ms": {
            "type": "integer",
            "title": "Started At Ms"
          },
          "ended_at_ms": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ended At Ms"
          },
          "interrupted": {
            "type": "boolean",
            "title": "Interrupted",
            "default": false
          },
          "revision": {
            "type": "integer",
            "title": "Revision",
            "default": 0
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "seq",
          "speaker",
          "text",
          "started_at_ms",
          "created_at"
        ],
        "title": "MobileCallTranscriptTurn",
        "description": "One user-visible transcript turn for the native activity detail view.\n\nThe generic customer-call turn also contains model latency and arbitrary tool-call\npayloads.  Those values are neither rendered nor safe to copy into a mobile client:\ntool arguments can contain CRM or calendar data.  The protected transcript text is\nintentionally available to authorized mobile reviewers; everything else stays on the\nfull web review surface."
      },
      "MobileCapability": {
        "type": "string",
        "enum": [
          "activity:read",
          "insights:read",
          "schedule:write",
          "emergency_override:write",
          "team:read",
          "team:availability:write",
          "team:members:manage",
          "team:transfer_destinations:manage",
          "calls:outbound:start",
          "own_availability:write",
          "own_handoffs:read",
          "handoff_booking:write",
          "device_sessions:manage",
          "operations_tasks:read",
          "operations_tasks:mutate",
          "operations_tasks:assign",
          "workspace:read",
          "workspace:switch",
          "billing:read",
          "billing:write",
          "receptionist_studio:read",
          "receptionist_studio:write"
        ],
        "title": "MobileCapability",
        "description": "Operations the mobile receptionist surface may authorize.\n\nThese are not API-key scopes.  They deliberately describe product actions rather\nthan HTTP methods so web and mobile routes can share one role decision without a\nbrowser session accidentally becoming a broad bearer credential."
      },
      "MobileChangeFeedPage": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/MobileChangeHint"
            },
            "type": "array",
            "maxItems": 100,
            "title": "Items"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "has_more": {
            "type": "boolean",
            "title": "Has More",
            "default": false
          }
        },
        "additionalProperties": false,
        "type": "object",
        "title": "MobileChangeFeedPage",
        "description": "A bounded foreground update batch.\n\nWith no cursor the service returns a recent bounded slice and establishes a\nhigh-watermark.  ``has_more`` is meaningful only after a cursor: historical audit\nrecords are deliberately not replayed through this lightweight invalidation channel."
      },
      "MobileChangeHint": {
        "properties": {
          "version": {
            "type": "string",
            "maxLength": 128,
            "minLength": 1,
            "title": "Version"
          },
          "target": {
            "$ref": "#/components/schemas/MobileChangeTarget"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "version",
          "target"
        ],
        "title": "MobileChangeHint",
        "description": "One immutable, opaque version of a safe foreground invalidation target."
      },
      "MobileChangeTarget": {
        "properties": {
          "kind": {
            "type": "string",
            "enum": [
              "activity",
              "billing",
              "emergency_override",
              "handoff",
              "integrations",
              "notifications",
              "operations",
              "receptionist",
              "schedule",
              "team"
            ],
            "title": "Kind"
          },
          "resource_id": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128,
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Resource Id"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "kind"
        ],
        "title": "MobileChangeTarget",
        "description": "A client route invalidation target without human or operational content."
      },
      "MobileCoachPreferences": {
        "properties": {
          "telemetry_opt_in": {
            "type": "boolean",
            "title": "Telemetry Opt In",
            "default": false
          },
          "recommendations": {
            "items": {
              "$ref": "#/components/schemas/MobileCoachRecommendationPreference"
            },
            "type": "array",
            "maxItems": 9,
            "title": "Recommendations"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "title": "MobileCoachPreferences",
        "description": "The entire finite Coach state for the authenticated current device."
      },
      "MobileCoachRecommendationPreference": {
        "properties": {
          "key": {
            "type": "string",
            "enum": [
              "team_coverage",
              "transfer_destination",
              "availability",
              "schedule",
              "notifications",
              "calendar_booking",
              "receptionist",
              "capacity",
              "portal"
            ],
            "title": "Key"
          },
          "state": {
            "type": "string",
            "enum": [
              "active",
              "dismissed",
              "snoozed"
            ],
            "title": "State"
          },
          "snoozed_until": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Snoozed Until"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "key",
          "state"
        ],
        "title": "MobileCoachRecommendationPreference",
        "description": "Current-device handling of one fixed Workspace Setup recommendation key."
      },
      "MobileCoachRecommendationPreferenceChangeRequest": {
        "properties": {
          "action": {
            "type": "string",
            "enum": [
              "dismiss",
              "snooze",
              "restore"
            ],
            "title": "Action"
          },
          "snooze_duration": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "one_hour",
                  "one_day",
                  "one_week"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Snooze Duration"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "action"
        ],
        "title": "MobileCoachRecommendationPreferenceChangeRequest",
        "description": "A finite local handling action, never a way to mutate the underlying setup item."
      },
      "MobileCoachTelemetryConsentUpdateRequest": {
        "properties": {
          "telemetry_opt_in": {
            "type": "boolean",
            "title": "Telemetry Opt In"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "telemetry_opt_in"
        ],
        "title": "MobileCoachTelemetryConsentUpdateRequest",
        "description": "An explicit current-device election; it is off by default."
      },
      "MobileCoachTelemetryEventRequest": {
        "properties": {
          "action": {
            "type": "string",
            "enum": [
              "opened",
              "recommendation_viewed",
              "recommendation_dismissed",
              "recommendation_snoozed",
              "recommendation_restored",
              "setup_action_opened"
            ],
            "title": "Action"
          },
          "duration_bucket": {
            "type": "string",
            "enum": [
              "not_applicable",
              "under_5_seconds",
              "5_to_30_seconds",
              "30_to_120_seconds",
              "over_120_seconds"
            ],
            "title": "Duration Bucket"
          },
          "app_version": {
            "type": "string",
            "maxLength": 11,
            "minLength": 5,
            "pattern": "^[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}$",
            "title": "App Version"
          },
          "role": {
            "type": "string",
            "enum": [
              "admin",
              "manager"
            ],
            "title": "Role"
          },
          "window_class": {
            "type": "string",
            "enum": [
              "fresh_foreground",
              "resumed_foreground",
              "active_foreground"
            ],
            "title": "Window Class"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "action",
          "duration_bucket",
          "app_version",
          "role",
          "window_class"
        ],
        "title": "MobileCoachTelemetryEventRequest",
        "description": "One anonymous, finite aggregate-measurement increment.\n\nThere is intentionally no recommendation key, tenant/device/member id, target id,\ncaller/contact data, timestamp, token, free text, or raw duration. The server verifies\nthe submitted role against the authenticated mobile session before incrementing."
      },
      "MobileCoachTelemetryReceipt": {
        "properties": {
          "recorded": {
            "type": "boolean",
            "title": "Recorded"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "recorded"
        ],
        "title": "MobileCoachTelemetryReceipt",
        "description": "A no-detail acknowledgement that preserves an opt-out's privacy boundary."
      },
      "MobileDevicePushRegistrationRequest": {
        "properties": {
          "push_token": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 4096,
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Push Token"
          },
          "device_label": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200,
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Device Label"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "title": "MobileDevicePushRegistrationRequest",
        "description": "Register, rotate, or clear the app's Expo push endpoint for this device."
      },
      "MobileDeviceSummary": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "platform": {
            "type": "string",
            "enum": [
              "ios",
              "android"
            ],
            "title": "Platform"
          },
          "device_label": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Device Label"
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "revoked"
            ],
            "title": "Status"
          },
          "last_seen_at": {
            "type": "string",
            "format": "date-time",
            "title": "Last Seen At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "platform",
          "status",
          "last_seen_at"
        ],
        "title": "MobileDeviceSummary"
      },
      "MobileHandoffBookingAvailability": {
        "properties": {
          "handoff_id": {
            "type": "string",
            "title": "Handoff Id"
          },
          "timezone": {
            "type": "string",
            "title": "Timezone"
          },
          "duration_minutes": {
            "type": "integer",
            "maximum": 240,
            "minimum": 5,
            "title": "Duration Minutes"
          },
          "slots": {
            "items": {
              "$ref": "#/components/schemas/MobileHandoffBookingSlot"
            },
            "type": "array",
            "title": "Slots"
          }
        },
        "type": "object",
        "required": [
          "handoff_id",
          "timezone",
          "duration_minutes"
        ],
        "title": "MobileHandoffBookingAvailability",
        "description": "Availability narrowed to one handoff; it has no provider connection metadata."
      },
      "MobileHandoffBookingAvailabilityRequest": {
        "properties": {
          "start_date": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "title": "Start Date"
          },
          "end_date": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "title": "End Date"
          },
          "duration_minutes": {
            "type": "integer",
            "maximum": 240,
            "minimum": 5,
            "title": "Duration Minutes"
          },
          "timezone": {
            "type": "string",
            "maxLength": 64,
            "minLength": 1,
            "title": "Timezone"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "start_date",
          "end_date",
          "duration_minutes",
          "timezone"
        ],
        "title": "MobileHandoffBookingAvailabilityRequest",
        "description": "A bounded, display-zone availability request for one eligible handoff.\n\nThere is no call, contact, attendee, connection, calendar, OAuth, or raw-time field in\nthis model.  The route derives those facts from the authenticated handoff and returns\nopaque slot snapshots rather than a reusable provider availability response."
      },
      "MobileHandoffBookingCreateRequest": {
        "properties": {
          "slot_id": {
            "type": "string",
            "maxLength": 64,
            "minLength": 1,
            "title": "Slot Id"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "slot_id"
        ],
        "title": "MobileHandoffBookingCreateRequest",
        "description": "Book exactly one prior server-issued availability snapshot.\n\nNotes and attendee fields are deliberately absent.  The server derives the contact's\ncurrent invitation identity from the authorized carrier handoff, and v1 never turns a\nreceptionist phone into a generic calendar-event composer."
      },
      "MobileHandoffBookingReceipt": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "handoff_id": {
            "type": "string",
            "title": "Handoff Id"
          },
          "starts_at": {
            "type": "string",
            "format": "date-time",
            "title": "Starts At"
          },
          "ends_at": {
            "type": "string",
            "format": "date-time",
            "title": "Ends At"
          },
          "timezone": {
            "type": "string",
            "title": "Timezone"
          },
          "status": {
            "type": "string",
            "enum": [
              "calendar_event_created",
              "appointment_materialized"
            ],
            "title": "Status"
          },
          "appointment_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Appointment Id"
          },
          "booked_at": {
            "type": "string",
            "format": "date-time",
            "title": "Booked At"
          },
          "materialized_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Materialized At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "handoff_id",
          "starts_at",
          "ends_at",
          "timezone",
          "status",
          "booked_at"
        ],
        "title": "MobileHandoffBookingReceipt",
        "description": "A privacy-minimized receipt for one server-authorized handoff booking."
      },
      "MobileHandoffBookingSlot": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "starts_at": {
            "type": "string",
            "format": "date-time",
            "title": "Starts At"
          },
          "ends_at": {
            "type": "string",
            "format": "date-time",
            "title": "Ends At"
          },
          "expires_at": {
            "type": "string",
            "format": "date-time",
            "title": "Expires At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "starts_at",
          "ends_at",
          "expires_at"
        ],
        "title": "MobileHandoffBookingSlot",
        "description": "One opaque, short-lived calendar slot the current member may choose."
      },
      "MobileHandoffCapability": {
        "properties": {
          "available": {
            "type": "boolean",
            "title": "Available"
          },
          "handoff_feature_enabled": {
            "type": "boolean",
            "title": "Handoff Feature Enabled"
          },
          "verified_byo_twilio": {
            "type": "boolean",
            "title": "Verified Byo Twilio"
          },
          "active_transfer_destinations": {
            "type": "integer",
            "minimum": 0,
            "title": "Active Transfer Destinations"
          },
          "blockers": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Blockers"
          }
        },
        "type": "object",
        "required": [
          "available",
          "handoff_feature_enabled",
          "verified_byo_twilio",
          "active_transfer_destinations"
        ],
        "title": "MobileHandoffCapability",
        "description": "Whether the tenant can truthfully offer cellular handoff controls right now."
      },
      "MobileInboundVoicemail": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "status": {
            "type": "string",
            "enum": [
              "recording",
              "ready",
              "importing",
              "available",
              "absent",
              "failed"
            ],
            "title": "Status"
          },
          "duration_seconds": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Duration Seconds"
          },
          "received_at": {
            "type": "string",
            "format": "date-time",
            "title": "Received At"
          },
          "completed_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Completed At"
          },
          "failure_code": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Failure Code"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "status",
          "received_at",
          "updated_at"
        ],
        "title": "MobileInboundVoicemail",
        "description": "A mobile voicemail receipt with no caller, contact, or storage identity.\n\nAudio remains behind the authenticated signed-recording redirect.  This receipt detail\ndoes not manufacture a call reference, duplicate a recording identifier, or expose any\nE.164 address."
      },
      "MobileInsightCard": {
        "properties": {
          "key": {
            "type": "string",
            "enum": [
              "handoff_success",
              "handoff_timing",
              "fallback_rate",
              "booking_conversion",
              "voicemail_aging",
              "coverage_health",
              "emergency_override_duration"
            ],
            "title": "Key"
          },
          "state": {
            "type": "string",
            "enum": [
              "available",
              "insufficient_data",
              "unavailable"
            ],
            "title": "State"
          },
          "unit": {
            "type": "string",
            "enum": [
              "basis_points",
              "seconds"
            ],
            "title": "Unit"
          },
          "current_value": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 0
              },
              {
                "type": "null"
              }
            ],
            "title": "Current Value"
          },
          "previous_value": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 0
              },
              {
                "type": "null"
              }
            ],
            "title": "Previous Value"
          },
          "delta": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Delta"
          },
          "current_sample_size": {
            "type": "integer",
            "minimum": 0,
            "title": "Current Sample Size"
          },
          "previous_sample_size": {
            "type": "integer",
            "minimum": 0,
            "title": "Previous Sample Size"
          },
          "detail_target": {
            "type": "string",
            "enum": [
              "inbox",
              "activity",
              "override",
              "team",
              "integration"
            ],
            "title": "Detail Target"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "key",
          "state",
          "unit",
          "current_sample_size",
          "previous_sample_size",
          "detail_target"
        ],
        "title": "MobileInsightCard",
        "description": "A finite, aggregate-only comparison card.\n\nRates are basis points rather than floats (``10_000`` is 100%) so an API/client cannot\naccidentally serialize non-finite values.  A card is ``available`` only when both\nequal-length windows have a meaningful sample; otherwise values stay null and the\nsample counts explain why the comparison is not displayed as zero."
      },
      "MobileInsightsWindow": {
        "properties": {
          "start": {
            "type": "string",
            "format": "date-time",
            "title": "Start"
          },
          "end": {
            "type": "string",
            "format": "date-time",
            "title": "End"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "start",
          "end"
        ],
        "title": "MobileInsightsWindow",
        "description": "One fixed, half-open comparative interval in UTC."
      },
      "MobileIntegrationHealthIncident": {
        "properties": {
          "capability": {
            "type": "string",
            "enum": [
              "google_calendar_connection",
              "booking_readiness",
              "webhook_delivery"
            ],
            "title": "Capability"
          },
          "health_status": {
            "type": "string",
            "enum": [
              "attention",
              "unavailable"
            ],
            "title": "Health Status"
          },
          "last_known_health_at": {
            "type": "string",
            "format": "date-time",
            "title": "Last Known Health At"
          },
          "recheck_action": {
            "type": "string",
            "enum": [
              "browser",
              "support"
            ],
            "title": "Recheck Action"
          },
          "destination": {
            "type": "string",
            "enum": [
              "calendar",
              "webhooks",
              "integrations",
              "support"
            ],
            "title": "Destination"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "capability",
          "health_status",
          "last_known_health_at",
          "recheck_action",
          "destination"
        ],
        "title": "MobileIntegrationHealthIncident",
        "description": "One current, privacy-minimized integration repair item.\n\n``last_known_health_at`` comes from the tenant's durable integration or delivery state;\nit is never an invented client-side timestamp.  The fixed action/destination pairs are\nnamed product repair surfaces, not reflected provider, endpoint, or support URLs."
      },
      "MobileIntegrationHealthItem": {
        "properties": {
          "key": {
            "type": "string",
            "enum": [
              "google_calendar_connection",
              "booking_readiness",
              "crm",
              "webhook_delivery"
            ],
            "title": "Key"
          },
          "status": {
            "type": "string",
            "enum": [
              "healthy",
              "attention",
              "not_configured",
              "not_observed",
              "unavailable"
            ],
            "title": "Status"
          },
          "reason_code": {
            "type": "string",
            "enum": [
              "calendar_connection_healthy",
              "calendar_reconnect_required",
              "calendar_not_connected",
              "calendar_adapter_unavailable",
              "booking_ready",
              "booking_calendar_reconnect_required",
              "booking_calendar_not_connected",
              "booking_unavailable",
              "crm_adapter_not_shipped",
              "webhook_not_configured",
              "webhook_endpoint_disabled",
              "webhook_delivery_retrying",
              "webhook_delivery_exhausted",
              "webhook_delivery_unknown_state",
              "webhook_delivery_in_progress",
              "webhook_delivery_healthy",
              "webhook_delivery_not_observed"
            ],
            "title": "Reason Code"
          },
          "action": {
            "type": "string",
            "enum": [
              "none",
              "browser",
              "support"
            ],
            "title": "Action"
          },
          "destination": {
            "type": "string",
            "enum": [
              "calendar",
              "webhooks",
              "integrations",
              "support"
            ],
            "title": "Destination"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "key",
          "status",
          "reason_code",
          "action",
          "destination"
        ],
        "title": "MobileIntegrationHealthItem",
        "description": "One no-PII integration-health outcome and its safe repair surface."
      },
      "MobileIntegrationHealthRegistry": {
        "properties": {
          "generated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Generated At"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/MobileIntegrationHealthItem"
            },
            "type": "array",
            "title": "Items"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "generated_at",
          "items"
        ],
        "title": "MobileIntegrationHealthRegistry",
        "description": "The complete, safe Integration Health registry for one mobile workspace leader."
      },
      "MobileIntegrationHealthTimeline": {
        "properties": {
          "generated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Generated At"
          },
          "incidents": {
            "items": {
              "$ref": "#/components/schemas/MobileIntegrationHealthIncident"
            },
            "type": "array",
            "title": "Incidents"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "generated_at",
          "incidents"
        ],
        "title": "MobileIntegrationHealthTimeline",
        "description": "Current evidence-backed integration incidents, newest known health state first."
      },
      "MobileIntegrationReadiness": {
        "properties": {
          "calendar": {
            "$ref": "#/components/schemas/MobileCalendarIntegrationReadiness"
          }
        },
        "type": "object",
        "required": [
          "calendar"
        ],
        "title": "MobileIntegrationReadiness",
        "description": "Read-only, tenant-scoped integration health for an Admin or Manager.\n\nNew provider families may be added as separately minimized children.  Do not turn this\nresponse into a copy of the browser integration-management API."
      },
      "MobileLiveCall": {
        "properties": {
          "call_id": {
            "type": "string",
            "title": "Call Id"
          },
          "state": {
            "type": "string",
            "enum": [
              "active",
              "handoff_pending"
            ],
            "title": "State"
          },
          "phone_number_id": {
            "type": "string",
            "title": "Phone Number Id"
          },
          "agent_version_id": {
            "type": "string",
            "title": "Agent Version Id"
          },
          "connected_at": {
            "type": "string",
            "format": "date-time",
            "title": "Connected At"
          },
          "expires_at": {
            "type": "string",
            "format": "date-time",
            "title": "Expires At"
          }
        },
        "type": "object",
        "required": [
          "call_id",
          "state",
          "phone_number_id",
          "agent_version_id",
          "connected_at",
          "expires_at"
        ],
        "title": "MobileLiveCall",
        "description": "An active inbound receptionist call, with no caller PII in the pushable shape."
      },
      "MobileLiveHandoff": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "call_id": {
            "type": "string",
            "title": "Call Id"
          },
          "call_state": {
            "type": "string",
            "enum": [
              "active",
              "handoff_pending",
              "transferred",
              "ended",
              "expired"
            ],
            "title": "Call State"
          },
          "status": {
            "type": "string",
            "enum": [
              "requested",
              "dispatching",
              "offered",
              "accepted",
              "redirecting",
              "redirected",
              "snapshot_ready",
              "completed",
              "declined",
              "timed_out",
              "carrier_failed",
              "reconciliation_required",
              "cancelled"
            ],
            "title": "Status"
          },
          "failure_code": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Failure Code"
          },
          "requested_at": {
            "type": "string",
            "format": "date-time",
            "title": "Requested At"
          },
          "expires_at": {
            "type": "string",
            "format": "date-time",
            "title": "Expires At"
          },
          "rep_joined_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Rep Joined At"
          },
          "caller_redirected_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Caller Redirected At"
          },
          "completed_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Completed At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "call_id",
          "call_state",
          "status",
          "requested_at",
          "expires_at"
        ],
        "title": "MobileLiveHandoff",
        "description": "The current carrier-confirmed lifecycle of one authorized handoff.\n\nThis is intentionally status-only.  It contains no carrier operation identifiers,\ntelephone destination, handoff summary, transcript, recording URL, or media state.\nIn particular, it is not an action surface: a rep joining the carrier consult remains\nthe only way an ``accepted`` transition can occur."
      },
      "MobileNotificationCategoryPreferences": {
        "properties": {
          "operations": {
            "type": "boolean",
            "title": "Operations",
            "default": true
          },
          "booking": {
            "type": "boolean",
            "title": "Booking",
            "default": true
          },
          "integration": {
            "type": "boolean",
            "title": "Integration",
            "default": true
          },
          "subscription": {
            "type": "boolean",
            "title": "Subscription",
            "default": true
          },
          "coach": {
            "type": "boolean",
            "title": "Coach",
            "default": true
          }
        },
        "additionalProperties": false,
        "type": "object",
        "title": "MobileNotificationCategoryPreferences",
        "description": "Routine delivery categories; each remains an ID-only, server-authorized alert."
      },
      "MobileNotificationPreferences": {
        "properties": {
          "urgent_alerts_enabled": {
            "type": "boolean",
            "title": "Urgent Alerts Enabled",
            "default": false
          },
          "categories": {
            "$ref": "#/components/schemas/MobileNotificationCategoryPreferences"
          },
          "quiet_hours": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/MobileNotificationQuietHours"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "type": "object",
        "title": "MobileNotificationPreferences",
        "description": "Per-device native-alert preferences; no critical-alert/DND-bypass option exists."
      },
      "MobileNotificationPreferencesUpdateRequest": {
        "properties": {
          "urgent_alerts_enabled": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Urgent Alerts Enabled"
          },
          "categories": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/MobileNotificationCategoryPreferences"
              },
              {
                "type": "null"
              }
            ]
          },
          "quiet_hours": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/MobileNotificationQuietHours"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "type": "object",
        "title": "MobileNotificationPreferencesUpdateRequest"
      },
      "MobileNotificationQuietHours": {
        "properties": {
          "enabled": {
            "type": "boolean",
            "title": "Enabled"
          },
          "start_time": {
            "type": "string",
            "pattern": "^(?:[01][0-9]|2[0-3]):[0-5][0-9]$",
            "title": "Start Time"
          },
          "end_time": {
            "type": "string",
            "pattern": "^(?:[01][0-9]|2[0-3]):[0-5][0-9]$",
            "title": "End Time"
          },
          "timezone": {
            "type": "string",
            "maxLength": 120,
            "minLength": 1,
            "title": "Timezone"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "enabled",
          "start_time",
          "end_time",
          "timezone"
        ],
        "title": "MobileNotificationQuietHours",
        "description": "A local-time quiet window for routine notifications only."
      },
      "MobileNotificationTestReceipt": {
        "properties": {
          "accepted": {
            "type": "boolean",
            "title": "Accepted"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "accepted"
        ],
        "title": "MobileNotificationTestReceipt",
        "description": "A generic current-device delivery test acknowledgement with no push route data."
      },
      "MobileOperationTarget": {
        "properties": {
          "kind": {
            "type": "string",
            "enum": [
              "task",
              "activity",
              "handoff",
              "emergency_override",
              "inbox"
            ],
            "title": "Kind"
          },
          "resource_id": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128,
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Resource Id"
          },
          "state": {
            "type": "string",
            "enum": [
              "available",
              "resolved",
              "expired",
              "access_changed"
            ],
            "title": "State"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "kind",
          "state"
        ],
        "title": "MobileOperationTarget",
        "description": "A server-authorized notification destination, never a client-inferred route."
      },
      "MobileOperationTask": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "category": {
            "type": "string",
            "enum": [
              "handoff",
              "emergency_override",
              "voicemail",
              "booking",
              "integration",
              "receptionist_health"
            ],
            "title": "Category"
          },
          "severity": {
            "type": "string",
            "enum": [
              "critical",
              "high",
              "normal",
              "low"
            ],
            "title": "Severity"
          },
          "state": {
            "type": "string",
            "enum": [
              "open",
              "acknowledged",
              "resolved"
            ],
            "title": "State"
          },
          "title": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1,
            "title": "Title"
          },
          "detail": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Detail"
          },
          "source_target": {
            "$ref": "#/components/schemas/MobileOperationTaskSourceTarget"
          },
          "next_action": {
            "type": "string",
            "enum": [
              "review_handoff",
              "review_activity",
              "review_override",
              "open_integration_settings",
              "contact_support"
            ],
            "title": "Next Action"
          },
          "assignee": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/MobileOperationTaskActor"
              },
              {
                "type": "null"
              }
            ]
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
          },
          "due_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Due At"
          },
          "acknowledged_by": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/MobileOperationTaskActor"
              },
              {
                "type": "null"
              }
            ]
          },
          "acknowledged_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Acknowledged At"
          },
          "resolved_by": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/MobileOperationTaskActor"
              },
              {
                "type": "null"
              }
            ]
          },
          "resolved_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Resolved At"
          },
          "version": {
            "type": "integer",
            "minimum": 1,
            "title": "Version"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "category",
          "severity",
          "state",
          "title",
          "source_target",
          "next_action",
          "created_at",
          "updated_at",
          "version"
        ],
        "title": "MobileOperationTask",
        "description": "One durable operational follow-up rendered without customer/call content."
      },
      "MobileOperationTaskAcknowledgeRequest": {
        "properties": {
          "expected_version": {
            "type": "integer",
            "minimum": 1,
            "title": "Expected Version"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "expected_version"
        ],
        "title": "MobileOperationTaskAcknowledgeRequest"
      },
      "MobileOperationTaskActor": {
        "properties": {
          "id": {
            "type": "string",
            "maxLength": 128,
            "minLength": 1,
            "title": "Id"
          },
          "display_name": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ],
            "title": "Display Name"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id"
        ],
        "title": "MobileOperationTaskActor",
        "description": "A permitted staff label, never an account, device, email, or destination."
      },
      "MobileOperationTaskAssignRequest": {
        "properties": {
          "expected_version": {
            "type": "integer",
            "minimum": 1,
            "title": "Expected Version"
          },
          "assignee_membership_id": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128,
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Assignee Membership Id"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "expected_version"
        ],
        "title": "MobileOperationTaskAssignRequest"
      },
      "MobileOperationTaskPage": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/MobileOperationTask"
            },
            "type": "array",
            "title": "Items"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "has_more": {
            "type": "boolean",
            "title": "Has More",
            "default": false
          },
          "open_count": {
            "type": "integer",
            "minimum": 0,
            "title": "Open Count"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "open_count"
        ],
        "title": "MobileOperationTaskPage",
        "description": "Cursor page plus the visible scope's current unresolved workload count."
      },
      "MobileOperationTaskResolveRequest": {
        "properties": {
          "expected_version": {
            "type": "integer",
            "minimum": 1,
            "title": "Expected Version"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "expected_version"
        ],
        "title": "MobileOperationTaskResolveRequest"
      },
      "MobileOperationTaskSourceTarget": {
        "properties": {
          "kind": {
            "type": "string",
            "enum": [
              "activity",
              "handoff",
              "emergency_override",
              "inbox"
            ],
            "title": "Kind"
          },
          "resource_id": {
            "type": "string",
            "maxLength": 128,
            "minLength": 1,
            "title": "Resource Id"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "kind",
          "resource_id"
        ],
        "title": "MobileOperationTaskSourceTarget",
        "description": "An opaque source reference used only for authenticated native navigation."
      },
      "MobileReadiness": {
        "properties": {
          "role": {
            "type": "string",
            "enum": [
              "admin",
              "manager",
              "rep"
            ],
            "title": "Role"
          },
          "generated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Generated At"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/MobileReadinessItem"
            },
            "type": "array",
            "title": "Items"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "role",
          "generated_at",
          "items"
        ],
        "title": "MobileReadiness",
        "description": "The current user's role-specific field-operations checklist."
      },
      "MobileReadinessItem": {
        "properties": {
          "key": {
            "type": "string",
            "enum": [
              "carrier_handoff",
              "staffing_eligibility",
              "schedule",
              "calendar_booking",
              "notifications",
              "integration_health",
              "transfer_destination",
              "availability"
            ],
            "title": "Key"
          },
          "state": {
            "type": "string",
            "enum": [
              "ready",
              "attention",
              "unavailable"
            ],
            "title": "State"
          },
          "reason_code": {
            "type": "string",
            "pattern": "^[a-z0-9_]{1,80}$",
            "title": "Reason Code"
          },
          "next_action": {
            "type": "string",
            "enum": [
              "native",
              "browser",
              "support"
            ],
            "title": "Next Action"
          },
          "destination": {
            "type": "string",
            "enum": [
              "today",
              "team",
              "schedule",
              "notifications",
              "integrations",
              "support"
            ],
            "title": "Destination"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "key",
          "state",
          "reason_code",
          "next_action",
          "destination"
        ],
        "title": "MobileReadinessItem",
        "description": "One no-PII readiness outcome and the surface that owns its next action."
      },
      "MobileReceptionistActivity": {
        "properties": {
          "resource_id": {
            "type": "string",
            "title": "Resource Id"
          },
          "kind": {
            "type": "string",
            "enum": [
              "live_call",
              "call",
              "voicemail",
              "appointment",
              "handoff"
            ],
            "title": "Kind"
          },
          "status": {
            "type": "string",
            "title": "Status"
          },
          "occurred_at": {
            "type": "string",
            "format": "date-time",
            "title": "Occurred At"
          },
          "call_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Call Id"
          },
          "phone_number_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Phone Number Id"
          },
          "agent_version_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Agent Version Id"
          }
        },
        "type": "object",
        "required": [
          "resource_id",
          "kind",
          "status",
          "occurred_at"
        ],
        "title": "MobileReceptionistActivity",
        "description": "One privacy-minimized receptionist event for the mobile activity timeline.\n\n``resource_id`` is the source resource (for example a handoff request or voicemail\nreceipt).  A client that needs a transcript, voicemail/appointment detail, or recording\nfollows the native authenticated activity-detail endpoint; this projection deliberately\ndoes not become an alternate media-delivery surface."
      },
      "MobileReceptionistAuthorizedTest": {
        "properties": {
          "authorized_at": {
            "type": "string",
            "format": "date-time",
            "title": "Authorized At"
          },
          "result": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "passed",
                  "failed"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Result"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "authorized_at"
        ],
        "title": "MobileReceptionistAuthorizedTest",
        "description": "Evidence that mobile opened an authorized system-dialer test target.\n\nAuthorization does not prove that the carrier call connected, much less that the\nreceptionist completed it.  ``result`` therefore stays nullable until a distinct,\ndurable carrier-result evidence path exists."
      },
      "MobileReceptionistCoverageSummary": {
        "properties": {
          "state": {
            "type": "string",
            "enum": [
              "covered",
              "uncovered",
              "not_configured",
              "unavailable"
            ],
            "title": "State"
          },
          "active_rep_count": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 20,
                "minimum": 0
              },
              {
                "type": "null"
              }
            ],
            "title": "Active Rep Count"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "state"
        ],
        "title": "MobileReceptionistCoverageSummary",
        "description": "Current direct-rep coverage, after the runtime's safety gates are intersected."
      },
      "MobileReceptionistEmergencyOverrideSummary": {
        "properties": {
          "state": {
            "type": "string",
            "enum": [
              "none",
              "active",
              "cleared",
              "expired",
              "invalid",
              "unavailable"
            ],
            "title": "State"
          },
          "expires_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Expires At"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "state"
        ],
        "title": "MobileReceptionistEmergencyOverrideSummary",
        "description": "Current override state without its routing mode, destination, or control id."
      },
      "MobileReceptionistHub": {
        "properties": {
          "generated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Generated At"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/MobileReceptionistHubItem"
            },
            "type": "array",
            "maxItems": 100,
            "title": "Items"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "generated_at"
        ],
        "title": "MobileReceptionistHub",
        "description": "Live Receptionists hub data for Admins and Managers."
      },
      "MobileReceptionistHubItem": {
        "properties": {
          "phone_number_id": {
            "type": "string",
            "title": "Phone Number Id"
          },
          "phone_e164": {
            "type": "string",
            "pattern": "^\\+[1-9]\\d{6,14}$",
            "title": "Phone E164"
          },
          "published_state": {
            "type": "string",
            "enum": [
              "published",
              "not_published"
            ],
            "title": "Published State"
          },
          "schedule": {
            "$ref": "#/components/schemas/MobileReceptionistScheduleSummary"
          },
          "emergency_override": {
            "$ref": "#/components/schemas/MobileReceptionistEmergencyOverrideSummary"
          },
          "coverage": {
            "$ref": "#/components/schemas/MobileReceptionistCoverageSummary"
          },
          "last_authorized_mobile_test": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/MobileReceptionistAuthorizedTest"
              },
              {
                "type": "null"
              }
            ]
          },
          "open_follow_up_count": {
            "type": "integer",
            "minimum": 0,
            "title": "Open Follow Up Count"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "phone_number_id",
          "phone_e164",
          "published_state",
          "schedule",
          "emergency_override",
          "coverage",
          "open_follow_up_count"
        ],
        "title": "MobileReceptionistHubItem",
        "description": "A privacy-safe, per-number receptionist operations card."
      },
      "MobileReceptionistInsights": {
        "properties": {
          "generated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Generated At"
          },
          "days": {
            "type": "integer",
            "enum": [
              7,
              30,
              90
            ],
            "title": "Days"
          },
          "current_window": {
            "$ref": "#/components/schemas/MobileInsightsWindow"
          },
          "previous_window": {
            "$ref": "#/components/schemas/MobileInsightsWindow"
          },
          "cards": {
            "items": {
              "$ref": "#/components/schemas/MobileInsightCard"
            },
            "type": "array",
            "maxItems": 7,
            "minItems": 7,
            "title": "Cards"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "generated_at",
          "days",
          "current_window",
          "previous_window",
          "cards"
        ],
        "title": "MobileReceptionistInsights",
        "description": "The complete bounded comparative Insights response for a mobile workspace leader."
      },
      "MobileReceptionistMetrics": {
        "properties": {
          "start": {
            "type": "string",
            "format": "date-time",
            "title": "Start"
          },
          "end": {
            "type": "string",
            "format": "date-time",
            "title": "End"
          },
          "inbound_calls_received": {
            "type": "integer",
            "minimum": 0,
            "title": "Inbound Calls Received"
          },
          "handoffs_requested": {
            "type": "integer",
            "minimum": 0,
            "title": "Handoffs Requested"
          },
          "handoffs_accepted": {
            "type": "integer",
            "minimum": 0,
            "title": "Handoffs Accepted"
          },
          "handoffs_redirected": {
            "type": "integer",
            "minimum": 0,
            "title": "Handoffs Redirected"
          },
          "handoffs_completed": {
            "type": "integer",
            "minimum": 0,
            "title": "Handoffs Completed"
          },
          "handoffs_declined": {
            "type": "integer",
            "minimum": 0,
            "title": "Handoffs Declined"
          },
          "handoffs_timed_out": {
            "type": "integer",
            "minimum": 0,
            "title": "Handoffs Timed Out"
          },
          "handoffs_failed": {
            "type": "integer",
            "minimum": 0,
            "title": "Handoffs Failed"
          },
          "appointments_created": {
            "type": "integer",
            "minimum": 0,
            "title": "Appointments Created"
          }
        },
        "type": "object",
        "required": [
          "start",
          "end",
          "inbound_calls_received",
          "handoffs_requested",
          "handoffs_accepted",
          "handoffs_redirected",
          "handoffs_completed",
          "handoffs_declined",
          "handoffs_timed_out",
          "handoffs_failed",
          "appointments_created"
        ],
        "title": "MobileReceptionistMetrics",
        "description": "A bounded, aggregate-only receptionist operations report.\n\nThe response is a single tenant-wide total for the half-open ``[start, end)`` window;\nit never exposes source call, contact, carrier, appointment, or transfer rows.  Each\nhandoff count is attributed to the durable lifecycle timestamp named by the field,\nrather than to the request's current status."
      },
      "MobileReceptionistNumber": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "phone_e164": {
            "type": "string",
            "title": "Phone E164"
          },
          "status": {
            "type": "string",
            "title": "Status"
          }
        },
        "type": "object",
        "required": [
          "id",
          "phone_e164",
          "status"
        ],
        "title": "MobileReceptionistNumber",
        "description": "One tenant-owned policy number selectable by mobile routing controls.\n\n``phone_e164`` is the business's own inbound number, not caller/contact data.  The\nmobile app needs it to distinguish its own receptionist lines before it reads or\nchanges a schedule or emergency override; no customer ANI is exposed here."
      },
      "MobileReceptionistScheduleSummary": {
        "properties": {
          "state": {
            "type": "string",
            "enum": [
              "open",
              "closed",
              "unavailable"
            ],
            "title": "State"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "state"
        ],
        "title": "MobileReceptionistScheduleSummary",
        "description": "The authoritative policy schedule answer when this line has one.\n\nA direct-agent line has no tenant business-hours document, and a malformed/stale\npolicy is not safe to interpret in the app.  Both are intentionally ``unavailable``."
      },
      "MobileReceptionistStudioPatch": {
        "properties": {
          "expected_version": {
            "type": "integer",
            "minimum": 1,
            "title": "Expected Version"
          },
          "business_facts": {
            "additionalProperties": {
              "type": "string"
            },
            "propertyNames": {
              "enum": [
                "business_name",
                "service_summary",
                "service_area",
                "callback_preference"
              ]
            },
            "type": "object",
            "maxProperties": 4,
            "title": "Business Facts"
          },
          "short_greeting": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 180
              },
              {
                "type": "null"
              }
            ],
            "title": "Short Greeting"
          },
          "escalation_preference": {
            "type": "string",
            "enum": [
              "standard",
              "handoff_when_available",
              "booking_first"
            ],
            "title": "Escalation Preference",
            "default": "standard"
          },
          "temporary_status": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/MobileTemporaryCustomerStatus"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "expected_version"
        ],
        "title": "MobileReceptionistStudioPatch",
        "description": "A complete, version-checked mobile Studio state replacement.\n\nRequiring all editable state in the request makes an explicit removal distinguishable\nfrom a dropped field on a weak network.  The native app starts from a live read and\nsends this exact object through the fresh browser-proof binding."
      },
      "MobileReceptionistStudioSummary": {
        "properties": {
          "phone_number_id": {
            "type": "string",
            "title": "Phone Number Id"
          },
          "has_published_receptionist": {
            "type": "boolean",
            "title": "Has Published Receptionist"
          },
          "business_facts": {
            "additionalProperties": {
              "type": "string"
            },
            "propertyNames": {
              "enum": [
                "business_name",
                "service_summary",
                "service_area",
                "callback_preference"
              ]
            },
            "type": "object",
            "title": "Business Facts"
          },
          "short_greeting": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Short Greeting"
          },
          "escalation_preference": {
            "type": "string",
            "enum": [
              "standard",
              "handoff_when_available",
              "booking_first"
            ],
            "title": "Escalation Preference",
            "default": "standard"
          },
          "temporary_status": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/MobileTemporaryCustomerStatus"
              },
              {
                "type": "null"
              }
            ]
          },
          "version": {
            "type": "integer",
            "minimum": 1,
            "title": "Version"
          },
          "updated_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At"
          }
        },
        "type": "object",
        "required": [
          "phone_number_id",
          "has_published_receptionist",
          "version"
        ],
        "title": "MobileReceptionistStudioSummary",
        "description": "One safe receptionist fact-draft projection for native operations views."
      },
      "MobileReceptionistTestTarget": {
        "properties": {
          "phone_number_id": {
            "type": "string",
            "title": "Phone Number Id"
          },
          "phone_e164": {
            "type": "string",
            "title": "Phone E164"
          },
          "carrier_charge_notice": {
            "type": "string",
            "title": "Carrier Charge Notice"
          }
        },
        "type": "object",
        "required": [
          "phone_number_id",
          "phone_e164",
          "carrier_charge_notice"
        ],
        "title": "MobileReceptionistTestTarget",
        "description": "A one-use-safe dial target for testing an already-published business number.\n\nThe app merely opens the system dialer after this authorization result.  It never\nreceives call audio, call-log data, SIM data, or any ability to control the human leg."
      },
      "MobileSetupItem": {
        "properties": {
          "key": {
            "type": "string",
            "enum": [
              "team_coverage",
              "transfer_destination",
              "availability",
              "schedule",
              "notifications",
              "calendar_booking",
              "receptionist",
              "capacity",
              "portal"
            ],
            "title": "Key"
          },
          "state": {
            "type": "string",
            "enum": [
              "ready",
              "attention",
              "blocked",
              "unavailable"
            ],
            "title": "State"
          },
          "title": {
            "type": "string",
            "maxLength": 120,
            "minLength": 1,
            "title": "Title"
          },
          "detail": {
            "type": "string",
            "maxLength": 280,
            "minLength": 1,
            "title": "Detail"
          },
          "next_action": {
            "type": "string",
            "enum": [
              "native",
              "browser",
              "support",
              "none"
            ],
            "title": "Next Action"
          },
          "destination": {
            "type": "string",
            "enum": [
              "team",
              "schedule",
              "notifications",
              "integrations",
              "workspace",
              "subscription",
              "portal",
              "support"
            ],
            "title": "Destination"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "key",
          "state",
          "title",
          "detail",
          "next_action",
          "destination"
        ],
        "title": "MobileSetupItem",
        "description": "One server-derived next action; a client cannot check it off locally."
      },
      "MobileStepUpBeginRequest": {
        "properties": {
          "action": {
            "type": "string",
            "enum": [
              "schedule_update",
              "emergency_override_set",
              "emergency_override_clear",
              "team_member_update",
              "team_invitation_create",
              "team_invitation_revoke",
              "transfer_destination_confirm",
              "device_revoke",
              "call_ai_start",
              "billing_budget_update",
              "billing_portal_launch",
              "receptionist_studio_update"
            ],
            "title": "Action"
          },
          "target": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1,
            "title": "Target"
          },
          "payload_hash": {
            "type": "string",
            "maxLength": 64,
            "minLength": 64,
            "title": "Payload Hash"
          },
          "callback_uri": {
            "type": "string",
            "maxLength": 2048,
            "minLength": 8,
            "title": "Callback Uri"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "action",
          "target",
          "payload_hash",
          "callback_uri"
        ],
        "title": "MobileStepUpBeginRequest",
        "description": "A native app starts a proof for exactly one high-impact command."
      },
      "MobileStepUpBeginResponse": {
        "properties": {
          "request_id": {
            "type": "string",
            "title": "Request Id"
          },
          "portal_url": {
            "type": "string",
            "title": "Portal Url"
          },
          "expires_at": {
            "type": "string",
            "format": "date-time",
            "title": "Expires At"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "request_id",
          "portal_url",
          "expires_at"
        ],
        "title": "MobileStepUpBeginResponse"
      },
      "MobileStepUpBrowserRequest": {
        "properties": {
          "request_id": {
            "type": "string",
            "title": "Request Id"
          },
          "action": {
            "type": "string",
            "enum": [
              "schedule_update",
              "emergency_override_set",
              "emergency_override_clear",
              "team_member_update",
              "team_invitation_create",
              "team_invitation_revoke",
              "transfer_destination_confirm",
              "device_revoke",
              "call_ai_start",
              "billing_budget_update",
              "billing_portal_launch",
              "receptionist_studio_update"
            ],
            "title": "Action"
          },
          "action_label": {
            "type": "string",
            "title": "Action Label"
          },
          "intent_summary": {
            "$ref": "#/components/schemas/MobileStepUpIntentSummary"
          },
          "verification_method": {
            "type": "string",
            "enum": [
              "password",
              "email_link"
            ],
            "title": "Verification Method"
          },
          "status": {
            "type": "string",
            "enum": [
              "pending",
              "awaiting_email",
              "verified",
              "consumed",
              "expired"
            ],
            "title": "Status"
          },
          "expires_at": {
            "type": "string",
            "format": "date-time",
            "title": "Expires At"
          },
          "email_expires_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Email Expires At"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "request_id",
          "action",
          "action_label",
          "intent_summary",
          "verification_method",
          "status",
          "expires_at"
        ],
        "title": "MobileStepUpBrowserRequest",
        "description": "Safe browser projection; no payload, callback, secret or raw account detail."
      },
      "MobileStepUpCompletion": {
        "properties": {
          "callback_url": {
            "type": "string",
            "title": "Callback Url"
          },
          "expires_at": {
            "type": "string",
            "format": "date-time",
            "title": "Expires At"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "callback_url",
          "expires_at"
        ],
        "title": "MobileStepUpCompletion",
        "description": "A browser redirects to this fragment-bearing URL immediately after receipt."
      },
      "MobileStepUpEmailConfirmationRequest": {
        "properties": {
          "token": {
            "type": "string",
            "maxLength": 512,
            "minLength": 32,
            "title": "Token"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "token"
        ],
        "title": "MobileStepUpEmailConfirmationRequest"
      },
      "MobileStepUpEmailStarted": {
        "properties": {
          "message": {
            "type": "string",
            "title": "Message"
          },
          "expires_at": {
            "type": "string",
            "format": "date-time",
            "title": "Expires At"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "message",
          "expires_at"
        ],
        "title": "MobileStepUpEmailStarted"
      },
      "MobileStepUpIntentSummary": {
        "properties": {
          "subject": {
            "type": "string",
            "maxLength": 120,
            "minLength": 1,
            "title": "Subject"
          },
          "effect": {
            "type": "string",
            "maxLength": 220,
            "minLength": 1,
            "title": "Effect"
          },
          "target_reference": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 32,
                "minLength": 4
              },
              {
                "type": "null"
              }
            ],
            "title": "Target Reference"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "subject",
          "effect"
        ],
        "title": "MobileStepUpIntentSummary",
        "description": "Privacy-safe browser copy describing one already-bound native command.\n\nThe browser must never receive the mutation body (which can contain a phone number,\nemail address, contact selection, routing destination, or schedule details).  These\nthree strings are selected exclusively by the control API from the durable action and\nopaque resource reference.  They give a person enough context to recognize the class\nand scope of the change without turning the browser proof into another data surface."
      },
      "MobileStepUpPasswordRequest": {
        "properties": {
          "password": {
            "type": "string",
            "maxLength": 1024,
            "minLength": 1,
            "title": "Password"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "password"
        ],
        "title": "MobileStepUpPasswordRequest"
      },
      "MobileStudioIntelligenceSnapshotRequest": {
        "properties": {
          "agent_id": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128,
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Agent Id"
          },
          "expected_studio_version": {
            "type": "integer",
            "minimum": 1,
            "title": "Expected Studio Version"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "expected_studio_version"
        ],
        "title": "MobileStudioIntelligenceSnapshotRequest",
        "description": "Copy one exact Studio revision into the canonical intelligence review queue.\n\nThis is deliberately a snapshot import, not a hidden prompt edit and not a publish\ncommand. The resulting source starts pending and must be reviewed/cited through the\nordinary Receptionist Intelligence workspace before it can become callable knowledge."
      },
      "MobileStudioIntelligenceSnapshotResult": {
        "properties": {
          "agent_id": {
            "type": "string",
            "title": "Agent Id"
          },
          "phone_number_id": {
            "type": "string",
            "title": "Phone Number Id"
          },
          "studio_version": {
            "type": "integer",
            "minimum": 1,
            "title": "Studio Version"
          },
          "intelligence_source_id": {
            "type": "string",
            "title": "Intelligence Source Id"
          },
          "source_review_status": {
            "type": "string",
            "enum": [
              "pending",
              "approved",
              "rejected"
            ],
            "title": "Source Review Status"
          },
          "captured_at": {
            "type": "string",
            "format": "date-time",
            "title": "Captured At"
          },
          "requires_customer_review": {
            "type": "boolean",
            "title": "Requires Customer Review"
          },
          "canonical_draft_changed": {
            "type": "boolean",
            "const": false,
            "title": "Canonical Draft Changed",
            "default": false
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "agent_id",
          "phone_number_id",
          "studio_version",
          "intelligence_source_id",
          "source_review_status",
          "captured_at",
          "requires_customer_review"
        ],
        "title": "MobileStudioIntelligenceSnapshotResult",
        "description": "The canonical source created from a bounded Mobile Studio revision."
      },
      "MobileSubscriptionHealth": {
        "properties": {
          "plan_label": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1,
            "title": "Plan Label"
          },
          "status": {
            "type": "string",
            "enum": [
              "trialing",
              "active",
              "past_due",
              "paused",
              "canceled",
              "unavailable"
            ],
            "title": "Status"
          },
          "usage_label": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 160
              },
              {
                "type": "null"
              }
            ],
            "title": "Usage Label"
          },
          "capacity_label": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 160
              },
              {
                "type": "null"
              }
            ],
            "title": "Capacity Label"
          },
          "payment_attention": {
            "type": "string",
            "enum": [
              "none",
              "attention",
              "unavailable"
            ],
            "title": "Payment Attention"
          },
          "next_renewal_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Renewal At"
          },
          "budget": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/MobileBillingBudget"
              },
              {
                "type": "null"
              }
            ]
          },
          "invoices": {
            "items": {
              "$ref": "#/components/schemas/MobileBillingInvoiceSummary"
            },
            "type": "array",
            "maxItems": 3,
            "title": "Invoices"
          },
          "generated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Generated At"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "plan_label",
          "status",
          "payment_attention",
          "generated_at"
        ],
        "title": "MobileSubscriptionHealth",
        "description": "The full native billing read for Admin/Manager, still safe for an app cache policy."
      },
      "MobileTeamMemberSummary": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "display_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Display Name"
          },
          "role": {
            "$ref": "#/components/schemas/TenantMembershipRole"
          },
          "human_rep_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Human Rep Id"
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "suspended",
              "revoked"
            ],
            "title": "Status"
          },
          "forward_eligible": {
            "type": "boolean",
            "title": "Forward Eligible",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "id",
          "role",
          "status"
        ],
        "title": "MobileTeamMemberSummary",
        "description": "The capability-gated mobile team directory projection.\n\nA manager needs a recognizable staff label plus operational role, membership state, the\nserver-owned rep link used by handoff routing, and a safe selector fact for emergency\nforwarding. Account/tenant ids and session invalidation timestamps are intentionally\nabsent: they are not team-management inputs and would expose identity/security internals\nto every directory reader."
      },
      "MobileTemporaryCustomerStatus": {
        "properties": {
          "template": {
            "type": "string",
            "enum": [
              "service_update",
              "special_hours",
              "weather_delay"
            ],
            "title": "Template"
          },
          "message": {
            "type": "string",
            "maxLength": 180,
            "minLength": 1,
            "title": "Message"
          },
          "expires_at": {
            "type": "string",
            "format": "date-time",
            "title": "Expires At"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "template",
          "message",
          "expires_at"
        ],
        "title": "MobileTemporaryCustomerStatus",
        "description": "One bounded, expiring proposed public-status update.\n\nThe finite template is shown in the native preview and recorded in the audit trail.\nThe message remains concise, cannot alter policy/tool wording, and must be reviewed in\ncanonical intelligence before it can be spoken. Its expiry travels with the source\nevidence so reviewers do not mistake a temporary notice for durable business knowledge."
      },
      "MobileTokenRequest": {
        "properties": {
          "grant_type": {
            "type": "string",
            "enum": [
              "authorization_code",
              "refresh_token"
            ],
            "title": "Grant Type"
          },
          "client_id": {
            "type": "string",
            "const": "vocapable-mobile",
            "title": "Client Id",
            "default": "vocapable-mobile"
          },
          "authorization_code": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 512,
                "minLength": 43
              },
              {
                "type": "null"
              }
            ],
            "title": "Authorization Code"
          },
          "code_verifier": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128,
                "minLength": 43
              },
              {
                "type": "null"
              }
            ],
            "title": "Code Verifier"
          },
          "redirect_uri": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 2048,
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Redirect Uri"
          },
          "refresh_token": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 512,
                "minLength": 43
              },
              {
                "type": "null"
              }
            ],
            "title": "Refresh Token"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "grant_type"
        ],
        "title": "MobileTokenRequest",
        "description": "The two native token-exchange grants; no API key may satisfy either one."
      },
      "MobileTokenResponse": {
        "properties": {
          "access_token": {
            "type": "string",
            "title": "Access Token"
          },
          "refresh_token": {
            "type": "string",
            "title": "Refresh Token"
          },
          "token_type": {
            "type": "string",
            "const": "Bearer",
            "title": "Token Type",
            "default": "Bearer"
          },
          "expires_at": {
            "type": "string",
            "format": "date-time",
            "title": "Expires At"
          },
          "tenant_id": {
            "type": "string",
            "title": "Tenant Id"
          },
          "membership_id": {
            "type": "string",
            "title": "Membership Id"
          },
          "device_id": {
            "type": "string",
            "title": "Device Id"
          },
          "role": {
            "$ref": "#/components/schemas/TenantMembershipRole"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "access_token",
          "refresh_token",
          "expires_at",
          "tenant_id",
          "membership_id",
          "device_id",
          "role"
        ],
        "title": "MobileTokenResponse",
        "description": "Tokens returned once over TLS to the native app's secure device storage."
      },
      "MobileTransferDestinationVerificationCheckRequest": {
        "properties": {
          "verification_id": {
            "type": "string",
            "maxLength": 128,
            "minLength": 1,
            "title": "Verification Id"
          },
          "code": {
            "type": "string",
            "pattern": "^\\d{6}$",
            "title": "Code"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "verification_id",
          "code"
        ],
        "title": "MobileTransferDestinationVerificationCheckRequest",
        "description": "One bounded OTP attempt for one exact transfer-destination challenge.\n\n``verification_id`` is deliberately part of the native request even though the\nmember id is in the route.  A fresh browser proof is bound to this opaque challenge\nid, rather than the six-digit OTP, so a resend or replacement cannot make an older\nproof authorize the newest candidate destination."
      },
      "MobileTransferDestinationVerificationStartRequest": {
        "properties": {
          "destination_e164": {
            "type": "string",
            "pattern": "^\\+[1-9]\\d{7,14}$",
            "title": "Destination E164"
          },
          "transfer_enabled": {
            "type": "boolean",
            "title": "Transfer Enabled",
            "default": true
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "destination_e164"
        ],
        "title": "MobileTransferDestinationVerificationStartRequest",
        "description": "Start an OTP proof before a linked rep's transfer phone may change.\n\nThe candidate number is accepted only here and is never echoed in a response or push\npayload.  The server binds the proof to the member's currently linked human rep, so a\nverified code cannot be replayed to alter a different person's destination."
      },
      "MobileTransferDestinationVerificationSummary": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "membership_id": {
            "type": "string",
            "title": "Membership Id"
          },
          "rep_id": {
            "type": "string",
            "title": "Rep Id"
          },
          "status": {
            "type": "string",
            "enum": [
              "pending",
              "verified",
              "expired"
            ],
            "title": "Status"
          },
          "transfer_enabled": {
            "type": "boolean",
            "title": "Transfer Enabled"
          },
          "expires_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Expires At"
          },
          "verified_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Verified At"
          },
          "verification_attempts": {
            "type": "integer",
            "minimum": 0,
            "title": "Verification Attempts"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "membership_id",
          "rep_id",
          "status",
          "transfer_enabled",
          "verification_attempts",
          "created_at",
          "updated_at"
        ],
        "title": "MobileTransferDestinationVerificationSummary",
        "description": "Non-PII progress state for a member's transfer-destination verification."
      },
      "MobileTransferHistoryEntry": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "call_id": {
            "type": "string",
            "title": "Call Id"
          },
          "requested_by": {
            "type": "string",
            "enum": [
              "agent",
              "user",
              "system"
            ],
            "title": "Requested By"
          },
          "requested_rep_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Requested Rep Id"
          },
          "requested_rep_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Requested Rep Name"
          },
          "requested_group_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Requested Group Id"
          },
          "resolved_rep_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Resolved Rep Id"
          },
          "resolved_rep_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Resolved Rep Name"
          },
          "mode": {
            "type": "string",
            "title": "Mode"
          },
          "status": {
            "type": "string",
            "title": "Status"
          },
          "failure_code": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Failure Code"
          },
          "requested_at": {
            "type": "string",
            "format": "date-time",
            "title": "Requested At"
          },
          "expires_at": {
            "type": "string",
            "format": "date-time",
            "title": "Expires At"
          },
          "completed_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Completed At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "call_id",
          "requested_by",
          "mode",
          "status",
          "requested_at",
          "expires_at"
        ],
        "title": "MobileTransferHistoryEntry",
        "description": "The tenant-safe audit view of one direct-rep handoff request."
      },
      "MobileWorkspaceIdentity": {
        "properties": {
          "membership_id": {
            "type": "string",
            "maxLength": 128,
            "minLength": 1,
            "title": "Membership Id"
          },
          "tenant_id": {
            "type": "string",
            "maxLength": 128,
            "minLength": 1,
            "title": "Tenant Id"
          },
          "label": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1,
            "title": "Label"
          },
          "role": {
            "type": "string",
            "enum": [
              "admin",
              "manager",
              "rep"
            ],
            "title": "Role"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "membership_id",
          "tenant_id",
          "label",
          "role"
        ],
        "title": "MobileWorkspaceIdentity",
        "description": "The active workspace label and role; no user account directory fields."
      },
      "MobileWorkspaceList": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/MobileWorkspaceOption"
            },
            "type": "array",
            "title": "Items"
          },
          "active_membership_id": {
            "type": "string",
            "maxLength": 128,
            "minLength": 1,
            "title": "Active Membership Id"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "active_membership_id"
        ],
        "title": "MobileWorkspaceList"
      },
      "MobileWorkspaceOption": {
        "properties": {
          "membership_id": {
            "type": "string",
            "maxLength": 128,
            "minLength": 1,
            "title": "Membership Id"
          },
          "tenant_id": {
            "type": "string",
            "maxLength": 128,
            "minLength": 1,
            "title": "Tenant Id"
          },
          "label": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1,
            "title": "Label"
          },
          "role": {
            "type": "string",
            "enum": [
              "admin",
              "manager",
              "rep"
            ],
            "title": "Role"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "membership_id",
          "tenant_id",
          "label",
          "role"
        ],
        "title": "MobileWorkspaceOption",
        "description": "A safe native reauthorization choice; it is not a switching credential."
      },
      "MobileWorkspaceOverview": {
        "properties": {
          "workspace": {
            "$ref": "#/components/schemas/MobileWorkspaceIdentity"
          },
          "receptionist": {
            "$ref": "#/components/schemas/MobileWorkspaceReceptionistHealth"
          },
          "subscription": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/MobileWorkspaceSubscriptionPreview"
              },
              {
                "type": "null"
              }
            ]
          },
          "generated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Generated At"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "workspace",
          "receptionist",
          "generated_at"
        ],
        "title": "MobileWorkspaceOverview"
      },
      "MobileWorkspaceReceptionistHealth": {
        "properties": {
          "state": {
            "type": "string",
            "enum": [
              "healthy",
              "attention",
              "unavailable"
            ],
            "title": "State"
          },
          "label": {
            "type": "string",
            "maxLength": 120,
            "minLength": 1,
            "title": "Label"
          },
          "detail": {
            "type": "string",
            "maxLength": 280,
            "minLength": 1,
            "title": "Detail"
          },
          "open_task_count": {
            "type": "integer",
            "minimum": 0,
            "title": "Open Task Count"
          },
          "production_ready": {
            "type": "boolean",
            "title": "Production Ready"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "state",
          "label",
          "detail",
          "open_task_count",
          "production_ready"
        ],
        "title": "MobileWorkspaceReceptionistHealth"
      },
      "MobileWorkspaceSetup": {
        "properties": {
          "generated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Generated At"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/MobileSetupItem"
            },
            "type": "array",
            "title": "Items"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "generated_at"
        ],
        "title": "MobileWorkspaceSetup"
      },
      "MobileWorkspaceSubscriptionPreview": {
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "trialing",
              "active",
              "past_due",
              "paused",
              "canceled",
              "unavailable"
            ],
            "title": "Status"
          },
          "plan_label": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1,
            "title": "Plan Label"
          },
          "usage_label": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 160
              },
              {
                "type": "null"
              }
            ],
            "title": "Usage Label"
          },
          "capacity_label": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 160
              },
              {
                "type": "null"
              }
            ],
            "title": "Capacity Label"
          },
          "spend_cap_progress_bps": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 10000,
                "minimum": 0
              },
              {
                "type": "null"
              }
            ],
            "title": "Spend Cap Progress Bps"
          },
          "payment_attention": {
            "type": "string",
            "enum": [
              "none",
              "attention",
              "unavailable"
            ],
            "title": "Payment Attention"
          },
          "next_renewal_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Renewal At"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "status",
          "plan_label",
          "payment_attention"
        ],
        "title": "MobileWorkspaceSubscriptionPreview",
        "description": "The compact billing/capacity headline allowed on the Workspace Hub."
      },
      "Money": {
        "properties": {
          "amount_minor": {
            "type": "integer",
            "title": "Amount Minor"
          },
          "currency": {
            "type": "string",
            "title": "Currency"
          }
        },
        "type": "object",
        "required": [
          "amount_minor",
          "currency"
        ],
        "title": "Money"
      },
      "NumberPoolCreateRequest": {
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1,
            "title": "Name"
          },
          "rotation_strategy": {
            "type": "string",
            "const": "round_robin",
            "title": "Rotation Strategy",
            "default": "round_robin"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "name"
        ],
        "title": "NumberPoolCreateRequest"
      },
      "NumberPoolMemberCreateRequest": {
        "properties": {
          "phone_number_id": {
            "type": "string",
            "title": "Phone Number Id"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "phone_number_id"
        ],
        "title": "NumberPoolMemberCreateRequest"
      },
      "NumberPoolMemberSummary": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "number_pool_id": {
            "type": "string",
            "title": "Number Pool Id"
          },
          "phone_number_id": {
            "type": "string",
            "title": "Phone Number Id"
          },
          "added_at": {
            "type": "string",
            "format": "date-time",
            "title": "Added At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "number_pool_id",
          "phone_number_id",
          "added_at"
        ],
        "title": "NumberPoolMemberSummary"
      },
      "NumberPoolSummary": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "rotation_strategy": {
            "type": "string",
            "const": "round_robin",
            "title": "Rotation Strategy"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "name",
          "rotation_strategy",
          "created_at"
        ],
        "title": "NumberPoolSummary"
      },
      "OnboardingChecklist": {
        "properties": {
          "application_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Application Id"
          },
          "application_status": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "started",
                  "screening_hold",
                  "refused",
                  "paid",
                  "live",
                  "abandoned"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Application Status"
          },
          "mode": {
            "type": "string",
            "enum": [
              "sandbox",
              "production"
            ],
            "title": "Mode"
          },
          "next_key": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "account",
                  "screening",
                  "plan",
                  "sandbox",
                  "sandbox_key",
                  "agreements",
                  "subscription",
                  "carrier",
                  "compliance_data",
                  "activation"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Key"
          },
          "complete": {
            "type": "boolean",
            "title": "Complete"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/OnboardingChecklistItem"
            },
            "type": "array",
            "title": "Items"
          }
        },
        "type": "object",
        "required": [
          "application_id",
          "application_status",
          "mode",
          "next_key",
          "complete",
          "items"
        ],
        "title": "OnboardingChecklist",
        "description": "The whole setup journey as one ordered, state-driven checklist.\n\nComposed on the server from the application and the production preflight; it authorizes\nnothing and every gating decision still lives in the endpoints the items describe."
      },
      "OnboardingChecklistItem": {
        "properties": {
          "key": {
            "type": "string",
            "enum": [
              "account",
              "screening",
              "plan",
              "sandbox",
              "sandbox_key",
              "agreements",
              "subscription",
              "carrier",
              "compliance_data",
              "activation"
            ],
            "title": "Key"
          },
          "phase": {
            "type": "string",
            "enum": [
              "sandbox",
              "production"
            ],
            "title": "Phase"
          },
          "title": {
            "type": "string",
            "title": "Title"
          },
          "summary": {
            "type": "string",
            "title": "Summary"
          },
          "status": {
            "type": "string",
            "enum": [
              "done",
              "active",
              "upcoming",
              "in_review",
              "blocked"
            ],
            "title": "Status"
          },
          "blocking": {
            "type": "boolean",
            "title": "Blocking"
          }
        },
        "type": "object",
        "required": [
          "key",
          "phase",
          "title",
          "summary",
          "status",
          "blocking"
        ],
        "title": "OnboardingChecklistItem",
        "description": "One step in the customer's setup, with its live status."
      },
      "OnboardingState": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "email": {
            "type": "string",
            "title": "Email"
          },
          "full_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Full Name"
          },
          "status": {
            "type": "string",
            "enum": [
              "started",
              "screening_hold",
              "refused",
              "paid",
              "live",
              "abandoned"
            ],
            "title": "Status"
          },
          "current_step": {
            "type": "string",
            "enum": [
              "account",
              "business",
              "compliance",
              "estimate",
              "plan",
              "payment",
              "documents",
              "production"
            ],
            "title": "Current Step"
          },
          "furthest_step": {
            "type": "string",
            "enum": [
              "account",
              "business",
              "compliance",
              "estimate",
              "plan",
              "payment",
              "documents",
              "production"
            ],
            "title": "Furthest Step"
          },
          "answers": {
            "additionalProperties": {
              "additionalProperties": true,
              "type": "object"
            },
            "type": "object",
            "title": "Answers"
          },
          "screening": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ScreeningResult"
              },
              {
                "type": "null"
              }
            ]
          },
          "term": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "mtm",
                  "three_year"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Term"
          },
          "tenant_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Tenant Id"
          },
          "paid_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Paid At"
          },
          "first_api_key_claimable": {
            "type": "boolean",
            "title": "First Api Key Claimable"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "email",
          "full_name",
          "status",
          "current_step",
          "furthest_step",
          "answers",
          "first_api_key_claimable",
          "created_at",
          "updated_at"
        ],
        "title": "OnboardingState",
        "description": "The whole application as the wizard sees it."
      },
      "OnboardingStepRequest": {
        "properties": {
          "step": {
            "type": "string",
            "enum": [
              "business",
              "estimate",
              "plan"
            ],
            "title": "Step"
          },
          "business": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/BusinessAnswers"
              },
              {
                "type": "null"
              }
            ]
          },
          "estimate": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/EstimateAnswers"
              },
              {
                "type": "null"
              }
            ]
          },
          "plan": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PlanAnswers"
              },
              {
                "type": "null"
              }
            ]
          },
          "attribution": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/AttributionPayload"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "step"
        ],
        "title": "OnboardingStepRequest",
        "description": "Save one step. The compliance step is not accepted here - it has its own endpoint,\nbecause it produces a verdict rather than storing an answer."
      },
      "PackSource": {
        "properties": {
          "kind": {
            "type": "string",
            "enum": [
              "pdf",
              "url",
              "text"
            ],
            "title": "Kind"
          },
          "label": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1,
            "title": "Label"
          },
          "text": {
            "type": "string",
            "minLength": 1,
            "title": "Text"
          },
          "uri": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Uri"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "kind",
          "label",
          "text"
        ],
        "title": "PackSource",
        "description": "One distilled section of a pack, plus where it came from.\n\n`text` is the artifact, not a summary of one: `knowledge_pack_versions` carries\n`sources` and no separate body column, so these sections *are* the compiled pack.\nPhrase them spoken-answer-ready - short declaratives an agent can say verbatim."
      },
      "PasswordResetConfirmRequest": {
        "properties": {
          "token": {
            "type": "string",
            "maxLength": 512,
            "minLength": 32,
            "title": "Token"
          },
          "password": {
            "type": "string",
            "maxLength": 1024,
            "minLength": 8,
            "title": "Password"
          }
        },
        "type": "object",
        "required": [
          "token",
          "password"
        ],
        "title": "PasswordResetConfirmRequest"
      },
      "PathwaysBucketOut": {
        "properties": {
          "agent_version_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Agent Version Id"
          },
          "day": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Day"
          },
          "leads_captured": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Leads Captured"
          },
          "messages_taken": {
            "type": "integer",
            "title": "Messages Taken"
          },
          "tickets_opened": {
            "type": "integer",
            "title": "Tickets Opened"
          },
          "tickets_resolved": {
            "type": "integer",
            "title": "Tickets Resolved"
          },
          "callbacks_scheduled": {
            "type": "integer",
            "title": "Callbacks Scheduled"
          },
          "appointments_created": {
            "type": "integer",
            "title": "Appointments Created"
          }
        },
        "type": "object",
        "required": [
          "messages_taken",
          "tickets_opened",
          "tickets_resolved",
          "callbacks_scheduled",
          "appointments_created"
        ],
        "title": "PathwaysBucketOut",
        "description": "One group of the business-pathway counters (ADR-0037).\n\n`leads_captured` is null - never zero - under an `agent_version` slice: the durable\nsource (`contacts.lead_captured_at`) carries no version attribution, and a zero\nwould put a false data point on a chart."
      },
      "PathwaysReport": {
        "properties": {
          "window": {
            "$ref": "#/components/schemas/ReportWindow"
          },
          "group_by": {
            "items": {
              "type": "string",
              "enum": [
                "agent_version",
                "day"
              ]
            },
            "type": "array",
            "title": "Group By"
          },
          "buckets": {
            "items": {
              "$ref": "#/components/schemas/PathwaysBucketOut"
            },
            "type": "array",
            "title": "Buckets"
          }
        },
        "type": "object",
        "required": [
          "window"
        ],
        "title": "PathwaysReport"
      },
      "PhoneNumberCreateRequest": {
        "properties": {
          "phone_e164": {
            "type": "string",
            "pattern": "^\\+[1-9]\\d{7,14}$",
            "title": "Phone E164"
          },
          "telephony_account_id": {
            "type": "string",
            "title": "Telephony Account Id"
          },
          "capabilities": {
            "items": {
              "type": "string",
              "enum": [
                "voice",
                "sms"
              ]
            },
            "type": "array",
            "title": "Capabilities"
          },
          "provider_sid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Provider Sid"
          },
          "a2p_campaign_ref": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "A2P Campaign Ref"
          },
          "daily_dial_cap": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Daily Dial Cap"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "phone_e164",
          "telephony_account_id"
        ],
        "title": "PhoneNumberCreateRequest"
      },
      "PhoneNumberSummary": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "phone_e164": {
            "type": "string",
            "title": "Phone E164"
          },
          "telephony_account_id": {
            "type": "string",
            "title": "Telephony Account Id"
          },
          "provider_sid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Provider Sid"
          },
          "capabilities": {
            "items": {
              "type": "string",
              "enum": [
                "voice",
                "sms"
              ]
            },
            "type": "array",
            "title": "Capabilities"
          },
          "a2p_campaign_ref": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "A2P Campaign Ref"
          },
          "status": {
            "type": "string",
            "enum": [
              "provisioning",
              "active",
              "quarantined",
              "resting",
              "releasing",
              "released"
            ],
            "title": "Status"
          },
          "assigned_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Assigned At"
          },
          "daily_dial_cap": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Daily Dial Cap"
          },
          "dials_today": {
            "type": "integer",
            "title": "Dials Today"
          },
          "reputation_state": {
            "type": "string",
            "enum": [
              "clean",
              "at_risk",
              "flagged",
              "burned"
            ],
            "title": "Reputation State"
          },
          "inbound_agent_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Inbound Agent Id"
          },
          "inbound_route_mode": {
            "type": "string",
            "enum": [
              "agent",
              "voicemail",
              "policy"
            ],
            "title": "Inbound Route Mode",
            "default": "agent"
          },
          "inbound_voicemail_greeting": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Inbound Voicemail Greeting"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "phone_e164",
          "telephony_account_id",
          "status",
          "dials_today",
          "reputation_state",
          "created_at"
        ],
        "title": "PhoneNumberSummary"
      },
      "PlanAnswers": {
        "properties": {
          "term": {
            "type": "string",
            "enum": [
              "mtm",
              "three_year"
            ],
            "title": "Term"
          },
          "workload_class": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "engage",
                  "workforce",
                  "sales"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Workload Class"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "term"
        ],
        "title": "PlanAnswers",
        "description": "Step 5. The term the customer is buying, plus the workload class.\n\nThe class is bounded below by the compliance screen's verdict and validated\nserver-side - a class is a ceiling, so buying up is allowed and buying down is not,\nand the browser disabling an option is a courtesy rather than the control."
      },
      "PlanSummary": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "base_price_minor": {
            "type": "integer",
            "title": "Base Price Minor"
          },
          "currency": {
            "type": "string",
            "title": "Currency"
          },
          "included_quantities": {
            "additionalProperties": {
              "type": "string",
              "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
            },
            "type": "object",
            "title": "Included Quantities"
          },
          "overage_rates": {
            "additionalProperties": {
              "type": "string",
              "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
            },
            "type": "object",
            "title": "Overage Rates"
          },
          "concurrency_limit": {
            "type": "integer",
            "title": "Concurrency Limit"
          },
          "receptionist_connections_included": {
            "type": "integer",
            "title": "Receptionist Connections Included",
            "default": 0
          },
          "term": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "mtm",
                  "three_year"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Term"
          },
          "feature_flags": {
            "additionalProperties": true,
            "type": "object",
            "title": "Feature Flags"
          }
        },
        "type": "object",
        "required": [
          "id",
          "name",
          "base_price_minor",
          "currency",
          "concurrency_limit"
        ],
        "title": "PlanSummary"
      },
      "PortalTelemetryEventRequest": {
        "properties": {
          "event": {
            "type": "string",
            "enum": [
              "job_selected",
              "setup_completed",
              "setup_blocked",
              "first_test_started",
              "developer_handoff_opened",
              "time_to_live_recorded",
              "route_error",
              "readiness_mismatch",
              "setup_abandoned"
            ],
            "title": "Event"
          },
          "workflow": {
            "type": "string",
            "enum": [
              "receptionist",
              "workforce",
              "csat",
              "sales",
              "not_applicable"
            ],
            "title": "Workflow",
            "default": "not_applicable"
          },
          "workforce_track": {
            "type": "string",
            "enum": [
              "availability",
              "shift-reminders",
              "candidate-follow-up",
              "not_applicable"
            ],
            "title": "Workforce Track",
            "default": "not_applicable"
          },
          "surface": {
            "type": "string",
            "enum": [
              "home",
              "setup",
              "try",
              "developer",
              "activity",
              "billing",
              "manage",
              "unknown"
            ],
            "title": "Surface",
            "default": "unknown"
          },
          "test_channel": {
            "type": "string",
            "enum": [
              "browser",
              "text",
              "phone",
              "not_applicable"
            ],
            "title": "Test Channel",
            "default": "not_applicable"
          },
          "blocker": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "account_agreements_required",
                  "agents_write_scope_required",
                  "calls_write_scope_required",
                  "runtime_not_configured",
                  "browser_runtime_not_configured",
                  "fleet_placement_not_configured",
                  "agent_chat_not_configured",
                  "assisted_setup_not_configured",
                  "voice_catalog_empty",
                  "verified_test_number_required",
                  "test_call_daily_cap_reached",
                  "telephony_account_required",
                  "telephony_account_unverified",
                  "telephony_worker_unavailable",
                  "calendar_integration_not_configured",
                  "calendar_connection_required",
                  "calendar_connection_reconnect_required"
                ]
              },
              {
                "type": "string",
                "enum": [
                  "agent_required",
                  "workflow_not_ready",
                  "readiness_unknown",
                  "route_not_found",
                  "query_invalid",
                  "request_failed",
                  "not_applicable"
                ]
              }
            ],
            "title": "Blocker",
            "default": "not_applicable"
          },
          "duration_bucket": {
            "type": "string",
            "enum": [
              "under_1_minute",
              "1_to_5_minutes",
              "5_to_30_minutes",
              "over_30_minutes",
              "not_applicable"
            ],
            "title": "Duration Bucket",
            "default": "not_applicable"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "event"
        ],
        "title": "PortalTelemetryEventRequest",
        "description": "One finite product-funnel event from the authenticated portal.\n\nThe event is intentionally not an audit trail.  Authentication and normal\nper-key rate limiting still apply to the request, but neither the payload\nnor the monitoring event receives a caller, contact, helper, campaign,\nroute URL, exception string, or raw elapsed time."
      },
      "PortalTelemetryReceipt": {
        "properties": {
          "recorded": {
            "type": "boolean",
            "title": "Recorded"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "recorded"
        ],
        "title": "PortalTelemetryReceipt",
        "description": "An intentionally content-free acknowledgement of a monitoring event."
      },
      "PrepaidFundingIntent": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "amount_minor": {
            "type": "integer",
            "title": "Amount Minor"
          },
          "currency": {
            "type": "string",
            "title": "Currency"
          },
          "status": {
            "type": "string",
            "title": "Status"
          },
          "checkout_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Checkout Url"
          },
          "expires_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Expires At"
          },
          "pending": {
            "type": "boolean",
            "title": "Pending",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "id",
          "amount_minor",
          "currency",
          "status"
        ],
        "title": "PrepaidFundingIntent"
      },
      "PrepaidFundingRequest": {
        "properties": {
          "amount_minor": {
            "type": "integer",
            "minimum": 1,
            "title": "Amount Minor"
          },
          "currency": {
            "type": "string",
            "const": "usd",
            "title": "Currency",
            "default": "usd"
          },
          "idempotency_key": {
            "type": "string",
            "maxLength": 160,
            "minLength": 8,
            "title": "Idempotency Key"
          }
        },
        "type": "object",
        "required": [
          "amount_minor",
          "idempotency_key"
        ],
        "title": "PrepaidFundingRequest",
        "description": "One manual top-up.  The browser supplies no price id or currency conversion."
      },
      "PrepaidReceipt": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "funding_intent_id": {
            "type": "string",
            "title": "Funding Intent Id"
          },
          "kind": {
            "type": "string",
            "title": "Kind"
          },
          "amount_minor": {
            "type": "integer",
            "title": "Amount Minor"
          },
          "currency": {
            "type": "string",
            "title": "Currency"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "funding_intent_id",
          "kind",
          "amount_minor",
          "currency",
          "created_at"
        ],
        "title": "PrepaidReceipt"
      },
      "PrepaidReconciliation": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "contact_attempt_id": {
            "type": "string",
            "title": "Contact Attempt Id"
          },
          "status": {
            "type": "string",
            "title": "Status"
          },
          "reason": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reason"
          },
          "provider_call_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Provider Call Id"
          },
          "actual_billed_seconds": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Actual Billed Seconds"
          },
          "actual_amount_minor": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Actual Amount Minor"
          },
          "required_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Required At"
          },
          "resolved_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Resolved At"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "contact_attempt_id",
          "status",
          "reason",
          "provider_call_id",
          "actual_billed_seconds",
          "actual_amount_minor",
          "required_at",
          "resolved_at",
          "created_at"
        ],
        "title": "PrepaidReconciliation",
        "description": "A customer-visible hold exception; the opaque callback correlation stays private."
      },
      "PrepaidWallet": {
        "properties": {
          "currency": {
            "type": "string",
            "title": "Currency"
          },
          "prepaid_balance_minor": {
            "type": "integer",
            "title": "Prepaid Balance Minor"
          },
          "prepaid_reserved_minor": {
            "type": "integer",
            "title": "Prepaid Reserved Minor"
          },
          "prepaid_available_minor": {
            "type": "integer",
            "title": "Prepaid Available Minor"
          },
          "spend_cap_minor": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Spend Cap Minor"
          },
          "spend_cap_period": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Spend Cap Period"
          },
          "low_balance_threshold_minor": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Low Balance Threshold Minor"
          },
          "funding_min_minor": {
            "type": "integer",
            "minimum": 1,
            "title": "Funding Min Minor"
          },
          "funding_max_minor": {
            "type": "integer",
            "minimum": 1,
            "title": "Funding Max Minor"
          },
          "applies_to": {
            "type": "string",
            "const": "managed_verified_number_test_calls_only",
            "title": "Applies To",
            "default": "managed_verified_number_test_calls_only"
          },
          "auto_recharge_supported": {
            "type": "boolean",
            "title": "Auto Recharge Supported",
            "default": false
          },
          "funding_intents": {
            "items": {
              "$ref": "#/components/schemas/PrepaidFundingIntent"
            },
            "type": "array",
            "title": "Funding Intents"
          },
          "receipts": {
            "items": {
              "$ref": "#/components/schemas/PrepaidReceipt"
            },
            "type": "array",
            "title": "Receipts"
          },
          "reconciliations": {
            "items": {
              "$ref": "#/components/schemas/PrepaidReconciliation"
            },
            "type": "array",
            "title": "Reconciliations"
          }
        },
        "type": "object",
        "required": [
          "currency",
          "prepaid_balance_minor",
          "prepaid_reserved_minor",
          "prepaid_available_minor",
          "spend_cap_minor",
          "spend_cap_period",
          "low_balance_threshold_minor",
          "funding_min_minor",
          "funding_max_minor",
          "funding_intents",
          "receipts",
          "reconciliations"
        ],
        "title": "PrepaidWallet"
      },
      "ProductionActivationResponse": {
        "properties": {
          "application_id": {
            "type": "string",
            "title": "Application Id"
          },
          "application_status": {
            "type": "string",
            "enum": [
              "started",
              "screening_hold",
              "refused",
              "paid",
              "live",
              "abandoned"
            ],
            "title": "Application Status"
          },
          "activated": {
            "type": "boolean",
            "title": "Activated"
          },
          "review_requested": {
            "type": "boolean",
            "title": "Review Requested"
          },
          "ready": {
            "type": "boolean",
            "title": "Ready"
          },
          "checks": {
            "items": {
              "$ref": "#/components/schemas/ProductionReadinessCheck"
            },
            "type": "array",
            "title": "Checks"
          }
        },
        "type": "object",
        "required": [
          "application_id",
          "application_status",
          "activated",
          "review_requested",
          "ready",
          "checks"
        ],
        "title": "ProductionActivationResponse",
        "description": "The outcome of a self-serve production-activation attempt.\n\nExactly one of `activated` / `review_requested` is true on a successful call, and both\nare false only when the workspace was already live (an idempotent no-op). A workspace\nthat is not yet ready does not reach this model - the endpoint refuses with the failed\nchecks named, the same as the review-request preflight.\n\n`activated` true means this call moved the workspace to production itself: the\napplication screened cleanly (eligible, no waiver, no gated states) and every readiness\ngate was met, so no human review was required. `review_requested` true means the\nworkspace was ready but the screen was not clean - a waiver, a gated state, or a hold -\nso it was routed to staff review instead of activated, exactly as\n`POST /onboarding/production-readiness/request` would."
      },
      "ProductionReadinessCheck": {
        "properties": {
          "key": {
            "type": "string",
            "enum": [
              "tenant_active",
              "application_paid",
              "current_agreements",
              "subscription_workload_class",
              "verified_byo_carrier"
            ],
            "title": "Key"
          },
          "ready": {
            "type": "boolean",
            "title": "Ready"
          },
          "detail": {
            "type": "string",
            "title": "Detail"
          }
        },
        "type": "object",
        "required": [
          "key",
          "ready",
          "detail"
        ],
        "title": "ProductionReadinessCheck"
      },
      "ProductionReadinessStatus": {
        "properties": {
          "application_id": {
            "type": "string",
            "title": "Application Id"
          },
          "application_status": {
            "type": "string",
            "enum": [
              "started",
              "screening_hold",
              "refused",
              "paid",
              "live",
              "abandoned"
            ],
            "title": "Application Status"
          },
          "ready": {
            "type": "boolean",
            "title": "Ready"
          },
          "request_status": {
            "type": "string",
            "enum": [
              "not_requested",
              "requested",
              "live"
            ],
            "title": "Request Status"
          },
          "requested_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Requested At"
          },
          "activated_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Activated At"
          },
          "staff_approval_required": {
            "type": "boolean",
            "const": true,
            "title": "Staff Approval Required",
            "default": true
          },
          "checks": {
            "items": {
              "$ref": "#/components/schemas/ProductionReadinessCheck"
            },
            "type": "array",
            "title": "Checks"
          }
        },
        "type": "object",
        "required": [
          "application_id",
          "application_status",
          "ready",
          "request_status",
          "checks"
        ],
        "title": "ProductionReadinessStatus",
        "description": "Owner-visible production preflight, never an authorization to go live."
      },
      "ProductionReviewRequestResponse": {
        "properties": {
          "application_id": {
            "type": "string",
            "title": "Application Id"
          },
          "application_status": {
            "type": "string",
            "enum": [
              "started",
              "screening_hold",
              "refused",
              "paid",
              "live",
              "abandoned"
            ],
            "title": "Application Status"
          },
          "ready": {
            "type": "boolean",
            "title": "Ready"
          },
          "request_status": {
            "type": "string",
            "enum": [
              "not_requested",
              "requested",
              "live"
            ],
            "title": "Request Status"
          },
          "requested_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Requested At"
          },
          "activated_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Activated At"
          },
          "staff_approval_required": {
            "type": "boolean",
            "const": true,
            "title": "Staff Approval Required",
            "default": true
          },
          "checks": {
            "items": {
              "$ref": "#/components/schemas/ProductionReadinessCheck"
            },
            "type": "array",
            "title": "Checks"
          },
          "request_created": {
            "type": "boolean",
            "title": "Request Created"
          }
        },
        "type": "object",
        "required": [
          "application_id",
          "application_status",
          "ready",
          "request_status",
          "checks",
          "request_created"
        ],
        "title": "ProductionReviewRequestResponse",
        "description": "The durable outcome of a retry-safe request for staff review."
      },
      "QualificationCoverage": {
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "available",
              "invalid_record",
              "invalid_configuration",
              "workflow_mismatch"
            ],
            "title": "Status"
          },
          "questions": {
            "items": {
              "$ref": "#/components/schemas/QualificationQuestionCoverage"
            },
            "type": "array",
            "maxItems": 50,
            "title": "Questions"
          }
        },
        "type": "object",
        "required": [
          "status"
        ],
        "title": "QualificationCoverage",
        "description": "Complete configured question inventory for one current receipt, not a page total."
      },
      "QualificationFitCount": {
        "properties": {
          "workflow": {
            "type": "string",
            "enum": [
              "sales",
              "recruiting"
            ],
            "title": "Workflow"
          },
          "status": {
            "type": "string",
            "enum": [
              "good_fit",
              "not_a_fit",
              "needs_follow_up",
              "unreviewed",
              "superseded"
            ],
            "title": "Status"
          },
          "count": {
            "type": "integer",
            "minimum": 0,
            "title": "Count"
          }
        },
        "type": "object",
        "required": [
          "workflow",
          "status",
          "count"
        ],
        "title": "QualificationFitCount"
      },
      "QualificationFitPreview": {
        "properties": {
          "status": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "good_fit",
                  "not_a_fit",
                  "needs_follow_up"
                ]
              },
              {
                "type": "string",
                "const": "unreviewed"
              }
            ],
            "title": "Status"
          },
          "reason": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 240
              },
              {
                "type": "null"
              }
            ],
            "title": "Reason"
          },
          "reason_truncated": {
            "type": "boolean",
            "title": "Reason Truncated",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "status"
        ],
        "title": "QualificationFitPreview",
        "description": "A bounded team-decision preview for a current qualification receipt."
      },
      "QualificationFitSummary": {
        "properties": {
          "window": {
            "$ref": "#/components/schemas/DashboardWindow"
          },
          "as_of": {
            "type": "string",
            "format": "date-time",
            "title": "As Of"
          },
          "counts": {
            "items": {
              "$ref": "#/components/schemas/QualificationFitCount"
            },
            "type": "array",
            "title": "Counts"
          }
        },
        "type": "object",
        "required": [
          "window",
          "as_of",
          "counts"
        ],
        "title": "QualificationFitSummary",
        "description": "Current team decisions for latest answer receipts saved in the response window."
      },
      "QualificationQuestionCoverage": {
        "properties": {
          "question_id": {
            "type": "string",
            "title": "Question Id"
          },
          "prompt": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Prompt"
          },
          "answer_status": {
            "type": "string",
            "enum": [
              "answered",
              "unknown",
              "refused",
              "not_recorded"
            ],
            "title": "Answer Status"
          },
          "answer": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Answer"
          }
        },
        "type": "object",
        "required": [
          "question_id",
          "answer_status"
        ],
        "title": "QualificationQuestionCoverage"
      },
      "QualificationReview": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "action_id": {
            "type": "string",
            "title": "Action Id"
          },
          "revision": {
            "type": "integer",
            "minimum": 1,
            "title": "Revision"
          },
          "decision": {
            "type": "string",
            "enum": [
              "good_fit",
              "not_a_fit",
              "needs_follow_up"
            ],
            "title": "Decision"
          },
          "reason": {
            "type": "string",
            "title": "Reason"
          },
          "reviewer_ref": {
            "type": "string",
            "title": "Reviewer Ref"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "action_id",
          "revision",
          "decision",
          "reason",
          "reviewer_ref",
          "created_at"
        ],
        "title": "QualificationReview"
      },
      "QualificationReviewDetails": {
        "properties": {
          "fit_review": {
            "$ref": "#/components/schemas/QualificationReviewState"
          },
          "qualification_coverage": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/QualificationCoverage"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "required": [
          "fit_review"
        ],
        "title": "QualificationReviewDetails",
        "description": "Pinned answers and the current review state for a call's source receipt."
      },
      "QualificationReviewRequest": {
        "properties": {
          "decision": {
            "type": "string",
            "enum": [
              "good_fit",
              "not_a_fit",
              "needs_follow_up"
            ],
            "title": "Decision"
          },
          "reason": {
            "type": "string",
            "maxLength": 2000,
            "minLength": 1,
            "title": "Reason"
          },
          "expected_revision": {
            "type": "integer",
            "minimum": 0,
            "title": "Expected Revision"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "decision",
          "reason",
          "expected_revision"
        ],
        "title": "QualificationReviewRequest"
      },
      "QualificationReviewState": {
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "unreviewed",
              "reviewed",
              "superseded",
              "unavailable"
            ],
            "title": "Status"
          },
          "current_action_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Current Action Id"
          },
          "latest_review": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/QualificationReview"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "required": [
          "status"
        ],
        "title": "QualificationReviewState",
        "description": "A review applies only to its source receipt, never to later corrections."
      },
      "RealtimeToken": {
        "properties": {
          "token": {
            "type": "string",
            "title": "Token"
          },
          "token_id": {
            "type": "string",
            "title": "Token Id"
          },
          "call_id": {
            "type": "string",
            "title": "Call Id"
          },
          "actor_api_key_id": {
            "type": "string",
            "title": "Actor Api Key Id"
          },
          "channel": {
            "type": "string",
            "const": "calls.audio",
            "title": "Channel"
          },
          "expires_at": {
            "type": "string",
            "format": "date-time",
            "title": "Expires At"
          },
          "listener_url": {
            "type": "string",
            "title": "Listener Url"
          },
          "single_use": {
            "type": "boolean",
            "const": true,
            "title": "Single Use",
            "default": true
          }
        },
        "type": "object",
        "required": [
          "token",
          "token_id",
          "call_id",
          "actor_api_key_id",
          "channel",
          "expires_at",
          "listener_url"
        ],
        "title": "RealtimeToken",
        "description": "A short-lived, single-use realtime gateway credential.\n\nThis is intentionally not a general API key and must never be persisted.  The gateway\nverifies its call, tenant, channel and JTI, then creates the supervision-session audit\nrow only after it has a carrier/media source to attach."
      },
      "ReceptionistActionTargetRequest": {
        "properties": {
          "endpoint_id": {
            "type": "string",
            "maxLength": 128,
            "minLength": 1,
            "title": "Endpoint Id"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "endpoint_id"
        ],
        "title": "ReceptionistActionTargetRequest",
        "description": "Bind one predefined receptionist outcome to the tenant's signed endpoint.\n\nThe endpoint URL and signing secret are configured through ``/webhook-endpoint``.\nThis resource deliberately accepts no tool name, JSON Schema, command, or arbitrary\nevent type: its path parameter is the entire approved action catalog."
      },
      "ReceptionistActionTargetSummary": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "outcome_type": {
            "type": "string",
            "title": "Outcome Type"
          },
          "event_type": {
            "type": "string",
            "title": "Event Type"
          },
          "endpoint_id": {
            "type": "string",
            "title": "Endpoint Id"
          },
          "endpoint_url": {
            "type": "string",
            "title": "Endpoint Url"
          },
          "endpoint_status": {
            "type": "string",
            "title": "Endpoint Status"
          },
          "delivery_count": {
            "type": "integer",
            "title": "Delivery Count"
          },
          "latest_delivery_status": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Latest Delivery Status"
          },
          "latest_delivery_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Latest Delivery At"
          },
          "last_tested_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Tested At"
          },
          "last_test_status": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Test Status"
          },
          "last_test_response_code": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Test Response Code"
          },
          "signing_secret_source": {
            "type": "string",
            "title": "Signing Secret Source",
            "default": "webhook_endpoint_create_or_rotate"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "outcome_type",
          "event_type",
          "endpoint_id",
          "endpoint_url",
          "endpoint_status",
          "delivery_count",
          "latest_delivery_status",
          "latest_delivery_at",
          "last_tested_at",
          "last_test_status",
          "last_test_response_code",
          "created_at",
          "updated_at"
        ],
        "title": "ReceptionistActionTargetSummary",
        "description": "One native action outcome plus the target's present delivery health."
      },
      "ReceptionistConnectionQuote": {
        "properties": {
          "receptionist_connections": {
            "type": "integer",
            "title": "Receptionist Connections"
          },
          "total_inbound_connections": {
            "type": "integer",
            "title": "Total Inbound Connections"
          },
          "amount_due_minor": {
            "type": "integer",
            "title": "Amount Due Minor"
          },
          "currency": {
            "type": "string",
            "const": "usd",
            "title": "Currency",
            "default": "usd"
          },
          "recurring_connections_minor": {
            "type": "integer",
            "title": "Recurring Connections Minor"
          },
          "renewal_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Renewal At"
          },
          "quote_fingerprint": {
            "type": "string",
            "title": "Quote Fingerprint"
          },
          "purchase_available": {
            "type": "boolean",
            "title": "Purchase Available"
          },
          "prepay_exempt": {
            "type": "boolean",
            "title": "Prepay Exempt"
          }
        },
        "type": "object",
        "required": [
          "receptionist_connections",
          "total_inbound_connections",
          "amount_due_minor",
          "recurring_connections_minor",
          "renewal_at",
          "quote_fingerprint",
          "purchase_available",
          "prepay_exempt"
        ],
        "title": "ReceptionistConnectionQuote"
      },
      "ReceptionistConnectionsRequest": {
        "properties": {
          "receptionist_connections": {
            "type": "integer",
            "minimum": 0,
            "title": "Receptionist Connections"
          }
        },
        "type": "object",
        "required": [
          "receptionist_connections"
        ],
        "title": "ReceptionistConnectionsRequest",
        "description": "The absolute purchased quantity - never a delta, so retries converge on N.\n\nCounted the way the checkout body counts it: connections bought ON TOP of whatever the\nplan already includes. A standalone receptionist tenant at `0` still answers one call\nat a time, because its plan's $250 base fee carries the first connection."
      },
      "ReceptionistDryRunActionExpectation": {
        "properties": {
          "mode": {
            "type": "string",
            "const": "dry_run",
            "title": "Mode",
            "default": "dry_run"
          },
          "tool": {
            "type": "string",
            "enum": [
              "take_message",
              "open_ticket",
              "update_lead",
              "book_meeting",
              "schedule_callback",
              "record_optout",
              "end_call"
            ],
            "title": "Tool"
          },
          "expected_effect": {
            "type": "string",
            "enum": [
              "message_recorded",
              "ticket_opened",
              "lead_updated",
              "booking_created",
              "callback_scheduled",
              "opt_out_recorded",
              "call_ended"
            ],
            "title": "Expected Effect"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "tool",
          "expected_effect"
        ],
        "title": "ReceptionistDryRunActionExpectation",
        "description": "One exact native action the runner must observe through its dry-run facade."
      },
      "ReceptionistFaq": {
        "properties": {
          "question": {
            "type": "string",
            "maxLength": 500,
            "minLength": 1,
            "title": "Question"
          },
          "answer": {
            "type": "string",
            "maxLength": 2000,
            "minLength": 1,
            "title": "Answer"
          },
          "source_refs": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "maxItems": 20,
            "title": "Source Refs"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "question",
          "answer"
        ],
        "title": "ReceptionistFaq",
        "description": "An approved caller question and its grounded spoken answer."
      },
      "ReceptionistIntelligenceDraft": {
        "properties": {
          "business_name": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1,
            "title": "Business Name"
          },
          "business_summary": {
            "type": "string",
            "maxLength": 2000,
            "minLength": 1,
            "title": "Business Summary"
          },
          "business_summary_source_refs": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "maxItems": 20,
            "title": "Business Summary Source Refs"
          },
          "locations": {
            "items": {
              "$ref": "#/components/schemas/ReceptionistLocation"
            },
            "type": "array",
            "maxItems": 50,
            "title": "Locations"
          },
          "services": {
            "items": {
              "$ref": "#/components/schemas/ReceptionistService"
            },
            "type": "array",
            "maxItems": 100,
            "title": "Services"
          },
          "pricing_policy": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 2000
              },
              {
                "type": "null"
              }
            ],
            "title": "Pricing Policy"
          },
          "pricing_policy_source_refs": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "maxItems": 20,
            "title": "Pricing Policy Source Refs"
          },
          "faqs": {
            "items": {
              "$ref": "#/components/schemas/ReceptionistFaq"
            },
            "type": "array",
            "maxItems": 100,
            "title": "Faqs"
          },
          "customer_policies": {
            "items": {
              "$ref": "#/components/schemas/ReceptionistPolicyFact"
            },
            "type": "array",
            "maxItems": 100,
            "title": "Customer Policies"
          },
          "supported_intents": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "maxItems": 50,
            "title": "Supported Intents"
          },
          "tone": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Tone"
          },
          "escalation_rules": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 2000
              },
              {
                "type": "null"
              }
            ],
            "title": "Escalation Rules"
          },
          "escalation_rules_source_refs": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "maxItems": 20,
            "title": "Escalation Rules Source Refs"
          },
          "prohibited_claims": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "maxItems": 50,
            "title": "Prohibited Claims"
          },
          "approved_actions": {
            "items": {
              "type": "string",
              "enum": [
                "check_calendar",
                "book_meeting",
                "send_sms",
                "send_verification_code",
                "verify_identity",
                "record_sms_consent",
                "take_message",
                "open_ticket",
                "update_lead",
                "record_survey_answer",
                "confirm_shift",
                "record_shift_response",
                "record_qualification",
                "schedule_callback",
                "transfer_to_human",
                "record_optout",
                "end_call",
                "custom_webhook"
              ]
            },
            "type": "array",
            "title": "Approved Actions"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "business_name",
          "business_summary"
        ],
        "title": "ReceptionistIntelligenceDraft",
        "description": "The customer-editable intelligence document for one receptionist."
      },
      "ReceptionistIntelligencePreview": {
        "properties": {
          "compiled_knowledge": {
            "type": "string",
            "title": "Compiled Knowledge"
          },
          "compiled_character_count": {
            "type": "integer",
            "title": "Compiled Character Count"
          },
          "compiled_token_count": {
            "type": "integer",
            "title": "Compiled Token Count"
          },
          "location_token_counts": {
            "patternProperties": {
              "^[a-z][a-z0-9_-]{0,63}$": {
                "type": "integer"
              }
            },
            "type": "object",
            "title": "Location Token Counts"
          },
          "source_ids": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Source Ids"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "compiled_knowledge",
          "compiled_character_count",
          "compiled_token_count"
        ],
        "title": "ReceptionistIntelligencePreview",
        "description": "A customer-visible render of exactly the compact knowledge that can be published."
      },
      "ReceptionistIntelligenceSummary": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "agent_definition_id": {
            "type": "string",
            "title": "Agent Definition Id"
          },
          "current_version": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Current Version"
          },
          "draft": {
            "$ref": "#/components/schemas/ReceptionistIntelligenceDraft"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "agent_definition_id",
          "draft",
          "updated_at",
          "created_at"
        ],
        "title": "ReceptionistIntelligenceSummary"
      },
      "ReceptionistIntelligenceUpsertRequest": {
        "properties": {
          "draft": {
            "$ref": "#/components/schemas/ReceptionistIntelligenceDraft"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "draft"
        ],
        "title": "ReceptionistIntelligenceUpsertRequest",
        "description": "Replace the draft atomically; an immutable version is created separately."
      },
      "ReceptionistIntelligenceVersionResource": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "receptionist_intelligence_id": {
            "type": "string",
            "title": "Receptionist Intelligence Id"
          },
          "version": {
            "type": "integer",
            "title": "Version"
          },
          "content_hash": {
            "type": "string",
            "title": "Content Hash"
          },
          "source_ids": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Source Ids"
          },
          "compiled_knowledge": {
            "type": "string",
            "title": "Compiled Knowledge"
          },
          "compiled_character_count": {
            "type": "integer",
            "title": "Compiled Character Count"
          },
          "compiled_token_count": {
            "type": "integer",
            "title": "Compiled Token Count"
          },
          "location_token_counts": {
            "patternProperties": {
              "^[a-z][a-z0-9_-]{0,63}$": {
                "type": "integer"
              }
            },
            "type": "object",
            "title": "Location Token Counts"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "draft": {
            "$ref": "#/components/schemas/ReceptionistIntelligenceDraft"
          },
          "sources": {
            "items": {
              "$ref": "#/components/schemas/ReceptionistSourceSummary"
            },
            "type": "array",
            "title": "Sources"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "receptionist_intelligence_id",
          "version",
          "content_hash",
          "compiled_knowledge",
          "compiled_character_count",
          "compiled_token_count",
          "created_at",
          "draft"
        ],
        "title": "ReceptionistIntelligenceVersionResource"
      },
      "ReceptionistIntelligenceVersionSummary": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "receptionist_intelligence_id": {
            "type": "string",
            "title": "Receptionist Intelligence Id"
          },
          "version": {
            "type": "integer",
            "title": "Version"
          },
          "content_hash": {
            "type": "string",
            "title": "Content Hash"
          },
          "source_ids": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Source Ids"
          },
          "compiled_knowledge": {
            "type": "string",
            "title": "Compiled Knowledge"
          },
          "compiled_character_count": {
            "type": "integer",
            "title": "Compiled Character Count"
          },
          "compiled_token_count": {
            "type": "integer",
            "title": "Compiled Token Count"
          },
          "location_token_counts": {
            "patternProperties": {
              "^[a-z][a-z0-9_-]{0,63}$": {
                "type": "integer"
              }
            },
            "type": "object",
            "title": "Location Token Counts"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "receptionist_intelligence_id",
          "version",
          "content_hash",
          "compiled_knowledge",
          "compiled_character_count",
          "compiled_token_count",
          "created_at"
        ],
        "title": "ReceptionistIntelligenceVersionSummary"
      },
      "ReceptionistLiveModelPreflightEvidence": {
        "properties": {
          "capability_manifest_hash": {
            "type": "string",
            "pattern": "^[0-9a-f]{64}$",
            "title": "Capability Manifest Hash"
          },
          "rendered_token_budget": {
            "$ref": "#/components/schemas/ReceptionistRenderedTokenBudget"
          },
          "nonempty_stream": {
            "type": "boolean",
            "title": "Nonempty Stream"
          },
          "automatic_tool_choice": {
            "type": "boolean",
            "title": "Automatic Tool Choice"
          },
          "automatic_tool_call": {
            "type": "boolean",
            "title": "Automatic Tool Call"
          },
          "tool_result_continuation": {
            "type": "boolean",
            "title": "Tool Result Continuation"
          },
          "parser_name": {
            "type": "string",
            "maxLength": 100,
            "minLength": 1,
            "title": "Parser Name"
          },
          "parser_validated": {
            "type": "boolean",
            "title": "Parser Validated"
          },
          "authenticated_runtime_access": {
            "type": "boolean",
            "title": "Authenticated Runtime Access"
          },
          "loopback_only_access": {
            "type": "boolean",
            "title": "Loopback Only Access"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "capability_manifest_hash",
          "rendered_token_budget",
          "nonempty_stream",
          "automatic_tool_choice",
          "automatic_tool_call",
          "tool_result_continuation",
          "parser_name",
          "parser_validated",
          "authenticated_runtime_access",
          "loopback_only_access"
        ],
        "title": "ReceptionistLiveModelPreflightEvidence",
        "description": "The non-scripted serving proof required before a receptionist is production-ready.\n\nThis is persisted under ``eval_runs.results.live_model_preflight`` by an operational\nrouting-chain worker.  It is intentionally structured so a generic successful model\nreplay cannot be misread as a proof that the exact production request fits and tools\ncan continue after a result."
      },
      "ReceptionistLocation": {
        "properties": {
          "ref": {
            "type": "string",
            "pattern": "^[a-z][a-z0-9_-]{0,63}$",
            "title": "Ref"
          },
          "name": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1,
            "title": "Name"
          },
          "address": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Address"
          },
          "phone": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 64
              },
              {
                "type": "null"
              }
            ],
            "title": "Phone"
          },
          "service_area": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Service Area"
          },
          "facts": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "maxItems": 30,
            "title": "Facts"
          },
          "source_refs": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "maxItems": 20,
            "title": "Source Refs"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "ref",
          "name"
        ],
        "title": "ReceptionistLocation",
        "description": "A stable business-location reference used by a phone line's AI policy step."
      },
      "ReceptionistPolicyFact": {
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1,
            "title": "Name"
          },
          "value": {
            "type": "string",
            "maxLength": 2000,
            "minLength": 1,
            "title": "Value"
          },
          "source_refs": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "maxItems": 20,
            "title": "Source Refs"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "name",
          "value"
        ],
        "title": "ReceptionistPolicyFact",
        "description": "A named business policy, distinct from platform safety/compliance controls."
      },
      "ReceptionistPurchaseInput": {
        "properties": {
          "receptionist_connections": {
            "type": "integer",
            "minimum": 0,
            "title": "Receptionist Connections"
          },
          "request_key": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1,
            "pattern": "\\S",
            "title": "Request Key"
          },
          "amount_due_minor": {
            "type": "integer",
            "minimum": 0,
            "title": "Amount Due Minor"
          },
          "currency": {
            "type": "string",
            "const": "usd",
            "title": "Currency"
          },
          "quote_fingerprint": {
            "type": "string",
            "pattern": "^[a-f0-9]{64}$",
            "title": "Quote Fingerprint"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "receptionist_connections",
          "request_key",
          "amount_due_minor",
          "currency",
          "quote_fingerprint"
        ],
        "title": "ReceptionistPurchaseInput"
      },
      "ReceptionistPurchaseResponse": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "status": {
            "type": "string",
            "title": "Status"
          },
          "receptionist_connections": {
            "type": "integer",
            "title": "Receptionist Connections"
          },
          "total_inbound_connections": {
            "type": "integer",
            "title": "Total Inbound Connections"
          },
          "amount_due_minor": {
            "type": "integer",
            "title": "Amount Due Minor"
          },
          "currency": {
            "type": "string",
            "const": "usd",
            "title": "Currency",
            "default": "usd"
          },
          "recurring_connections_minor": {
            "type": "integer",
            "title": "Recurring Connections Minor"
          },
          "renewal_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Renewal At"
          },
          "failure_code": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Failure Code"
          },
          "payment_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Payment Url"
          }
        },
        "type": "object",
        "required": [
          "id",
          "status",
          "receptionist_connections",
          "total_inbound_connections",
          "amount_due_minor",
          "recurring_connections_minor",
          "renewal_at",
          "failure_code"
        ],
        "title": "ReceptionistPurchaseResponse"
      },
      "ReceptionistQuoteRequest": {
        "properties": {
          "receptionist_connections": {
            "type": "integer",
            "minimum": 0,
            "title": "Receptionist Connections"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "receptionist_connections"
        ],
        "title": "ReceptionistQuoteRequest"
      },
      "ReceptionistRegressionCaseArchiveRequest": {
        "properties": {
          "expected_version": {
            "type": "integer",
            "minimum": 1,
            "title": "Expected Version"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "expected_version"
        ],
        "title": "ReceptionistRegressionCaseArchiveRequest",
        "description": "Explicit confirmation that a current case should stop participating in releases."
      },
      "ReceptionistRegressionCaseCreateRequest": {
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1,
            "title": "Name"
          },
          "caller_utterance": {
            "type": "string",
            "maxLength": 2000,
            "minLength": 1,
            "title": "Caller Utterance"
          },
          "expected_facts": {
            "items": {
              "type": "string",
              "maxLength": 1000,
              "minLength": 1
            },
            "type": "array",
            "maxItems": 20,
            "title": "Expected Facts"
          },
          "prohibited_claims": {
            "items": {
              "type": "string",
              "maxLength": 1000,
              "minLength": 1
            },
            "type": "array",
            "maxItems": 20,
            "title": "Prohibited Claims"
          },
          "routing": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ReceptionistRoutingExpectation"
              },
              {
                "type": "null"
              }
            ]
          },
          "intended_action": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "take_message",
                  "open_ticket",
                  "update_lead",
                  "book_meeting",
                  "schedule_callback",
                  "record_optout",
                  "end_call"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Intended Action"
          },
          "dry_run_action": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ReceptionistDryRunActionExpectation"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "name",
          "caller_utterance"
        ],
        "title": "ReceptionistRegressionCaseCreateRequest",
        "description": "Create a stable case identity and immutable revision 1."
      },
      "ReceptionistRegressionCaseSummary": {
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1,
            "title": "Name"
          },
          "caller_utterance": {
            "type": "string",
            "maxLength": 2000,
            "minLength": 1,
            "title": "Caller Utterance"
          },
          "expected_facts": {
            "items": {
              "type": "string",
              "maxLength": 1000,
              "minLength": 1
            },
            "type": "array",
            "maxItems": 20,
            "title": "Expected Facts"
          },
          "prohibited_claims": {
            "items": {
              "type": "string",
              "maxLength": 1000,
              "minLength": 1
            },
            "type": "array",
            "maxItems": 20,
            "title": "Prohibited Claims"
          },
          "routing": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ReceptionistRoutingExpectation"
              },
              {
                "type": "null"
              }
            ]
          },
          "intended_action": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "take_message",
                  "open_ticket",
                  "update_lead",
                  "book_meeting",
                  "schedule_callback",
                  "record_optout",
                  "end_call"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Intended Action"
          },
          "dry_run_action": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ReceptionistDryRunActionExpectation"
              },
              {
                "type": "null"
              }
            ]
          },
          "id": {
            "type": "string",
            "title": "Id"
          },
          "receptionist_regression_case_id": {
            "type": "string",
            "title": "Receptionist Regression Case Id"
          },
          "version": {
            "type": "integer",
            "title": "Version"
          },
          "content_hash": {
            "type": "string",
            "title": "Content Hash"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "agent_definition_id": {
            "type": "string",
            "title": "Agent Definition Id"
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "archived"
            ],
            "title": "Status"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "name",
          "caller_utterance",
          "id",
          "receptionist_regression_case_id",
          "version",
          "content_hash",
          "created_at",
          "agent_definition_id",
          "status",
          "updated_at"
        ],
        "title": "ReceptionistRegressionCaseSummary",
        "description": "The current immutable revision selected by a stable customer case resource."
      },
      "ReceptionistRegressionCaseUpdateRequest": {
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1,
            "title": "Name"
          },
          "caller_utterance": {
            "type": "string",
            "maxLength": 2000,
            "minLength": 1,
            "title": "Caller Utterance"
          },
          "expected_facts": {
            "items": {
              "type": "string",
              "maxLength": 1000,
              "minLength": 1
            },
            "type": "array",
            "maxItems": 20,
            "title": "Expected Facts"
          },
          "prohibited_claims": {
            "items": {
              "type": "string",
              "maxLength": 1000,
              "minLength": 1
            },
            "type": "array",
            "maxItems": 20,
            "title": "Prohibited Claims"
          },
          "routing": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ReceptionistRoutingExpectation"
              },
              {
                "type": "null"
              }
            ]
          },
          "intended_action": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "take_message",
                  "open_ticket",
                  "update_lead",
                  "book_meeting",
                  "schedule_callback",
                  "record_optout",
                  "end_call"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Intended Action"
          },
          "dry_run_action": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ReceptionistDryRunActionExpectation"
              },
              {
                "type": "null"
              }
            ]
          },
          "expected_version": {
            "type": "integer",
            "minimum": 1,
            "title": "Expected Version"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "name",
          "caller_utterance",
          "expected_version"
        ],
        "title": "ReceptionistRegressionCaseUpdateRequest",
        "description": "Append an immutable case revision after optimistic-concurrency confirmation."
      },
      "ReceptionistRegressionCaseVersionSummary": {
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1,
            "title": "Name"
          },
          "caller_utterance": {
            "type": "string",
            "maxLength": 2000,
            "minLength": 1,
            "title": "Caller Utterance"
          },
          "expected_facts": {
            "items": {
              "type": "string",
              "maxLength": 1000,
              "minLength": 1
            },
            "type": "array",
            "maxItems": 20,
            "title": "Expected Facts"
          },
          "prohibited_claims": {
            "items": {
              "type": "string",
              "maxLength": 1000,
              "minLength": 1
            },
            "type": "array",
            "maxItems": 20,
            "title": "Prohibited Claims"
          },
          "routing": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ReceptionistRoutingExpectation"
              },
              {
                "type": "null"
              }
            ]
          },
          "intended_action": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "take_message",
                  "open_ticket",
                  "update_lead",
                  "book_meeting",
                  "schedule_callback",
                  "record_optout",
                  "end_call"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Intended Action"
          },
          "dry_run_action": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ReceptionistDryRunActionExpectation"
              },
              {
                "type": "null"
              }
            ]
          },
          "id": {
            "type": "string",
            "title": "Id"
          },
          "receptionist_regression_case_id": {
            "type": "string",
            "title": "Receptionist Regression Case Id"
          },
          "version": {
            "type": "integer",
            "title": "Version"
          },
          "content_hash": {
            "type": "string",
            "title": "Content Hash"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "name",
          "caller_utterance",
          "id",
          "receptionist_regression_case_id",
          "version",
          "content_hash",
          "created_at"
        ],
        "title": "ReceptionistRegressionCaseVersionSummary",
        "description": "One immutable case version, including the exact user-authored assertions."
      },
      "ReceptionistReleaseCheck": {
        "properties": {
          "key": {
            "type": "string",
            "title": "Key"
          },
          "status": {
            "type": "string",
            "enum": [
              "ready",
              "pending",
              "blocked"
            ],
            "title": "Status"
          },
          "detail": {
            "type": "string",
            "title": "Detail"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "key",
          "status",
          "detail"
        ],
        "title": "ReceptionistReleaseCheck",
        "description": "One server-derived readiness fact for a receptionist release."
      },
      "ReceptionistReleaseStatus": {
        "properties": {
          "agent_definition_id": {
            "type": "string",
            "title": "Agent Definition Id"
          },
          "active_version": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/AgentVersionSummary"
              },
              {
                "type": "null"
              }
            ]
          },
          "rollback_candidate": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/AgentVersionSummary"
              },
              {
                "type": "null"
              }
            ]
          },
          "current_draft_hash": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Current Draft Hash"
          },
          "current_gate": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ReleaseGateEvaluation"
              },
              {
                "type": "null"
              }
            ]
          },
          "current_live_model_preflight": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ReleaseGateEvaluation"
              },
              {
                "type": "null"
              }
            ]
          },
          "live_model_preflight_evidence": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ReceptionistLiveModelPreflightEvidence"
              },
              {
                "type": "null"
              }
            ]
          },
          "publish_ready": {
            "type": "boolean",
            "title": "Publish Ready"
          },
          "rollback_ready": {
            "type": "boolean",
            "title": "Rollback Ready"
          },
          "production_ready": {
            "type": "boolean",
            "title": "Production Ready",
            "default": false
          },
          "checks": {
            "items": {
              "$ref": "#/components/schemas/ReceptionistReleaseCheck"
            },
            "type": "array",
            "title": "Checks"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "agent_definition_id",
          "publish_ready",
          "rollback_ready"
        ],
        "title": "ReceptionistReleaseStatus",
        "description": "Current publish/rollback state without exposing the sealed prompt evidence."
      },
      "ReceptionistRenderedTokenBudget": {
        "properties": {
          "context_capacity_tokens": {
            "type": "integer",
            "minimum": 1,
            "title": "Context Capacity Tokens"
          },
          "rendered_prompt_tokens": {
            "type": "integer",
            "minimum": 0,
            "title": "Rendered Prompt Tokens"
          },
          "completion_reserve_tokens": {
            "type": "integer",
            "minimum": 1,
            "title": "Completion Reserve Tokens"
          },
          "requested_tokens": {
            "type": "integer",
            "minimum": 1,
            "title": "Requested Tokens"
          },
          "request_fits": {
            "type": "boolean",
            "title": "Request Fits"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "context_capacity_tokens",
          "rendered_prompt_tokens",
          "completion_reserve_tokens",
          "requested_tokens",
          "request_fits"
        ],
        "title": "ReceptionistRenderedTokenBudget",
        "description": "Exact serving-envelope evidence captured by a live-model preflight."
      },
      "ReceptionistRollbackRequest": {
        "properties": {
          "target_version": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Target Version"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "title": "ReceptionistRollbackRequest",
        "description": "Restore a previously healthy receptionist snapshot; omitted selects the predecessor."
      },
      "ReceptionistRollbackResult": {
        "properties": {
          "agent_definition_id": {
            "type": "string",
            "title": "Agent Definition Id"
          },
          "restored_from_version": {
            "$ref": "#/components/schemas/AgentVersionSummary"
          },
          "active_version": {
            "$ref": "#/components/schemas/AgentVersionSummary"
          },
          "checked_policy_number_ids": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Checked Policy Number Ids"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "agent_definition_id",
          "restored_from_version",
          "active_version"
        ],
        "title": "ReceptionistRollbackResult",
        "description": "A new active immutable snapshot cloned from a verified prior release."
      },
      "ReceptionistRoutingExpectation": {
        "properties": {
          "branch": {
            "type": "string",
            "enum": [
              "open",
              "closed"
            ],
            "title": "Branch"
          },
          "step_type": {
            "type": "string",
            "enum": [
              "ai",
              "ring_humans",
              "voicemail",
              "say",
              "forward",
              "menu"
            ],
            "title": "Step Type"
          },
          "location_ref": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^[a-z][a-z0-9_-]{0,63}$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Location Ref"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "branch",
          "step_type"
        ],
        "title": "ReceptionistRoutingExpectation",
        "description": "The answering-policy branch and terminal step a case expects.\n\nThis does not carry a phone number, transfer destination, or policy document.  The\nrelease runner resolves these small assertions against the pinned line policy, keeping\na customer test case from becoming an alternate routing control plane."
      },
      "ReceptionistService": {
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1,
            "title": "Name"
          },
          "description": {
            "type": "string",
            "maxLength": 1000,
            "minLength": 1,
            "title": "Description"
          },
          "availability_note": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Availability Note"
          },
          "source_refs": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "maxItems": 20,
            "title": "Source Refs"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "name",
          "description"
        ],
        "title": "ReceptionistService",
        "description": "One service the receptionist may describe without inventing availability."
      },
      "ReceptionistSourceCreateRequest": {
        "properties": {
          "kind": {
            "type": "string",
            "enum": [
              "document",
              "website"
            ],
            "title": "Kind"
          },
          "label": {
            "type": "string",
            "maxLength": 255,
            "minLength": 1,
            "title": "Label"
          },
          "content": {
            "type": "string",
            "maxLength": 100000,
            "minLength": 1,
            "title": "Content"
          },
          "source_url": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 2000
              },
              {
                "type": "null"
              }
            ],
            "title": "Source Url"
          },
          "provenance": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "customer_upload",
                  "customer_website_snapshot"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Provenance"
          },
          "extraction_report": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ReceptionistSourceExtractionReport"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "kind",
          "label",
          "content"
        ],
        "title": "ReceptionistSourceCreateRequest",
        "description": "A pending immutable snapshot of a customer-provided document or website page.\n\nWebsite contents are snapshots supplied/imported at a specific point in time.  The\nlive call path never fetches URLs and never follows arbitrary web content."
      },
      "ReceptionistSourceExtractionReport": {
        "properties": {
          "title": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ],
            "title": "Title"
          },
          "extracted_characters": {
            "type": "integer",
            "maximum": 100000,
            "minimum": 0,
            "title": "Extracted Characters"
          },
          "warnings": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "maxItems": 20,
            "title": "Warnings"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "extracted_characters"
        ],
        "title": "ReceptionistSourceExtractionReport",
        "description": "Bounded import evidence shown before a customer promotes facts into the draft."
      },
      "ReceptionistSourceRefreshRequest": {
        "properties": {
          "content": {
            "type": "string",
            "maxLength": 100000,
            "minLength": 1,
            "title": "Content"
          },
          "extraction_report": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ReceptionistSourceExtractionReport"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "content"
        ],
        "title": "ReceptionistSourceRefreshRequest",
        "description": "Manual refresh of an existing website snapshot; it creates a new immutable row."
      },
      "ReceptionistSourceResource": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "kind": {
            "type": "string",
            "enum": [
              "document",
              "website"
            ],
            "title": "Kind"
          },
          "label": {
            "type": "string",
            "title": "Label"
          },
          "source_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Source Url"
          },
          "provenance": {
            "type": "string",
            "enum": [
              "customer_upload",
              "customer_website_snapshot"
            ],
            "title": "Provenance"
          },
          "content_hash": {
            "type": "string",
            "title": "Content Hash"
          },
          "content_characters": {
            "type": "integer",
            "title": "Content Characters"
          },
          "content_token_count": {
            "type": "integer",
            "title": "Content Token Count"
          },
          "extraction_report": {
            "$ref": "#/components/schemas/ReceptionistSourceExtractionReport"
          },
          "refresh_status": {
            "type": "string",
            "const": "manual_refresh_required",
            "title": "Refresh Status"
          },
          "refresh_of_source_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Refresh Of Source Id"
          },
          "captured_at": {
            "type": "string",
            "format": "date-time",
            "title": "Captured At"
          },
          "review_status": {
            "type": "string",
            "enum": [
              "pending",
              "approved",
              "rejected"
            ],
            "title": "Review Status"
          },
          "review_note": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Review Note"
          },
          "reviewed_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reviewed At"
          },
          "approved_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Approved At"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "content": {
            "type": "string",
            "title": "Content"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "kind",
          "label",
          "provenance",
          "content_hash",
          "content_characters",
          "content_token_count",
          "extraction_report",
          "refresh_status",
          "captured_at",
          "review_status",
          "created_at",
          "content"
        ],
        "title": "ReceptionistSourceResource",
        "description": "A customer-readable immutable snapshot used to review a citation."
      },
      "ReceptionistSourceReviewRequest": {
        "properties": {
          "note": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 2000,
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Note"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "title": "ReceptionistSourceReviewRequest",
        "description": "Optional reviewer note; rejection endpoints require one to preserve the reason."
      },
      "ReceptionistSourceSummary": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "kind": {
            "type": "string",
            "enum": [
              "document",
              "website"
            ],
            "title": "Kind"
          },
          "label": {
            "type": "string",
            "title": "Label"
          },
          "source_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Source Url"
          },
          "provenance": {
            "type": "string",
            "enum": [
              "customer_upload",
              "customer_website_snapshot"
            ],
            "title": "Provenance"
          },
          "content_hash": {
            "type": "string",
            "title": "Content Hash"
          },
          "content_characters": {
            "type": "integer",
            "title": "Content Characters"
          },
          "content_token_count": {
            "type": "integer",
            "title": "Content Token Count"
          },
          "extraction_report": {
            "$ref": "#/components/schemas/ReceptionistSourceExtractionReport"
          },
          "refresh_status": {
            "type": "string",
            "const": "manual_refresh_required",
            "title": "Refresh Status"
          },
          "refresh_of_source_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Refresh Of Source Id"
          },
          "captured_at": {
            "type": "string",
            "format": "date-time",
            "title": "Captured At"
          },
          "review_status": {
            "type": "string",
            "enum": [
              "pending",
              "approved",
              "rejected"
            ],
            "title": "Review Status"
          },
          "review_note": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Review Note"
          },
          "reviewed_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reviewed At"
          },
          "approved_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Approved At"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "kind",
          "label",
          "provenance",
          "content_hash",
          "content_characters",
          "content_token_count",
          "extraction_report",
          "refresh_status",
          "captured_at",
          "review_status",
          "created_at"
        ],
        "title": "ReceptionistSourceSummary"
      },
      "RecordedCallResponse": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "kind": {
            "type": "string",
            "enum": [
              "shift_response",
              "qualification",
              "identity_capture",
              "identity_correction"
            ],
            "title": "Kind"
          },
          "subject_ref": {
            "type": "string",
            "title": "Subject Ref"
          },
          "response": {
            "type": "string",
            "title": "Response"
          },
          "revision": {
            "type": "integer",
            "title": "Revision"
          },
          "source_turn_number": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Source Turn Number"
          },
          "note": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Note"
          },
          "note_truncated": {
            "type": "boolean",
            "title": "Note Truncated",
            "default": false
          },
          "value": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Value"
          },
          "value_truncated": {
            "type": "boolean",
            "title": "Value Truncated",
            "default": false
          },
          "fit_review": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/QualificationFitPreview"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "required": [
          "id",
          "kind",
          "subject_ref",
          "response",
          "revision"
        ],
        "title": "RecordedCallResponse",
        "description": "Preview of a saved action, distinct from generated post-call analysis."
      },
      "ReleaseGateEvaluation": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "agent_definition_id": {
            "type": "string",
            "title": "Agent Definition Id"
          },
          "status": {
            "type": "string",
            "enum": [
              "queued",
              "running",
              "completed",
              "failed"
            ],
            "title": "Status"
          },
          "mode": {
            "type": "string",
            "enum": [
              "scripted_stand_in",
              "routing_chain"
            ],
            "title": "Mode"
          },
          "draft_hash": {
            "type": "string",
            "title": "Draft Hash"
          },
          "draft_updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Draft Updated At"
          },
          "dataset_ref": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Dataset Ref"
          },
          "results": {
            "additionalProperties": true,
            "type": "object",
            "title": "Results"
          },
          "aggregate_score": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Aggregate Score"
          },
          "passed": {
            "type": "boolean",
            "title": "Passed"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "agent_definition_id",
          "status",
          "mode",
          "draft_hash",
          "draft_updated_at",
          "results",
          "passed",
          "created_at"
        ],
        "title": "ReleaseGateEvaluation",
        "description": "A customer-visible release-gate request and its immutable replay verdict.\n\nThe request snapshot remains in the restricted eval ledger rather than being echoed\nwholesale to a browser. These fields show which draft revision the worker evaluated,\nwhich built-in dataset it used, and every assertion result once it settles."
      },
      "ReleaseGateEvaluationRequest": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "agent_definition_id": {
            "type": "string",
            "title": "Agent Definition Id"
          },
          "status": {
            "type": "string",
            "enum": [
              "queued",
              "running",
              "completed",
              "failed"
            ],
            "title": "Status"
          },
          "mode": {
            "type": "string",
            "enum": [
              "scripted_stand_in",
              "routing_chain"
            ],
            "title": "Mode"
          },
          "draft_hash": {
            "type": "string",
            "title": "Draft Hash"
          },
          "draft_updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Draft Updated At"
          },
          "dataset_ref": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Dataset Ref"
          },
          "results": {
            "additionalProperties": true,
            "type": "object",
            "title": "Results"
          },
          "aggregate_score": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Aggregate Score"
          },
          "passed": {
            "type": "boolean",
            "title": "Passed"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "reused": {
            "type": "boolean",
            "title": "Reused"
          }
        },
        "type": "object",
        "required": [
          "id",
          "agent_definition_id",
          "status",
          "mode",
          "draft_hash",
          "draft_updated_at",
          "results",
          "passed",
          "created_at",
          "reused"
        ],
        "title": "ReleaseGateEvaluationRequest",
        "description": "A duplicate request returns its existing durable queue row."
      },
      "RepGroup": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "selection_strategy": {
            "type": "string",
            "const": "first_available",
            "title": "Selection Strategy"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "name",
          "selection_strategy",
          "created_at",
          "updated_at"
        ],
        "title": "RepGroup"
      },
      "RepGroupCreateRequest": {
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1,
            "title": "Name"
          },
          "selection_strategy": {
            "type": "string",
            "const": "first_available",
            "title": "Selection Strategy",
            "default": "first_available"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "name"
        ],
        "title": "RepGroupCreateRequest"
      },
      "RepGroupMember": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "rep_group_id": {
            "type": "string",
            "title": "Rep Group Id"
          },
          "rep_id": {
            "type": "string",
            "title": "Rep Id"
          },
          "added_at": {
            "type": "string",
            "format": "date-time",
            "title": "Added At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "rep_group_id",
          "rep_id",
          "added_at"
        ],
        "title": "RepGroupMember"
      },
      "RepPresence": {
        "properties": {
          "rep_id": {
            "type": "string",
            "title": "Rep Id"
          },
          "status": {
            "type": "string",
            "enum": [
              "available",
              "busy",
              "offline"
            ],
            "title": "Status"
          },
          "lease_expires_at": {
            "type": "string",
            "format": "date-time",
            "title": "Lease Expires At"
          },
          "last_heartbeat_at": {
            "type": "string",
            "format": "date-time",
            "title": "Last Heartbeat At"
          },
          "fresh": {
            "type": "boolean",
            "title": "Fresh"
          },
          "manual_only": {
            "type": "boolean",
            "const": true,
            "title": "Manual Only",
            "default": true
          },
          "automatic_transfer_eligible": {
            "type": "boolean",
            "const": false,
            "title": "Automatic Transfer Eligible",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "rep_id",
          "status",
          "lease_expires_at",
          "last_heartbeat_at",
          "fresh"
        ],
        "title": "RepPresence"
      },
      "RepPresenceHeartbeatRequest": {
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "available",
              "busy",
              "offline"
            ],
            "title": "Status"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "status"
        ],
        "title": "RepPresenceHeartbeatRequest",
        "description": "Renew one rep's short manual-availability lease.\n\nThe caller cannot choose a longer expiry. A real gateway will authenticate its own\nrep-session credential in addition to this tenant API surface; until then this endpoint\nis an auditable management-plane advertisement, not proof of a connected phone and never\nsufficient for automatic transfer selection."
      },
      "ReportWindow": {
        "properties": {
          "start": {
            "type": "string",
            "format": "date-time",
            "title": "Start"
          },
          "end": {
            "type": "string",
            "format": "date-time",
            "title": "End"
          }
        },
        "type": "object",
        "required": [
          "start",
          "end"
        ],
        "title": "ReportWindow",
        "description": "The half-open window the report was actually computed over."
      },
      "RequestResolutionCount": {
        "properties": {
          "kind": {
            "type": "string",
            "enum": [
              "message",
              "support_ticket"
            ],
            "title": "Kind"
          },
          "open_count": {
            "type": "integer",
            "minimum": 0,
            "title": "Open Count",
            "default": 0
          },
          "acknowledged_count": {
            "type": "integer",
            "minimum": 0,
            "title": "Acknowledged Count",
            "default": 0
          },
          "resolved_count": {
            "type": "integer",
            "minimum": 0,
            "title": "Resolved Count",
            "default": 0
          }
        },
        "type": "object",
        "required": [
          "kind"
        ],
        "title": "RequestResolutionCount"
      },
      "RequestResolutionSummary": {
        "properties": {
          "window": {
            "$ref": "#/components/schemas/DashboardWindow"
          },
          "as_of": {
            "type": "string",
            "format": "date-time",
            "title": "As Of"
          },
          "counts": {
            "items": {
              "$ref": "#/components/schemas/RequestResolutionCount"
            },
            "type": "array",
            "title": "Counts"
          }
        },
        "type": "object",
        "required": [
          "window",
          "as_of",
          "counts"
        ],
        "title": "RequestResolutionSummary",
        "description": "Request creation defines the cohort; state reflects current team progress.\n\nCounts are requests, not calls. Two messages on one call count separately.\nA resolution after the selected period is included in the current state."
      },
      "RetentionNotice": {
        "properties": {
          "category": {
            "type": "string",
            "title": "Category"
          },
          "handling": {
            "type": "string",
            "title": "Handling"
          }
        },
        "type": "object",
        "required": [
          "category",
          "handling"
        ],
        "title": "RetentionNotice"
      },
      "RetryPolicy": {
        "properties": {
          "backoff_minutes": {
            "items": {
              "type": "integer"
            },
            "type": "array",
            "title": "Backoff Minutes"
          },
          "retry_dispositions": {
            "items": {
              "$ref": "#/components/schemas/Disposition"
            },
            "type": "array",
            "title": "Retry Dispositions"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "title": "RetryPolicy",
        "description": "Disposition-driven backoff: the spacing ladder and the retriable dispositions."
      },
      "RingHumansStep": {
        "properties": {
          "type": {
            "type": "string",
            "const": "ring_humans",
            "title": "Type",
            "default": "ring_humans"
          },
          "rep_ids": {
            "items": {
              "type": "string",
              "maxLength": 128,
              "minLength": 1
            },
            "type": "array",
            "maxItems": 10,
            "minItems": 1,
            "title": "Rep Ids"
          },
          "timeout_seconds": {
            "type": "integer",
            "maximum": 120,
            "minimum": 5,
            "title": "Timeout Seconds",
            "default": 20
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "rep_ids"
        ],
        "title": "RingHumansStep",
        "description": "Ring real people, in the order the customer listed them.\n\nOnly ``rep_id`` values, resolved at build time against active transfer-enabled reps.\nOrder is meaningful and preserved, because an escalation list whose order the server\nre-derives is not the list the customer wrote."
      },
      "SayStep": {
        "properties": {
          "type": {
            "type": "string",
            "const": "say",
            "title": "Type",
            "default": "say"
          },
          "message": {
            "type": "string",
            "maxLength": 1000,
            "minLength": 1,
            "title": "Message"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "message"
        ],
        "title": "SayStep",
        "description": "Speak one message, then hang up. The terminal step every chain can fall back to."
      },
      "ScoringBlock": {
        "properties": {
          "scale": {
            "$ref": "#/components/schemas/SurveyScale"
          },
          "points": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 2
              },
              {
                "type": "null"
              }
            ],
            "title": "Points"
          },
          "mapping": {
            "additionalProperties": {
              "type": "number"
            },
            "type": "object",
            "minProperties": 1,
            "title": "Mapping"
          },
          "weight": {
            "type": "number",
            "minimum": 0,
            "title": "Weight",
            "default": 1
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "scale",
          "mapping"
        ],
        "title": "ScoringBlock",
        "description": "One question's frozen scoring vocabulary (docs/08 §Objective scoring)."
      },
      "ScreeningResult": {
        "properties": {
          "verdict": {
            "type": "string",
            "enum": [
              "eligible",
              "needs_review",
              "blocked"
            ],
            "title": "Verdict"
          },
          "reasons": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Reasons"
          },
          "minimum_class": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "engage",
                  "workforce",
                  "sales"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Minimum Class"
          },
          "uncovered_states": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Uncovered States"
          },
          "waiver_applied": {
            "type": "boolean",
            "title": "Waiver Applied",
            "default": false
          },
          "curable_by_signature": {
            "type": "boolean",
            "title": "Curable By Signature",
            "default": false
          },
          "screened_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Screened At"
          }
        },
        "type": "object",
        "required": [
          "verdict",
          "reasons"
        ],
        "title": "ScreeningResult",
        "description": "The server's verdict. `blocked` and `needs_review` are both closed doors - neither\nis a state the applicant can click past."
      },
      "ScrubResultSummary": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "contact_id": {
            "type": "string",
            "title": "Contact Id"
          },
          "verdict": {
            "type": "string",
            "enum": [
              "dialable",
              "blocked"
            ],
            "title": "Verdict"
          },
          "blocked_reasons": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Blocked Reasons"
          },
          "risk_flags": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Risk Flags"
          },
          "line_type": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/LineType"
              },
              {
                "type": "null"
              }
            ]
          },
          "consent_record_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Consent Record Id"
          },
          "expires_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Expires At"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "contact_id",
          "verdict",
          "created_at"
        ],
        "title": "ScrubResultSummary",
        "description": "One contact's row in the report."
      },
      "ScrubRun": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "contact_list_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Contact List Id"
          },
          "status": {
            "$ref": "#/components/schemas/JobStatus"
          },
          "totals": {
            "$ref": "#/components/schemas/ScrubRunTotals"
          },
          "blocked_breakdown": {
            "additionalProperties": {
              "type": "integer"
            },
            "type": "object",
            "title": "Blocked Breakdown"
          },
          "risk_flags": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Risk Flags"
          },
          "dataset_versions": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object",
            "title": "Dataset Versions"
          },
          "waived_stages": {
            "items": {
              "$ref": "#/components/schemas/WaivedStage"
            },
            "type": "array",
            "title": "Waived Stages"
          },
          "started_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Started At"
          },
          "completed_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Completed At"
          },
          "expires_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Expires At"
          },
          "is_stale": {
            "type": "boolean",
            "title": "Is Stale",
            "default": false
          },
          "acknowledged_by": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Acknowledged By"
          },
          "acknowledged_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Acknowledged At"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "contact_list_id",
          "status",
          "totals",
          "created_at"
        ],
        "title": "ScrubRun",
        "description": "The customer-facing scrub report."
      },
      "ScrubRunAcknowledgeRequest": {
        "properties": {
          "acknowledged_by": {
            "type": "string",
            "minLength": 1,
            "title": "Acknowledged By"
          },
          "totals": {
            "$ref": "#/components/schemas/ScrubRunTotals"
          }
        },
        "type": "object",
        "required": [
          "acknowledged_by",
          "totals"
        ],
        "title": "ScrubRunAcknowledgeRequest",
        "description": "`totals` is the report the acknowledger saw, and is checked against the run."
      },
      "ScrubRunAcknowledgement": {
        "properties": {
          "scrub_run_id": {
            "type": "string",
            "title": "Scrub Run Id"
          },
          "acknowledged_by": {
            "type": "string",
            "title": "Acknowledged By"
          },
          "acknowledged_at": {
            "type": "string",
            "format": "date-time",
            "title": "Acknowledged At"
          },
          "totals": {
            "$ref": "#/components/schemas/ScrubRunTotals"
          }
        },
        "type": "object",
        "required": [
          "scrub_run_id",
          "acknowledged_by",
          "acknowledged_at",
          "totals"
        ],
        "title": "ScrubRunAcknowledgement"
      },
      "ScrubRunCreateRequest": {
        "properties": {
          "target": {
            "$ref": "#/components/schemas/ScrubRunTarget"
          }
        },
        "type": "object",
        "required": [
          "target"
        ],
        "title": "ScrubRunCreateRequest"
      },
      "ScrubRunTarget": {
        "properties": {
          "contact_list_id": {
            "type": "string",
            "title": "Contact List Id"
          }
        },
        "type": "object",
        "required": [
          "contact_list_id"
        ],
        "title": "ScrubRunTarget"
      },
      "ScrubRunTotals": {
        "properties": {
          "contacts": {
            "type": "integer",
            "title": "Contacts"
          },
          "dialable": {
            "type": "integer",
            "title": "Dialable"
          },
          "blocked": {
            "type": "integer",
            "title": "Blocked"
          },
          "flagged": {
            "type": "integer",
            "title": "Flagged"
          }
        },
        "type": "object",
        "required": [
          "contacts",
          "dialable",
          "blocked",
          "flagged"
        ],
        "title": "ScrubRunTotals",
        "description": "The funnel a launch is authorized against."
      },
      "SessionSummary": {
        "properties": {
          "account": {
            "$ref": "#/components/schemas/AccountSummary"
          },
          "csrf_token": {
            "type": "string",
            "title": "Csrf Token"
          }
        },
        "type": "object",
        "required": [
          "account",
          "csrf_token"
        ],
        "title": "SessionSummary"
      },
      "ShiftConfirmation": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "call_id": {
            "type": "string",
            "title": "Call Id"
          },
          "contact_id": {
            "type": "string",
            "title": "Contact Id"
          },
          "shift_ref": {
            "type": "string",
            "title": "Shift Ref"
          },
          "site": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Site"
          },
          "shift_starts_at": {
            "type": "string",
            "format": "date-time",
            "title": "Shift Starts At"
          },
          "response": {
            "type": "string",
            "enum": [
              "confirmed",
              "declined",
              "tentative",
              "unreachable"
            ],
            "title": "Response"
          },
          "decline_reason": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Decline Reason"
          },
          "confirmed_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Confirmed At"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "call_id",
          "contact_id",
          "shift_ref",
          "shift_starts_at",
          "response",
          "created_at",
          "updated_at"
        ],
        "title": "ShiftConfirmation"
      },
      "ShiftConfirmationOutcome": {
        "properties": {
          "kind": {
            "type": "string",
            "const": "shift_confirmation",
            "title": "Kind",
            "default": "shift_confirmation"
          },
          "id": {
            "type": "string",
            "title": "Id"
          },
          "response": {
            "type": "string",
            "enum": [
              "confirmed",
              "declined",
              "tentative",
              "unreachable"
            ],
            "title": "Response"
          },
          "shift_ref": {
            "type": "string",
            "title": "Shift Ref"
          },
          "site": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Site"
          },
          "shift_starts_at": {
            "type": "string",
            "format": "date-time",
            "title": "Shift Starts At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "response",
          "shift_ref",
          "shift_starts_at"
        ],
        "title": "ShiftConfirmationOutcome"
      },
      "SideEffect": {
        "type": "string",
        "enum": [
          "read_only",
          "mutating"
        ],
        "title": "SideEffect",
        "description": "Whether an invocation only reads, or changes state something else can observe.\n\nTwo values by design: anything that is not a lookup gets an idempotency key. That is\nwhy ``end_call`` - runtime-local, but a state change - is ``MUTATING``."
      },
      "SmsSendRequest": {
        "properties": {
          "from_phone_number_id": {
            "type": "string",
            "title": "From Phone Number Id"
          },
          "to_e164": {
            "type": "string",
            "pattern": "^\\+[1-9]\\d{1,14}$",
            "title": "To E164"
          },
          "template_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Template Id"
          },
          "body": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Body"
          },
          "variables": {
            "additionalProperties": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "integer"
                },
                {
                  "type": "number"
                },
                {
                  "type": "boolean"
                }
              ]
            },
            "type": "object",
            "title": "Variables"
          },
          "origin_call_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Origin Call Id"
          }
        },
        "type": "object",
        "required": [
          "from_phone_number_id",
          "to_e164"
        ],
        "title": "SmsSendRequest"
      },
      "SpendCap": {
        "properties": {
          "amount_minor": {
            "type": "integer",
            "title": "Amount Minor"
          },
          "period": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Period"
          },
          "source": {
            "type": "string",
            "enum": [
              "wallet",
              "subscription_override"
            ],
            "title": "Source"
          }
        },
        "type": "object",
        "required": [
          "amount_minor",
          "source"
        ],
        "title": "SpendCap",
        "description": "The cap pacer governor #4 enforces, wherever it is currently stored.\n\n``wallet`` is the canonical P1 store; ``subscription_override`` is the P0 store that\nremains readable until every cap has migrated (docs/11-billing.md §Wallet)."
      },
      "Subscription": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "status": {
            "type": "string",
            "enum": [
              "trialing",
              "active",
              "past_due",
              "unpaid",
              "canceled"
            ],
            "title": "Status"
          },
          "plan": {
            "$ref": "#/components/schemas/PlanSummary"
          },
          "workload_class": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "engage",
                  "workforce",
                  "sales",
                  "receptionist"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Workload Class"
          },
          "extra_sessions": {
            "type": "integer",
            "title": "Extra Sessions",
            "default": 0
          },
          "total_sessions": {
            "type": "integer",
            "title": "Total Sessions"
          },
          "receptionist_connections": {
            "type": "integer",
            "title": "Receptionist Connections",
            "default": 0
          },
          "total_receptionist_connections": {
            "type": "integer",
            "title": "Total Receptionist Connections"
          },
          "minute_rate_minor": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Minute Rate Minor"
          },
          "current_period_start": {
            "type": "string",
            "format": "date-time",
            "title": "Current Period Start"
          },
          "current_period_end": {
            "type": "string",
            "format": "date-time",
            "title": "Current Period End"
          },
          "overrides": {
            "additionalProperties": true,
            "type": "object",
            "title": "Overrides"
          },
          "spend_cap": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SpendCap"
              },
              {
                "type": "null"
              }
            ]
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "status",
          "plan",
          "total_sessions",
          "total_receptionist_connections",
          "minute_rate_minor",
          "current_period_start",
          "current_period_end",
          "created_at",
          "updated_at"
        ],
        "title": "Subscription"
      },
      "SubscriptionCommitment": {
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "not_committed",
              "active",
              "term_elapsed",
              "review_required"
            ],
            "title": "Status"
          },
          "starts_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Starts At"
          },
          "ends_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ends At"
          }
        },
        "type": "object",
        "required": [
          "status"
        ],
        "title": "SubscriptionCommitment",
        "description": "Known original term dates; an elapsed term states no renewal or cancellation policy."
      },
      "SubscriptionCreated": {
        "properties": {
          "subscription_id": {
            "type": "string",
            "title": "Subscription Id"
          },
          "external_ref": {
            "type": "string",
            "title": "External Ref"
          },
          "status": {
            "type": "string",
            "title": "Status"
          },
          "plan_id": {
            "type": "string",
            "title": "Plan Id"
          },
          "plan_name": {
            "type": "string",
            "title": "Plan Name"
          },
          "workload_class": {
            "type": "string",
            "enum": [
              "engage",
              "workforce",
              "sales",
              "receptionist"
            ],
            "title": "Workload Class"
          },
          "term": {
            "type": "string",
            "enum": [
              "mtm",
              "three_year"
            ],
            "title": "Term"
          },
          "base_price_minor": {
            "type": "integer",
            "title": "Base Price Minor"
          },
          "currency": {
            "type": "string",
            "title": "Currency"
          },
          "extra_sessions": {
            "type": "integer",
            "title": "Extra Sessions"
          },
          "total_sessions": {
            "type": "integer",
            "title": "Total Sessions"
          },
          "extra_session_monthly_minor": {
            "type": "integer",
            "title": "Extra Session Monthly Minor"
          },
          "receptionist_connections": {
            "type": "integer",
            "title": "Receptionist Connections"
          },
          "total_receptionist_connections": {
            "type": "integer",
            "title": "Total Receptionist Connections"
          },
          "receptionist_base_monthly_minor": {
            "type": "integer",
            "title": "Receptionist Base Monthly Minor"
          },
          "receptionist_connection_monthly_minor": {
            "type": "integer",
            "title": "Receptionist Connection Monthly Minor"
          },
          "current_period_start": {
            "type": "string",
            "format": "date-time",
            "title": "Current Period Start"
          },
          "current_period_end": {
            "type": "string",
            "format": "date-time",
            "title": "Current Period End"
          },
          "sandbox_credit_redeemed_minor": {
            "type": "integer",
            "title": "Sandbox Credit Redeemed Minor"
          },
          "sandbox_credit_unconfirmed": {
            "type": "boolean",
            "title": "Sandbox Credit Unconfirmed",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "subscription_id",
          "external_ref",
          "status",
          "plan_id",
          "plan_name",
          "workload_class",
          "term",
          "base_price_minor",
          "currency",
          "extra_sessions",
          "total_sessions",
          "extra_session_monthly_minor",
          "receptionist_connections",
          "total_receptionist_connections",
          "receptionist_base_monthly_minor",
          "receptionist_connection_monthly_minor",
          "current_period_start",
          "current_period_end",
          "sandbox_credit_redeemed_minor"
        ],
        "title": "SubscriptionCreated"
      },
      "SubscriptionRequest": {
        "properties": {
          "workload_class": {
            "type": "string",
            "enum": [
              "engage",
              "workforce",
              "sales",
              "receptionist"
            ],
            "title": "Workload Class"
          },
          "term": {
            "type": "string",
            "enum": [
              "mtm",
              "three_year"
            ],
            "title": "Term"
          },
          "extra_sessions": {
            "type": "integer",
            "minimum": 0,
            "title": "Extra Sessions",
            "default": 0
          },
          "receptionist_connections": {
            "type": "integer",
            "minimum": 0,
            "title": "Receptionist Connections",
            "default": 0
          }
        },
        "type": "object",
        "required": [
          "workload_class",
          "term"
        ],
        "title": "SubscriptionRequest",
        "description": "The published card's two axes plus the one published add-on quantity.\n\nNo price and no rate: the catalog owns every figure (`vocapable_domain.rate_card`),\nand a body that could name one would be a client setting its own price.\n``extra_sessions`` is a *quantity* of the one published $200/mo add-on (ADR-0022) -\ndeliberately unbounded above, per the card (\"any quantity\"); actual concurrency stays\nbounded by fleet capacity, which is an operations fact, not a checkout refusal.\n\n``receptionist_connections`` is the same shape for inbound answering (ADR-0025) and is\na count of connections bought **on top of** whatever the plan already includes: the\nstandalone `receptionist` plan's $250 base fee carries the first one, so `0` there is a\nworking one-connection receptionist, while an outbound plan includes none and buys its\nfirst connection here. `receptionist_line_items` owns that asymmetry; nothing on this\nrequest states which item bills."
      },
      "SuccessEvaluation": {
        "properties": {
          "verdict": {
            "type": "string",
            "enum": [
              "success",
              "failure"
            ],
            "title": "Verdict"
          },
          "rubric_version": {
            "type": "string",
            "title": "Rubric Version"
          },
          "dimensions": {
            "$ref": "#/components/schemas/AnalysisDimensions"
          },
          "score": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Score"
          }
        },
        "type": "object",
        "required": [
          "verdict",
          "rubric_version",
          "dimensions"
        ],
        "title": "SuccessEvaluation",
        "description": "The verdict block. `rubric_version` pins the `AgentVersion` whose rubric scored the\ncall, so re-publishing an agent never restates past analyses (docs/04-api.md Step 8a)."
      },
      "SurveyAggregate": {
        "properties": {
          "csat": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Csat"
          },
          "nps": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Nps"
          },
          "weighted_score": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Weighted Score"
          },
          "scored_responses": {
            "type": "integer",
            "title": "Scored Responses"
          }
        },
        "type": "object",
        "required": [
          "scored_responses"
        ],
        "title": "SurveyAggregate",
        "description": "The scale-native aggregates plus the normalized score."
      },
      "SurveyFunnel": {
        "properties": {
          "targeted": {
            "type": "integer",
            "title": "Targeted"
          },
          "dialed": {
            "type": "integer",
            "title": "Dialed"
          },
          "answered": {
            "type": "integer",
            "title": "Answered"
          },
          "survey_started": {
            "type": "integer",
            "title": "Survey Started"
          },
          "survey_complete": {
            "type": "integer",
            "title": "Survey Complete"
          },
          "survey_partial": {
            "type": "integer",
            "title": "Survey Partial"
          },
          "survey_refused": {
            "type": "integer",
            "title": "Survey Refused"
          },
          "response_rate": {
            "type": "number",
            "title": "Response Rate"
          },
          "completion_rate": {
            "type": "number",
            "title": "Completion Rate"
          }
        },
        "type": "object",
        "required": [
          "targeted",
          "dialed",
          "answered",
          "survey_started",
          "survey_complete",
          "survey_partial",
          "survey_refused",
          "response_rate",
          "completion_rate"
        ],
        "title": "SurveyFunnel",
        "description": "Contacts, not attempts.\n\n`response_rate` is completed surveys over **contacts dialed** and `completion_rate` is\ncompleted over started (docs/04-api.md §2 step 8c), so the three funnel counts above\nthem are per-contact too - a contact dialed three times is one dialed contact, and the\nfunnel stays monotone."
      },
      "SurveyQuestionRollup": {
        "properties": {
          "objective_id": {
            "type": "string",
            "title": "Objective Id"
          },
          "prompt": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Prompt"
          },
          "scale": {
            "$ref": "#/components/schemas/SurveyScale"
          },
          "points": {
            "type": "integer",
            "title": "Points"
          },
          "answered": {
            "type": "integer",
            "title": "Answered"
          },
          "distribution": {
            "additionalProperties": {
              "type": "integer"
            },
            "type": "object",
            "title": "Distribution"
          },
          "mean": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Mean"
          },
          "top_2_box_rate": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Top 2 Box Rate"
          },
          "promoters": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Promoters"
          },
          "passives": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Passives"
          },
          "detractors": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Detractors"
          }
        },
        "type": "object",
        "required": [
          "objective_id",
          "scale",
          "points",
          "answered"
        ],
        "title": "SurveyQuestionRollup",
        "description": "One scored question of the pinned version.\n\n`scale` is the complete enum `csat|nps|ordinal|boolean` and `points` is the separate\nchoice count - the count is never folded into the scale name (CANON fact 63). An\nobjective carrying no `scoring` block is unscored and never appears here, though its\nanswers still count toward the funnel's completion states."
      },
      "SurveyResponse": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "call_id": {
            "type": "string",
            "title": "Call Id"
          },
          "agent_version_id": {
            "type": "string",
            "title": "Agent Version Id"
          },
          "answers": {
            "additionalProperties": true,
            "type": "object",
            "title": "Answers"
          },
          "completion_status": {
            "type": "string",
            "enum": [
              "complete",
              "partial",
              "refused"
            ],
            "title": "Completion Status"
          },
          "score": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Score"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "call_id",
          "agent_version_id",
          "completion_status",
          "created_at",
          "updated_at"
        ],
        "title": "SurveyResponse"
      },
      "SurveyResponseOutcome": {
        "properties": {
          "kind": {
            "type": "string",
            "const": "survey_response",
            "title": "Kind",
            "default": "survey_response"
          },
          "id": {
            "type": "string",
            "title": "Id"
          },
          "completion_status": {
            "type": "string",
            "enum": [
              "complete",
              "partial",
              "refused"
            ],
            "title": "Completion Status"
          },
          "score": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Score"
          }
        },
        "type": "object",
        "required": [
          "id",
          "completion_status"
        ],
        "title": "SurveyResponseOutcome"
      },
      "SurveyRollup": {
        "properties": {
          "campaign_id": {
            "type": "string",
            "title": "Campaign Id"
          },
          "agent_version_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Agent Version Id"
          },
          "window": {
            "$ref": "#/components/schemas/SurveyRollupWindow"
          },
          "funnel": {
            "$ref": "#/components/schemas/SurveyFunnel"
          },
          "questions": {
            "items": {
              "$ref": "#/components/schemas/SurveyQuestionRollup"
            },
            "type": "array",
            "title": "Questions"
          },
          "aggregate": {
            "$ref": "#/components/schemas/SurveyAggregate"
          }
        },
        "type": "object",
        "required": [
          "campaign_id",
          "window",
          "funnel",
          "aggregate"
        ],
        "title": "SurveyRollup"
      },
      "SurveyRollupWindow": {
        "properties": {
          "from": {
            "type": "string",
            "format": "date-time",
            "title": "From"
          },
          "to": {
            "type": "string",
            "format": "date-time",
            "title": "To"
          }
        },
        "type": "object",
        "required": [
          "from",
          "to"
        ],
        "title": "SurveyRollupWindow",
        "description": "The window actually aggregated - the request's, clamped to the campaign's lifetime."
      },
      "SurveyScale": {
        "type": "string",
        "enum": [
          "csat",
          "nps",
          "ordinal",
          "boolean"
        ],
        "title": "SurveyScale",
        "description": "Scoring scales for survey objectives (CANON fact 63).\n\nThe number of points is a separate `points` field, never part of the scale name; a\nquestion with no `scoring` block at all is simply unscored."
      },
      "TelephonyAccountCreateRequest": {
        "properties": {
          "mode": {
            "type": "string",
            "enum": [
              "byo",
              "managed"
            ],
            "title": "Mode"
          },
          "provider": {
            "type": "string",
            "title": "Provider",
            "default": "twilio"
          },
          "credentials": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/TelephonyCredentials"
              },
              {
                "type": "null"
              }
            ]
          },
          "a2p_brand_ref": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "A2P Brand Ref"
          },
          "ftc_san_refs": {
            "items": {
              "$ref": "#/components/schemas/FtcSanRef"
            },
            "type": "array",
            "title": "Ftc San Refs"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "mode"
        ],
        "title": "TelephonyAccountCreateRequest",
        "description": "Connect a BYO subaccount, or elect the platform account with ``mode: managed``."
      },
      "TelephonyAccountSummary": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "mode": {
            "type": "string",
            "enum": [
              "byo",
              "managed"
            ],
            "title": "Mode"
          },
          "provider": {
            "type": "string",
            "title": "Provider"
          },
          "credentials_stored": {
            "type": "boolean",
            "title": "Credentials Stored"
          },
          "cps_limit": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Cps Limit"
          },
          "a2p_brand_ref": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "A2P Brand Ref"
          },
          "ftc_san_refs": {
            "items": {
              "$ref": "#/components/schemas/FtcSanRef"
            },
            "type": "array",
            "title": "Ftc San Refs"
          },
          "verification_status": {
            "type": "string",
            "enum": [
              "pending",
              "verifying",
              "mock_verified",
              "verified",
              "failed",
              "suspended"
            ],
            "title": "Verification Status"
          },
          "verified_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Verified At"
          },
          "telephony_minutes_metered": {
            "type": "boolean",
            "title": "Telephony Minutes Metered"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "mode",
          "provider",
          "credentials_stored",
          "verification_status",
          "telephony_minutes_metered",
          "created_at"
        ],
        "title": "TelephonyAccountSummary",
        "description": "An account as its tenant sees it - credential material is structurally absent."
      },
      "TelephonyAccountUpdateRequest": {
        "properties": {
          "credentials": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/TelephonyCredentials"
              },
              {
                "type": "null"
              }
            ]
          },
          "a2p_brand_ref": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "A2P Brand Ref"
          },
          "ftc_san_refs": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/FtcSanRef"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ftc San Refs"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "title": "TelephonyAccountUpdateRequest",
        "description": "Partial update. Rotation is this request carrying a fresh credential pair."
      },
      "TelephonyCredentials": {
        "properties": {
          "account_sid": {
            "type": "string",
            "format": "password",
            "title": "Account Sid",
            "writeOnly": true
          },
          "auth_token": {
            "type": "string",
            "format": "password",
            "title": "Auth Token",
            "writeOnly": true
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "account_sid",
          "auth_token"
        ],
        "title": "TelephonyCredentials",
        "description": "Carrier credentials on their way to the vault. Never present on a response.\n\n``SecretStr`` so a body that reaches a log line, a traceback, or a validation error\nrenders as ``**********`` rather than a usable secret (docs/10-security.md §secrets).\n\nThe two fields are the incumbent's credential pair, and pinning them here is\ndeliberate: the vault beneath stores an arbitrary flat map and the account row holds\nan opaque text reference, so a second carrier's credential shape is a change to this\nmodel plus its readers - a contracts change, never a migration (ADR-0030 decision 8)."
      },
      "TemplateInstantiateRequest": {
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1,
            "title": "Name"
          },
          "disclosure_config": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object",
            "minProperties": 1,
            "title": "Disclosure Config"
          },
          "persona": {
            "additionalProperties": true,
            "type": "object",
            "title": "Persona"
          },
          "conversation_settings": {
            "$ref": "#/components/schemas/ConversationSettings"
          },
          "llm_route": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/LlmRoute"
              },
              {
                "type": "null"
              }
            ]
          },
          "stock_voice_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Stock Voice Id"
          },
          "voice_profile_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Voice Profile Id"
          },
          "knowledge_pack_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Knowledge Pack Id"
          },
          "knowledge_pack_version": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Knowledge Pack Version"
          },
          "compliance_profile_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Compliance Profile Id"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "name",
          "disclosure_config"
        ],
        "title": "TemplateInstantiateRequest",
        "description": "`POST /v1/templates/{id}/instantiate`.\n\n`disclosure_config` is required here even though the template has none: the opener\nnames the calling business, so it cannot be seeded from platform-owned reference data,\nand an AgentDefinition may not exist without one (CANON fact 71)."
      },
      "TemplateResource": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "use_case": {
            "type": "string",
            "enum": [
              "sdr",
              "staffing",
              "survey",
              "reminder",
              "custom",
              "receptionist",
              "recruiting"
            ],
            "title": "Use Case"
          },
          "version": {
            "type": "integer",
            "title": "Version"
          },
          "outcome_type": {
            "type": "string",
            "enum": [
              "appointment",
              "shift_confirmation",
              "survey_response",
              "none"
            ],
            "title": "Outcome Type"
          },
          "tool_grants": {
            "items": {
              "type": "string",
              "enum": [
                "check_calendar",
                "book_meeting",
                "send_sms",
                "send_verification_code",
                "verify_identity",
                "record_sms_consent",
                "take_message",
                "open_ticket",
                "update_lead",
                "record_survey_answer",
                "confirm_shift",
                "record_shift_response",
                "record_qualification",
                "schedule_callback",
                "transfer_to_human",
                "record_optout",
                "end_call",
                "custom_webhook"
              ]
            },
            "type": "array",
            "title": "Tool Grants"
          },
          "webhook_payload_schema": {
            "additionalProperties": true,
            "type": "object",
            "title": "Webhook Payload Schema"
          },
          "content_hash": {
            "type": "string",
            "title": "Content Hash"
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "published",
              "deprecated"
            ],
            "title": "Status"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
          },
          "objectives": {
            "items": {
              "additionalProperties": true,
              "type": "object"
            },
            "type": "array",
            "title": "Objectives"
          }
        },
        "type": "object",
        "required": [
          "id",
          "name",
          "use_case",
          "version",
          "outcome_type",
          "tool_grants",
          "webhook_payload_schema",
          "content_hash",
          "status",
          "created_at",
          "updated_at",
          "objectives"
        ],
        "title": "TemplateResource",
        "description": "Adds the full seed - objectives and their `scoring` blocks."
      },
      "TemplateSummary": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "use_case": {
            "type": "string",
            "enum": [
              "sdr",
              "staffing",
              "survey",
              "reminder",
              "custom",
              "receptionist",
              "recruiting"
            ],
            "title": "Use Case"
          },
          "version": {
            "type": "integer",
            "title": "Version"
          },
          "outcome_type": {
            "type": "string",
            "enum": [
              "appointment",
              "shift_confirmation",
              "survey_response",
              "none"
            ],
            "title": "Outcome Type"
          },
          "tool_grants": {
            "items": {
              "type": "string",
              "enum": [
                "check_calendar",
                "book_meeting",
                "send_sms",
                "send_verification_code",
                "verify_identity",
                "record_sms_consent",
                "take_message",
                "open_ticket",
                "update_lead",
                "record_survey_answer",
                "confirm_shift",
                "record_shift_response",
                "record_qualification",
                "schedule_callback",
                "transfer_to_human",
                "record_optout",
                "end_call",
                "custom_webhook"
              ]
            },
            "type": "array",
            "title": "Tool Grants"
          },
          "webhook_payload_schema": {
            "additionalProperties": true,
            "type": "object",
            "title": "Webhook Payload Schema"
          },
          "content_hash": {
            "type": "string",
            "title": "Content Hash"
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "published",
              "deprecated"
            ],
            "title": "Status"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "name",
          "use_case",
          "version",
          "outcome_type",
          "tool_grants",
          "webhook_payload_schema",
          "content_hash",
          "status",
          "created_at",
          "updated_at"
        ],
        "title": "TemplateSummary",
        "description": "A platform-owned, versioned seed (CANON fact 72). Templates carry no tenant."
      },
      "TenantInvitationAcceptanceRequest": {
        "properties": {
          "token": {
            "type": "string",
            "maxLength": 512,
            "minLength": 43,
            "title": "Token"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "token"
        ],
        "title": "TenantInvitationAcceptanceRequest",
        "description": "Browser-authenticated acceptance of a secret delivered only by invitation email."
      },
      "TenantInvitationCreateRequest": {
        "properties": {
          "email": {
            "type": "string",
            "maxLength": 254,
            "minLength": 3,
            "title": "Email"
          },
          "role": {
            "$ref": "#/components/schemas/TenantMembershipRole"
          },
          "human_rep_id": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128,
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Human Rep Id"
          },
          "expires_at": {
            "type": "string",
            "format": "date-time",
            "title": "Expires At"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "email",
          "role",
          "expires_at"
        ],
        "title": "TenantInvitationCreateRequest",
        "description": "An admin-issued invitation. The server hashes its generated secret before write."
      },
      "TenantInvitationSummary": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "email": {
            "type": "string",
            "title": "Email"
          },
          "role": {
            "$ref": "#/components/schemas/TenantMembershipRole"
          },
          "human_rep_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Human Rep Id"
          },
          "status": {
            "type": "string",
            "enum": [
              "pending",
              "accepted",
              "revoked"
            ],
            "title": "Status"
          },
          "expires_at": {
            "type": "string",
            "format": "date-time",
            "title": "Expires At"
          },
          "accepted_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Accepted At"
          },
          "revoked_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Revoked At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "email",
          "role",
          "status",
          "expires_at"
        ],
        "title": "TenantInvitationSummary"
      },
      "TenantMembershipRole": {
        "type": "string",
        "enum": [
          "admin",
          "manager",
          "rep"
        ],
        "title": "TenantMembershipRole",
        "description": "The only roles a customer can hold in one workspace."
      },
      "TenantMembershipSummary": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "tenant_id": {
            "type": "string",
            "title": "Tenant Id"
          },
          "account_id": {
            "type": "string",
            "title": "Account Id"
          },
          "display_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Display Name"
          },
          "role": {
            "$ref": "#/components/schemas/TenantMembershipRole"
          },
          "human_rep_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Human Rep Id"
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "suspended",
              "revoked"
            ],
            "title": "Status"
          },
          "sessions_valid_after": {
            "type": "string",
            "format": "date-time",
            "title": "Sessions Valid After"
          }
        },
        "type": "object",
        "required": [
          "id",
          "tenant_id",
          "account_id",
          "role",
          "status",
          "sessions_valid_after"
        ],
        "title": "TenantMembershipSummary"
      },
      "TenantMembershipUpdateRequest": {
        "properties": {
          "role": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/TenantMembershipRole"
              },
              {
                "type": "null"
              }
            ]
          },
          "status": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "active",
                  "suspended",
                  "revoked"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Status"
          },
          "human_rep_id": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128,
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Human Rep Id"
          },
          "replace_human_rep": {
            "type": "boolean",
            "title": "Replace Human Rep",
            "default": false
          }
        },
        "additionalProperties": false,
        "type": "object",
        "title": "TenantMembershipUpdateRequest",
        "description": "An admin's explicit membership role/status or human-rep-link change.\n\n``human_rep_id`` is intentionally ignored unless ``replace_human_rep`` is true.  This\nmakes an omitted field different from an explicit unlink and prevents a mobile client\nfrom accidentally clearing a transfer-rep association while changing only a role."
      },
      "TenantUserSummary": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "email": {
            "type": "string",
            "title": "Email"
          },
          "role": {
            "type": "string",
            "title": "Role"
          },
          "status": {
            "type": "string",
            "title": "Status"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "email",
          "role",
          "status",
          "created_at"
        ],
        "title": "TenantUserSummary",
        "description": "One row of the read-only tenant user directory (`GET /v1/users`).\n\nDeliberately narrow: enough to render an assignee picker and attribute work, never a\nmanagement surface - there is no invitation, role, or status write on `/v1`."
      },
      "TestCall": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "agent_id": {
            "type": "string",
            "title": "Agent Id"
          },
          "agent_version_id": {
            "type": "string",
            "title": "Agent Version Id"
          },
          "to": {
            "type": "string",
            "title": "To"
          },
          "contact_id": {
            "type": "string",
            "title": "Contact Id"
          },
          "telephony": {
            "type": "string",
            "enum": [
              "mock",
              "platform"
            ],
            "title": "Telephony"
          },
          "state": {
            "type": "string",
            "title": "State"
          },
          "disposition": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Disposition"
          },
          "call_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Call Id"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "agent_id",
          "agent_version_id",
          "to",
          "contact_id",
          "telephony",
          "state",
          "created_at"
        ],
        "title": "TestCall",
        "description": "A test call as the 202 answers it - the campaign-less ContactAttempt (`att_…`) IS\nthe test-call resource, so its lifecycle is read from the attempt feed's vocabulary.\n\n`telephony` says which plane carried it: `mock` (a `vcp_test_` key - synchronous\nfull-pipeline dial, no PSTN) or `platform` (a live key - the attempt is `scheduled`\nand the origination loop sweeps it). `call_id` is written at teardown and is always\nnull in the 202."
      },
      "TestCallRequest": {
        "properties": {
          "to": {
            "type": "string",
            "title": "To"
          },
          "timezone": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Timezone"
          },
          "jurisdictions": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Jurisdictions"
          }
        },
        "type": "object",
        "required": [
          "to"
        ],
        "title": "TestCallRequest",
        "description": "`POST /v1/agents/{id}/test-call` (docs/04-api.md §3).\n\n`to` must be a currently `verified` VerifiedNumber of the calling tenant - the\ntest-call precondition (CANON fact 120). The two optional gate facts exist because\nthe platform holds no NPA geodata: when no live Contact already carries them, the\nbody must supply the callee-local zone and jurisdictions or the gate fails closed\n(`contact_timezone_unresolved` / `jurisdiction_unresolved`)."
      },
      "UsageEventSummary": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "meter": {
            "type": "string",
            "enum": [
              "telephony_minutes",
              "stt_audio_seconds",
              "tts_characters",
              "llm_prompt_tokens",
              "llm_cached_prompt_tokens",
              "llm_completion_tokens",
              "gpu_seconds",
              "sms_segments",
              "lookup_requests"
            ],
            "title": "Meter"
          },
          "quantity": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Quantity"
          },
          "call_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Call Id"
          },
          "campaign_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Campaign Id"
          },
          "occurred_at": {
            "type": "string",
            "format": "date-time",
            "title": "Occurred At"
          },
          "rated_amount_minor": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Rated Amount Minor"
          },
          "attributes": {
            "additionalProperties": true,
            "type": "object",
            "title": "Attributes"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "meter",
          "quantity",
          "occurred_at",
          "created_at"
        ],
        "title": "UsageEventSummary",
        "description": "One ledger row. Append-only - there is no update or delete surface anywhere."
      },
      "UsageSummary": {
        "properties": {
          "period": {
            "type": "string",
            "title": "Period"
          },
          "period_start": {
            "type": "string",
            "format": "date-time",
            "title": "Period Start"
          },
          "period_end": {
            "type": "string",
            "format": "date-time",
            "title": "Period End"
          },
          "telephony_mode": {
            "type": "string",
            "enum": [
              "managed",
              "byo",
              "mixed",
              "unelected"
            ],
            "title": "Telephony Mode"
          },
          "currency": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Currency"
          },
          "rated_total_minor": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Rated Total Minor"
          },
          "billing_period_estimate": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/BillingPeriodEstimate"
              },
              {
                "type": "null"
              }
            ]
          },
          "meters": {
            "items": {
              "$ref": "#/components/schemas/MeterUsage"
            },
            "type": "array",
            "title": "Meters"
          }
        },
        "type": "object",
        "required": [
          "period",
          "period_start",
          "period_end",
          "telephony_mode",
          "meters"
        ],
        "title": "UsageSummary",
        "description": "One billing month across all nine meters, in registry order."
      },
      "ValidationError": {
        "properties": {
          "loc": {
            "items": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "integer"
                }
              ]
            },
            "type": "array",
            "title": "Location"
          },
          "msg": {
            "type": "string",
            "title": "Message"
          },
          "type": {
            "type": "string",
            "title": "Error Type"
          },
          "input": {
            "title": "Input"
          },
          "ctx": {
            "type": "object",
            "title": "Context"
          }
        },
        "type": "object",
        "required": [
          "loc",
          "msg",
          "type"
        ],
        "title": "ValidationError"
      },
      "VerifiedNumberCheckRequest": {
        "properties": {
          "code": {
            "type": "string",
            "maxLength": 10,
            "minLength": 4,
            "title": "Code"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "code"
        ],
        "title": "VerifiedNumberCheckRequest",
        "description": "Confirm the one-time code delivered to the number."
      },
      "VerifiedNumberCreateRequest": {
        "properties": {
          "phone_e164": {
            "type": "string",
            "pattern": "^\\+[1-9]\\d{7,14}$",
            "title": "Phone E164"
          },
          "label": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ],
            "title": "Label"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "phone_e164"
        ],
        "title": "VerifiedNumberCreateRequest",
        "description": "Register a destination for OTP verification (docs/03-domain-model.md §VerifiedNumber)."
      },
      "VerifiedNumberCreated": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "phone_e164": {
            "type": "string",
            "title": "Phone E164"
          },
          "label": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Label"
          },
          "status": {
            "type": "string",
            "enum": [
              "pending",
              "verified",
              "expired",
              "revoked"
            ],
            "title": "Status"
          },
          "code_expires_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Code Expires At"
          },
          "verification_attempts": {
            "type": "integer",
            "title": "Verification Attempts"
          },
          "verified_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Verified At"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "verification_code": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Verification Code"
          }
        },
        "type": "object",
        "required": [
          "id",
          "phone_e164",
          "status",
          "verification_attempts",
          "created_at"
        ],
        "title": "VerifiedNumberCreated",
        "description": "The registration response. `verification_code` is populated **only** in non-prod\nenvironments, where no SMS/voice delivery channel exists yet; production refuses the\nregistration outright until the messaging adapter lands, rather than minting a code\nnobody can receive (no fake success)."
      },
      "VerifiedNumberSummary": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "phone_e164": {
            "type": "string",
            "title": "Phone E164"
          },
          "label": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Label"
          },
          "status": {
            "type": "string",
            "enum": [
              "pending",
              "verified",
              "expired",
              "revoked"
            ],
            "title": "Status"
          },
          "code_expires_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Code Expires At"
          },
          "verification_attempts": {
            "type": "integer",
            "title": "Verification Attempts"
          },
          "verified_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Verified At"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "phone_e164",
          "status",
          "verification_attempts",
          "created_at"
        ],
        "title": "VerifiedNumberSummary",
        "description": "A registration as its tenant sees it - the code and its hash are structurally absent."
      },
      "VoicePreview": {
        "properties": {
          "script": {
            "type": "string",
            "enum": [
              "availability",
              "pitch",
              "survey"
            ],
            "title": "Script"
          },
          "uri": {
            "type": "string",
            "title": "Uri"
          }
        },
        "type": "object",
        "required": [
          "script",
          "uri"
        ],
        "title": "VoicePreview",
        "description": "One rendered audition clip, addressable by the script it speaks.\n\n`uri` always sits on the platform asset origin: the catalog loader refuses any other\nhost, because a third-party synthesis presented as one of our voices misrepresents\nthe product. A script with no rendered clip is ABSENT from `VoiceSummary.previews`\nrather than present with a null uri - \"not rendered yet\" is a missing entry, never a\nplayer pointed at nothing."
      },
      "VoiceProfileSummary": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "provider": {
            "type": "string",
            "title": "Provider"
          },
          "language": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Language"
          },
          "status": {
            "type": "string",
            "enum": [
              "pending_review",
              "approved",
              "rejected",
              "revoked"
            ],
            "title": "Status"
          },
          "sample_recording_uri": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Sample Recording Uri"
          },
          "model_artifact_uri": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Model Artifact Uri"
          },
          "consent_proof_uri": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Consent Proof Uri"
          },
          "consent_verified_by": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Consent Verified By"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "name",
          "provider",
          "status",
          "created_at",
          "updated_at"
        ],
        "title": "VoiceProfileSummary",
        "description": "A voice profile as its tenant sees it.\n\n`consent_proof_uri` being null is exactly the gate: a profile cannot reach `approved`\nwithout one, enforced in the repository and again by a table CHECK constraint."
      },
      "VoiceRightsAttestationDocument": {
        "properties": {
          "version": {
            "type": "string",
            "title": "Version"
          },
          "content_sha256": {
            "type": "string",
            "title": "Content Sha256"
          },
          "markdown": {
            "type": "string",
            "title": "Markdown"
          }
        },
        "type": "object",
        "required": [
          "version",
          "content_sha256",
          "markdown"
        ],
        "title": "VoiceRightsAttestationDocument",
        "description": "`GET /v1/voice-rights-attestation` - the document to render and echo back."
      },
      "VoiceSession": {
        "properties": {
          "call_id": {
            "type": "string",
            "title": "Call Id"
          },
          "agent_id": {
            "type": "string",
            "title": "Agent Id"
          },
          "agent_version_id": {
            "type": "string",
            "title": "Agent Version Id"
          },
          "ws_url": {
            "type": "string",
            "title": "Ws Url"
          },
          "gpu_node_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Gpu Node Id"
          },
          "session_token": {
            "type": "string",
            "title": "Session Token"
          },
          "expires_at": {
            "type": "string",
            "format": "date-time",
            "title": "Expires At"
          },
          "protocol": {
            "type": "string",
            "const": "browser.v1",
            "title": "Protocol",
            "default": "browser.v1"
          },
          "audio": {
            "$ref": "#/components/schemas/VoiceSessionAudio"
          },
          "max_call_seconds": {
            "type": "integer",
            "title": "Max Call Seconds"
          },
          "disclosure_opener": {
            "type": "string",
            "title": "Disclosure Opener"
          },
          "runs_draft": {
            "type": "boolean",
            "title": "Runs Draft",
            "default": false
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          }
        },
        "type": "object",
        "required": [
          "call_id",
          "agent_id",
          "agent_version_id",
          "ws_url",
          "session_token",
          "expires_at",
          "audio",
          "max_call_seconds",
          "disclosure_opener",
          "created_at"
        ],
        "title": "VoiceSession",
        "description": "`POST /v1/agents/{id}/voice-session` - one in-browser voice session, as the 201\nanswers it (docs/05-voice-runtime.md §Browser transport, CANON fact 103).\n\nNothing here names a called party, because there is none: the session is a transport\nswap onto the same runtime, so it carries the same pinned `AgentVersion`, the same\ncompliance floor, and the same single-use session token the carrier leg redeems - and\nno number, no contact, no attempt and no telephony account.\n\n`session_token` is a **single-use bearer credential**: it is redeemed once at\n`POST /internal/call-sessions/redeem` and is worthless afterwards. It is returned in\nthe body and never persisted by the API, which is why this endpoint accepts no\n`Idempotency-Key` (see the router's docstring).\n\n`disclosure_opener` is the exact first utterance the session will open with. Returned\nbefore the microphone is ever enabled so the portal can show the operator what the\nagent is about to say - the AI-disclosure floor as visible product surface rather than\nan invisible control (CANON fact 71)."
      },
      "VoiceSessionAudio": {
        "properties": {
          "encoding": {
            "type": "string",
            "const": "pcm16",
            "title": "Encoding",
            "default": "pcm16"
          },
          "sample_rate_hz": {
            "type": "integer",
            "title": "Sample Rate Hz"
          },
          "channels": {
            "type": "integer",
            "title": "Channels"
          }
        },
        "type": "object",
        "required": [
          "sample_rate_hz",
          "channels"
        ],
        "title": "VoiceSessionAudio",
        "description": "The wire audio format both directions of a browser voice session carry.\n\nLoad-bearing rather than descriptive: `BrowserTransportSink.send_audio` RAISES on\nanything but 8 kHz mono PCM16 (`apps/voice-runtime/.../browser_transport.py`), and the\nbrowser is the side that resamples - there is no server-side resampler to rescue a\nclient that guessed 48 kHz. Returned in the 201 so the client reads the contract it\nmust satisfy instead of inferring it from a socket that closes mid-call."
      },
      "VoiceSummary": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "language": {
            "type": "string",
            "title": "Language"
          },
          "gender": {
            "type": "string",
            "enum": [
              "female",
              "male",
              "neutral"
            ],
            "title": "Gender"
          },
          "style_tags": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Style Tags"
          },
          "previews": {
            "items": {
              "$ref": "#/components/schemas/VoicePreview"
            },
            "type": "array",
            "title": "Previews"
          },
          "status": {
            "type": "string",
            "enum": [
              "available",
              "coming_soon"
            ],
            "title": "Status"
          },
          "preview_uri": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Preview Uri",
            "description": "The single representative clip - kept so the one-player surfaces that predate\nthe three scripts (the agent editor's Voice sheet row, the admin roster row) keep\nworking unchanged against a catalog that now carries a set. The portal gallery is\nno longer one of them: it plays the whole set and captions each clip by script,\nand falls back here only against a deployment too old to serve `previews`.\n\nDerived, never authored: it is the first entry in :data:`PREVIEW_SCRIPT_ORDER`\nthis voice actually has, so it cannot drift out of step with `previews`. Null\nexactly when `previews` is empty.",
            "readOnly": true
          }
        },
        "type": "object",
        "required": [
          "id",
          "name",
          "language",
          "gender",
          "style_tags",
          "status",
          "preview_uri"
        ],
        "title": "VoiceSummary"
      },
      "VoicemailConfig": {
        "properties": {
          "body": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object",
            "title": "Body"
          },
          "callback_e164": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^\\+[1-9]\\d{6,14}$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Callback E164"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "title": "VoicemailConfig",
        "description": "The tenant's two slots in a platform-composed voicemail drop (ADR-0023).\n\nThis is the `DisclosureSlots` doctrine applied to voicemail: the customer supplies a\nbody and a callback number, and **nothing else**. The AI-disclosure opener, the order\nof the elements, and the identification/opt-out closing are composed by the platform\nfrom the same pinned version the live conversation discloses from, so a voicemail and\na conversation can never disagree about who is calling or that it is artificial.\n\n`body` is keyed by language tag exactly as `disclosure_config` is, and the drop\nresolves the *same* tag for both: a message whose opener and body were in different\nlanguages would be a disclosure in name only. An empty model is the ordinary state -\nit means this agent leaves no messages."
      },
      "VoicemailDropPolicy": {
        "properties": {
          "enabled": {
            "type": "boolean",
            "title": "Enabled",
            "default": false
          }
        },
        "additionalProperties": false,
        "type": "object",
        "title": "VoicemailDropPolicy",
        "description": "Whether this program leaves artificial-voice voicemail (ADR-0023).\n\nOne field, and it is an election rather than a configuration: *what* is said belongs to\nthe pinned agent version, and *how many times* is not a knob at all. A drop is terminal\n- the attempt disposes `voicemail_machine` and never re-enters the retry ladder - so a\ncontact receives at most one message per campaign by construction, not by a counter a\ncaller could raise.\n\nLaunching with this enabled additionally requires the executed Cold Outreach & Data\nProvenance Waiver, and the waiver is re-checked again at the instant of every drop: a\ncampaign runs for days and a waiver version bump re-arms the gate by design."
      },
      "VoicemailMessage": {
        "properties": {
          "agent_version_id": {
            "type": "string",
            "title": "Agent Version Id"
          },
          "composable": {
            "type": "boolean",
            "title": "Composable"
          },
          "refusal": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Refusal"
          },
          "text": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Text"
          },
          "elements": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Elements"
          },
          "language": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Language"
          },
          "callback_e164": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Callback E164"
          },
          "content_sha256": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Content Sha256"
          },
          "estimated_seconds": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Estimated Seconds"
          }
        },
        "type": "object",
        "required": [
          "agent_version_id",
          "composable"
        ],
        "title": "VoicemailMessage",
        "description": "`GET /v1/agents/{id}/versions/{v}/voicemail-message` - what will actually be said.\n\nA customer running a waivered cold-outreach program is legally responsible for the\nmessage; they must be able to read it, in full, before it is left on anyone's machine.\nServing it from the same composer and the same pinned snapshot the drop reads is what\nmakes this the message rather than a preview of one.\n\n`composable` is false - with `refusal` naming the floor control - where the version\nwould leave no message at all. That is a state worth reporting rather than a 409: the\nquestion \"what will be said\" has the honest answer \"nothing, and here is why\"."
      },
      "VoicemailStep": {
        "properties": {
          "type": {
            "type": "string",
            "const": "voicemail",
            "title": "Type",
            "default": "voicemail"
          },
          "greeting": {
            "type": "string",
            "maxLength": 1000,
            "minLength": 1,
            "title": "Greeting"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "greeting"
        ],
        "title": "VoicemailStep",
        "description": "Take a message. Consent is re-decided per call, never by this configuration.\n\nThe greeting here is the same kind of value ``inbound_voicemail_greeting`` is: a\ntenant-authored announcement. Whether a recording may actually be made is settled at\nadmission against the published recording policy and the caller's matched jurisdiction,\nexactly as the legacy ``voicemail`` route settles it - a policy document cannot grant\nitself a recording basis."
      },
      "VolumeTierStatus": {
        "properties": {
          "base_minute_rate_minor": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Base Minute Rate Minor"
          },
          "current_minute_rate_minor": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Current Minute Rate Minor"
          },
          "bracket_size_minor": {
            "type": "integer",
            "title": "Bracket Size Minor"
          },
          "discount_per_bracket_minor": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Discount Per Bracket Minor"
          },
          "floor_minute_rate_minor": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Floor Minute Rate Minor"
          },
          "cumulative_period_spend_minor": {
            "type": "integer",
            "title": "Cumulative Period Spend Minor"
          },
          "next_tier_threshold_minor": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Tier Threshold Minor"
          },
          "next_tier_minute_rate_minor": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Tier Minute Rate Minor"
          }
        },
        "type": "object",
        "required": [
          "base_minute_rate_minor",
          "current_minute_rate_minor",
          "bracket_size_minor",
          "discount_per_bracket_minor",
          "floor_minute_rate_minor",
          "cumulative_period_spend_minor"
        ],
        "title": "VolumeTierStatus",
        "description": "Where the period stands on the volume-discount ladder (ADR-0022).\n\nRates are minor units per minute; ``cumulative_period_spend_minor`` is the bracket\nbasis - total period spend: base fee, extra-session fees, call fees, and minute\ncharges. ``base_minute_rate_minor`` is the tenant's RESOLVED starting rate (ADR-0028\nd7 as amended): the open ``subscription_terms`` row's negotiated rate when one\nexists, the term's published rate otherwise - the rate the engine actually descends\nfrom. ``next_tier_threshold_minor``/``next_tier_minute_rate_minor`` are null once\nthe floor is reached, and whenever the rate is pinned - a terms row snapshotting\n``volume_ladder_applies`` false, or a negotiated start already below the ladder's\nfloor."
      },
      "WaivedStage": {
        "properties": {
          "stage": {
            "type": "string",
            "title": "Stage"
          },
          "attestation_ref": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Attestation Ref"
          },
          "attested_by": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Attested By"
          }
        },
        "type": "object",
        "required": [
          "stage"
        ],
        "title": "WaivedStage",
        "description": "A bureau stage a signed attestation elected out of.\n\nReported so a stage that did not run never reads as a stage that found nothing. Under\nADR-0018 the election is a condition of production activation rather than a preference,\nwhich is why the signer is reported next to the reference: the report has to say whose\nsignature the missing stage stands on."
      },
      "WebhookDelivery": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "endpoint_id": {
            "type": "string",
            "title": "Endpoint Id"
          },
          "event_id": {
            "type": "string",
            "title": "Event Id"
          },
          "attempt": {
            "type": "integer",
            "title": "Attempt"
          },
          "status": {
            "type": "string",
            "title": "Status"
          },
          "response_code": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Response Code"
          },
          "next_retry_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Retry At"
          },
          "delivered_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Delivered At"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "endpoint_id",
          "event_id",
          "attempt",
          "status",
          "response_code",
          "next_retry_at",
          "delivered_at",
          "created_at",
          "updated_at"
        ],
        "title": "WebhookDelivery",
        "description": "One ledger row: a single (endpoint, event) pair, retried in place."
      },
      "WebhookEndpointRequest": {
        "properties": {
          "url": {
            "type": "string",
            "maxLength": 2083,
            "minLength": 1,
            "format": "uri",
            "title": "Url"
          },
          "enabled_events": {
            "items": {
              "type": "string",
              "enum": [
                "call.started",
                "call.ended",
                "campaign.started",
                "campaign.paused",
                "campaign.completed",
                "appointment.booked",
                "shift.confirmed",
                "conversation.action_recorded",
                "survey.completed",
                "call.analyzed",
                "optout.recorded",
                "scrub.completed",
                "export.completed",
                "usage.threshold",
                "lead.captured",
                "message.taken",
                "ticket.opened",
                "ticket.resolved"
              ]
            },
            "type": "array",
            "title": "Enabled Events"
          },
          "api_version_pin": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Api Version Pin"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "url",
          "enabled_events"
        ],
        "title": "WebhookEndpointRequest",
        "description": "`PUT /webhook-endpoint` - the whole configuration, replaced as a unit.\n\n`enabled_events` is typed as the `EventType` literal, so subscribing to an event the\ncatalog does not define fails validation rather than silently never firing. An empty\nlist is legal: it pauses delivery without discarding the endpoint or its secret."
      },
      "WebhookEndpointSecretView": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "url": {
            "type": "string",
            "title": "Url"
          },
          "enabled_events": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Enabled Events"
          },
          "status": {
            "type": "string",
            "title": "Status"
          },
          "api_version_pin": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Api Version Pin"
          },
          "previous_secret_expires_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Previous Secret Expires At"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
          },
          "secret": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Secret"
          }
        },
        "type": "object",
        "required": [
          "id",
          "url",
          "enabled_events",
          "status",
          "api_version_pin",
          "previous_secret_expires_at",
          "created_at",
          "updated_at",
          "secret"
        ],
        "title": "WebhookEndpointSecretView",
        "description": "A summary plus the plaintext secret, when the answering call minted one."
      },
      "WebhookEndpointSummary": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "url": {
            "type": "string",
            "title": "Url"
          },
          "enabled_events": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Enabled Events"
          },
          "status": {
            "type": "string",
            "title": "Status"
          },
          "api_version_pin": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Api Version Pin"
          },
          "previous_secret_expires_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Previous Secret Expires At"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "url",
          "enabled_events",
          "status",
          "api_version_pin",
          "previous_secret_expires_at",
          "created_at",
          "updated_at"
        ],
        "title": "WebhookEndpointSummary",
        "description": "The endpoint as every read renders it - structurally incapable of leaking a secret."
      },
      "WebhookTargetCreateRequest": {
        "properties": {
          "webhook_id": {
            "type": "string",
            "maxLength": 64,
            "minLength": 1,
            "title": "Webhook Id"
          },
          "description": {
            "type": "string",
            "maxLength": 500,
            "minLength": 1,
            "title": "Description"
          },
          "parameters": {
            "additionalProperties": true,
            "type": "object",
            "title": "Parameters"
          },
          "side_effect": {
            "$ref": "#/components/schemas/SideEffect"
          },
          "url": {
            "type": "string",
            "maxLength": 2048,
            "minLength": 1,
            "title": "Url"
          },
          "timeout_seconds": {
            "type": "number",
            "maximum": 30,
            "exclusiveMinimum": 0,
            "title": "Timeout Seconds",
            "default": 5
          },
          "max_invocations_per_call": {
            "type": "integer",
            "maximum": 20,
            "minimum": 1,
            "title": "Max Invocations Per Call",
            "default": 3
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "webhook_id",
          "description",
          "parameters",
          "side_effect",
          "url"
        ],
        "title": "WebhookTargetCreateRequest",
        "description": "`POST /webhook-targets` - one spoken-name integration a live call may invoke.\n\nThe field bounds are the prompt-budget bounds from `vocapable_contracts.toolschema`:\nthe id lands in a schema enum the model reads and the description in the catalog it\nre-reads every turn, so what this model refuses is exactly what bind time would."
      },
      "WebhookTargetSecretView": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "webhook_id": {
            "type": "string",
            "title": "Webhook Id"
          },
          "description": {
            "type": "string",
            "title": "Description"
          },
          "parameters": {
            "additionalProperties": true,
            "type": "object",
            "title": "Parameters"
          },
          "side_effect": {
            "type": "string",
            "title": "Side Effect"
          },
          "timeout_seconds": {
            "type": "number",
            "title": "Timeout Seconds"
          },
          "max_invocations_per_call": {
            "type": "integer",
            "title": "Max Invocations Per Call"
          },
          "url": {
            "type": "string",
            "title": "Url"
          },
          "status": {
            "type": "string",
            "title": "Status"
          },
          "previous_secret_expires_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Previous Secret Expires At"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
          },
          "secret": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Secret"
          }
        },
        "type": "object",
        "required": [
          "id",
          "webhook_id",
          "description",
          "parameters",
          "side_effect",
          "timeout_seconds",
          "max_invocations_per_call",
          "url",
          "status",
          "previous_secret_expires_at",
          "created_at",
          "updated_at",
          "secret"
        ],
        "title": "WebhookTargetSecretView",
        "description": "A summary plus the plaintext secret, when the answering call minted one."
      },
      "WebhookTargetSummary": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "webhook_id": {
            "type": "string",
            "title": "Webhook Id"
          },
          "description": {
            "type": "string",
            "title": "Description"
          },
          "parameters": {
            "additionalProperties": true,
            "type": "object",
            "title": "Parameters"
          },
          "side_effect": {
            "type": "string",
            "title": "Side Effect"
          },
          "timeout_seconds": {
            "type": "number",
            "title": "Timeout Seconds"
          },
          "max_invocations_per_call": {
            "type": "integer",
            "title": "Max Invocations Per Call"
          },
          "url": {
            "type": "string",
            "title": "Url"
          },
          "status": {
            "type": "string",
            "title": "Status"
          },
          "previous_secret_expires_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Previous Secret Expires At"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Updated At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "webhook_id",
          "description",
          "parameters",
          "side_effect",
          "timeout_seconds",
          "max_invocations_per_call",
          "url",
          "status",
          "previous_secret_expires_at",
          "created_at",
          "updated_at"
        ],
        "title": "WebhookTargetSummary",
        "description": "A target as every read renders it - structurally incapable of leaking a secret."
      },
      "WebhookTargetUpdateRequest": {
        "properties": {
          "description": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500,
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "parameters": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Parameters"
          },
          "side_effect": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SideEffect"
              },
              {
                "type": "null"
              }
            ]
          },
          "url": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 2048,
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Url"
          },
          "timeout_seconds": {
            "anyOf": [
              {
                "type": "number",
                "maximum": 30,
                "exclusiveMinimum": 0
              },
              {
                "type": "null"
              }
            ],
            "title": "Timeout Seconds"
          },
          "max_invocations_per_call": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 20,
                "minimum": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Max Invocations Per Call"
          },
          "status": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(active|disabled)$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Status"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "title": "WebhookTargetUpdateRequest",
        "description": "`PATCH /webhook-targets/{id}`. Only the fields present in the body are applied.\n\n`webhook_id` is deliberately not editable: it is the identity the model reads, the\ntranscript records, and the eval store keys on. Renaming a target is registering a new\none and disabling the old. `status: \"active\"` is the re-enable path; the one-way\nconvenience for the other direction is `DELETE`."
      },
      "WebhookTestResult": {
        "properties": {
          "delivered": {
            "type": "boolean",
            "title": "Delivered"
          },
          "status_code": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Status Code"
          },
          "event_type": {
            "type": "string",
            "title": "Event Type"
          },
          "detail": {
            "type": "string",
            "title": "Detail"
          }
        },
        "type": "object",
        "required": [
          "delivered",
          "status_code",
          "event_type",
          "detail"
        ],
        "title": "WebhookTestResult",
        "description": "What one signed sample POST to the tenant's endpoint answered."
      },
      "WorkflowOutcome": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "call_id": {
            "type": "string",
            "title": "Call Id"
          },
          "contact_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Contact Id"
          },
          "kind": {
            "type": "string",
            "enum": [
              "shift_response",
              "qualification",
              "identity_capture",
              "identity_correction"
            ],
            "title": "Kind"
          },
          "subject_ref": {
            "type": "string",
            "title": "Subject Ref"
          },
          "revision": {
            "type": "integer",
            "minimum": 1,
            "title": "Revision"
          },
          "response": {
            "type": "string",
            "title": "Response"
          },
          "payload": {
            "additionalProperties": true,
            "type": "object",
            "title": "Payload"
          },
          "source_turns": {
            "items": {
              "$ref": "#/components/schemas/ConversationEvidence"
            },
            "type": "array",
            "title": "Source Turns"
          },
          "action_confirmation": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ActionConfirmationProof"
              },
              {
                "type": "null"
              }
            ]
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          },
          "workflow": {
            "type": "string",
            "enum": [
              "workforce",
              "sales",
              "recruiting"
            ],
            "title": "Workflow"
          },
          "agent_id": {
            "type": "string",
            "title": "Agent Id"
          },
          "agent_name": {
            "type": "string",
            "title": "Agent Name"
          },
          "contact_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Contact Name"
          },
          "use_case": {
            "type": "string",
            "title": "Use Case"
          },
          "call_record_available": {
            "type": "boolean",
            "title": "Call Record Available"
          },
          "qualification_coverage": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/QualificationCoverage"
              },
              {
                "type": "null"
              }
            ]
          },
          "fit_review": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/QualificationReviewState"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "required": [
          "id",
          "call_id",
          "contact_id",
          "kind",
          "subject_ref",
          "revision",
          "response",
          "payload",
          "created_at",
          "workflow",
          "agent_id",
          "agent_name",
          "use_case",
          "call_record_available"
        ],
        "title": "WorkflowOutcome"
      },
      "WorkflowOutcomeCount": {
        "properties": {
          "workflow": {
            "type": "string",
            "enum": [
              "workforce",
              "sales",
              "recruiting"
            ],
            "title": "Workflow"
          },
          "response": {
            "type": "string",
            "title": "Response"
          },
          "count": {
            "type": "integer",
            "minimum": 0,
            "title": "Count"
          }
        },
        "type": "object",
        "required": [
          "workflow",
          "response",
          "count"
        ],
        "title": "WorkflowOutcomeCount"
      },
      "WorkflowOutcomeSummary": {
        "properties": {
          "window": {
            "$ref": "#/components/schemas/DashboardWindow"
          },
          "as_of": {
            "type": "string",
            "format": "date-time",
            "title": "As Of"
          },
          "counts": {
            "items": {
              "$ref": "#/components/schemas/WorkflowOutcomeCount"
            },
            "type": "array",
            "title": "Counts"
          }
        },
        "type": "object",
        "required": [
          "window",
          "as_of",
          "counts"
        ],
        "title": "WorkflowOutcomeSummary",
        "description": "Latest caller response per call/subject as of end, saved within the window."
      },
      "WorkspaceCapabilities": {
        "properties": {
          "generated_at": {
            "type": "string",
            "format": "date-time",
            "title": "Generated At"
          },
          "capabilities": {
            "items": {
              "$ref": "#/components/schemas/WorkspaceCapability"
            },
            "type": "array",
            "maxItems": 6,
            "minItems": 6,
            "title": "Capabilities"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "generated_at",
          "capabilities"
        ],
        "title": "WorkspaceCapabilities",
        "description": "The complete, fresh capability map used by the customer portal."
      },
      "WorkspaceCapability": {
        "properties": {
          "key": {
            "type": "string",
            "enum": [
              "browser_voice_test",
              "text_chat_test",
              "phone_test_call",
              "voice_preview",
              "calendar_booking",
              "guided_setup"
            ],
            "title": "Key"
          },
          "state": {
            "type": "string",
            "enum": [
              "ready",
              "needs_setup",
              "unavailable"
            ],
            "title": "State"
          },
          "blockers": {
            "items": {
              "type": "string",
              "enum": [
                "account_agreements_required",
                "agents_write_scope_required",
                "calls_write_scope_required",
                "runtime_not_configured",
                "browser_runtime_not_configured",
                "fleet_placement_not_configured",
                "agent_chat_not_configured",
                "assisted_setup_not_configured",
                "voice_catalog_empty",
                "verified_test_number_required",
                "test_call_daily_cap_reached",
                "telephony_account_required",
                "telephony_account_unverified",
                "telephony_worker_unavailable",
                "calendar_integration_not_configured",
                "calendar_connection_required",
                "calendar_connection_reconnect_required"
              ]
            },
            "type": "array",
            "title": "Blockers"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "key",
          "state"
        ],
        "title": "WorkspaceCapability",
        "description": "One finite capability with the current reason it cannot be used, if any.\n\n``needs_setup`` names something the tenant or its developer can complete.  ``unavailable``\nnames a deployment/service condition; the portal should explain it plainly and avoid\npresenting a setup CTA that cannot succeed.  ``ready`` always carries no blockers."
      },
      "WorkspaceImpact": {
        "properties": {
          "tenant_id": {
            "type": "string",
            "title": "Tenant Id"
          },
          "tenant_name": {
            "type": "string",
            "title": "Tenant Name"
          },
          "tenant_status": {
            "type": "string",
            "title": "Tenant Status"
          },
          "mobile_membership_role": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Mobile Membership Role"
          },
          "legacy_role": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Legacy Role"
          },
          "has_active_subscription": {
            "type": "boolean",
            "title": "Has Active Subscription"
          },
          "is_last_active_owner": {
            "type": "boolean",
            "title": "Is Last Active Owner"
          }
        },
        "type": "object",
        "required": [
          "tenant_id",
          "tenant_name",
          "tenant_status",
          "mobile_membership_role",
          "legacy_role",
          "has_active_subscription",
          "is_last_active_owner"
        ],
        "title": "WorkspaceImpact"
      }
    },
    "securitySchemes": {
      "HTTPBearer": {
        "type": "http",
        "description": "API key: vcp_live_… or vcp_test_…",
        "scheme": "bearer"
      },
      "DashboardSessionCookie": {
        "type": "apiKey",
        "description": "First-party dashboard session cookie; native mutations also require X-CSRF-Token.",
        "in": "cookie",
        "name": "__Host-vcp-session"
      },
      "MobileBearer": {
        "type": "http",
        "description": "Short-lived Vocapable Mobile access token (vma1.…), never an API key.",
        "scheme": "bearer"
      },
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "API key",
        "description": "API key in the Authorization header: `Authorization: Bearer vcp_live_…` or `vcp_test_…`. Test keys route all telephony to a mock provider, so no PSTN dial ever originates from a test key."
      }
    }
  },
  "servers": [
    {
      "url": "https://api.vocapable.com"
    }
  ],
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "tags": [
    {
      "name": "ops"
    },
    {
      "name": "account deletion"
    },
    {
      "name": "identity"
    },
    {
      "name": "mobile"
    },
    {
      "name": "mobile-integrations"
    },
    {
      "name": "mobile-receptionist"
    },
    {
      "name": "mobile-operations"
    },
    {
      "name": "mobile-step-up"
    },
    {
      "name": "mobile-workspace"
    },
    {
      "name": "mobile-change-feed"
    },
    {
      "name": "mobile-coach"
    },
    {
      "name": "mobile-availability"
    },
    {
      "name": "mobile-handoff-booking"
    },
    {
      "name": "agreements"
    },
    {
      "name": "agents"
    },
    {
      "name": "receptionist-intelligence"
    },
    {
      "name": "receptionist-regression-cases"
    },
    {
      "name": "voices"
    },
    {
      "name": "knowledge"
    },
    {
      "name": "contacts"
    },
    {
      "name": "campaigns"
    },
    {
      "name": "analytics"
    },
    {
      "name": "compliance"
    },
    {
      "name": "calls"
    },
    {
      "name": "inbox"
    },
    {
      "name": "handoff"
    },
    {
      "name": "billing"
    },
    {
      "name": "test-calls"
    },
    {
      "name": "voice-sessions"
    },
    {
      "name": "agent-chat"
    },
    {
      "name": "numbers"
    },
    {
      "name": "verified-numbers"
    },
    {
      "name": "scheduling"
    },
    {
      "name": "exports"
    },
    {
      "name": "integrations"
    },
    {
      "name": "messages"
    },
    {
      "name": "workspace"
    }
  ]
}