{
  "components": {
    "schemas": {
      "AccountDeletedOut": {
        "properties": {
          "deleted_at": {
            "format": "date-time",
            "title": "Deleted At",
            "type": "string"
          }
        },
        "required": [
          "deleted_at"
        ],
        "title": "AccountDeletedOut",
        "type": "object"
      },
      "ApiKeyCreatedOut": {
        "properties": {
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "id": {
            "format": "uuid",
            "title": "Id",
            "type": "string"
          },
          "key": {
            "description": "The full key. Shown once; store it now.",
            "title": "Key",
            "type": "string"
          },
          "last_used_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Used At"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "prefix": {
            "title": "Prefix",
            "type": "string"
          },
          "scopes": {
            "items": {
              "type": "string"
            },
            "title": "Scopes",
            "type": "array"
          }
        },
        "required": [
          "id",
          "name",
          "prefix",
          "scopes",
          "created_at",
          "last_used_at",
          "key"
        ],
        "title": "ApiKeyCreatedOut",
        "type": "object"
      },
      "ApiKeyIn": {
        "additionalProperties": false,
        "properties": {
          "name": {
            "examples": [
              "Laptop script"
            ],
            "title": "Name",
            "type": "string"
          },
          "scopes": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "`read`, `write`, `export`. Default `read` and `write`. `export` (opt-in, needs `read`) allows `GET /me/export`.",
            "examples": [
              [
                "read",
                "write"
              ]
            ],
            "title": "Scopes"
          }
        },
        "required": [
          "name"
        ],
        "title": "ApiKeyIn",
        "type": "object"
      },
      "ApiKeyOut": {
        "properties": {
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "id": {
            "format": "uuid",
            "title": "Id",
            "type": "string"
          },
          "last_used_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Used At"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "prefix": {
            "title": "Prefix",
            "type": "string"
          },
          "scopes": {
            "items": {
              "type": "string"
            },
            "title": "Scopes",
            "type": "array"
          }
        },
        "required": [
          "id",
          "name",
          "prefix",
          "scopes",
          "created_at",
          "last_used_at"
        ],
        "title": "ApiKeyOut",
        "type": "object"
      },
      "ApiKeyPage": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/ApiKeyOut"
            },
            "title": "Items",
            "type": "array"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          }
        },
        "required": [
          "items",
          "next_cursor"
        ],
        "title": "ApiKeyPage",
        "type": "object"
      },
      "AppleAuthorizationIn": {
        "additionalProperties": false,
        "properties": {
          "authorization_code": {
            "description": "The `authorizationCode` of the Sign in with Apple credential the app just signed in with (single use, valid 5 minutes).",
            "maxLength": 1024,
            "title": "Authorization Code",
            "type": "string"
          }
        },
        "required": [
          "authorization_code"
        ],
        "title": "AppleAuthorizationIn",
        "type": "object"
      },
      "AttemptOut": {
        "description": "One phone call: an attempt of a wake-up call, or a standalone test call\n(``occurrence_id`` null). Instants are UTC.",
        "properties": {
          "answered_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Answered At"
          },
          "answered_by": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Answered By"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "digits": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Digits"
          },
          "due_at": {
            "format": "date-time",
            "title": "Due At",
            "type": "string"
          },
          "duration_seconds": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Duration Seconds"
          },
          "ended_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ended At"
          },
          "error_code": {
            "title": "Error Code",
            "type": "string"
          },
          "id": {
            "format": "uuid",
            "title": "Id",
            "type": "string"
          },
          "kind": {
            "title": "Kind",
            "type": "string"
          },
          "live": {
            "description": "Still in progress: poll `GET /calls/{id}` every 2 s.",
            "title": "Live",
            "type": "boolean"
          },
          "n": {
            "title": "N",
            "type": "integer"
          },
          "occurrence_id": {
            "anyOf": [
              {
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Occurrence Id"
          },
          "requested_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Requested At"
          },
          "ringing_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ringing At"
          },
          "status": {
            "title": "Status",
            "type": "string"
          },
          "to_masked": {
            "title": "To Masked",
            "type": "string"
          }
        },
        "required": [
          "id",
          "occurrence_id",
          "kind",
          "n",
          "status",
          "live",
          "to_masked",
          "due_at",
          "requested_at",
          "ringing_at",
          "answered_at",
          "ended_at",
          "answered_by",
          "digits",
          "duration_seconds",
          "error_code",
          "created_at"
        ],
        "title": "AttemptOut",
        "type": "object"
      },
      "AttemptPage": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/AttemptOut"
            },
            "title": "Items",
            "type": "array"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          }
        },
        "required": [
          "items",
          "next_cursor"
        ],
        "title": "AttemptPage",
        "type": "object"
      },
      "BillingPlanOut": {
        "properties": {
          "code": {
            "examples": [
              "traveler_monthly"
            ],
            "title": "Code",
            "type": "string"
          },
          "currency": {
            "examples": [
              "USD"
            ],
            "title": "Currency",
            "type": "string"
          },
          "included_calls_per_period": {
            "title": "Included Calls Per Period",
            "type": "integer"
          },
          "interval": {
            "description": "`month`, `year`, or `none` (trial, packs)",
            "title": "Interval",
            "type": "string"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "price_cents": {
            "description": "Price in the currency's minor unit",
            "title": "Price Cents",
            "type": "integer"
          },
          "purchasable": {
            "description": "`POST /billing/checkout` sells this plan now (10 \u00a73)",
            "title": "Purchasable",
            "type": "boolean"
          },
          "tier_b_multiplier": {
            "title": "Tier B Multiplier",
            "type": "integer"
          }
        },
        "required": [
          "code",
          "name",
          "price_cents",
          "currency",
          "interval",
          "included_calls_per_period",
          "tier_b_multiplier",
          "purchasable"
        ],
        "title": "BillingPlanOut",
        "type": "object"
      },
      "BillingPlanPage": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/BillingPlanOut"
            },
            "title": "Items",
            "type": "array"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          }
        },
        "required": [
          "items"
        ],
        "title": "BillingPlanPage",
        "type": "object"
      },
      "BillingRedirectOut": {
        "properties": {
          "url": {
            "description": "Send the browser here (a Stripe-hosted page)",
            "title": "Url",
            "type": "string"
          }
        },
        "required": [
          "url"
        ],
        "title": "BillingRedirectOut",
        "type": "object"
      },
      "CheckoutIn": {
        "properties": {
          "plan": {
            "examples": [
              "traveler_monthly"
            ],
            "title": "Plan",
            "type": "string"
          }
        },
        "required": [
          "plan"
        ],
        "title": "CheckoutIn",
        "type": "object"
      },
      "ContactCopyOut": {
        "properties": {
          "body": {
            "title": "Body",
            "type": "string"
          },
          "title": {
            "title": "Title",
            "type": "string"
          }
        },
        "required": [
          "title",
          "body"
        ],
        "title": "ContactCopyOut",
        "type": "object"
      },
      "CountryOut": {
        "properties": {
          "calling_code": {
            "examples": [
              "+81"
            ],
            "title": "Calling Code",
            "type": "string"
          },
          "country_code": {
            "description": "ISO 3166-1 alpha-2.",
            "examples": [
              "JP"
            ],
            "title": "Country Code",
            "type": "string"
          },
          "name": {
            "examples": [
              "Japan"
            ],
            "title": "Name",
            "type": "string"
          },
          "tier": {
            "description": "Pricing tier (10 \u00a71); never `blocked`.",
            "examples": [
              "A"
            ],
            "title": "Tier",
            "type": "string"
          }
        },
        "required": [
          "country_code",
          "name",
          "calling_code",
          "tier"
        ],
        "title": "CountryOut",
        "type": "object"
      },
      "CountryPage": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/CountryOut"
            },
            "title": "Items",
            "type": "array"
          }
        },
        "required": [
          "items"
        ],
        "title": "CountryPage",
        "type": "object"
      },
      "DeleteMeIn": {
        "additionalProperties": false,
        "properties": {
          "code": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The 6-digit code from `POST /me/deletion-code`.",
            "title": "Code"
          },
          "confirm": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "examples": [
              "DELETE"
            ],
            "title": "Confirm"
          }
        },
        "title": "DeleteMeIn",
        "type": "object"
      },
      "DeletionCodeOut": {
        "properties": {
          "sent_to": {
            "title": "Sent To",
            "type": "string"
          },
          "valid_minutes": {
            "title": "Valid Minutes",
            "type": "integer"
          }
        },
        "required": [
          "sent_to",
          "valid_minutes"
        ],
        "title": "DeletionCodeOut",
        "type": "object"
      },
      "DemoCallIn": {
        "additionalProperties": false,
        "properties": {
          "code": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "examples": [
              "123456"
            ],
            "title": "Code"
          },
          "e164": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "examples": [
              "+14155551212"
            ],
            "title": "E164"
          }
        },
        "title": "DemoCallIn",
        "type": "object"
      },
      "DemoCallOut": {
        "description": "The demo call (a standalone attempt of `kind` `demo`). `state` is the widget's word for\nit: `calling`, `ringing`, `answered`, `confirmed`, `stopped` (pressed 9), `unconfirmed`,\n`missed`, `not_placed` or `failed`.",
        "properties": {
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "id": {
            "format": "uuid",
            "title": "Id",
            "type": "string"
          },
          "live": {
            "title": "Live",
            "type": "boolean"
          },
          "state": {
            "title": "State",
            "type": "string"
          },
          "status": {
            "title": "Status",
            "type": "string"
          },
          "to_masked": {
            "title": "To Masked",
            "type": "string"
          }
        },
        "required": [
          "id",
          "status",
          "state",
          "live",
          "to_masked",
          "created_at"
        ],
        "title": "DemoCallOut",
        "type": "object"
      },
      "DemoStartIn": {
        "additionalProperties": false,
        "properties": {
          "consent": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "description": "Required, `true`: the person agrees that this number receives one automated call made with an artificial or prerecorded voice (and a text with a code first). Consent is not a condition of any purchase.",
            "title": "Consent"
          },
          "e164": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "examples": [
              "+14155551212"
            ],
            "title": "E164"
          }
        },
        "title": "DemoStartIn",
        "type": "object"
      },
      "DemoStartOut": {
        "description": "A code is on its way by text. Send it to `POST /demo/call` within `code_valid_seconds`.",
        "properties": {
          "channel": {
            "const": "sms",
            "title": "Channel",
            "type": "string"
          },
          "code_valid_seconds": {
            "title": "Code Valid Seconds",
            "type": "integer"
          },
          "e164_masked": {
            "title": "E164 Masked",
            "type": "string"
          },
          "status": {
            "const": "code_sent",
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "status",
          "channel",
          "e164_masked",
          "code_valid_seconds"
        ],
        "title": "DemoStartOut",
        "type": "object"
      },
      "DeviceIn": {
        "additionalProperties": false,
        "properties": {
          "alarm_capability": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Alarm Capability"
          },
          "app_version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "App Version"
          },
          "installation_id": {
            "format": "uuid",
            "title": "Installation Id",
            "type": "string"
          },
          "model": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Model"
          },
          "os_version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Os Version"
          },
          "platform": {
            "examples": [
              "ios"
            ],
            "title": "Platform",
            "type": "string"
          },
          "push_token": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Push Token"
          },
          "timezone": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Timezone"
          }
        },
        "required": [
          "installation_id",
          "platform"
        ],
        "title": "DeviceIn",
        "type": "object"
      },
      "DeviceOut": {
        "properties": {
          "alarm_capability": {
            "title": "Alarm Capability",
            "type": "string"
          },
          "app_version": {
            "title": "App Version",
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "id": {
            "format": "uuid",
            "title": "Id",
            "type": "string"
          },
          "installation_id": {
            "format": "uuid",
            "title": "Installation Id",
            "type": "string"
          },
          "last_seen_at": {
            "format": "date-time",
            "title": "Last Seen At",
            "type": "string"
          },
          "model": {
            "title": "Model",
            "type": "string"
          },
          "os_version": {
            "title": "Os Version",
            "type": "string"
          },
          "platform": {
            "title": "Platform",
            "type": "string"
          },
          "push_token_set": {
            "title": "Push Token Set",
            "type": "boolean"
          },
          "timezone": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Timezone"
          },
          "timezone_reported_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Timezone Reported At"
          }
        },
        "required": [
          "id",
          "installation_id",
          "platform",
          "timezone",
          "timezone_reported_at",
          "alarm_capability",
          "app_version",
          "os_version",
          "model",
          "push_token_set",
          "last_seen_at",
          "created_at"
        ],
        "title": "DeviceOut",
        "type": "object"
      },
      "DevicePatchIn": {
        "additionalProperties": false,
        "properties": {
          "alarm_capability": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Alarm Capability"
          },
          "app_version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "App Version"
          },
          "model": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Model"
          },
          "os_version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Os Version"
          },
          "push_token": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Push Token"
          },
          "timezone": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Timezone"
          }
        },
        "title": "DevicePatchIn",
        "type": "object"
      },
      "DeviceTimezoneIn": {
        "additionalProperties": false,
        "properties": {
          "reported_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "When the device saw the zone (UTC).",
            "title": "Reported At"
          },
          "timezone": {
            "examples": [
              "Asia/Tokyo"
            ],
            "title": "Timezone",
            "type": "string"
          }
        },
        "required": [
          "timezone"
        ],
        "title": "DeviceTimezoneIn",
        "type": "object"
      },
      "HomeTimeOut": {
        "description": "The same instant on the account's home clock.",
        "properties": {
          "date": {
            "title": "Date",
            "type": "string"
          },
          "time": {
            "title": "Time",
            "type": "string"
          },
          "timezone": {
            "title": "Timezone",
            "type": "string"
          },
          "utc_offset": {
            "title": "Utc Offset",
            "type": "string"
          }
        },
        "required": [
          "date",
          "time",
          "timezone",
          "utc_offset"
        ],
        "title": "HomeTimeOut",
        "type": "object"
      },
      "LocalTimeOut": {
        "description": "A wall time in its zone. ``time`` is when the phone rings there (24-hour ``HH:MM``):\na wall time that a spring-forward skips (02:30 America/Los_Angeles on 2026-03-08) rings at\n03:00 America/Los_Angeles with ``wall_time_kind`` ``nonexistent_shifted`` (04 \u00a75).",
        "properties": {
          "abbreviation": {
            "examples": [
              "JST"
            ],
            "title": "Abbreviation",
            "type": "string"
          },
          "date": {
            "examples": [
              "2026-10-06"
            ],
            "title": "Date",
            "type": "string"
          },
          "time": {
            "examples": [
              "06:30"
            ],
            "title": "Time",
            "type": "string"
          },
          "timezone": {
            "examples": [
              "Asia/Tokyo"
            ],
            "title": "Timezone",
            "type": "string"
          },
          "utc_offset": {
            "examples": [
              "+09:00"
            ],
            "title": "Utc Offset",
            "type": "string"
          },
          "wall_time_kind": {
            "enum": [
              "normal",
              "ambiguous_first",
              "nonexistent_shifted"
            ],
            "title": "Wall Time Kind",
            "type": "string"
          }
        },
        "required": [
          "date",
          "time",
          "timezone",
          "utc_offset",
          "abbreviation",
          "wall_time_kind"
        ],
        "title": "LocalTimeOut",
        "type": "object"
      },
      "MeBillingOut": {
        "description": "Billing hints for the app (D-057, M9-T01).",
        "properties": {
          "web_checkout_link": {
            "description": "The app may offer subscribing on the web (`POST /billing/web-checkout`) on the US storefront: the server's switch is on, payments are set up and the account has no plan. The storefront itself is the app's to check.",
            "title": "Web Checkout Link",
            "type": "boolean"
          },
          "web_checkout_plans": {
            "description": "What the web checkout sells; empty unless offered.",
            "items": {
              "$ref": "#/components/schemas/WebCheckoutPlanOut"
            },
            "title": "Web Checkout Plans",
            "type": "array"
          }
        },
        "required": [
          "web_checkout_link",
          "web_checkout_plans"
        ],
        "title": "MeBillingOut",
        "type": "object"
      },
      "MeOut": {
        "properties": {
          "billing": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/MeBillingOut"
              },
              {
                "type": "null"
              }
            ]
          },
          "calls_revoked_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Calls Revoked At"
          },
          "default_backup_alarm": {
            "title": "Default Backup Alarm",
            "type": "boolean"
          },
          "default_retry_policy": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/RetryPolicyOut"
              },
              {
                "type": "null"
              }
            ]
          },
          "digest_opt_in": {
            "title": "Digest Opt In",
            "type": "boolean"
          },
          "display_name": {
            "title": "Display Name",
            "type": "string"
          },
          "email": {
            "title": "Email",
            "type": "string"
          },
          "greeting_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Greeting Name"
          },
          "home_timezone": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Home Timezone"
          },
          "id": {
            "format": "uuid",
            "title": "Id",
            "type": "string"
          },
          "locale": {
            "title": "Locale",
            "type": "string"
          },
          "marketing_opt_in": {
            "title": "Marketing Opt In",
            "type": "boolean"
          },
          "onboarding": {
            "$ref": "#/components/schemas/OnboardingOut"
          },
          "onboarding_state": {
            "additionalProperties": true,
            "title": "Onboarding State",
            "type": "object"
          },
          "plan": {
            "$ref": "#/components/schemas/PlanOut"
          },
          "time_format": {
            "title": "Time Format",
            "type": "string"
          },
          "voice": {
            "title": "Voice",
            "type": "string"
          }
        },
        "required": [
          "id",
          "email",
          "display_name",
          "greeting_name",
          "home_timezone",
          "time_format",
          "locale",
          "voice",
          "onboarding_state",
          "marketing_opt_in",
          "digest_opt_in",
          "default_retry_policy",
          "default_backup_alarm",
          "calls_revoked_at",
          "plan",
          "onboarding"
        ],
        "title": "MeOut",
        "type": "object"
      },
      "MePatchIn": {
        "additionalProperties": false,
        "properties": {
          "default_backup_alarm": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Default Backup Alarm"
          },
          "default_retry_policy": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Default Retry Policy"
          },
          "digest_opt_in": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Digest Opt In"
          },
          "display_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Display Name"
          },
          "greeting_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Greeting Name"
          },
          "home_timezone": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Home Timezone"
          },
          "locale": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Locale"
          },
          "marketing_opt_in": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Marketing Opt In"
          },
          "time_format": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Time Format"
          },
          "voice": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Voice"
          }
        },
        "title": "MePatchIn",
        "type": "object"
      },
      "MismatchOut": {
        "properties": {
          "device_utc_offset": {
            "title": "Device Utc Offset",
            "type": "string"
          },
          "device_zone": {
            "title": "Device Zone",
            "type": "string"
          },
          "in_device_zone": {
            "title": "In Device Zone",
            "type": "string"
          },
          "in_device_zone_date": {
            "title": "In Device Zone Date",
            "type": "string"
          },
          "occurrence_id": {
            "title": "Occurrence Id",
            "type": "string"
          },
          "schedule_id": {
            "title": "Schedule Id",
            "type": "string"
          },
          "scheduled_at": {
            "title": "Scheduled At",
            "type": "string"
          },
          "scheduled_local": {
            "title": "Scheduled Local",
            "type": "string"
          },
          "scheduled_local_date": {
            "title": "Scheduled Local Date",
            "type": "string"
          },
          "scheduled_utc_offset": {
            "title": "Scheduled Utc Offset",
            "type": "string"
          },
          "scheduled_zone": {
            "title": "Scheduled Zone",
            "type": "string"
          },
          "suggested": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SuggestionOut"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "occurrence_id",
          "schedule_id",
          "scheduled_local",
          "scheduled_local_date",
          "scheduled_zone",
          "scheduled_utc_offset",
          "scheduled_at",
          "in_device_zone",
          "in_device_zone_date",
          "device_zone",
          "device_utc_offset",
          "suggested"
        ],
        "title": "MismatchOut",
        "type": "object"
      },
      "NextOccurrenceOut": {
        "properties": {
          "backup_alarm_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "When the app's backup alarm rings (03 \u00a73), UTC; moves on snooze.",
            "title": "Backup Alarm At"
          },
          "id": {
            "format": "uuid",
            "title": "Id",
            "type": "string"
          },
          "in_home_timezone": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/HomeTimeOut"
              },
              {
                "type": "null"
              }
            ],
            "description": "The instant on the home clock. Omitted when the home zone is the call's own zone (or no home zone is set)."
          },
          "in_seconds": {
            "description": "Seconds from now (negative once past).",
            "title": "In Seconds",
            "type": "integer"
          },
          "local": {
            "$ref": "#/components/schemas/LocalTimeOut"
          },
          "notice": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "04 \u00a75 sentence when the wall time falls in a clock change.",
            "title": "Notice"
          },
          "scheduled_at": {
            "description": "UTC instant the call rings (`Z`).",
            "format": "date-time",
            "title": "Scheduled At",
            "type": "string"
          },
          "status": {
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "local",
          "scheduled_at",
          "in_seconds",
          "notice",
          "id",
          "status",
          "backup_alarm_at"
        ],
        "title": "NextOccurrenceOut",
        "type": "object"
      },
      "OccurrenceDetailOut": {
        "properties": {
          "attempt_count": {
            "title": "Attempt Count",
            "type": "integer"
          },
          "attempts": {
            "items": {
              "$ref": "#/components/schemas/AttemptOut"
            },
            "title": "Attempts",
            "type": "array"
          },
          "backup_alarm_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Backup Alarm At"
          },
          "confirmed_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Confirmed At"
          },
          "derivation_source": {
            "title": "Derivation Source",
            "type": "string"
          },
          "dispatched_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Dispatched At"
          },
          "finished_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Finished At"
          },
          "id": {
            "format": "uuid",
            "title": "Id",
            "type": "string"
          },
          "in_home_timezone": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/HomeTimeOut"
              },
              {
                "type": "null"
              }
            ],
            "description": "The instant on the home clock. Omitted when the home zone is the call's own zone (or no home zone is set)."
          },
          "in_seconds": {
            "description": "Seconds from now (negative once past).",
            "title": "In Seconds",
            "type": "integer"
          },
          "label": {
            "title": "Label",
            "type": "string"
          },
          "local": {
            "$ref": "#/components/schemas/LocalTimeOut"
          },
          "notice": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "04 \u00a75 sentence when the wall time falls in a clock change.",
            "title": "Notice"
          },
          "outcome_reason": {
            "title": "Outcome Reason",
            "type": "string"
          },
          "phone_number": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PhoneRefOut"
              },
              {
                "type": "null"
              }
            ]
          },
          "reached_voicemail": {
            "default": false,
            "description": "Some attempt reached voicemail (an answering-machine verdict). The web's Voicemail chip is this on an `unconfirmed` call. Absent from servers before M10-T04.",
            "title": "Reached Voicemail",
            "type": "boolean"
          },
          "schedule_id": {
            "format": "uuid",
            "title": "Schedule Id",
            "type": "string"
          },
          "scheduled_at": {
            "description": "UTC instant the call rings (`Z`).",
            "format": "date-time",
            "title": "Scheduled At",
            "type": "string"
          },
          "snooze_count": {
            "title": "Snooze Count",
            "type": "integer"
          },
          "status": {
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "local",
          "scheduled_at",
          "in_seconds",
          "notice",
          "id",
          "schedule_id",
          "label",
          "status",
          "derivation_source",
          "outcome_reason",
          "backup_alarm_at",
          "phone_number",
          "attempt_count",
          "snooze_count",
          "dispatched_at",
          "confirmed_at",
          "finished_at",
          "attempts"
        ],
        "title": "OccurrenceDetailOut",
        "type": "object"
      },
      "OccurrenceOut": {
        "properties": {
          "attempt_count": {
            "title": "Attempt Count",
            "type": "integer"
          },
          "backup_alarm_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Backup Alarm At"
          },
          "confirmed_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Confirmed At"
          },
          "derivation_source": {
            "title": "Derivation Source",
            "type": "string"
          },
          "dispatched_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Dispatched At"
          },
          "finished_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Finished At"
          },
          "id": {
            "format": "uuid",
            "title": "Id",
            "type": "string"
          },
          "in_home_timezone": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/HomeTimeOut"
              },
              {
                "type": "null"
              }
            ],
            "description": "The instant on the home clock. Omitted when the home zone is the call's own zone (or no home zone is set)."
          },
          "in_seconds": {
            "description": "Seconds from now (negative once past).",
            "title": "In Seconds",
            "type": "integer"
          },
          "label": {
            "title": "Label",
            "type": "string"
          },
          "local": {
            "$ref": "#/components/schemas/LocalTimeOut"
          },
          "notice": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "04 \u00a75 sentence when the wall time falls in a clock change.",
            "title": "Notice"
          },
          "outcome_reason": {
            "title": "Outcome Reason",
            "type": "string"
          },
          "phone_number": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PhoneRefOut"
              },
              {
                "type": "null"
              }
            ]
          },
          "reached_voicemail": {
            "default": false,
            "description": "Some attempt reached voicemail (an answering-machine verdict). The web's Voicemail chip is this on an `unconfirmed` call. Absent from servers before M10-T04.",
            "title": "Reached Voicemail",
            "type": "boolean"
          },
          "schedule_id": {
            "format": "uuid",
            "title": "Schedule Id",
            "type": "string"
          },
          "scheduled_at": {
            "description": "UTC instant the call rings (`Z`).",
            "format": "date-time",
            "title": "Scheduled At",
            "type": "string"
          },
          "snooze_count": {
            "title": "Snooze Count",
            "type": "integer"
          },
          "status": {
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "local",
          "scheduled_at",
          "in_seconds",
          "notice",
          "id",
          "schedule_id",
          "label",
          "status",
          "derivation_source",
          "outcome_reason",
          "backup_alarm_at",
          "phone_number",
          "attempt_count",
          "snooze_count",
          "dispatched_at",
          "confirmed_at",
          "finished_at"
        ],
        "title": "OccurrenceOut",
        "type": "object"
      },
      "OccurrencePage": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/OccurrenceOut"
            },
            "title": "Items",
            "type": "array"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          }
        },
        "required": [
          "items",
          "next_cursor"
        ],
        "title": "OccurrencePage",
        "type": "object"
      },
      "OnboardingCopyOut": {
        "properties": {
          "contact": {
            "$ref": "#/components/schemas/ContactCopyOut"
          },
          "ring": {
            "$ref": "#/components/schemas/RingCopyOut"
          },
          "setup_test_call": {
            "$ref": "#/components/schemas/TestCallCopyOut",
            "description": "Settings \u2192 Setup."
          },
          "stale_notice": {
            "description": "Shown while `readiness.stale` (14 \u00a74).",
            "title": "Stale Notice",
            "type": "string"
          },
          "test_call": {
            "$ref": "#/components/schemas/TestCallCopyOut",
            "description": "Onboarding step 7."
          }
        },
        "required": [
          "ring",
          "contact",
          "test_call",
          "setup_test_call",
          "stale_notice"
        ],
        "title": "OnboardingCopyOut",
        "type": "object"
      },
      "OnboardingIn": {
        "additionalProperties": false,
        "properties": {
          "done": {
            "default": true,
            "title": "Done",
            "type": "boolean"
          },
          "step": {
            "examples": [
              "contact_saved"
            ],
            "title": "Step",
            "type": "string"
          }
        },
        "required": [
          "step"
        ],
        "title": "OnboardingIn",
        "type": "object"
      },
      "OnboardingOut": {
        "description": "Where the account is in onboarding (14 \u00a71), shared with the web stepper.",
        "properties": {
          "finished": {
            "description": "A schedule exists, or every step is settled.",
            "title": "Finished",
            "type": "boolean"
          },
          "next": {
            "description": "The first step neither done nor skipped, or `done`.",
            "title": "Next",
            "type": "string"
          },
          "readiness": {
            "$ref": "#/components/schemas/ReadinessOut"
          },
          "steps": {
            "items": {
              "$ref": "#/components/schemas/OnboardingStepOut"
            },
            "title": "Steps",
            "type": "array"
          },
          "texts": {
            "$ref": "#/components/schemas/OnboardingCopyOut",
            "description": "14 \u00a71-4 copy shared with the web (`accounts.onboarding_copy`)."
          }
        },
        "required": [
          "next",
          "finished",
          "steps",
          "readiness",
          "texts"
        ],
        "title": "OnboardingOut",
        "type": "object"
      },
      "OnboardingSkipIn": {
        "additionalProperties": false,
        "properties": {
          "step": {
            "description": "`contact`, `ring`, `test-call`, \u2026",
            "examples": [
              "ring"
            ],
            "title": "Step",
            "type": "string"
          }
        },
        "required": [
          "step"
        ],
        "title": "OnboardingSkipIn",
        "type": "object"
      },
      "OnboardingStepOut": {
        "description": "One step of the 14 \u00a71 stepper. Step 1 (sign in) is the session itself and step 6\n(permissions) is the app's own, so neither is listed; ``done`` is the last step.",
        "properties": {
          "done": {
            "title": "Done",
            "type": "boolean"
          },
          "number": {
            "description": "14 \u00a71's step number.",
            "examples": [
              5
            ],
            "title": "Number",
            "type": "integer"
          },
          "skip_warning": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Shown before skipping (14 \u00a71).",
            "title": "Skip Warning"
          },
          "skippable": {
            "title": "Skippable",
            "type": "boolean"
          },
          "skipped": {
            "title": "Skipped",
            "type": "boolean"
          },
          "slug": {
            "examples": [
              "ring"
            ],
            "title": "Slug",
            "type": "string"
          },
          "title": {
            "examples": [
              "Make sure it rings"
            ],
            "title": "Title",
            "type": "string"
          }
        },
        "required": [
          "slug",
          "title",
          "number",
          "skippable",
          "done",
          "skipped",
          "skip_warning"
        ],
        "title": "OnboardingStepOut",
        "type": "object"
      },
      "PauseIn": {
        "additionalProperties": false,
        "properties": {
          "until": {
            "description": "Local date in the call's zone.",
            "examples": [
              "2026-10-10"
            ],
            "title": "Until",
            "type": "string"
          }
        },
        "required": [
          "until"
        ],
        "title": "PauseIn",
        "type": "object"
      },
      "PhoneNumberCreatedOut": {
        "properties": {
          "blocked": {
            "description": "No calls or texts go to it (STOP, press 9, \u2026).",
            "title": "Blocked",
            "type": "boolean"
          },
          "blocked_reason": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Blocked Reason"
          },
          "country_code": {
            "title": "Country Code",
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "e164": {
            "title": "E164",
            "type": "string"
          },
          "e164_masked": {
            "title": "E164 Masked",
            "type": "string"
          },
          "id": {
            "format": "uuid",
            "title": "Id",
            "type": "string"
          },
          "is_primary": {
            "title": "Is Primary",
            "type": "boolean"
          },
          "label": {
            "title": "Label",
            "type": "string"
          },
          "last_confirmed_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Confirmed At"
          },
          "last_test_call_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Test Call At"
          },
          "type": {
            "title": "Type",
            "type": "string"
          },
          "verification": {
            "$ref": "#/components/schemas/VerificationOut"
          },
          "verification_expires_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Verification Expires At"
          },
          "verified": {
            "description": "Verified and not expired now.",
            "title": "Verified",
            "type": "boolean"
          },
          "verified_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Verified At"
          }
        },
        "required": [
          "id",
          "e164",
          "e164_masked",
          "label",
          "country_code",
          "type",
          "is_primary",
          "verified",
          "verified_at",
          "verification_expires_at",
          "blocked",
          "blocked_reason",
          "last_test_call_at",
          "last_confirmed_at",
          "created_at",
          "verification"
        ],
        "title": "PhoneNumberCreatedOut",
        "type": "object"
      },
      "PhoneNumberIn": {
        "additionalProperties": false,
        "properties": {
          "e164": {
            "examples": [
              "+14155551212"
            ],
            "title": "E164",
            "type": "string"
          },
          "label": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "examples": [
              "Mobile"
            ],
            "title": "Label"
          }
        },
        "required": [
          "e164"
        ],
        "title": "PhoneNumberIn",
        "type": "object"
      },
      "PhoneNumberOut": {
        "properties": {
          "blocked": {
            "description": "No calls or texts go to it (STOP, press 9, \u2026).",
            "title": "Blocked",
            "type": "boolean"
          },
          "blocked_reason": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Blocked Reason"
          },
          "country_code": {
            "title": "Country Code",
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "e164": {
            "title": "E164",
            "type": "string"
          },
          "e164_masked": {
            "title": "E164 Masked",
            "type": "string"
          },
          "id": {
            "format": "uuid",
            "title": "Id",
            "type": "string"
          },
          "is_primary": {
            "title": "Is Primary",
            "type": "boolean"
          },
          "label": {
            "title": "Label",
            "type": "string"
          },
          "last_confirmed_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Confirmed At"
          },
          "last_test_call_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Test Call At"
          },
          "type": {
            "title": "Type",
            "type": "string"
          },
          "verification_expires_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Verification Expires At"
          },
          "verified": {
            "description": "Verified and not expired now.",
            "title": "Verified",
            "type": "boolean"
          },
          "verified_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Verified At"
          }
        },
        "required": [
          "id",
          "e164",
          "e164_masked",
          "label",
          "country_code",
          "type",
          "is_primary",
          "verified",
          "verified_at",
          "verification_expires_at",
          "blocked",
          "blocked_reason",
          "last_test_call_at",
          "last_confirmed_at",
          "created_at"
        ],
        "title": "PhoneNumberOut",
        "type": "object"
      },
      "PhoneNumberPage": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/PhoneNumberOut"
            },
            "title": "Items",
            "type": "array"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          }
        },
        "required": [
          "items",
          "next_cursor"
        ],
        "title": "PhoneNumberPage",
        "type": "object"
      },
      "PhoneNumberPatchIn": {
        "additionalProperties": false,
        "properties": {
          "is_primary": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Primary"
          },
          "label": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Label"
          }
        },
        "title": "PhoneNumberPatchIn",
        "type": "object"
      },
      "PhoneRefOut": {
        "properties": {
          "e164_masked": {
            "examples": [
              "+1 415 \u2022\u2022\u2022 1212"
            ],
            "title": "E164 Masked",
            "type": "string"
          },
          "id": {
            "format": "uuid",
            "title": "Id",
            "type": "string"
          },
          "label": {
            "title": "Label",
            "type": "string"
          }
        },
        "required": [
          "id",
          "e164_masked",
          "label"
        ],
        "title": "PhoneRefOut",
        "type": "object"
      },
      "PlanOut": {
        "properties": {
          "code": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "examples": [
              "trial"
            ],
            "title": "Code"
          },
          "entitled": {
            "description": "A wake-up call to a Tier A number would be placed now (`can_place_call`: subscription calls, free trial or pack credits). False means the account needs a plan.",
            "title": "Entitled",
            "type": "boolean"
          },
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "source": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Where the live subscription is billed: `stripe` (the web), `apple`, `google` or `manual`; null with no subscription (the free trial, no plan). The mobile app offers its paywall only when `entitled` is false and no subscription is billed elsewhere (10 \u00a74).",
            "examples": [
              "stripe"
            ],
            "title": "Source"
          },
          "status": {
            "examples": [
              "trialing"
            ],
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "code",
          "name",
          "status",
          "source",
          "entitled"
        ],
        "title": "PlanOut",
        "type": "object"
      },
      "Problem": {
        "description": "RFC 9457 problem details (07 \u00a71, \u00a73). `code` is the stable machine code; `detail` is a human sentence; `field` names the input at fault when known; `errors` lists every input error of a `validation_error`.",
        "properties": {
          "code": {
            "enum": [
              "already_subscribed",
              "api_key_revoked",
              "calls_revoked",
              "confirmation_required",
              "country_not_supported",
              "daily_cap_reached",
              "date_too_far",
              "days_of_week_empty",
              "demo_not_available",
              "demo_rate_limited",
              "idempotency_key_reused",
              "in_minutes_out_of_range",
              "insufficient_scope",
              "internal_error",
              "invalid_phone_number",
              "invalid_retry_policy",
              "invalid_time",
              "invalid_timezone",
              "local_date_required",
              "message_disallowed_content",
              "method_not_allowed",
              "no_entitlement",
              "not_found",
              "not_recurring",
              "number_blocked",
              "number_in_use",
              "occurrence_in_progress",
              "occurrence_terminal",
              "phone_number_not_owned",
              "phone_number_unverified",
              "provider_unavailable",
              "rate_limited",
              "session_expired",
              "time_in_past",
              "timezone_not_allowed",
              "unauthenticated",
              "validation_error",
              "verification_code_invalid",
              "verification_locked",
              "web_checkout_disabled"
            ],
            "type": "string"
          },
          "detail": {
            "type": "string"
          },
          "errors": {
            "items": {
              "properties": {
                "loc": {
                  "items": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "integer"
                      }
                    ]
                  },
                  "type": "array"
                },
                "msg": {
                  "type": "string"
                },
                "type": {
                  "type": "string"
                }
              },
              "required": [
                "loc",
                "msg",
                "type"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "field": {
            "type": "string"
          },
          "instance": {
            "type": "string"
          },
          "status": {
            "type": "integer"
          },
          "title": {
            "type": "string"
          },
          "type": {
            "format": "uri",
            "type": "string"
          }
        },
        "required": [
          "type",
          "title",
          "status",
          "detail",
          "code"
        ],
        "title": "Problem",
        "type": "object"
      },
      "ProblemSummary": {
        "properties": {
          "code": {
            "title": "Code",
            "type": "string"
          },
          "detail": {
            "title": "Detail",
            "type": "string"
          }
        },
        "required": [
          "code",
          "detail"
        ],
        "title": "ProblemSummary",
        "type": "object"
      },
      "ReadinessOut": {
        "description": "\"Will it ring?\" (06 \u00a76, 14 \u00a74), read from the database.",
        "properties": {
          "contact_saved": {
            "title": "Contact Saved",
            "type": "boolean"
          },
          "dnd_acknowledged": {
            "title": "Dnd Acknowledged",
            "type": "boolean"
          },
          "last_success_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The newest confirmed call (test or real) to any of the numbers, UTC.",
            "title": "Last Success At"
          },
          "last_test_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "When the newest placed standalone test call was asked for (its `created_at`, UTC); null when there is none.",
            "title": "Last Test At"
          },
          "last_test_status": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "examples": [
              "confirmed"
            ],
            "title": "Last Test Status"
          },
          "phone_expired": {
            "description": "Numbers were verified, but none is any more.",
            "title": "Phone Expired",
            "type": "boolean"
          },
          "phone_verified": {
            "description": "A verified, unexpired number exists.",
            "title": "Phone Verified",
            "type": "boolean"
          },
          "stale": {
            "description": "14 \u00a74 amber: the last good call is over 60 days old.",
            "title": "Stale",
            "type": "boolean"
          },
          "test_call_done": {
            "title": "Test Call Done",
            "type": "boolean"
          }
        },
        "required": [
          "phone_verified",
          "phone_expired",
          "contact_saved",
          "dnd_acknowledged",
          "test_call_done",
          "last_test_at",
          "last_test_status",
          "last_success_at",
          "stale"
        ],
        "title": "ReadinessOut",
        "type": "object"
      },
      "ResumeCallsIn": {
        "additionalProperties": false,
        "properties": {
          "consent": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Consent"
          }
        },
        "title": "ResumeCallsIn",
        "type": "object"
      },
      "RetryPolicyOut": {
        "properties": {
          "max_snoozes": {
            "title": "Max Snoozes",
            "type": "integer"
          },
          "offsets_minutes": {
            "items": {
              "type": "integer"
            },
            "title": "Offsets Minutes",
            "type": "array"
          },
          "ring_timeout_seconds": {
            "title": "Ring Timeout Seconds",
            "type": "integer"
          },
          "snooze_minutes": {
            "title": "Snooze Minutes",
            "type": "integer"
          }
        },
        "required": [
          "offsets_minutes",
          "snooze_minutes",
          "max_snoozes",
          "ring_timeout_seconds"
        ],
        "title": "RetryPolicyOut",
        "type": "object"
      },
      "RevenueCatSyncIn": {
        "properties": {
          "app_user_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The app's RevenueCat app user id: the account's own id (`id` of `GET /me`). The server always asks RevenueCat for the signed-in account and refuses (400) any other value.",
            "title": "App User Id"
          }
        },
        "title": "RevenueCatSyncIn",
        "type": "object"
      },
      "RevenueCatSyncOut": {
        "properties": {
          "changed": {
            "description": "The sync changed the account's plan or subscription.",
            "title": "Changed",
            "type": "boolean"
          },
          "plan": {
            "$ref": "#/components/schemas/PlanOut",
            "description": "The account's plan after the sync, as in `GET /me`."
          }
        },
        "required": [
          "plan",
          "changed"
        ],
        "title": "RevenueCatSyncOut",
        "type": "object"
      },
      "RingCopyOut": {
        "description": "14 \u00a72. Bold text is Markdown `**...**`.",
        "properties": {
          "button": {
            "title": "Button",
            "type": "string"
          },
          "steps_android": {
            "items": {
              "type": "string"
            },
            "title": "Steps Android",
            "type": "array"
          },
          "steps_ios": {
            "items": {
              "type": "string"
            },
            "title": "Steps Ios",
            "type": "array"
          },
          "title": {
            "title": "Title",
            "type": "string"
          },
          "why": {
            "title": "Why",
            "type": "string"
          },
          "why_title": {
            "title": "Why Title",
            "type": "string"
          }
        },
        "required": [
          "title",
          "steps_ios",
          "steps_android",
          "button",
          "why_title",
          "why"
        ],
        "title": "RingCopyOut",
        "type": "object"
      },
      "ScheduleIn": {
        "additionalProperties": false,
        "description": "07 \u00a73: one-off at a wall time (``kind=once``, ``local_date``, ``local_time``), one-off in\nN minutes (``kind=once``, ``in_minutes``) or recurring (``kind=recurring``, ``local_time``,\n``days_of_week``). ``timezone`` is always required; ``phone_number_id`` defaults to the\nprimary number.",
        "properties": {
          "backup_alarm": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Backup Alarm"
          },
          "created_in_timezone": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created In Timezone"
          },
          "days_of_week": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "examples": [
              [
                "mon",
                "tue",
                "wed"
              ]
            ],
            "title": "Days Of Week"
          },
          "enabled": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Enabled"
          },
          "end_date": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Recurring: last local date (YYYY-MM-DD). `null` or an empty string clears it (no end date); on an Off or Done call that also turns it back on (D-060).",
            "title": "End Date"
          },
          "greeting_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Greeting Name"
          },
          "in_minutes": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "In Minutes"
          },
          "kind": {
            "examples": [
              "once"
            ],
            "title": "Kind",
            "type": "string"
          },
          "label": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Label"
          },
          "local_date": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "examples": [
              "2026-10-06"
            ],
            "title": "Local Date"
          },
          "local_time": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "examples": [
              "06:30"
            ],
            "title": "Local Time"
          },
          "message": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Message"
          },
          "paused_until": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Paused Until"
          },
          "phone_number_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Phone Number Id"
          },
          "retry_policy": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Retry Policy"
          },
          "skip_dates": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Skip Dates"
          },
          "sms_fallback": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Sms Fallback"
          },
          "start_date": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Start Date"
          },
          "timezone": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "examples": [
              "Asia/Tokyo"
            ],
            "title": "Timezone"
          }
        },
        "required": [
          "kind"
        ],
        "title": "ScheduleIn",
        "type": "object"
      },
      "ScheduleOut": {
        "properties": {
          "backup_alarm": {
            "title": "Backup Alarm",
            "type": "boolean"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "created_in_timezone": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created In Timezone"
          },
          "days_of_week": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Days Of Week"
          },
          "enabled": {
            "title": "Enabled",
            "type": "boolean"
          },
          "end_date": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "End Date"
          },
          "greeting_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Greeting Name"
          },
          "id": {
            "format": "uuid",
            "title": "Id",
            "type": "string"
          },
          "kind": {
            "title": "Kind",
            "type": "string"
          },
          "label": {
            "title": "Label",
            "type": "string"
          },
          "local_date": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Local Date"
          },
          "local_time": {
            "examples": [
              "06:30"
            ],
            "title": "Local Time",
            "type": "string"
          },
          "message": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Message"
          },
          "next_occurrence": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/NextOccurrenceOut"
              },
              {
                "type": "null"
              }
            ]
          },
          "paused_until": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Paused Until"
          },
          "phone_number": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PhoneRefOut"
              },
              {
                "type": "null"
              }
            ]
          },
          "retry_policy": {
            "$ref": "#/components/schemas/RetryPolicyOut",
            "description": "The policy in force: the call's own, the account's, or the default."
          },
          "skip_dates": {
            "items": {
              "type": "string"
            },
            "title": "Skip Dates",
            "type": "array"
          },
          "sms_fallback": {
            "title": "Sms Fallback",
            "type": "boolean"
          },
          "source": {
            "title": "Source",
            "type": "string"
          },
          "start_date": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Start Date"
          },
          "status": {
            "title": "Status",
            "type": "string"
          },
          "timezone": {
            "title": "Timezone",
            "type": "string"
          },
          "timezone_display": {
            "examples": [
              "Tokyo, Japan"
            ],
            "title": "Timezone Display",
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          }
        },
        "required": [
          "id",
          "kind",
          "label",
          "status",
          "enabled",
          "local_time",
          "timezone",
          "timezone_display",
          "local_date",
          "days_of_week",
          "start_date",
          "end_date",
          "paused_until",
          "skip_dates",
          "phone_number",
          "message",
          "greeting_name",
          "retry_policy",
          "backup_alarm",
          "sms_fallback",
          "created_in_timezone",
          "source",
          "created_at",
          "updated_at",
          "next_occurrence"
        ],
        "title": "ScheduleOut",
        "type": "object"
      },
      "SchedulePage": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/ScheduleOut"
            },
            "title": "Items",
            "type": "array"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          }
        },
        "required": [
          "items",
          "next_cursor"
        ],
        "title": "SchedulePage",
        "type": "object"
      },
      "SchedulePatchIn": {
        "additionalProperties": false,
        "description": "Any mutable field (07 \u00a72.3 PATCH); only the fields sent change.",
        "properties": {
          "backup_alarm": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Backup Alarm"
          },
          "days_of_week": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Days Of Week"
          },
          "enabled": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Enabled"
          },
          "end_date": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "End Date"
          },
          "greeting_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Greeting Name"
          },
          "kind": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Kind"
          },
          "label": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Label"
          },
          "local_date": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Local Date"
          },
          "local_time": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Local Time"
          },
          "message": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Message"
          },
          "paused_until": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Paused Until"
          },
          "phone_number_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Phone Number Id"
          },
          "retry_policy": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Retry Policy"
          },
          "skip_dates": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Skip Dates"
          },
          "sms_fallback": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Sms Fallback"
          },
          "start_date": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Start Date"
          },
          "timezone": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Timezone"
          }
        },
        "title": "SchedulePatchIn",
        "type": "object"
      },
      "SchedulePreviewOut": {
        "description": "The new/edit form's live preview (11 \u00a72; M7-T02): what saving this input would book,\nwith nothing saved. ``sentence``, ``repeat`` and ``notice`` are the web form's preview\nline word for word, in the account's 12/24-hour preference.",
        "properties": {
          "first": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/UpcomingOut"
              },
              {
                "type": "null"
              }
            ],
            "description": "The call it would ring first; null when it has none (disabled, no date left). `occurrence_id` is set only when an edit keeps the stored next call."
          },
          "notice": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "04 \u00a75 sentence when it falls in a clock change.",
            "title": "Notice"
          },
          "phone_number": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PhoneRefOut"
              },
              {
                "type": "null"
              }
            ],
            "description": "The number that call rings."
          },
          "repeat": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Recurring calls: \"Then <days> at <time> <zone> time.\"",
            "title": "Repeat"
          },
          "sentence": {
            "description": "\"We'll call <number> at <time> <zone> time on <day> (<time> <weekday> in <home zone>). That's in <countdown>.\" The home-zone part only when its clock differs; `This wake-up call has no upcoming date.` when `first` is null.",
            "title": "Sentence",
            "type": "string"
          }
        },
        "required": [
          "first",
          "phone_number",
          "sentence",
          "repeat",
          "notice"
        ],
        "title": "SchedulePreviewOut",
        "type": "object"
      },
      "SuggestionOut": {
        "properties": {
          "local_date": {
            "title": "Local Date",
            "type": "string"
          },
          "local_time": {
            "title": "Local Time",
            "type": "string"
          },
          "scheduled_at": {
            "title": "Scheduled At",
            "type": "string"
          },
          "timezone": {
            "title": "Timezone",
            "type": "string"
          },
          "utc_offset": {
            "title": "Utc Offset",
            "type": "string"
          },
          "wall_time_kind": {
            "title": "Wall Time Kind",
            "type": "string"
          }
        },
        "required": [
          "local_time",
          "timezone",
          "local_date",
          "scheduled_at",
          "utc_offset",
          "wall_time_kind"
        ],
        "title": "SuggestionOut",
        "type": "object"
      },
      "TestCallCopyOut": {
        "description": "The paragraph above \"Call me now\" and the 14 \u00a73 hint for each outcome that needs one.",
        "properties": {
          "answered_unconfirmed": {
            "title": "Answered Unconfirmed",
            "type": "string"
          },
          "intro": {
            "title": "Intro",
            "type": "string"
          },
          "no_answer": {
            "title": "No Answer",
            "type": "string"
          },
          "voicemail": {
            "title": "Voicemail",
            "type": "string"
          }
        },
        "required": [
          "intro",
          "no_answer",
          "voicemail",
          "answered_unconfirmed"
        ],
        "title": "TestCallCopyOut",
        "type": "object"
      },
      "TimeContextOut": {
        "properties": {
          "now_utc": {
            "title": "Now Utc",
            "type": "string"
          },
          "tzdata_version": {
            "title": "Tzdata Version",
            "type": "string"
          },
          "zones": {
            "items": {
              "$ref": "#/components/schemas/ZoneNowOut"
            },
            "title": "Zones",
            "type": "array"
          }
        },
        "required": [
          "now_utc",
          "tzdata_version",
          "zones"
        ],
        "title": "TimeContextOut",
        "type": "object"
      },
      "TimezoneContextOut": {
        "properties": {
          "device_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Device Id"
          },
          "device_timezone": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Device Timezone"
          },
          "device_timezone_reported_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Device Timezone Reported At"
          },
          "home_timezone": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Home Timezone"
          },
          "mismatches": {
            "items": {
              "$ref": "#/components/schemas/MismatchOut"
            },
            "title": "Mismatches",
            "type": "array"
          }
        },
        "required": [
          "home_timezone",
          "device_timezone",
          "device_timezone_reported_at",
          "mismatches",
          "device_id"
        ],
        "title": "TimezoneContextOut",
        "type": "object"
      },
      "TransitionOut": {
        "properties": {
          "at": {
            "title": "At",
            "type": "string"
          },
          "local_after": {
            "title": "Local After",
            "type": "string"
          },
          "local_before": {
            "title": "Local Before",
            "type": "string"
          },
          "offset_after": {
            "title": "Offset After",
            "type": "string"
          }
        },
        "required": [
          "at",
          "local_before",
          "local_after",
          "offset_after"
        ],
        "title": "TransitionOut",
        "type": "object"
      },
      "TravelMoveIn": {
        "additionalProperties": false,
        "description": "04 \u00a78 \"Move\": the mismatch's ``suggested.timezone`` and ``suggested.local_date`` as\n``GET /me/timezone-context`` showed them.",
        "properties": {
          "local_date": {
            "examples": [
              "2026-10-07"
            ],
            "title": "Local Date",
            "type": "string"
          },
          "timezone": {
            "examples": [
              "Asia/Tokyo"
            ],
            "title": "Timezone",
            "type": "string"
          }
        },
        "required": [
          "timezone",
          "local_date"
        ],
        "title": "TravelMoveIn",
        "type": "object"
      },
      "TrialOut": {
        "description": "10 \u00a75: while the free trial runs.",
        "properties": {
          "calls_left": {
            "title": "Calls Left",
            "type": "integer"
          },
          "ends_at": {
            "format": "date-time",
            "title": "Ends At",
            "type": "string"
          }
        },
        "required": [
          "calls_left",
          "ends_at"
        ],
        "title": "TrialOut",
        "type": "object"
      },
      "UpcomingOut": {
        "description": "One upcoming firing (07 \u00a72.3 ``upcoming``): the stored next occurrence first\n(``occurrence_id`` set), then computed ones (``occurrence_id`` null).",
        "properties": {
          "in_home_timezone": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/HomeTimeOut"
              },
              {
                "type": "null"
              }
            ],
            "description": "The instant on the home clock. Omitted when the home zone is the call's own zone (or no home zone is set)."
          },
          "in_seconds": {
            "description": "Seconds from now (negative once past).",
            "title": "In Seconds",
            "type": "integer"
          },
          "local": {
            "$ref": "#/components/schemas/LocalTimeOut"
          },
          "notice": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "04 \u00a75 sentence when the wall time falls in a clock change.",
            "title": "Notice"
          },
          "occurrence_id": {
            "anyOf": [
              {
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Occurrence Id"
          },
          "scheduled_at": {
            "description": "UTC instant the call rings (`Z`).",
            "format": "date-time",
            "title": "Scheduled At",
            "type": "string"
          }
        },
        "required": [
          "local",
          "scheduled_at",
          "in_seconds",
          "notice",
          "occurrence_id"
        ],
        "title": "UpcomingOut",
        "type": "object"
      },
      "UpcomingPage": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/UpcomingOut"
            },
            "title": "Items",
            "type": "array"
          }
        },
        "required": [
          "items"
        ],
        "title": "UpcomingPage",
        "type": "object"
      },
      "UsageOut": {
        "properties": {
          "calls_included": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Calls Included"
          },
          "calls_used": {
            "title": "Calls Used",
            "type": "integer"
          },
          "credits_remaining": {
            "title": "Credits Remaining",
            "type": "integer"
          },
          "near_limit": {
            "description": "10 \u00a75: 80% or more of the period's calls are used",
            "title": "Near Limit",
            "type": "boolean"
          },
          "period_end": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Period End"
          },
          "period_start": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Period Start"
          },
          "plan": {
            "$ref": "#/components/schemas/PlanOut"
          },
          "trial": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/TrialOut"
              },
              {
                "type": "null"
              }
            ],
            "description": "10 \u00a75: calls left and the end of the free trial while it runs; null otherwise"
          },
          "trial_calls_included": {
            "title": "Trial Calls Included",
            "type": "integer"
          },
          "trial_calls_used": {
            "title": "Trial Calls Used",
            "type": "integer"
          },
          "trial_ends_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Trial Ends At"
          },
          "trial_started_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Trial Started At"
          }
        },
        "required": [
          "plan",
          "period_start",
          "period_end",
          "calls_used",
          "calls_included",
          "credits_remaining",
          "trial_started_at",
          "trial_ends_at",
          "trial_calls_used",
          "trial_calls_included",
          "trial",
          "near_limit"
        ],
        "title": "UsageOut",
        "type": "object"
      },
      "VerificationOut": {
        "description": "Whether a code went out. ``error`` says why not (the 07 \u00a73 code and a sentence).",
        "properties": {
          "channel": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Channel"
          },
          "error": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ProblemSummary"
              },
              {
                "type": "null"
              }
            ]
          },
          "sent": {
            "title": "Sent",
            "type": "boolean"
          }
        },
        "required": [
          "sent",
          "channel",
          "error"
        ],
        "title": "VerificationOut",
        "type": "object"
      },
      "VerifyCheckIn": {
        "additionalProperties": false,
        "properties": {
          "code": {
            "examples": [
              "123456"
            ],
            "title": "Code",
            "type": "string"
          }
        },
        "required": [
          "code"
        ],
        "title": "VerifyCheckIn",
        "type": "object"
      },
      "VerifyStartIn": {
        "additionalProperties": false,
        "properties": {
          "channel": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "`sms` or `call`.",
            "examples": [
              "sms"
            ],
            "title": "Channel"
          }
        },
        "title": "VerifyStartIn",
        "type": "object"
      },
      "WebCheckoutIn": {
        "properties": {
          "plan": {
            "description": "`traveler_monthly` or `traveler_yearly`",
            "examples": [
              "traveler_monthly"
            ],
            "title": "Plan",
            "type": "string"
          }
        },
        "required": [
          "plan"
        ],
        "title": "WebCheckoutIn",
        "type": "object"
      },
      "WebCheckoutOut": {
        "properties": {
          "expires_at": {
            "description": "UTC; 10 minutes after it was made",
            "format": "date-time",
            "title": "Expires At",
            "type": "string"
          },
          "url": {
            "description": "Open in Safari (not an in-app web view). One use: it signs that browser into this account and continues to Stripe Checkout. A secret: never log or share it.",
            "examples": [
              "https://<host>/app/subscribe/<token>"
            ],
            "title": "Url",
            "type": "string"
          }
        },
        "required": [
          "url",
          "expires_at"
        ],
        "title": "WebCheckoutOut",
        "type": "object"
      },
      "WebCheckoutPlanOut": {
        "description": "A plan the web checkout sells (D-057), for the app's \"Subscribe on the web\" button.",
        "properties": {
          "code": {
            "examples": [
              "traveler_monthly"
            ],
            "title": "Code",
            "type": "string"
          },
          "currency": {
            "examples": [
              "USD"
            ],
            "title": "Currency",
            "type": "string"
          },
          "display_price": {
            "examples": [
              "$6/month"
            ],
            "title": "Display Price",
            "type": "string"
          },
          "interval": {
            "description": "`month` or `year`",
            "title": "Interval",
            "type": "string"
          },
          "name": {
            "examples": [
              "Traveler"
            ],
            "title": "Name",
            "type": "string"
          },
          "price_cents": {
            "description": "Price in the currency's minor unit",
            "title": "Price Cents",
            "type": "integer"
          }
        },
        "required": [
          "code",
          "name",
          "price_cents",
          "currency",
          "interval",
          "display_price"
        ],
        "title": "WebCheckoutPlanOut",
        "type": "object"
      },
      "ZoneMatchOut": {
        "properties": {
          "abbreviation": {
            "title": "Abbreviation",
            "type": "string"
          },
          "country_code": {
            "title": "Country Code",
            "type": "string"
          },
          "kind": {
            "title": "Kind",
            "type": "string"
          },
          "label": {
            "examples": [
              "Tokyo, Japan"
            ],
            "title": "Label",
            "type": "string"
          },
          "timezone": {
            "title": "Timezone",
            "type": "string"
          },
          "utc_offset": {
            "examples": [
              "+09:00"
            ],
            "title": "Utc Offset",
            "type": "string"
          }
        },
        "required": [
          "timezone",
          "label",
          "kind",
          "country_code",
          "utc_offset",
          "abbreviation"
        ],
        "title": "ZoneMatchOut",
        "type": "object"
      },
      "ZoneMatchPage": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/ZoneMatchOut"
            },
            "title": "Items",
            "type": "array"
          }
        },
        "required": [
          "items"
        ],
        "title": "ZoneMatchPage",
        "type": "object"
      },
      "ZoneNowOut": {
        "properties": {
          "abbreviation": {
            "title": "Abbreviation",
            "type": "string"
          },
          "display_name": {
            "title": "Display Name",
            "type": "string"
          },
          "is_dst": {
            "title": "Is Dst",
            "type": "boolean"
          },
          "next_transition": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/TransitionOut"
              },
              {
                "type": "null"
              }
            ]
          },
          "now_local": {
            "title": "Now Local",
            "type": "string"
          },
          "timezone": {
            "title": "Timezone",
            "type": "string"
          },
          "utc_offset": {
            "title": "Utc Offset",
            "type": "string"
          }
        },
        "required": [
          "timezone",
          "now_local",
          "utc_offset",
          "abbreviation",
          "is_dst",
          "next_transition",
          "display_name"
        ],
        "title": "ZoneNowOut",
        "type": "object"
      }
    },
    "securitySchemes": {
      "BearerAuth": {
        "scheme": "bearer",
        "type": "http"
      },
      "SessionCookieAuth": {
        "in": "cookie",
        "name": "sessionid",
        "type": "apiKey"
      },
      "SessionTokenHeader": {
        "in": "header",
        "name": "X-Session-Token",
        "type": "apiKey"
      }
    }
  },
  "info": {
    "description": "Wake-up calls pinned to time zones. Authenticate with `Authorization: Bearer <API key or app session token>`. Errors are RFC 9457 `application/problem+json`; `POST` accepts `Idempotency-Key`; responses carry `RateLimit-*` headers.",
    "title": "Call Me Awake API",
    "version": "1.0.0"
  },
  "openapi": "3.1.0",
  "paths": {
    "/api/v1/api-keys": {
      "get": {
        "operationId": "apps_api_keys_list_keys",
        "parameters": [
          {
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 50,
              "title": "Limit",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiKeyPage"
                }
              }
            },
            "description": "OK"
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Error (RFC 9457 problem details)"
          }
        },
        "security": [
          {
            "BearerAuth": []
          },
          {
            "SessionTokenHeader": []
          },
          {
            "SessionCookieAuth": []
          }
        ],
        "summary": "The account's API keys, newest first",
        "tags": [
          "api keys"
        ]
      },
      "post": {
        "description": "`scopes`: `read` and/or `write` (default both), and optionally `export`, which lets the key download the full account export (`GET /me/export`); `export` is never a default and needs `read`. The full `key` is shown once, and is never stored for an `Idempotency-Key` replay.",
        "operationId": "apps_api_keys_create_key",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiKeyIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiKeyCreatedOut"
                }
              }
            },
            "description": "Created"
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Error (RFC 9457 problem details)"
          }
        },
        "security": [
          {
            "BearerAuth": []
          },
          {
            "SessionTokenHeader": []
          },
          {
            "SessionCookieAuth": []
          }
        ],
        "summary": "Create an API key",
        "tags": [
          "api keys"
        ]
      }
    },
    "/api/v1/api-keys/{key_id}": {
      "delete": {
        "operationId": "apps_api_keys_revoke_key",
        "parameters": [
          {
            "in": "path",
            "name": "key_id",
            "required": true,
            "schema": {
              "title": "Key Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Error (RFC 9457 problem details)"
          }
        },
        "security": [
          {
            "BearerAuth": []
          },
          {
            "SessionTokenHeader": []
          },
          {
            "SessionCookieAuth": []
          }
        ],
        "summary": "Revoke an API key",
        "tags": [
          "api keys"
        ]
      }
    },
    "/api/v1/billing/checkout": {
      "post": {
        "description": "10 \u00a73. Returns the hosted Checkout URL; it comes back to Settings \u2192 Billing. The subscription is recorded when Stripe's webhook arrives. 409 `already_subscribed` when the account has a plan.",
        "operationId": "apps_api_billing_checkout",
        "parameters": [
          {
            "description": "Makes a retry safe for 24 h: the same key with the same request replays the first successful response; with a different request it is 409 `idempotency_key_reused`.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "maxLength": 200,
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CheckoutIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BillingRedirectOut"
                }
              }
            },
            "description": "OK"
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Error (RFC 9457 problem details)"
          }
        },
        "security": [
          {
            "BearerAuth": []
          },
          {
            "SessionTokenHeader": []
          },
          {
            "SessionCookieAuth": []
          }
        ],
        "summary": "Start a Stripe Checkout for a plan",
        "tags": [
          "billing"
        ]
      }
    },
    "/api/v1/billing/plans": {
      "get": {
        "description": "10 \u00a71. Active plans, cheapest first. Prices are founder-adjustable data.",
        "operationId": "apps_api_billing_list_plans",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BillingPlanPage"
                }
              }
            },
            "description": "OK"
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Error (RFC 9457 problem details)"
          }
        },
        "summary": "The plans on offer",
        "tags": [
          "billing"
        ]
      }
    },
    "/api/v1/billing/portal": {
      "post": {
        "description": "10 \u00a73. Change plan, card or cancel. The URL signs its holder into the account's billing and expires within minutes.",
        "operationId": "apps_api_billing_portal",
        "parameters": [
          {
            "description": "Makes a retry safe for 24 h: the same key with the same request replays the first successful response; with a different request it is 409 `idempotency_key_reused`.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "maxLength": 200,
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BillingRedirectOut"
                }
              }
            },
            "description": "OK"
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Error (RFC 9457 problem details)"
          }
        },
        "security": [
          {
            "BearerAuth": []
          },
          {
            "SessionTokenHeader": []
          },
          {
            "SessionCookieAuth": []
          }
        ],
        "summary": "Open the Stripe Customer Portal",
        "tags": [
          "billing"
        ]
      }
    },
    "/api/v1/billing/revenuecat/sync": {
      "post": {
        "description": "10 \u00a74. The mobile app calls it on open and after a purchase or restore. The server asks RevenueCat for the signed-in account's subscriptions (never for an id the client names), applies them, and answers with the plan the account now has. 503 `provider_unavailable` while in-app purchase is not set up or RevenueCat is down.",
        "operationId": "apps_api_billing_revenuecat_sync",
        "parameters": [
          {
            "description": "Makes a retry safe for 24 h: the same key with the same request replays the first successful response; with a different request it is 409 `idempotency_key_reused`.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "maxLength": 200,
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RevenueCatSyncIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RevenueCatSyncOut"
                }
              }
            },
            "description": "OK"
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Error (RFC 9457 problem details)"
          }
        },
        "security": [
          {
            "BearerAuth": []
          },
          {
            "SessionTokenHeader": []
          },
          {
            "SessionCookieAuth": []
          }
        ],
        "summary": "Pull the account's in-app purchases from RevenueCat",
        "tags": [
          "billing"
        ]
      }
    },
    "/api/v1/billing/web-checkout": {
      "post": {
        "description": "10 \u00a74, D-057. The app's session token only: an API key or the web session gets 403 `insufficient_scope`. Returns a link to `/app/subscribe/<token>` on this host, valid for 10 minutes and once; opening it in Safari asks \"Continue as <email>?\", then signs that browser into this account and continues to Stripe Checkout for the plan, which returns to `/app/subscribe/done`. 403 `web_checkout_disabled` when the web checkout is not offered, staff accounts included (`GET /me` `billing.web_checkout_link` is false); 409 `already_subscribed` when the account has a plan. 5 a minute per account.",
        "operationId": "apps_api_billing_web_checkout_link",
        "parameters": [
          {
            "description": "Makes a retry safe for 24 h: the same key with the same request replays the first successful response; with a different request it is 409 `idempotency_key_reused`.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "maxLength": 200,
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WebCheckoutIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebCheckoutOut"
                }
              }
            },
            "description": "OK"
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Error (RFC 9457 problem details)"
          }
        },
        "security": [
          {
            "BearerAuth": []
          },
          {
            "SessionTokenHeader": []
          },
          {
            "SessionCookieAuth": []
          }
        ],
        "summary": "A one-time link to subscribe on the web (US storefront)",
        "tags": [
          "billing"
        ]
      }
    },
    "/api/v1/calls": {
      "get": {
        "description": "Every attempt of every wake-up call, and standalone test calls.",
        "operationId": "apps_api_occurrences_list_calls",
        "parameters": [
          {
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 50,
              "title": "Limit",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttemptPage"
                }
              }
            },
            "description": "OK"
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Error (RFC 9457 problem details)"
          }
        },
        "security": [
          {
            "BearerAuth": []
          },
          {
            "SessionTokenHeader": []
          },
          {
            "SessionCookieAuth": []
          }
        ],
        "summary": "Call history, newest first",
        "tags": [
          "occurrences and calls"
        ]
      }
    },
    "/api/v1/calls/{call_id}": {
      "get": {
        "operationId": "apps_api_occurrences_get_call",
        "parameters": [
          {
            "in": "path",
            "name": "call_id",
            "required": true,
            "schema": {
              "title": "Call Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttemptOut"
                }
              }
            },
            "description": "OK"
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Error (RFC 9457 problem details)"
          }
        },
        "security": [
          {
            "BearerAuth": []
          },
          {
            "SessionTokenHeader": []
          },
          {
            "SessionCookieAuth": []
          }
        ],
        "summary": "One call attempt, live",
        "tags": [
          "occurrences and calls"
        ]
      }
    },
    "/api/v1/contact-card.vcf": {
      "get": {
        "description": "06 \u00a75: a vCard with every regional number we call from, so the call shows a name. Public and cacheable (`ETag`, `Cache-Control`).",
        "operationId": "apps_phones_views_contact_card",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "text/vcard": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "description": "OK"
          },
          "304": {
            "description": "Not modified"
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Error (RFC 9457 problem details)"
          }
        },
        "security": [],
        "summary": "Our numbers as a contact card",
        "tags": [
          "phone numbers"
        ]
      }
    },
    "/api/v1/countries": {
      "get": {
        "description": "The destination countries a number can be added in, by name: calling code (`+81`), name and tier. Public and cacheable (`ETag`, `Cache-Control`). A number outside this list is refused with 400 `country_not_supported`.",
        "operationId": "apps_api_countries_list_countries",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CountryPage"
                }
              }
            },
            "description": "OK"
          },
          "304": {
            "description": "Not Modified"
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Error (RFC 9457 problem details)"
          }
        },
        "summary": "Countries we call",
        "tags": [
          "phone numbers"
        ]
      }
    },
    "/api/v1/demo/call": {
      "post": {
        "description": "13 \u00a73, 07 \u00a72.9: places one free demo call now (06 \u00a73.4 script). 201 with the call; 200 with the same call when the request is repeated with the same code (any other code is 400 and shows nothing). A wrong or expired code is 400 `verification_code_invalid` (5 wrong codes end the request); one demo call per number a day (429 `demo_rate_limited`).",
        "operationId": "apps_api_demo_demo_call",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DemoCallIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DemoCallOut"
                }
              }
            },
            "description": "OK"
          },
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DemoCallOut"
                }
              }
            },
            "description": "Created"
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Error (RFC 9457 problem details)"
          }
        },
        "summary": "Check the demo code and place the demo call",
        "tags": [
          "demo"
        ]
      }
    },
    "/api/v1/demo/start": {
      "post": {
        "description": "13 \u00a73, 07 \u00a72.9: the first step of the free demo call. `consent: true` is required (the number receives a text, then one automated call made with an artificial or prerecorded voice; consent is not a condition of any purchase). Mobile and landline numbers in Tier A countries only (403 `demo_not_available`). Every start counts against 3 an hour per client IP; a number that is blocked or has had its demo today gets the same 202 as any other and no text (it can never get a code right). 2 codes a day per number, and daily caps for everyone (429 `demo_rate_limited`; `DEMO_DAILY_CAP=0` turns the demo off).",
        "operationId": "apps_api_demo_demo_start",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DemoStartIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DemoStartOut"
                }
              }
            },
            "description": "Accepted"
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Error (RFC 9457 problem details)"
          }
        },
        "summary": "Text a demo code to a number",
        "tags": [
          "demo"
        ]
      }
    },
    "/api/v1/devices": {
      "post": {
        "description": "Upsert by `installation_id` (a UUID the app generates once): 201 new, 200 known. The app's session token or the web session only; an API key gets 403 `insufficient_scope`. At most 10 a minute per account (429 `rate_limited`). An account holds up to 20 app devices: a new install past that is never refused, the device seen longest ago is removed (and its app signed out) to make room.",
        "operationId": "apps_api_devices_register_device",
        "parameters": [
          {
            "description": "Makes a retry safe for 24 h: the same key with the same request replays the first successful response; with a different request it is 409 `idempotency_key_reused`.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "maxLength": 200,
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DeviceIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeviceOut"
                }
              }
            },
            "description": "OK"
          },
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeviceOut"
                }
              }
            },
            "description": "Created"
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Error (RFC 9457 problem details)"
          }
        },
        "security": [
          {
            "BearerAuth": []
          },
          {
            "SessionTokenHeader": []
          },
          {
            "SessionCookieAuth": []
          }
        ],
        "summary": "Register this app install (or update it)",
        "tags": [
          "devices"
        ]
      }
    },
    "/api/v1/devices/{device_id}": {
      "delete": {
        "description": "Deletes the device and its push token and ends the app sessions bound to it. The app's session token or the web session only; an API key gets 403 `insufficient_scope`.",
        "operationId": "apps_api_devices_delete_device",
        "parameters": [
          {
            "in": "path",
            "name": "device_id",
            "required": true,
            "schema": {
              "title": "Device Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Error (RFC 9457 problem details)"
          }
        },
        "security": [
          {
            "BearerAuth": []
          },
          {
            "SessionTokenHeader": []
          },
          {
            "SessionCookieAuth": []
          }
        ],
        "summary": "Forget a device (on sign-out)",
        "tags": [
          "devices"
        ]
      },
      "patch": {
        "operationId": "apps_api_devices_patch_device",
        "parameters": [
          {
            "in": "path",
            "name": "device_id",
            "required": true,
            "schema": {
              "title": "Device Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DevicePatchIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeviceOut"
                }
              }
            },
            "description": "OK"
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Error (RFC 9457 problem details)"
          }
        },
        "security": [
          {
            "BearerAuth": []
          },
          {
            "SessionTokenHeader": []
          },
          {
            "SessionCookieAuth": []
          }
        ],
        "summary": "Update push token, zone, versions",
        "tags": [
          "devices"
        ]
      }
    },
    "/api/v1/devices/{device_id}/timezone": {
      "post": {
        "description": "04 \u00a78: returns the timezone context for this device. Never moves a call.",
        "operationId": "apps_api_devices_report_timezone",
        "parameters": [
          {
            "in": "path",
            "name": "device_id",
            "required": true,
            "schema": {
              "title": "Device Id",
              "type": "string"
            }
          },
          {
            "description": "Makes a retry safe for 24 h: the same key with the same request replays the first successful response; with a different request it is 409 `idempotency_key_reused`.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "maxLength": 200,
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DeviceTimezoneIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TimezoneContextOut"
                }
              }
            },
            "description": "OK"
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Error (RFC 9457 problem details)"
          }
        },
        "security": [
          {
            "BearerAuth": []
          },
          {
            "SessionTokenHeader": []
          },
          {
            "SessionCookieAuth": []
          }
        ],
        "summary": "Report the zone the device is in",
        "tags": [
          "devices"
        ]
      }
    },
    "/api/v1/me": {
      "delete": {
        "description": "Requires `{\"confirm\": \"DELETE\", \"code\": \"<emailed code>\"}` (09 \u00a72.6, D-033). Calls stop at once, personal data is anonymized now and purged after 30 days. Not with an API key.",
        "operationId": "apps_api_me_delete_me",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DeleteMeIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccountDeletedOut"
                }
              }
            },
            "description": "Accepted"
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Error (RFC 9457 problem details)"
          }
        },
        "security": [
          {
            "BearerAuth": []
          },
          {
            "SessionTokenHeader": []
          },
          {
            "SessionCookieAuth": []
          }
        ],
        "summary": "Delete the account",
        "tags": [
          "account"
        ]
      },
      "get": {
        "operationId": "apps_api_me_get_me",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MeOut"
                }
              }
            },
            "description": "OK"
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Error (RFC 9457 problem details)"
          }
        },
        "security": [
          {
            "BearerAuth": []
          },
          {
            "SessionTokenHeader": []
          },
          {
            "SessionCookieAuth": []
          }
        ],
        "summary": "The signed-in account",
        "tags": [
          "account"
        ]
      },
      "patch": {
        "operationId": "apps_api_me_patch_me",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MePatchIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MeOut"
                }
              }
            },
            "description": "OK"
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Error (RFC 9457 problem details)"
          }
        },
        "security": [
          {
            "BearerAuth": []
          },
          {
            "SessionTokenHeader": []
          },
          {
            "SessionCookieAuth": []
          }
        ],
        "summary": "Change profile settings",
        "tags": [
          "account"
        ]
      }
    },
    "/api/v1/me/apple-authorization": {
      "post": {
        "description": "Right after signing in with Apple, the app sends the credential's `authorizationCode`. The server exchanges it with Apple and keeps the refresh token, encrypted, only to revoke it when the account is deleted (App Store guideline 5.1.1(v)). 204 also when the server has no Apple key configured (nothing is kept). 400 `validation_error` for a code Apple refuses or that is not for this account's Apple ID; 503 `provider_unavailable` when Apple cannot be reached; 429 past 10 a minute. Not with an API key.",
        "operationId": "apps_api_me_post_apple_authorization",
        "parameters": [
          {
            "description": "Makes a retry safe for 24 h: the same key with the same request replays the first successful response; with a different request it is 409 `idempotency_key_reused`.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "maxLength": 200,
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AppleAuthorizationIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Error (RFC 9457 problem details)"
          }
        },
        "security": [
          {
            "BearerAuth": []
          },
          {
            "SessionTokenHeader": []
          },
          {
            "SessionCookieAuth": []
          }
        ],
        "summary": "Keep the Sign in with Apple token, to revoke it at deletion",
        "tags": [
          "account"
        ]
      }
    },
    "/api/v1/me/deletion-code": {
      "post": {
        "description": "D-033: 3 codes an hour; a code lasts 10 minutes. Not with an API key.",
        "operationId": "apps_api_me_post_deletion_code",
        "parameters": [
          {
            "description": "Makes a retry safe for 24 h: the same key with the same request replays the first successful response; with a different request it is 409 `idempotency_key_reused`.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "maxLength": 200,
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeletionCodeOut"
                }
              }
            },
            "description": "Accepted"
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Error (RFC 9457 problem details)"
          }
        },
        "security": [
          {
            "BearerAuth": []
          },
          {
            "SessionTokenHeader": []
          },
          {
            "SessionCookieAuth": []
          }
        ],
        "summary": "Email the code that confirms deleting the account",
        "tags": [
          "account"
        ]
      }
    },
    "/api/v1/me/export": {
      "get": {
        "description": "18 \u00a72: a streamed JSON document of every row the account owns. An API key needs the opt-in `export` scope (chosen when the key is made; 403 `insufficient_scope` without it). The app's session token and the web session need nothing extra.",
        "operationId": "apps_api_me_get_export",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response",
                  "type": "object"
                }
              }
            },
            "description": "OK"
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Error (RFC 9457 problem details)"
          }
        },
        "security": [
          {
            "BearerAuth": []
          },
          {
            "SessionTokenHeader": []
          },
          {
            "SessionCookieAuth": []
          }
        ],
        "summary": "Everything the account owns, as JSON",
        "tags": [
          "account"
        ]
      }
    },
    "/api/v1/me/onboarding": {
      "post": {
        "description": "`step` is `contact_saved` or `dnd_acknowledged` (14 \u00a71 steps 4-5); the server sets the other flags. Returns the updated `onboarding_state`.",
        "operationId": "apps_api_me_post_onboarding",
        "parameters": [
          {
            "description": "Makes a retry safe for 24 h: the same key with the same request replays the first successful response; with a different request it is 409 `idempotency_key_reused`.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "maxLength": 200,
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OnboardingIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response",
                  "type": "object"
                }
              }
            },
            "description": "OK"
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Error (RFC 9457 problem details)"
          }
        },
        "security": [
          {
            "BearerAuth": []
          },
          {
            "SessionTokenHeader": []
          },
          {
            "SessionCookieAuth": []
          }
        ],
        "summary": "Record a self-reported onboarding step",
        "tags": [
          "account"
        ]
      }
    },
    "/api/v1/me/onboarding/skip": {
      "post": {
        "description": "14 \u00a71: `contact`, `ring`, `test-call` or `first-call`, after showing the step's `skip_warning`. Remembered for the web stepper too. 400 `validation_error` for any other step. Returns `onboarding` as `GET /me` shows it.",
        "operationId": "apps_api_me_post_onboarding_skip",
        "parameters": [
          {
            "description": "Makes a retry safe for 24 h: the same key with the same request replays the first successful response; with a different request it is 409 `idempotency_key_reused`.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "maxLength": 200,
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OnboardingSkipIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OnboardingOut"
                }
              }
            },
            "description": "OK"
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Error (RFC 9457 problem details)"
          }
        },
        "security": [
          {
            "BearerAuth": []
          },
          {
            "SessionTokenHeader": []
          },
          {
            "SessionCookieAuth": []
          }
        ],
        "summary": "Skip an onboarding step",
        "tags": [
          "account"
        ]
      }
    },
    "/api/v1/me/resume-calls": {
      "post": {
        "description": "Explicit re-consent (D-016): `{\"consent\": true}`. Not with an API key.",
        "operationId": "apps_api_me_post_resume_calls",
        "parameters": [
          {
            "description": "Makes a retry safe for 24 h: the same key with the same request replays the first successful response; with a different request it is 409 `idempotency_key_reused`.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "maxLength": 200,
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ResumeCallsIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MeOut"
                }
              }
            },
            "description": "OK"
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Error (RFC 9457 problem details)"
          }
        },
        "security": [
          {
            "BearerAuth": []
          },
          {
            "SessionTokenHeader": []
          },
          {
            "SessionCookieAuth": []
          }
        ],
        "summary": "Turn calls back on after pressing 9",
        "tags": [
          "account"
        ]
      }
    },
    "/api/v1/me/timezone-context": {
      "get": {
        "description": "04 \u00a78: upcoming calls within 36 h whose clock differs from the device's.",
        "operationId": "apps_api_me_get_timezone_context",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TimezoneContextOut"
                }
              }
            },
            "description": "OK"
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Error (RFC 9457 problem details)"
          }
        },
        "security": [
          {
            "BearerAuth": []
          },
          {
            "SessionTokenHeader": []
          },
          {
            "SessionCookieAuth": []
          }
        ],
        "summary": "Home zone, device zone and travel mismatches",
        "tags": [
          "account"
        ]
      }
    },
    "/api/v1/me/usage": {
      "get": {
        "operationId": "apps_api_me_get_usage",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UsageOut"
                }
              }
            },
            "description": "OK"
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Error (RFC 9457 problem details)"
          }
        },
        "security": [
          {
            "BearerAuth": []
          },
          {
            "SessionTokenHeader": []
          },
          {
            "SessionCookieAuth": []
          }
        ],
        "summary": "Plan, calls used and included this period, credits, trial",
        "tags": [
          "account"
        ]
      }
    },
    "/api/v1/occurrences": {
      "get": {
        "description": "`from`/`to` are UTC instants bounding `scheduled_at` (`from` inclusive, `to` exclusive). Without either: the last day and the next seven. Soonest first.",
        "operationId": "apps_api_occurrences_list_occurrences",
        "parameters": [
          {
            "in": "query",
            "name": "from",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "date-time",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "From"
            }
          },
          {
            "in": "query",
            "name": "to",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "date-time",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "To"
            }
          },
          {
            "in": "query",
            "name": "status",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Status"
            }
          },
          {
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 50,
              "title": "Limit",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OccurrencePage"
                }
              }
            },
            "description": "OK"
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Error (RFC 9457 problem details)"
          }
        },
        "security": [
          {
            "BearerAuth": []
          },
          {
            "SessionTokenHeader": []
          },
          {
            "SessionCookieAuth": []
          }
        ],
        "summary": "Calls by time",
        "tags": [
          "occurrences and calls"
        ]
      }
    },
    "/api/v1/occurrences/{occurrence_id}": {
      "get": {
        "operationId": "apps_api_occurrences_get_occurrence",
        "parameters": [
          {
            "in": "path",
            "name": "occurrence_id",
            "required": true,
            "schema": {
              "title": "Occurrence Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OccurrenceDetailOut"
                }
              }
            },
            "description": "OK"
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Error (RFC 9457 problem details)"
          }
        },
        "security": [
          {
            "BearerAuth": []
          },
          {
            "SessionTokenHeader": []
          },
          {
            "SessionCookieAuth": []
          }
        ],
        "summary": "One call, with its attempts",
        "tags": [
          "occurrences and calls"
        ]
      }
    },
    "/api/v1/occurrences/{occurrence_id}/cancel": {
      "post": {
        "description": "pending, dispatching or calling \u2192 cancelled (a call ringing now is hung up). 409 `occurrence_terminal` once it has finished.",
        "operationId": "apps_api_occurrences_cancel_occurrence",
        "parameters": [
          {
            "in": "path",
            "name": "occurrence_id",
            "required": true,
            "schema": {
              "title": "Occurrence Id",
              "type": "string"
            }
          },
          {
            "description": "Makes a retry safe for 24 h: the same key with the same request replays the first successful response; with a different request it is 409 `idempotency_key_reused`.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "maxLength": 200,
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OccurrenceDetailOut"
                }
              }
            },
            "description": "OK"
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Error (RFC 9457 problem details)"
          }
        },
        "security": [
          {
            "BearerAuth": []
          },
          {
            "SessionTokenHeader": []
          },
          {
            "SessionCookieAuth": []
          }
        ],
        "summary": "Cancel one call",
        "tags": [
          "occurrences and calls"
        ]
      }
    },
    "/api/v1/occurrences/{occurrence_id}/move": {
      "post": {
        "description": "04 \u00a78 \"Move\": send the mismatch's `suggested.timezone` and `suggested.local_date` from `GET /me/timezone-context`. The suggestion is checked again; 400 `validation_error` (nothing moved) when it changed or is no longer a mismatch, 409 while the call rings or once it is no longer pending. Returns the moved schedule with its new `next_occurrence`.",
        "operationId": "apps_api_occurrences_move_occurrence",
        "parameters": [
          {
            "in": "path",
            "name": "occurrence_id",
            "required": true,
            "schema": {
              "title": "Occurrence Id",
              "type": "string"
            }
          },
          {
            "description": "Makes a retry safe for 24 h: the same key with the same request replays the first successful response; with a different request it is 409 `idempotency_key_reused`.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "maxLength": 200,
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TravelMoveIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScheduleOut"
                }
              }
            },
            "description": "OK"
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Error (RFC 9457 problem details)"
          }
        },
        "security": [
          {
            "BearerAuth": []
          },
          {
            "SessionTokenHeader": []
          },
          {
            "SessionCookieAuth": []
          }
        ],
        "summary": "Move a call to the device's time zone (travel)",
        "tags": [
          "occurrences and calls"
        ]
      }
    },
    "/api/v1/phone-numbers": {
      "get": {
        "operationId": "apps_api_phones_list_phone_numbers",
        "parameters": [
          {
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 50,
              "title": "Limit",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PhoneNumberPage"
                }
              }
            },
            "description": "OK"
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Error (RFC 9457 problem details)"
          }
        },
        "security": [
          {
            "BearerAuth": []
          },
          {
            "SessionTokenHeader": []
          },
          {
            "SessionCookieAuth": []
          }
        ],
        "summary": "The account's numbers",
        "tags": [
          "phone numbers"
        ]
      },
      "post": {
        "description": "201 with the unverified number. A code is sent at once (`sms`, or a call for a landline); `verification` says whether it went out.",
        "operationId": "apps_api_phones_add_phone_number",
        "parameters": [
          {
            "description": "Makes a retry safe for 24 h: the same key with the same request replays the first successful response; with a different request it is 409 `idempotency_key_reused`.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "maxLength": 200,
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PhoneNumberIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PhoneNumberCreatedOut"
                }
              }
            },
            "description": "Created"
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Error (RFC 9457 problem details)"
          }
        },
        "security": [
          {
            "BearerAuth": []
          },
          {
            "SessionTokenHeader": []
          },
          {
            "SessionCookieAuth": []
          }
        ],
        "summary": "Add a number (and text it a code)",
        "tags": [
          "phone numbers"
        ]
      }
    },
    "/api/v1/phone-numbers/{phone_number_id}": {
      "delete": {
        "description": "409 `number_in_use` while an enabled wake-up call rings it.",
        "operationId": "apps_api_phones_delete_phone_number",
        "parameters": [
          {
            "in": "path",
            "name": "phone_number_id",
            "required": true,
            "schema": {
              "title": "Phone Number Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Error (RFC 9457 problem details)"
          }
        },
        "security": [
          {
            "BearerAuth": []
          },
          {
            "SessionTokenHeader": []
          },
          {
            "SessionCookieAuth": []
          }
        ],
        "summary": "Delete a number",
        "tags": [
          "phone numbers"
        ]
      },
      "patch": {
        "operationId": "apps_api_phones_patch_phone_number",
        "parameters": [
          {
            "in": "path",
            "name": "phone_number_id",
            "required": true,
            "schema": {
              "title": "Phone Number Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PhoneNumberPatchIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PhoneNumberOut"
                }
              }
            },
            "description": "OK"
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Error (RFC 9457 problem details)"
          }
        },
        "security": [
          {
            "BearerAuth": []
          },
          {
            "SessionTokenHeader": []
          },
          {
            "SessionCookieAuth": []
          }
        ],
        "summary": "Rename or make primary",
        "tags": [
          "phone numbers"
        ]
      }
    },
    "/api/v1/phone-numbers/{phone_number_id}/test-call": {
      "post": {
        "description": "06 \u00a73.4: one real call now, counted as one wake-up call of usage. 201 with the new attempt, or 200 with the one already live. Poll `GET /calls/{id}` for its status.",
        "operationId": "apps_api_phones_phone_test_call",
        "parameters": [
          {
            "in": "path",
            "name": "phone_number_id",
            "required": true,
            "schema": {
              "title": "Phone Number Id",
              "type": "string"
            }
          },
          {
            "description": "Makes a retry safe for 24 h: the same key with the same request replays the first successful response; with a different request it is 409 `idempotency_key_reused`.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "maxLength": 200,
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttemptOut"
                }
              }
            },
            "description": "OK"
          },
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttemptOut"
                }
              }
            },
            "description": "Created"
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Error (RFC 9457 problem details)"
          }
        },
        "security": [
          {
            "BearerAuth": []
          },
          {
            "SessionTokenHeader": []
          },
          {
            "SessionCookieAuth": []
          }
        ],
        "summary": "Call this number now (test call)",
        "tags": [
          "phone numbers"
        ]
      }
    },
    "/api/v1/phone-numbers/{phone_number_id}/verify/check": {
      "post": {
        "operationId": "apps_api_phones_verify_check",
        "parameters": [
          {
            "in": "path",
            "name": "phone_number_id",
            "required": true,
            "schema": {
              "title": "Phone Number Id",
              "type": "string"
            }
          },
          {
            "description": "Makes a retry safe for 24 h: the same key with the same request replays the first successful response; with a different request it is 409 `idempotency_key_reused`.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "maxLength": 200,
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VerifyCheckIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PhoneNumberOut"
                }
              }
            },
            "description": "OK"
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Error (RFC 9457 problem details)"
          }
        },
        "security": [
          {
            "BearerAuth": []
          },
          {
            "SessionTokenHeader": []
          },
          {
            "SessionCookieAuth": []
          }
        ],
        "summary": "Check the code; marks the number verified",
        "tags": [
          "phone numbers"
        ]
      }
    },
    "/api/v1/phone-numbers/{phone_number_id}/verify/start": {
      "post": {
        "operationId": "apps_api_phones_verify_start",
        "parameters": [
          {
            "in": "path",
            "name": "phone_number_id",
            "required": true,
            "schema": {
              "title": "Phone Number Id",
              "type": "string"
            }
          },
          {
            "description": "Makes a retry safe for 24 h: the same key with the same request replays the first successful response; with a different request it is 409 `idempotency_key_reused`.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "maxLength": 200,
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VerifyStartIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VerificationOut"
                }
              }
            },
            "description": "OK"
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Error (RFC 9457 problem details)"
          }
        },
        "security": [
          {
            "BearerAuth": []
          },
          {
            "SessionTokenHeader": []
          },
          {
            "SessionCookieAuth": []
          }
        ],
        "summary": "Send a verification code",
        "tags": [
          "phone numbers"
        ]
      }
    },
    "/api/v1/schedules": {
      "get": {
        "description": "`status`: `active`, `completed` or `disabled`. Each embeds `next_occurrence`.",
        "operationId": "apps_api_schedules_list_schedules",
        "parameters": [
          {
            "in": "query",
            "name": "status",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Status"
            }
          },
          {
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 50,
              "title": "Limit",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SchedulePage"
                }
              }
            },
            "description": "OK"
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Error (RFC 9457 problem details)"
          }
        },
        "security": [
          {
            "BearerAuth": []
          },
          {
            "SessionTokenHeader": []
          },
          {
            "SessionCookieAuth": []
          }
        ],
        "summary": "The account's wake-up calls",
        "tags": [
          "schedules"
        ]
      },
      "post": {
        "description": "07 \u00a73: once at a wall time, once in N minutes, or recurring.",
        "operationId": "apps_api_schedules_create_schedule",
        "parameters": [
          {
            "description": "Makes a retry safe for 24 h: the same key with the same request replays the first successful response; with a different request it is 409 `idempotency_key_reused`.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "maxLength": 200,
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ScheduleIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScheduleOut"
                }
              }
            },
            "description": "Created"
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Error (RFC 9457 problem details)"
          }
        },
        "security": [
          {
            "BearerAuth": []
          },
          {
            "SessionTokenHeader": []
          },
          {
            "SessionCookieAuth": []
          }
        ],
        "summary": "Create a wake-up call",
        "tags": [
          "schedules"
        ]
      }
    },
    "/api/v1/schedules/preview": {
      "post": {
        "description": "The body `POST /schedules` takes; nothing is saved. Returns the call it would ring first and the web form's preview line; errors are the ones saving would raise.",
        "operationId": "apps_api_schedules_preview_schedule",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ScheduleIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SchedulePreviewOut"
                }
              }
            },
            "description": "OK"
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Error (RFC 9457 problem details)"
          }
        },
        "security": [
          {
            "BearerAuth": []
          },
          {
            "SessionTokenHeader": []
          },
          {
            "SessionCookieAuth": []
          }
        ],
        "summary": "Preview a new wake-up call (dry run)",
        "tags": [
          "schedules"
        ]
      }
    },
    "/api/v1/schedules/{schedule_id}": {
      "delete": {
        "description": "Cancels its pending call. One that already rang is kept, disabled, as history. 409 `occurrence_in_progress` while it is ringing.",
        "operationId": "apps_api_schedules_delete_schedule",
        "parameters": [
          {
            "in": "path",
            "name": "schedule_id",
            "required": true,
            "schema": {
              "title": "Schedule Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Error (RFC 9457 problem details)"
          }
        },
        "security": [
          {
            "BearerAuth": []
          },
          {
            "SessionTokenHeader": []
          },
          {
            "SessionCookieAuth": []
          }
        ],
        "summary": "Delete a wake-up call",
        "tags": [
          "schedules"
        ]
      },
      "get": {
        "operationId": "apps_api_schedules_get_schedule",
        "parameters": [
          {
            "in": "path",
            "name": "schedule_id",
            "required": true,
            "schema": {
              "title": "Schedule Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScheduleOut"
                }
              }
            },
            "description": "OK"
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Error (RFC 9457 problem details)"
          }
        },
        "security": [
          {
            "BearerAuth": []
          },
          {
            "SessionTokenHeader": []
          },
          {
            "SessionCookieAuth": []
          }
        ],
        "summary": "One wake-up call",
        "tags": [
          "schedules"
        ]
      },
      "patch": {
        "description": "Any mutable field; returns the schedule with its new `next_occurrence`. 409 `occurrence_in_progress` while it is ringing.",
        "operationId": "apps_api_schedules_patch_schedule",
        "parameters": [
          {
            "in": "path",
            "name": "schedule_id",
            "required": true,
            "schema": {
              "title": "Schedule Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SchedulePatchIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScheduleOut"
                }
              }
            },
            "description": "OK"
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Error (RFC 9457 problem details)"
          }
        },
        "security": [
          {
            "BearerAuth": []
          },
          {
            "SessionTokenHeader": []
          },
          {
            "SessionCookieAuth": []
          }
        ],
        "summary": "Change a wake-up call",
        "tags": [
          "schedules"
        ]
      }
    },
    "/api/v1/schedules/{schedule_id}/pause": {
      "post": {
        "description": "`until` is a local date in the call's zone; 400 `not_recurring` for a one-off.",
        "operationId": "apps_api_schedules_pause",
        "parameters": [
          {
            "in": "path",
            "name": "schedule_id",
            "required": true,
            "schema": {
              "title": "Schedule Id",
              "type": "string"
            }
          },
          {
            "description": "Makes a retry safe for 24 h: the same key with the same request replays the first successful response; with a different request it is 409 `idempotency_key_reused`.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "maxLength": 200,
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PauseIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScheduleOut"
                }
              }
            },
            "description": "OK"
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Error (RFC 9457 problem details)"
          }
        },
        "security": [
          {
            "BearerAuth": []
          },
          {
            "SessionTokenHeader": []
          },
          {
            "SessionCookieAuth": []
          }
        ],
        "summary": "Pause until a local date (recurring)",
        "tags": [
          "schedules"
        ]
      }
    },
    "/api/v1/schedules/{schedule_id}/preview": {
      "post": {
        "description": "The body `PATCH /schedules/{id}` takes; nothing is saved. 409 `occurrence_in_progress` while it is ringing, as the edit would be.",
        "operationId": "apps_api_schedules_preview_schedule_edit",
        "parameters": [
          {
            "in": "path",
            "name": "schedule_id",
            "required": true,
            "schema": {
              "title": "Schedule Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SchedulePatchIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SchedulePreviewOut"
                }
              }
            },
            "description": "OK"
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Error (RFC 9457 problem details)"
          }
        },
        "security": [
          {
            "BearerAuth": []
          },
          {
            "SessionTokenHeader": []
          },
          {
            "SessionCookieAuth": []
          }
        ],
        "summary": "Preview a change to a wake-up call (dry run)",
        "tags": [
          "schedules"
        ]
      }
    },
    "/api/v1/schedules/{schedule_id}/resume": {
      "post": {
        "operationId": "apps_api_schedules_resume",
        "parameters": [
          {
            "in": "path",
            "name": "schedule_id",
            "required": true,
            "schema": {
              "title": "Schedule Id",
              "type": "string"
            }
          },
          {
            "description": "Makes a retry safe for 24 h: the same key with the same request replays the first successful response; with a different request it is 409 `idempotency_key_reused`.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "maxLength": 200,
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScheduleOut"
                }
              }
            },
            "description": "OK"
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Error (RFC 9457 problem details)"
          }
        },
        "security": [
          {
            "BearerAuth": []
          },
          {
            "SessionTokenHeader": []
          },
          {
            "SessionCookieAuth": []
          }
        ],
        "summary": "Clear the pause (recurring)",
        "tags": [
          "schedules"
        ]
      }
    },
    "/api/v1/schedules/{schedule_id}/skip-next": {
      "post": {
        "operationId": "apps_api_schedules_skip_next",
        "parameters": [
          {
            "in": "path",
            "name": "schedule_id",
            "required": true,
            "schema": {
              "title": "Schedule Id",
              "type": "string"
            }
          },
          {
            "description": "Makes a retry safe for 24 h: the same key with the same request replays the first successful response; with a different request it is 409 `idempotency_key_reused`.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "maxLength": 200,
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScheduleOut"
                }
              }
            },
            "description": "OK"
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Error (RFC 9457 problem details)"
          }
        },
        "security": [
          {
            "BearerAuth": []
          },
          {
            "SessionTokenHeader": []
          },
          {
            "SessionCookieAuth": []
          }
        ],
        "summary": "Skip the next call (recurring)",
        "tags": [
          "schedules"
        ]
      }
    },
    "/api/v1/schedules/{schedule_id}/test-call": {
      "post": {
        "operationId": "apps_api_schedules_schedule_test_call",
        "parameters": [
          {
            "in": "path",
            "name": "schedule_id",
            "required": true,
            "schema": {
              "title": "Schedule Id",
              "type": "string"
            }
          },
          {
            "description": "Makes a retry safe for 24 h: the same key with the same request replays the first successful response; with a different request it is 409 `idempotency_key_reused`.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "maxLength": 200,
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttemptOut"
                }
              }
            },
            "description": "OK"
          },
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttemptOut"
                }
              }
            },
            "description": "Created"
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Error (RFC 9457 problem details)"
          }
        },
        "security": [
          {
            "BearerAuth": []
          },
          {
            "SessionTokenHeader": []
          },
          {
            "SessionCookieAuth": []
          }
        ],
        "summary": "Call this wake-up call's number now (test call)",
        "tags": [
          "schedules"
        ]
      }
    },
    "/api/v1/schedules/{schedule_id}/upcoming": {
      "get": {
        "description": "The stored next call first, then computed ones (not stored). `count` 1-100.",
        "operationId": "apps_api_schedules_upcoming",
        "parameters": [
          {
            "in": "path",
            "name": "schedule_id",
            "required": true,
            "schema": {
              "title": "Schedule Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "count",
            "required": false,
            "schema": {
              "default": 7,
              "title": "Count",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpcomingPage"
                }
              }
            },
            "description": "OK"
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Error (RFC 9457 problem details)"
          }
        },
        "security": [
          {
            "BearerAuth": []
          },
          {
            "SessionTokenHeader": []
          },
          {
            "SessionCookieAuth": []
          }
        ],
        "summary": "The next calls, computed",
        "tags": [
          "schedules"
        ]
      }
    },
    "/api/v1/time": {
      "get": {
        "description": "04 \u00a79. `zones` is a comma-separated list of IANA zones (at most 50); without it, `UTC` and the signed-in caller's home zone. Call this before creating or moving a call.",
        "operationId": "apps_api_timeapi_get_time",
        "parameters": [
          {
            "in": "query",
            "name": "zones",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Zones"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TimeContextOut"
                }
              }
            },
            "description": "OK"
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Error (RFC 9457 problem details)"
          }
        },
        "summary": "What time it is, and where",
        "tags": [
          "time"
        ]
      }
    },
    "/api/v1/timezones": {
      "get": {
        "description": "04 \u00a710. Ranked; each result carries the offset in force now (`limit` 1-50).",
        "operationId": "apps_api_timeapi_search_timezones",
        "parameters": [
          {
            "in": "query",
            "name": "q",
            "required": false,
            "schema": {
              "default": "",
              "title": "Q",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 10,
              "title": "Limit",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ZoneMatchPage"
                }
              }
            },
            "description": "OK"
          },
          "default": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            },
            "description": "Error (RFC 9457 problem details)"
          }
        },
        "summary": "Search time zones by city, country, airport or IANA name",
        "tags": [
          "time"
        ]
      }
    }
  },
  "servers": []
}
