{
  "info": {
    "version": "1.0.0",
    "description": "One platform, a product line that grows: calling, meetings, chat, the help desk,\ntext lines, campaigns, verification, device alerting and agents. Each has its own\npath prefix, so a URL says which product it belongs to and a key scoped to one\ncannot wander into another.\n\nAuthenticate with `Authorization: Bearer <key>`. Every route requires a scope, reads\nincluded: a key scoped to meetings cannot read the call history even though both\nbelong to the same tenant.\n\nWrite operations accept an `Idempotency-Key` header. Repeating a request with the\nsame key returns the first response rather than doing the work twice.\n",
    "title": "Telenaas API"
  },
  "components": {
    "schemas": {
      "Error": {
        "type": "object",
        "required": [
          "error"
        ],
        "properties": {
          "error": {
            "type": "string",
            "description": "A stable machine-readable code."
          },
          "message": {
            "type": "string",
            "description": "What went wrong, in words."
          }
        }
      }
    },
    "securitySchemes": {
      "infraToken": {
        "in": "header",
        "name": "x-telenaas-token",
        "type": "apiKey",
        "description": "Shared token for our own telephony infrastructure. Not for customers."
      },
      "bearerAuth": {
        "scheme": "bearer",
        "type": "http",
        "description": "A Telenaas API key."
      }
    }
  },
  "paths": {
    "/api/v1/telehome/addons/{sku}": {
      "delete": {
        "description": "What the bundle came with cannot be taken off it — cancel or change the bundle instead.",
        "parameters": [
          {
            "in": "path",
            "name": "sku",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Take a line off",
        "tags": [
          "TeleHome"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "delete_remove",
        "x-required-scope": "bundle:manage"
      }
    },
    "/api/v1/emergency/route/{number}": {
      "get": {
        "description": "Where an emergency call from this number goes, and with what address.",
        "parameters": [
          {
            "in": "path",
            "name": "number",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Emergency routing",
        "tags": [
          "Switch"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_emergency_route",
        "x-required-scope": "infrastructure token",
        "security": [
          {
            "infraToken": []
          }
        ]
      }
    },
    "/api/v1/telestream/broadcasts/{id}/live": {
      "delete": {
        "description": "Meters two things, because they are two costs: `stream.ingest.minutes` is what the transcoder ran for whether or not anybody watched, and `stream.viewer.kminutes` is what the edge served, in thousands of viewer-minutes. Pass `received_video: false` to end it as `failed`.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "End it",
        "tags": [
          "TeleStream"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "delete_end_broadcast",
        "x-required-scope": "stream:broadcast"
      },
      "post": {
        "description": "Refused with `already_live` when the channel already has one live — by a database index, not by a check two requests can both pass. Two ingests on one playback URL is what happens the first time an encoder reconnects early.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Go live",
        "tags": [
          "TeleStream"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_go_live",
        "x-required-scope": "stream:broadcast",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/flights": {
      "get": {
        "description": "What we can answer about.",
        "parameters": [],
        "summary": "Today's flights",
        "tags": [
          "TeleFly"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_list_flights",
        "x-required-scope": "textin:read"
      },
      "put": {
        "description": "Keyed on number and date, because BA123 is a different aeroplane every morning. Send the whole board as often as you like.",
        "parameters": [],
        "summary": "Upload flights",
        "tags": [
          "TeleFly"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "put_put_flights",
        "x-required-scope": "textin:manage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/telechat/attachments/{id}": {
      "get": {
        "description": "A short-lived download link for a file message: the provider's own when it can sign one, ours otherwise.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Fetch a file",
        "tags": [
          "TeleChat"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_attachment",
        "x-required-scope": "chat:read"
      }
    },
    "/api/v1/audiences": {
      "get": {
        "description": "The lists this tenant writes to, and how many people are on each.",
        "parameters": [],
        "summary": "List audiences",
        "tags": [
          "Platform"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_list_audiences",
        "x-required-scope": "campaign:read"
      },
      "post": {
        "description": "A named list to send to.",
        "parameters": [],
        "summary": "Create an audience",
        "tags": [
          "Platform"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_create_audience",
        "x-required-scope": "campaign:manage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/telecenter/calls/{id}/abandon": {
      "post": {
        "description": "Its own status and its own flag, because it is the number a centre is judged on and folding it into \"ended\" is how it disappears from a report.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "The caller hung up while waiting",
        "tags": [
          "TeleCenter"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_abandon",
        "x-required-scope": "center:work",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/surveys/{id}/results": {
      "get": {
        "description": "Numbers averaged, choices counted, free text left alone — an average of somebody's sentences is not a finding.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Results",
        "tags": [
          "TeleSurvey"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_survey_results",
        "x-required-scope": "campaign:read"
      }
    },
    "/api/v1/teleassistant/assistants": {
      "get": {
        "description": "The assistants in this tenant and the numbers they answer.",
        "parameters": [],
        "summary": "List assistants",
        "tags": [
          "TeleAssistant"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_list_assistants",
        "x-required-scope": "assistant:read"
      },
      "post": {
        "description": "A greeting, business hours, and what to do outside them: take a message, offer a menu, forward, or hand over to an AI agent.",
        "parameters": [],
        "summary": "Create an assistant",
        "tags": [
          "TeleAssistant"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_create_assistant",
        "x-required-scope": "assistant:manage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/teleinternet/plans/{id}": {
      "get": {
        "description": "Speeds, caps, contract length and what we pay for it — a key belonging to the reselling organisation may see the wholesale price and the margin, because they are the reseller.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "One plan in full",
        "tags": [
          "TeleInternet"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_offer",
        "x-required-scope": "resale:read"
      }
    },
    "/api/v1/surveys/{id}/responses": {
      "get": {
        "description": "Per person: where they got to, and what they said.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Every response",
        "tags": [
          "TeleSurvey"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_survey_responses",
        "x-required-scope": "campaign:read"
      }
    },
    "/api/v1/telecenter/agents/me/status": {
      "post": {
        "description": "`center:work`, not `center:manage`: going on a break should not need a supervisor. `away` needs a reason. Refused while on a call, because the router would otherwise offer a second one.",
        "parameters": [],
        "summary": "An agent says what they are doing",
        "tags": [
          "TeleCenter"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_set_status",
        "x-required-scope": "center:work",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/assistants/plan/{number}": {
      "get": {
        "description": "Infrastructure token. What the assistant in front of this number wants done with an incoming call: the greeting, the action, the forward or the menu. 404 with `no_assistant` means ring it normally.",
        "parameters": [
          {
            "in": "path",
            "name": "number",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "An assistant's plan for a dialled number",
        "tags": [
          "Platform"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_assistant_plan",
        "x-required-scope": "infrastructure token"
      }
    },
    "/api/v1/telecash/transactions": {
      "get": {
        "description": "Newest first, filterable by account, kind and status.",
        "parameters": [],
        "summary": "Movements",
        "tags": [
          "TeleCash"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_transactions",
        "x-required-scope": "cash:read"
      },
      "post": {
        "description": "The call to make the moment money moves. `reference` is your own and is the idempotency key: post the same movement again — after a timeout, say — and you get 200 with `duplicate: true` and the holder is not texted a second time. Amounts are positive integers in minor units; which way the money went follows from `kind`, so a negative amount is refused rather than read as a direction.",
        "parameters": [],
        "summary": "Post a movement",
        "tags": [
          "TeleCash"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_post_transaction",
        "x-required-scope": "cash:post",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/greetings": {
      "get": {
        "description": "Greetings for TeleCall, TeleVoip and TeleMeet: the caller's own and the organisation's shared one. `product` narrows it.",
        "parameters": [],
        "summary": "List greetings",
        "tags": [
          "Platform"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_list_greetings",
        "x-required-scope": "greeting:read"
      },
      "post": {
        "description": "Multipart `file`, or `name` and base64 `data`, plus `product`. Audio only, two minutes at most, and charged for nothing — it is somebody's own voice.",
        "parameters": [],
        "summary": "Save a recorded greeting",
        "tags": [
          "Platform"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_create_greeting",
        "x-required-scope": "greeting:manage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/telemarket/items": {
      "get": {
        "description": "What this account may buy, which is not the whole shop: a household is not offered the 24-zone panel and a business is not offered the single-flat starter kit. `works_with` names the products an item talks to; `requires` names what must already be on a bundle before it can be added to one. A `stock` of `null` means made to order rather than sold out.",
        "parameters": [],
        "summary": "The catalogue",
        "tags": [
          "TeleMarket"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_items",
        "x-required-scope": "market:read"
      }
    },
    "/api/v1/verify/verifications": {
      "get": {
        "description": "Status only — never the code, which we do not keep.",
        "parameters": [],
        "summary": "Recent verifications",
        "tags": [
          "TeleAuth"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_index",
        "x-required-scope": "verify:read"
      },
      "post": {
        "description": "Six digits to a telephone number, hashed here the way a password is and never stored in the clear. Defaults: ten minutes, five attempts. `message` may carry your own wording with `{{code}}` in it; `reference` is your own identifier for whatever you are protecting, handed back to you. Asking again for the same number cancels the previous code.",
        "parameters": [],
        "summary": "Send a code",
        "tags": [
          "TeleAuth"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_create",
        "x-required-scope": "verify:send",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/telestream/channels": {
      "get": {
        "description": "Each with its playback URLs, its latency mode and the last four characters of its ingest key. The key itself is not here and never will be.",
        "parameters": [],
        "summary": "The channels",
        "tags": [
          "TeleStream"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_channels",
        "x-required-scope": "stream:read"
      },
      "post": {
        "description": "Creating one answers with the ingest key — **the only time it is returned**, because it is stored hashed. `handle` is in the playback URL and is unique across the platform. `latency_mode: \"low\"` costs more to serve and is what an auction or a live shop needs; `standard` is what a lecture needs.",
        "parameters": [],
        "summary": "Create or change a channel",
        "tags": [
          "TeleStream"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_put_channel",
        "x-required-scope": "stream:manage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/teleexpo/demos/{id}/live": {
      "delete": {
        "description": "Closes the room. The recording, if there was one, still has to be claimed.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "End a demo",
        "tags": [
          "TeleExpo"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "delete_end_demo",
        "x-required-scope": "demo:host"
      },
      "post": {
        "description": "Opens the room and tells everybody watching the directory that it has started.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Go live",
        "tags": [
          "TeleExpo"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_start_demo",
        "x-required-scope": "demo:host",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/ecommerce/orders": {
      "get": {
        "description": "What we are tracking, and its state.",
        "parameters": [],
        "summary": "List orders",
        "tags": [
          "TeleEcommerce"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_list_objects",
        "x-required-scope": "campaign:read"
      },
      "post": {
        "description": "Keyed on your own reference, so sending the same order twice updates it rather than duplicating it. The customer is told only when the status actually changes, and only where a rule says to.",
        "parameters": [],
        "summary": "Record or update an order",
        "tags": [
          "TeleEcommerce"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_track_object",
        "x-required-scope": "campaign:manage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/telestream/broadcasts/{id}": {
      "get": {
        "description": "With both measured durations and both viewer figures — now and the peak. A falling \"watching now\" means nothing without the peak beside it.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "One broadcast",
        "tags": [
          "TeleStream"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_broadcast",
        "x-required-scope": "stream:read"
      }
    },
    "/api/v1/realtime/rooms/{room}": {
      "get": {
        "description": "Opens the room for one of this tenant's meetings on the media plane and returns the router's RTP capabilities — the first step of the mediasoup handshake. `room` is the meeting id; a meeting belonging to another tenant answers 404 exactly as a made-up id does. Signalling continues over the media socket. If no media plane is configured this answers 200 with `sfu: false`, so a caller can fall back to mesh instead of waiting.",
        "parameters": [
          {
            "in": "path",
            "name": "room",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Open an SFU room",
        "tags": [
          "Platform"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_room",
        "x-required-scope": "meeting:manage"
      }
    },
    "/api/v1/telemarket/orders/{reference}": {
      "get": {
        "description": "Including the delivery address, which is encrypted at rest.",
        "parameters": [
          {
            "in": "path",
            "name": "reference",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "One order",
        "tags": [
          "TeleMarket"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_order_show",
        "x-required-scope": "market:read"
      }
    },
    "/api/v1/realtime/ice": {
      "get": {
        "description": "STUN, plus a TURN credential minted for this request and valid for an hour. Fetch these per session rather than caching them: WebRTC that works in an office and fails on a phone is almost always a missing relay, and a stale credential fails the same way.",
        "parameters": [],
        "summary": "ICE servers",
        "tags": [
          "Platform"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_ice",
        "x-required-scope": "meeting:read"
      }
    },
    "/api/v1/telestream/messages/{message_id}/hide": {
      "delete": {
        "description": "For when a moderator was wrong.",
        "parameters": [
          {
            "in": "path",
            "name": "message_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Put it back",
        "tags": [
          "TeleStream"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "delete_unhide",
        "x-required-scope": "stream:moderate"
      },
      "post": {
        "description": "Hides; nothing deletes. The row keeps who hid it and why, so the author can be told and the moderator can be asked. Silently dropping a muted viewer's messages while still showing them their own is the most common dark pattern in live chat, and there is no endpoint for it here.",
        "parameters": [
          {
            "in": "path",
            "name": "message_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Hide a message",
        "tags": [
          "TeleStream"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_hide",
        "x-required-scope": "stream:moderate",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/teletv/orders/{id}/refresh": {
      "post": {
        "description": "Their status, recorded as they said it.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Ask the operator what has happened",
        "tags": [
          "TeleTV"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_refresh_order",
        "x-required-scope": "resale:read",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/surveys": {
      "get": {
        "description": "The questionnaires this tenant has written.",
        "parameters": [],
        "summary": "List surveys",
        "tags": [
          "TeleSurvey"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_list_surveys",
        "x-required-scope": "campaign:read"
      },
      "post": {
        "description": "Questions are asked one message at a time. A question may be `scale` (a number in range), `yes_no`, `choice` (answered by word or by position) or `text`.",
        "parameters": [],
        "summary": "Create a survey",
        "tags": [
          "TeleSurvey"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_create_survey",
        "x-required-scope": "campaign:manage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/logistics/shipments": {
      "get": {
        "description": "What is in flight.",
        "parameters": [],
        "summary": "List shipments",
        "tags": [
          "TeleLogistics"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_list_objects",
        "x-required-scope": "campaign:read"
      },
      "post": {
        "description": "The same shape as an order: your reference, the customer, the status, and anything else — a tracking link, an ETA — which the message can refer to by name.",
        "parameters": [],
        "summary": "Record or update a shipment",
        "tags": [
          "TeleLogistics"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_track_object",
        "x-required-scope": "campaign:manage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/telemeet/meetings": {
      "get": {
        "description": "Meetings for this tenant, most recent first.",
        "parameters": [],
        "summary": "List meetings",
        "tags": [
          "TeleMeet"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_list_meetings",
        "x-required-scope": "meeting:read"
      },
      "post": {
        "description": "Room size is capped by the tenant's plan. Asking for more is refused rather than quietly reduced.",
        "parameters": [],
        "summary": "Create a meeting",
        "tags": [
          "TeleMeet"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_create_meeting",
        "x-required-scope": "meeting:manage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/guard/events/{id}": {
      "get": {
        "description": "Including what the device reported.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "One event",
        "tags": [
          "TeleGuard"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_show_event",
        "x-required-scope": "device:read"
      }
    },
    "/api/v1/telebusiness/bundle": {
      "get": {
        "description": "As TeleHome, for a company.",
        "parameters": [],
        "summary": "Your bundle",
        "tags": [
          "TeleBusiness"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_show",
        "x-required-scope": "bundle:read"
      },
      "delete": {
        "description": "The charging stops.",
        "parameters": [],
        "summary": "Give it up",
        "tags": [
          "TeleBusiness"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "delete_cancel",
        "x-required-scope": "bundle:manage"
      },
      "post": {
        "description": "Refused for a personal account, for the same reason in reverse.",
        "parameters": [],
        "summary": "Take TeleBusiness",
        "tags": [
          "TeleBusiness"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_subscribe",
        "x-required-scope": "bundle:manage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/teletv/orders": {
      "get": {
        "description": "This organisation's orders, newest first.",
        "parameters": [],
        "summary": "Television orders",
        "tags": [
          "TeleTV"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_orders",
        "x-required-scope": "resale:read"
      },
      "post": {
        "description": "Needs the watching country. Checked twice: against the partner's programme and against the package's own rights territories, because a partner can operate in a country where a particular package is not licensed.",
        "parameters": [],
        "summary": "Order a package",
        "tags": [
          "TeleTV"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_place_order",
        "x-required-scope": "resale:sell",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/televoip/numbers/{id}/assign": {
      "post": {
        "description": "Give a number to a person in this tenant, or to a TeleAssistant so that it answers instead.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Assign a number",
        "tags": [
          "TeleVoip"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_assign_number",
        "x-required-scope": "number:assign",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/teleexpo/demos/{id}": {
      "get": {
        "description": "One demo, with its audience count.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Get a demo",
        "tags": [
          "TeleExpo"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_get_demo",
        "x-required-scope": "demo:read"
      }
    },
    "/api/v1/webhooks": {
      "get": {
        "description": "Where we send events.",
        "parameters": [],
        "summary": "List webhook endpoints",
        "tags": [
          "Platform"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_list_webhooks",
        "x-required-scope": "developer:read"
      },
      "post": {
        "description": "Returns the signing secret once. The timestamp is inside the signature, so a captured delivery cannot be replayed later.",
        "parameters": [],
        "summary": "Add a webhook endpoint",
        "tags": [
          "Platform"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_create_webhook",
        "x-required-scope": "developer:manage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/agents/sessions": {
      "get": {
        "description": "What agents are running, and what they have spent.",
        "parameters": [],
        "summary": "Sessions",
        "tags": [
          "TeleAI"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_index",
        "x-required-scope": "agent:read"
      },
      "post": {
        "description": "Give the agent one person to talk to, the channels it may use, the actions it may take and what it may spend. An agent with no `allowed_actions` can only listen.",
        "parameters": [],
        "summary": "Open a session",
        "tags": [
          "TeleAI"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_create",
        "x-required-scope": "agent:run",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/agents/sessions/{id}/act": {
      "post": {
        "description": "`send_message`, `place_call`, `open_room` or `hand_over`. Checked in that order: may it, can it afford it, is the destination allowed — the same dial policy a person is held to.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Do something",
        "tags": [
          "TeleAI"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_act",
        "x-required-scope": "agent:run",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/transit/stops": {
      "get": {
        "description": "Every stop, by the code riders text.",
        "parameters": [],
        "summary": "List stops",
        "tags": [
          "TeleTransit"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_list_stops",
        "x-required-scope": "textin:read"
      },
      "put": {
        "description": "Keyed on the code printed at the stop. Bad rows are named and the rest are written — a timetable from somebody else's system should not fail whole because of one stop.",
        "parameters": [],
        "summary": "Upload stops",
        "tags": [
          "TeleTransit"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "put_put_stops",
        "x-required-scope": "textin:manage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/guard/devices": {
      "get": {
        "description": "Sensors, doors and panels, and which have gone quiet.",
        "parameters": [],
        "summary": "List devices",
        "tags": [
          "TeleGuard"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_list_devices",
        "x-required-scope": "device:read"
      },
      "put": {
        "description": "Keyed on your own reference. `heartbeat_minutes` is how often it promises to report; silence past twice that is itself an alarm, because a cut sensor cannot announce that it has been cut.",
        "parameters": [],
        "summary": "Register a device",
        "tags": [
          "TeleGuard"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "put_put_device",
        "x-required-scope": "device:manage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/teletv/packages": {
      "get": {
        "description": "`market` is required and means the country the customer watches in. Television rights are granted per country, per channel and per window, so a package sellable in Ireland may not be sellable in France even from the same operator.",
        "parameters": [],
        "summary": "Television packages licensed for a country",
        "tags": [
          "TeleTV"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_offers",
        "x-required-scope": "resale:read"
      }
    },
    "/api/v1/verify/verifications/{id}": {
      "get": {
        "description": "Its state and how long is left of it.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "One verification",
        "tags": [
          "TeleAuth"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_show",
        "x-required-scope": "verify:read"
      }
    },
    "/api/v1/telephones/catalogue/{id}": {
      "get": {
        "description": "Brand, model, storage, data allowance and validity, as the supplier stated them.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "One item in full",
        "tags": [
          "TelePhones"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_offer",
        "x-required-scope": "resale:read"
      }
    },
    "/api/v1/flights/services": {
      "get": {
        "description": "Where TeleFly answers.",
        "parameters": [],
        "summary": "List text lines",
        "tags": [
          "TeleFly"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_list_services",
        "x-required-scope": "textin:read"
      },
      "post": {
        "description": "Bind TeleFly to a number.",
        "parameters": [],
        "summary": "Set up a text line",
        "tags": [
          "TeleFly"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_create_service",
        "x-required-scope": "textin:manage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/teletv/packages/{id}": {
      "get": {
        "description": "The channel line-up exactly as the operator published it, the rights `territories`, and whether rebranding is permitted. An empty channel list means they published none — not that the package is empty.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "One package in full",
        "tags": [
          "TeleTV"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_offer",
        "x-required-scope": "resale:read"
      }
    },
    "/api/v1/teleassistant/voicemails": {
      "get": {
        "description": "Who called, when, and the transcript. The audio is not here: like every recording, it is delivered to a device or to Burmeel Storage and never kept in our database.",
        "parameters": [],
        "summary": "List voicemails",
        "tags": [
          "TeleAssistant"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_list_voicemails",
        "x-required-scope": "assistant:read"
      }
    },
    "/api/v1/teleinternet/plans/{id}/coverage": {
      "post": {
        "description": "Address in, availability out. Three answers: available, not available, or `available: null` — which means that partner publishes no qualification API and a person has to check. The third is not a failure and the plan stays orderable.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Can this address have it",
        "tags": [
          "TeleInternet"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_coverage",
        "x-required-scope": "resale:read",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/audiences/{id}/members/{number}": {
      "delete": {
        "description": "They stop being written to by anything that uses this list.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "number",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Remove a member",
        "tags": [
          "Platform"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "delete_remove_member",
        "x-required-scope": "campaign:manage"
      }
    },
    "/api/v1/greetings/spoken": {
      "post": {
        "description": "`script` and `product`, optionally a `voice`. Charged per thousand characters of speech, half price on your own provider key. Nothing is stored if the engine cannot speak: a greeting that plays silence is worse than none.",
        "parameters": [],
        "summary": "Write a greeting and have it read aloud",
        "tags": [
          "Platform"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_create_spoken_greeting",
        "x-required-scope": "greeting:manage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/telecenter/queues/{queue_id}/route": {
      "post": {
        "description": "Three distinct refusals: no such queue, nothing waiting, or nobody available — and a supervisor needs to know which.",
        "parameters": [
          {
            "in": "path",
            "name": "queue_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Offer the longest wait to the next agent",
        "tags": [
          "TeleCenter"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_route",
        "x-required-scope": "center:work",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/telehome/addons": {
      "get": {
        "description": "With what each one needs.",
        "parameters": [],
        "summary": "What can be added",
        "tags": [
          "TeleHome"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_addons",
        "x-required-scope": "bundle:read"
      },
      "post": {
        "description": "An accessory is refused unless the bundle already includes what it needs; an upgrade requires nothing, because buying it is what adds the product.",
        "parameters": [],
        "summary": "Add a paid line",
        "tags": [
          "TeleHome"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_add",
        "x-required-scope": "bundle:manage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/telephones/orders/{id}/submit": {
      "post": {
        "description": "As with every product here: `awaiting_manual_submission` means a person still has to place it with the distributor.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Hand the order to the supplier",
        "tags": [
          "TelePhones"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_submit_order",
        "x-required-scope": "resale:sell",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/telechat/widgets": {
      "get": {
        "description": "The website widgets this tenant has, with their public keys and allowed origins.",
        "parameters": [],
        "summary": "List chat widgets",
        "tags": [
          "TeleChat"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_list_widgets",
        "x-required-scope": "chat:read"
      },
      "post": {
        "description": "Returns a public key for the `<script>` tag. The key is not a secret — `allowed_origins` is what keeps the widget to your own sites, and an empty list refuses every origin.",
        "parameters": [],
        "summary": "Create a chat widget",
        "tags": [
          "TeleChat"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_create_widget",
        "x-required-scope": "chat:moderate",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/service/bookings/{reference}": {
      "get": {
        "description": "And its history.",
        "parameters": [
          {
            "in": "path",
            "name": "reference",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "One booking",
        "tags": [
          "TeleSMS"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_show_object",
        "x-required-scope": "campaign:read"
      }
    },
    "/api/v1/teletv/orders/{id}/submit": {
      "post": {
        "description": "`awaiting_manual_submission` means nothing has been sent yet.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Hand the order to the operator",
        "tags": [
          "TeleTV"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_submit_order",
        "x-required-scope": "resale:sell",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/agents/sessions/{id}": {
      "get": {
        "description": "Its leash and what is left of the budget.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "One session",
        "tags": [
          "TeleAI"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_show",
        "x-required-scope": "agent:read"
      }
    },
    "/api/v1/greetings/{id}/default": {
      "post": {
        "description": "One default per person per product, enforced by a database index rather than by hope. The previous default is cleared in the same transaction.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Make a greeting the one that plays",
        "tags": [
          "Platform"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_set_default_greeting",
        "x-required-scope": "greeting:manage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/mcp": {
      "post": {
        "description": "A JSON-RPC dispatcher for agents. Tools are named for the product they belong to; each enforces its own permission, so an agent can never reach further than a REST client holding the same key.",
        "parameters": [],
        "summary": "Model Context Protocol",
        "tags": [
          "MCP"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_handle",
        "x-required-scope": "any authenticated key",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/billing/bills": {
      "get": {
        "description": "Issued, due, paid, overdue.",
        "parameters": [],
        "summary": "List bills",
        "tags": [
          "TeleBilling"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_list_objects",
        "x-required-scope": "campaign:read"
      },
      "post": {
        "description": "`at` is when it falls due, which is what the reminder counts back from. Marking it paid stops the chasing: rules fire on a change of status, and paid is a status.",
        "parameters": [],
        "summary": "Record or update a bill",
        "tags": [
          "TeleBilling"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_track_object",
        "x-required-scope": "campaign:manage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/realtime/rooms/{room}/peers/{peer_id}": {
      "delete": {
        "description": "Releases their SFU peer at once, so their media stops before their browser is told, then closes their signalling channel. A grant socket token opens one socket, so the removed person cannot reconnect on the token they had.",
        "parameters": [
          {
            "in": "path",
            "name": "room",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "peer_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Remove someone from a room",
        "tags": [
          "Platform"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "delete_remove_peer",
        "x-required-scope": "meeting:manage"
      }
    },
    "/api/v1/telecash/pin-calls": {
      "get": {
        "description": "Newest first, filterable by your `reference`. How each call ended, never what was typed.",
        "parameters": [],
        "summary": "PIN calls",
        "tags": [
          "TeleCash"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_pin_calls",
        "x-required-scope": "cash:read"
      },
      "post": {
        "description": "`in_reply_to` is the id of a text the customer sent in the last 15 minutes, and `reference` your own name for what is being approved. We ring the sender from the number they texted and ask for their PIN on the keypad. The digits are posted once, signed like any webhook, to your endpoint subscribed to `telecash.pin.entered`; answer `{\"result\": \"approved\" | \"retry\" | \"refused\"}` and the caller hears it. **The digits are never stored, logged or retried** — there is no delivery record of them to replay. How the call ended arrives as `telecash.pin_call.ended`. Three calls per number per 15 minutes; your dial policy applies.",
        "parameters": [],
        "summary": "Ring for a PIN",
        "tags": [
          "TeleCash"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_create_pin_call",
        "x-required-scope": "cash:post",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/alerts": {
      "get": {
        "description": "What has been raised.",
        "parameters": [],
        "summary": "List alerts",
        "tags": [
          "TeleAlert"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_list_campaigns",
        "x-required-scope": "campaign:read"
      },
      "post": {
        "description": "Sent at any hour — an alert is the one thing that ignores quiet hours. With `ack_required`, a reply is recorded as an acknowledgement and you can see who has answered.",
        "parameters": [],
        "summary": "Raise an alert",
        "tags": [
          "TeleAlert"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_create_campaign",
        "x-required-scope": "campaign:manage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/telecash/messages/{id}/reply": {
      "post": {
        "description": "`text` (up to 480 characters) goes to the number that sent the message, from the number it was sent to. Only within 30 minutes of it arriving and at most five times per message: a TeleCash key answers people who wrote to you, it cannot text anybody else.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Answer a text",
        "tags": [
          "TeleCash"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_reply",
        "x-required-scope": "cash:post",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/telechat/conversations/{id}/contact": {
      "post": {
        "description": "`name`, plus a `phone` or an `email`. The card is encrypted whole in the message body rather than spread across metadata, because it is somebody's number.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Send a contact card",
        "tags": [
          "TeleChat"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_create_contact_message",
        "x-required-scope": "chat:write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/telecenter/calls/{id}/end": {
      "post": {
        "description": "The agent goes into wrap-up for as long as the queue promised. Talk time is metered here — a call nobody answered cost nothing to carry.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "The call ended",
        "tags": [
          "TeleCenter"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_hang_up",
        "x-required-scope": "center:work",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/teleexpo/demos": {
      "get": {
        "description": "Scheduled, live and finished product demonstrations.",
        "parameters": [],
        "summary": "List demos",
        "tags": [
          "TeleExpo"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_list_demos",
        "x-required-scope": "demo:read"
      },
      "post": {
        "description": "Creates the demo and its public page. Viewers join by slug and need no account; a demo is a broadcast with a question queue, not a meeting everybody talks in.",
        "parameters": [],
        "summary": "Schedule a demo",
        "tags": [
          "TeleExpo"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_create_demo",
        "x-required-scope": "demo:host",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/greetings/{id}": {
      "delete": {
        "description": "The audio is deleted from storage as well as the greeting retired. The audit trail keeps the record that it existed.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Delete a greeting",
        "tags": [
          "Platform"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "delete_delete_greeting",
        "x-required-scope": "greeting:manage"
      }
    },
    "/api/v1/health/events": {
      "get": {
        "description": "And what became of each.",
        "parameters": [],
        "summary": "Events",
        "tags": [
          "TeleHealth"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_list_events",
        "x-required-scope": "device:read"
      },
      "post": {
        "description": "A fall, a missed dose, a reading out of range. Anything in `reading` is encrypted at rest and is never put in a message to family.",
        "parameters": [],
        "summary": "Report something",
        "tags": [
          "TeleHealth"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_report",
        "x-required-scope": "device:report",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/telecash/accounts/{reference}": {
      "get": {
        "description": "As you last reported it.",
        "parameters": [
          {
            "in": "path",
            "name": "reference",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "One account",
        "tags": [
          "TeleCash"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_show_account",
        "x-required-scope": "cash:read"
      }
    },
    "/api/v1/teleassistant/assistants/{id}": {
      "get": {
        "description": "One assistant, with its menu and its schedule.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Get an assistant",
        "tags": [
          "TeleAssistant"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_get_assistant",
        "x-required-scope": "assistant:read"
      }
    },
    "/api/v1/health/events/{id}/resolve": {
      "post": {
        "description": "With a note.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Close it",
        "tags": [
          "TeleHealth"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_resolve_event",
        "x-required-scope": "device:manage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/audit": {
      "get": {
        "description": "Hash-chained, append-only, and readable here.",
        "parameters": [],
        "summary": "Audit ledger",
        "tags": [
          "Platform"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_audit",
        "x-required-scope": "audit:read"
      }
    },
    "/api/v1/health/devices/silent": {
      "get": {
        "description": "A monitor that has stopped reporting is not a monitor.",
        "parameters": [],
        "summary": "Devices gone quiet",
        "tags": [
          "TeleHealth"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_silent",
        "x-required-scope": "device:read"
      }
    },
    "/api/v1/teleinternet/plans": {
      "get": {
        "description": "`market` is required: a plan list without one is a list of things that may be impossible where the customer lives. Fibre, DSL, cable, fixed wireless and satellite, cheapest first, with the partner behind each one named.",
        "parameters": [],
        "summary": "Broadband plans in a country",
        "tags": [
          "TeleInternet"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_offers",
        "x-required-scope": "resale:read"
      }
    },
    "/api/v1/telebusiness/addons/{sku}": {
      "delete": {
        "description": "From next month.",
        "parameters": [
          {
            "in": "path",
            "name": "sku",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Take a line off",
        "tags": [
          "TeleBusiness"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "delete_remove",
        "x-required-scope": "bundle:manage"
      }
    },
    "/api/v1/teleexpo/requests": {
      "get": {
        "description": "People who asked for a demonstration and have not had one yet.",
        "parameters": [],
        "summary": "Demo requests",
        "tags": [
          "TeleExpo"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_demo_requests",
        "x-required-scope": "demo:read"
      }
    },
    "/api/v1/teleinternet/orders/{id}/refresh": {
      "post": {
        "description": "Their word for the state is recorded as it came. Only unambiguous ones move our status: `completed` means live, `rejected` means failed, and anything else leaves ours alone rather than guessing.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Ask the provider what has happened",
        "tags": [
          "TeleInternet"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_refresh_order",
        "x-required-scope": "resale:read",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/telecash/pin-calls/{id}": {
      "get": {
        "description": "Its status: ringing, answered, approved, refused, unavailable, not_answered, abandoned or timed_out.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "One PIN call",
        "tags": [
          "TeleCash"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_show_pin_call",
        "x-required-scope": "cash:read"
      }
    },
    "/api/v1/meetings/{id}/phone-legs/{participant_id}": {
      "delete": {
        "description": "Releases the media node's ports when the caller hangs up.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "participant_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "End a telephone leg",
        "tags": [
          "Switch"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "delete_end_phone_leg",
        "x-required-scope": "infrastructure token"
      }
    },
    "/api/v1/reports/services": {
      "get": {
        "description": "Where TeleCrime answers.",
        "parameters": [],
        "summary": "List text lines",
        "tags": [
          "TeleCrime"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_list_services",
        "x-required-scope": "report:read"
      },
      "post": {
        "description": "`config.anonymous` makes it anonymous, in which case the reporter's number is never written down. `config.emergency_number` is the number every reply tells people to ring if they are in danger.",
        "parameters": [],
        "summary": "Set up a reporting line",
        "tags": [
          "TeleCrime"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_create_service",
        "x-required-scope": "report:read",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/telecenter/wallboard": {
      "get": {
        "description": "Per queue: waiting, longest wait, agents by state, handled and abandoned today, and the service level measured from the last day's calls. `service_level` is **null** when nothing has been answered — not 100.",
        "parameters": [],
        "summary": "The wallboard",
        "tags": [
          "TeleCenter"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_wallboard",
        "x-required-scope": "center:read"
      }
    },
    "/api/v1/storage/verify": {
      "post": {
        "description": "Writes, reads back and deletes a probe object with the configured credentials.",
        "parameters": [],
        "summary": "Check the storage",
        "tags": [
          "Platform"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_verify_storage",
        "x-required-scope": "tenant:manage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/partners/{key}": {
      "get": {
        "description": "Capabilities per function, the access tier as plain words, published commission terms where a company publishes them — and `null` where nobody does, rather than a plausible number somebody would quote back as fact.",
        "parameters": [
          {
            "in": "path",
            "name": "key",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "One partner programme in full",
        "tags": [
          "Platform"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_partner",
        "x-required-scope": "partner:read"
      }
    },
    "/api/v1/teledesk/knowledge": {
      "get": {
        "description": "Pass `audience=public` to get only articles that may be sent to a customer.",
        "parameters": [],
        "summary": "Search the knowledge base",
        "tags": [
          "TeleDesk"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_search_knowledge",
        "x-required-scope": "helpdesk:read"
      }
    },
    "/api/v1/reminders/rules": {
      "get": {
        "description": "When to remind, and what to say.",
        "parameters": [],
        "summary": "List rules",
        "tags": [
          "TeleReminder"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_list_rules",
        "x-required-scope": "campaign:read"
      },
      "put": {
        "description": "A negative `delay_minutes` counts back from `at`; a positive one follows up after.",
        "parameters": [],
        "summary": "Set a rule",
        "tags": [
          "TeleReminder"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "put_put_rule",
        "x-required-scope": "campaign:manage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/booking/stays/{reference}": {
      "get": {
        "description": "With its history.",
        "parameters": [
          {
            "in": "path",
            "name": "reference",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "One stay",
        "tags": [
          "TeleBooking"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_show_object",
        "x-required-scope": "campaign:read"
      }
    },
    "/api/v1/teleinternet/orders/{id}/submit": {
      "post": {
        "description": "`status` is ours, `partner_status` is theirs. A partner with no integration answers `awaiting_manual_submission`, which means **nothing has been sent yet** and a person must place it. Treating that as success is how a customer is told their line is ordered when it is not.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Hand the order to the provider",
        "tags": [
          "TeleInternet"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_submit_order",
        "x-required-scope": "resale:sell",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/webhooks/deliveries": {
      "get": {
        "description": "So \"it never arrived\" has an answer.",
        "parameters": [],
        "summary": "Delivery history",
        "tags": [
          "Platform"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_webhook_deliveries",
        "x-required-scope": "developer:read"
      }
    },
    "/api/v1/workflow-runs": {
      "get": {
        "description": "Every run, with the steps it took and the ones it was denied.",
        "parameters": [],
        "summary": "Automation history",
        "tags": [
          "Automation"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_workflow_runs",
        "x-required-scope": "automation:read"
      }
    },
    "/api/v1/telecenter/calls": {
      "get": {
        "description": "Waiting, ringing and talking, oldest first, with live wait times.",
        "parameters": [],
        "summary": "The floor right now",
        "tags": [
          "TeleCenter"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_live",
        "x-required-scope": "center:read"
      },
      "post": {
        "description": "Answers with the assignment, already offered to somebody if anybody was free. The caller is queued the moment they arrive whether or not there is an agent.",
        "parameters": [],
        "summary": "A call arrives in a queue",
        "tags": [
          "TeleCenter"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_arrive",
        "x-required-scope": "center:work",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/reminders/reminders": {
      "get": {
        "description": "What is waiting to be sent.",
        "parameters": [],
        "summary": "List reminders",
        "tags": [
          "TeleReminder"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_list_objects",
        "x-required-scope": "campaign:read"
      },
      "post": {
        "description": "`at` is when the thing happens — the exam, the interview, the train, the payment. A rule with `delay_minutes: -1440` sends the day before. A reminder whose moment has already passed is not sent, because a reminder about something that has happened is noise.",
        "parameters": [],
        "summary": "Set a reminder",
        "tags": [
          "TeleReminder"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_track_object",
        "x-required-scope": "campaign:manage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/verify/verifications/stats": {
      "get": {
        "description": "Sent, approved, expired and failed over the last week, with the success rate. Watch the expired count: codes sent and never checked are people who never received them.",
        "parameters": [],
        "summary": "How it is going",
        "tags": [
          "TeleAuth"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_stats",
        "x-required-scope": "verify:read"
      }
    },
    "/api/v1/share/accounts": {
      "get": {
        "description": "The accounts connected for sending. Credentials are never returned.",
        "parameters": [],
        "summary": "Connected accounts",
        "tags": [
          "Platform"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_list_share_accounts",
        "x-required-scope": "share:read"
      },
      "post": {
        "description": "`provider` and the fields that channel asks for. Refused when the details are not enough to send with, rather than stored and discovered useless at the moment somebody shares something. The token is encrypted under the tenant's own credential key.",
        "parameters": [],
        "summary": "Connect an account",
        "tags": [
          "Platform"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_connect_share_account",
        "x-required-scope": "share:manage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/telechat/conversations/{id}/archive": {
      "get": {
        "description": "Days moved out of the hot window into the organisation's storage, newest first.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Archived days",
        "tags": [
          "TeleChat"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_archive_days",
        "x-required-scope": "chat:read"
      }
    },
    "/api/v1/invoices/rules": {
      "get": {
        "description": "What is said at each state.",
        "parameters": [],
        "summary": "List rules",
        "tags": [
          "TeleInvoices"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_list_rules",
        "x-required-scope": "campaign:read"
      },
      "put": {
        "description": "Including the one that chases a late invoice.",
        "parameters": [],
        "summary": "Set a rule",
        "tags": [
          "TeleInvoices"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "put_put_rule",
        "x-required-scope": "campaign:manage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/guard/devices/silent": {
      "get": {
        "description": "The ones to go and look at.",
        "parameters": [],
        "summary": "Devices gone quiet",
        "tags": [
          "TeleGuard"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_silent",
        "x-required-scope": "device:read"
      }
    },
    "/api/v1/telechat/conversations": {
      "get": {
        "description": "Chat threads this key can see, including those started from a website widget.",
        "parameters": [],
        "summary": "List conversations",
        "tags": [
          "TeleChat"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_list_conversations",
        "x-required-scope": "chat:read"
      }
    },
    "/api/v1/reports": {
      "get": {
        "description": "Behind its own permission: setting up a line and reading what was confided to it are different things.",
        "parameters": [],
        "summary": "Reports received",
        "tags": [
          "TeleCrime"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_list_reports",
        "x-required-scope": "report:read"
      }
    },
    "/api/v1/guard/events": {
      "get": {
        "description": "Raised, notified, acknowledged, resolved — or expired, which means nobody ever answered.",
        "parameters": [],
        "summary": "Events",
        "tags": [
          "TeleGuard"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_list_events",
        "x-required-scope": "device:read"
      },
      "post": {
        "description": "The call a panel makes at two in the morning, so it is the simplest one here. A repeat of something already ringing updates it rather than raising a second alarm and waking the rota twice.",
        "parameters": [],
        "summary": "Report something",
        "tags": [
          "TeleGuard"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_report",
        "x-required-scope": "device:report",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/billing/bills/{reference}": {
      "get": {
        "description": "With its history.",
        "parameters": [
          {
            "in": "path",
            "name": "reference",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "One bill",
        "tags": [
          "TeleBilling"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_show_object",
        "x-required-scope": "campaign:read"
      }
    },
    "/api/v1/share/messages/{id}": {
      "post": {
        "description": "`provider`, and `destination` where the channel addresses somebody. Words, a picture, a file, a voice message or a contact. Recorded whether it worked or not — and once it has gone, it has gone.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Share a message outside Telenaas",
        "tags": [
          "Platform"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_share_message",
        "x-required-scope": "share:manage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/telecenter/calls/{id}/wrap-up": {
      "post": {
        "description": "Its own step on purpose. Collapsing it into the end of the call is the change that quietly removes wrap-up from the product.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Wrap-up finished",
        "tags": [
          "TeleCenter"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_wrap_up",
        "x-required-scope": "center:work",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/reminders/reminders/{reference}": {
      "get": {
        "description": "With its history.",
        "parameters": [
          {
            "in": "path",
            "name": "reference",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "One reminder",
        "tags": [
          "TeleReminder"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_show_object",
        "x-required-scope": "campaign:read"
      }
    },
    "/api/v1/guard/events/{id}/resolve": {
      "post": {
        "description": "With a note about what it was.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Close it",
        "tags": [
          "TeleGuard"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_resolve_event",
        "x-required-scope": "device:manage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/agents/sessions/{id}/close": {
      "post": {
        "description": "Nothing further may be done on it.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "End the session",
        "tags": [
          "TeleAI"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_close",
        "x-required-scope": "agent:run",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/telestream/channels/{id}/key": {
      "post": {
        "description": "Answers with the new key and invalidates the old one immediately. A rotation that leaves the old key working is not a rotation.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Rotate the ingest key",
        "tags": [
          "TeleStream"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_rotate_key",
        "x-required-scope": "stream:manage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/logistics/rules": {
      "get": {
        "description": "What gets said at each stage.",
        "parameters": [],
        "summary": "List rules",
        "tags": [
          "TeleLogistics"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_list_rules",
        "x-required-scope": "campaign:read"
      },
      "put": {
        "description": "By text or WhatsApp, with a fallback when WhatsApp cannot carry it.",
        "parameters": [],
        "summary": "Set a rule",
        "tags": [
          "TeleLogistics"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "put_put_rule",
        "x-required-scope": "campaign:manage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/telecenter/agents": {
      "get": {
        "description": "With what each is doing and for how long. `available` is the only state a call is offered to: wrap-up is not available, and neither is a break.",
        "parameters": [],
        "summary": "Who is on the floor",
        "tags": [
          "TeleCenter"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_agents",
        "x-required-scope": "center:read"
      },
      "post": {
        "description": "Queues, skills, and whether they may supervise. Supervising is a capability on the agent rather than a role, so promoting somebody to administrator does not silently let them listen to calls.",
        "parameters": [],
        "summary": "Put somebody on the floor",
        "tags": [
          "TeleCenter"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_put_agent",
        "x-required-scope": "center:manage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/transit/services": {
      "get": {
        "description": "The numbers and keywords this operator answers on.",
        "parameters": [],
        "summary": "List text lines",
        "tags": [
          "TeleTransit"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_list_services",
        "x-required-scope": "textin:read"
      },
      "post": {
        "description": "Bind a service to one of your numbers, optionally behind a keyword so one number can run several: \"BUS 4412\" and \"TRAIN 4412\".",
        "parameters": [],
        "summary": "Set up a text line",
        "tags": [
          "TeleTransit"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_create_service",
        "x-required-scope": "textin:manage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/telechat/conversations/{id}/attachments": {
      "post": {
        "description": "Multipart `file`, or JSON `name` and base64 `data`. Stored in the organisation's own storage; the message carries only the name and a reference.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Send a file",
        "tags": [
          "TeleChat"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_create_attachment",
        "x-required-scope": "chat:write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/share/channels": {
      "get": {
        "description": "WhatsApp, email, Telegram, Facebook, Instagram — each with the fields it needs and what it can and cannot carry. Instagram takes pictures only; a page post cannot carry a voice message.",
        "parameters": [],
        "summary": "Channels a message can be handed to",
        "tags": [
          "Platform"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_list_share_channels",
        "x-required-scope": "share:read"
      }
    },
    "/api/v1/guard/responders": {
      "get": {
        "description": "In the order they are told.",
        "parameters": [],
        "summary": "Who gets told",
        "tags": [
          "TeleGuard"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_list_responders",
        "x-required-scope": "device:read"
      },
      "put": {
        "description": "`step` is the escalation order: everybody on step one is told at once, step two only if nobody answered within five minutes.",
        "parameters": [],
        "summary": "Add somebody to the rota",
        "tags": [
          "TeleGuard"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "put_put_responder",
        "x-required-scope": "device:manage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/telecash/accounts": {
      "get": {
        "description": "The accounts you have registered, with the balance you last reported and when you reported it.",
        "parameters": [],
        "summary": "Accounts",
        "tags": [
          "TeleCash"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_accounts",
        "x-required-scope": "cash:read"
      },
      "put": {
        "description": "Keyed on your own reference. `holder` is the telephone that gets the alert, and it is also how the account holder's own Telenaas app finds this account. A `balance_minor` here is recorded as reported now — we never compute one, because a balance worked out from messages we might have missed is how somebody is told they have money they have not got.",
        "parameters": [],
        "summary": "Register an account",
        "tags": [
          "TeleCash"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "put_put_account",
        "x-required-scope": "cash:manage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/televoip/calls": {
      "get": {
        "description": "Telephone call history for this tenant.",
        "parameters": [],
        "summary": "List calls",
        "tags": [
          "TeleVoip"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_list_calls",
        "x-required-scope": "voice:read"
      },
      "post": {
        "description": "An emergency number takes a different path: never billed, never rate-limited, and refused outright if there is no dispatchable location.",
        "parameters": [],
        "summary": "Place a call",
        "tags": [
          "TeleVoip"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_create_call",
        "x-required-scope": "voice:call",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/partners/resale/earnings": {
      "get": {
        "description": "Orders, revenue and margin per product, computed from the orders rather than from the catalogue — the catalogue has changed since and the orders are what happened.",
        "parameters": [],
        "summary": "What has been sold, by product",
        "tags": [
          "Platform"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_earnings",
        "x-required-scope": "resale:read"
      }
    },
    "/api/v1/audiences/{id}/members": {
      "get": {
        "description": "Everybody on a list, with whatever the business knows about them.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "List members",
        "tags": [
          "Platform"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_list_members",
        "x-required-scope": "campaign:read"
      },
      "post": {
        "description": "Takes as many as you send, and answers with how many were added and which were rejected and why. A number that is not a number is named rather than failing the upload.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Add members",
        "tags": [
          "Platform"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_add_members",
        "x-required-scope": "campaign:manage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/telechat/conversations/direct": {
      "post": {
        "description": "Between the calling person and `user_id`; reuses the existing one.",
        "parameters": [],
        "summary": "Start a direct conversation",
        "tags": [
          "TeleChat"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_start_direct",
        "x-required-scope": "chat:write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/health/devices": {
      "get": {
        "description": "Health devices and which have gone quiet.",
        "parameters": [],
        "summary": "List devices",
        "tags": [
          "TeleHealth"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_list_devices",
        "x-required-scope": "device:read"
      },
      "put": {
        "description": "The same shape as TeleGuard: your reference, what it is, where it is.",
        "parameters": [],
        "summary": "Register a device",
        "tags": [
          "TeleHealth"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "put_put_device",
        "x-required-scope": "device:manage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/booking/stays": {
      "get": {
        "description": "What is booked, and where each one is up to.",
        "parameters": [],
        "summary": "List stays",
        "tags": [
          "TeleBooking"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_list_objects",
        "x-required-scope": "campaign:read"
      },
      "post": {
        "description": "Keyed on your own reference. `at` is the arrival — a rule with a negative delay counts back from it, so the evening before is the evening before the guest arrives rather than the evening before they booked.",
        "parameters": [],
        "summary": "Record or update a stay",
        "tags": [
          "TeleBooking"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_track_object",
        "x-required-scope": "campaign:manage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/markets/rules": {
      "get": {
        "description": "What is said at each condition.",
        "parameters": [],
        "summary": "List rules",
        "tags": [
          "TeleMarkets"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_list_rules",
        "x-required-scope": "campaign:read"
      },
      "put": {
        "description": "One message per condition, per channel.",
        "parameters": [],
        "summary": "Set a rule",
        "tags": [
          "TeleMarkets"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "put_put_rule",
        "x-required-scope": "campaign:manage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/telephones/orders": {
      "get": {
        "description": "This organisation's orders, newest first.",
        "parameters": [],
        "summary": "Device and SIM orders",
        "tags": [
          "TelePhones"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_orders",
        "x-required-scope": "resale:read"
      },
      "post": {
        "description": "A device order may carry an `imei`, which is checked against the Luhn rule before it is believed. An eSIM order carries the phone's `eid` where the supplier issues profiles to a named device. Stock is decremented inside the order, so two people cannot buy the last handset.",
        "parameters": [],
        "summary": "Order a device, a SIM or an eSIM",
        "tags": [
          "TelePhones"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_place_order",
        "x-required-scope": "resale:sell",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/transit/stops/{code}/departures": {
      "get": {
        "description": "The next departures from one stop, as a rider texting it would be told.",
        "parameters": [
          {
            "in": "path",
            "name": "code",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "What is due",
        "tags": [
          "TeleTransit"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_list_departures",
        "x-required-scope": "textin:read"
      }
    },
    "/api/v1/alerts/{id}": {
      "get": {
        "description": "Including who acknowledged it.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "An alert and its numbers",
        "tags": [
          "TeleAlert"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_show_campaign",
        "x-required-scope": "campaign:read"
      }
    },
    "/api/v1/agents/sessions/{id}/actions": {
      "get": {
        "description": "Including what it tried and was refused, with the reason — \"it never rang them\" and \"it tried and was not allowed to\" are different facts.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Everything it did",
        "tags": [
          "TeleAI"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_actions",
        "x-required-scope": "agent:read"
      }
    },
    "/api/v1/markets/signals": {
      "post": {
        "description": "`condition` is one of steady, movement, high_demand, shortage, disruption, recession, recovery. Everybody watching that market is told, under their own rules and their own quiet hours. **A signal repeating the condition somebody was last told is not sent to them** — an alerting product that cries the same thing twice teaches people to ignore it — and the answer says how many were told and how many were already there.",
        "parameters": [],
        "summary": "A market moved",
        "tags": [
          "TeleMarkets"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_signal",
        "x-required-scope": "campaign:manage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/service/rules": {
      "get": {
        "description": "Confirmations, reminders and cancellations.",
        "parameters": [],
        "summary": "List rules",
        "tags": [
          "TeleSMS"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_list_rules",
        "x-required-scope": "campaign:read"
      },
      "put": {
        "description": "A negative `delay_minutes` is a reminder: -1440 is the day before. A reminder re-reads the booking before it goes, so one cancelled in the meantime is not reminded about.",
        "parameters": [],
        "summary": "Set a rule",
        "tags": [
          "TeleSMS"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "put_put_rule",
        "x-required-scope": "campaign:manage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/realtime/socket-token": {
      "post": {
        "description": "A two-minute token that opens the signalling socket at /media/socket in place of the API key, so the key never appears in a WebSocket URL, a proxy log or a browser history. Pass it as the `token` connect parameter. Send `room` (and optionally `name`, `role` = participant | viewer, `publish` = [audio, video]) to mint a grant: one room, one vouched-for name, only the listed media, one socket.",
        "parameters": [],
        "summary": "Mint a socket token",
        "tags": [
          "Platform"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_socket_token",
        "x-required-scope": "meeting:read",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/telemeet/meetings/{id}": {
      "get": {
        "description": "One meeting, with its join code and dial-in PIN.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Get a meeting",
        "tags": [
          "TeleMeet"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_get_meeting",
        "x-required-scope": "meeting:read"
      },
      "delete": {
        "description": "Marks it cancelled. Anyone already in the room is not thrown out.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Cancel a meeting",
        "tags": [
          "TeleMeet"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "delete_cancel_meeting",
        "x-required-scope": "meeting:manage"
      }
    },
    "/api/v1/teledesk/tickets/{id}": {
      "get": {
        "description": "With its messages. Internal notes are included only for a key holding helpdesk:respond.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Get a ticket",
        "tags": [
          "TeleDesk"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_get_ticket",
        "x-required-scope": "helpdesk:read"
      }
    },
    "/api/v1/billing/rules": {
      "get": {
        "description": "What is said at each state of a bill.",
        "parameters": [],
        "summary": "List rules",
        "tags": [
          "TeleBilling"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_list_rules",
        "x-required-scope": "campaign:read"
      },
      "put": {
        "description": "Including the reminder before the due date and the chase after it.",
        "parameters": [],
        "summary": "Set a rule",
        "tags": [
          "TeleBilling"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "put_put_rule",
        "x-required-scope": "campaign:manage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/realtime/rooms/{room}/peers/{peer_id}/mute": {
      "post": {
        "description": "`kind` is `audio` (default) or `video`; `muted` defaults to true. Pauses their producer on the SFU and holds the mute in their channel, so opening a fresh producer of that kind is refused until a host unmutes them.",
        "parameters": [
          {
            "in": "path",
            "name": "room",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "peer_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Mute or unmute someone",
        "tags": [
          "Platform"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_mute_peer",
        "x-required-scope": "meeting:manage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/storage": {
      "get": {
        "description": "The organisation's storage plane: Burmeel by default, or its own Amazon S3, Google Cloud Storage, Azure Blob or S3-compatible bucket. Never returns credentials.",
        "parameters": [],
        "summary": "Where files and history live",
        "tags": [
          "Platform"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_storage",
        "x-required-scope": "tenant:read"
      },
      "put": {
        "description": "`provider` (burmeel, s3, gcs, azure), `bucket`, `endpoint`, `region`, `account`, `prefix`, `key_id`, `secret`. Credentials are encrypted under the organisation's own key and only replaced when supplied.",
        "parameters": [],
        "summary": "Choose the storage",
        "tags": [
          "Platform"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "put_set_storage",
        "x-required-scope": "tenant:manage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/teledesk/tickets/{id}/replies": {
      "post": {
        "description": "Set `internal` to true for a note to colleagues, which is not sent to the requester.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Reply to a ticket",
        "tags": [
          "TeleDesk"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_reply_to_ticket",
        "x-required-scope": "helpdesk:respond",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/logistics/shipments/{reference}": {
      "get": {
        "description": "And its history.",
        "parameters": [
          {
            "in": "path",
            "name": "reference",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "One shipment",
        "tags": [
          "TeleLogistics"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_show_object",
        "x-required-scope": "campaign:read"
      }
    },
    "/api/v1/invoices/invoices/{reference}": {
      "get": {
        "description": "With its history.",
        "parameters": [
          {
            "in": "path",
            "name": "reference",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "One invoice",
        "tags": [
          "TeleInvoices"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_show_object",
        "x-required-scope": "campaign:read"
      }
    },
    "/api/v1/partners/markets": {
      "get": {
        "description": "With how many programmes are in each — the honest answer to \"where could we launch\", since a country with one agent and no API is not a country we can launch in.",
        "parameters": [],
        "summary": "Every market a partner covers",
        "tags": [
          "Platform"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_partner_markets",
        "x-required-scope": "partner:read"
      }
    },
    "/api/v1/service/bookings": {
      "get": {
        "description": "Appointments and their state.",
        "parameters": [],
        "summary": "List bookings",
        "tags": [
          "TeleSMS"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_list_objects",
        "x-required-scope": "campaign:read"
      },
      "post": {
        "description": "`at` is when the appointment is. A customer who replies YES confirms it and one who replies NO cancels it, which you read back here as a status rather than as a message to interpret.",
        "parameters": [],
        "summary": "Record or update a booking",
        "tags": [
          "TeleSMS"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_track_object",
        "x-required-scope": "campaign:manage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/telecenter/queues": {
      "get": {
        "description": "Each with its strategy, its wrap-up seconds and its service-level promise as words.",
        "parameters": [],
        "summary": "The queues",
        "tags": [
          "TeleCenter"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_queues",
        "x-required-scope": "center:read"
      },
      "post": {
        "description": "`strategy` is one of `longest_idle`, `round_robin`, `fewest_calls` or `skills` — named rules rather than a score, so a supervisor can predict who the next call goes to. A skills queue with no skills is refused, because that is a longest-idle queue wearing a confusing name.",
        "parameters": [],
        "summary": "Create or change a queue",
        "tags": [
          "TeleCenter"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_put_queue",
        "x-required-scope": "center:manage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/televoip/numbers": {
      "get": {
        "description": "Numbers this tenant holds.",
        "parameters": [],
        "summary": "List numbers",
        "tags": [
          "TeleVoip"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_list_numbers",
        "x-required-scope": "number:read"
      }
    },
    "/api/v1/health/responders": {
      "get": {
        "description": "With their role, which decides what they may be told.",
        "parameters": [],
        "summary": "Who gets told",
        "tags": [
          "TeleHealth"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_list_responders",
        "x-required-scope": "device:read"
      },
      "put": {
        "description": "`role` matters here: a clinician may be told the reading, family are told that something happened, where, and who to ring. That line is not a template setting.",
        "parameters": [],
        "summary": "Add somebody",
        "tags": [
          "TeleHealth"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "put_put_responder",
        "x-required-scope": "device:manage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/telephones/orders/{id}/refresh": {
      "post": {
        "description": "Their status, recorded as they said it.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Ask the supplier what has happened",
        "tags": [
          "TelePhones"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_refresh_order",
        "x-required-scope": "resale:read",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/telephones/catalogue": {
      "get": {
        "description": "`market` is required. `kind` narrows it to `handset`, `router`, `sim`, `esim` or `mobile_plan`. Stock is reported as `in_stock` rather than a count, because a count that is one behind is worse than a boolean.",
        "parameters": [],
        "summary": "Handsets, routers, SIMs and eSIMs",
        "tags": [
          "TelePhones"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_offers",
        "x-required-scope": "resale:read"
      }
    },
    "/api/v1/usage": {
      "get": {
        "description": "Metered usage for the current billing period.",
        "parameters": [],
        "summary": "Usage",
        "tags": [
          "Platform"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_usage",
        "x-required-scope": "billing:read"
      }
    },
    "/api/v1/telechat/conversations/{id}/messages": {
      "get": {
        "description": "The hot window, newest last, decrypted for the caller. Older days are in the archive.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Read recent messages",
        "tags": [
          "TeleChat"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_list_messages",
        "x-required-scope": "chat:read"
      },
      "post": {
        "description": "Posts into a conversation. Bodies are encrypted at rest per tenant.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Send a message",
        "tags": [
          "TeleChat"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_create_message",
        "x-required-scope": "chat:write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/telestream/broadcasts/{id}/pin": {
      "delete": {
        "description": "Without putting anything else up.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Take it off screen",
        "tags": [
          "TeleStream"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "delete_unpin",
        "x-required-scope": "stream:broadcast"
      }
    },
    "/api/v1/telemarket/orders": {
      "get": {
        "description": "Newest first, with their lines.",
        "parameters": [],
        "summary": "Your orders",
        "tags": [
          "TeleMarket"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_orders",
        "x-required-scope": "market:read"
      },
      "post": {
        "description": "`items` is a list of `{sku, quantity}`. Nothing else is read from it — a price sent in the request is ignored, and every line is priced from the catalogue inside the same transaction that takes it out of stock. One line that cannot be sold refuses the whole basket, because a hub without its sensors is an alarm that cannot ring.",
        "parameters": [],
        "summary": "Place an order",
        "tags": [
          "TeleMarket"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_order",
        "x-required-scope": "market:buy",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/surveys/campaigns": {
      "post": {
        "description": "Asks the first question of everybody on the audience; the rest follow as they answer.",
        "parameters": [],
        "summary": "Send a survey",
        "tags": [
          "TeleSurvey"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_create_campaign",
        "x-required-scope": "campaign:manage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/verify/verifications/{id}/check": {
      "post": {
        "description": "Answers 200 with `approved` or `denied` and a reason — a wrong code is an answer, not a failed request. A code works once; an approved verification cannot be approved again.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Check a code",
        "tags": [
          "TeleAuth"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_check",
        "x-required-scope": "verify:check",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/telechat/conversations/{id}/voice": {
      "post": {
        "description": "A recording, with `seconds` from whatever recorded it. Audio only: anything else is refused rather than stored as something no client can play.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Send a voice message",
        "tags": [
          "TeleChat"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_create_voice_message",
        "x-required-scope": "chat:write",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/calls/events": {
      "post": {
        "description": "Infrastructure token. `started`, `answered` or `ended`, keyed on the switch's own call id. This is what turns a call into a record with a duration and a cost.",
        "parameters": [],
        "summary": "A call event from the switch",
        "tags": [
          "Platform"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_call_event",
        "x-required-scope": "infrastructure token",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/assistants/{product}/ask": {
      "post": {
        "description": "`question`, and `context` for what the caller already has on the screen. It answers and suggests; it never acts. Charged as one assistant message, half price on your own provider key, and every answer says a model wrote it.",
        "parameters": [
          {
            "in": "path",
            "name": "product",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Ask a product's assistant",
        "tags": [
          "Platform"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_ask_product_assistant",
        "x-required-scope": "ai:use",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/teletv/orders/{id}": {
      "get": {
        "description": "Every state change, in order.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "One order and its history",
        "tags": [
          "TeleTV"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_order",
        "x-required-scope": "resale:read"
      },
      "delete": {
        "description": "Asked of the operator, then recorded.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Cancel an order",
        "tags": [
          "TeleTV"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "delete_cancel_order",
        "x-required-scope": "resale:sell"
      }
    },
    "/api/v1/telechat/conversations/{id}/archive/{day}": {
      "get": {
        "description": "The messages of one archived day, fetched from the organisation's storage and decrypted for the caller.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "day",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Read an archived day",
        "tags": [
          "TeleChat"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_archive_messages",
        "x-required-scope": "chat:read"
      }
    },
    "/api/v1/partners/agreements": {
      "get": {
        "description": "What was actually signed, which is frequently not what the programme advertised. Credentials are never returned.",
        "parameters": [],
        "summary": "Agreements this organisation holds",
        "tags": [
          "Platform"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_agreements",
        "x-required-scope": "partner:read"
      }
    },
    "/api/v1/telestream/broadcasts/{id}/products": {
      "get": {
        "description": "In the order the seller put them in, with whichever is pinned flagged.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "What is for sale",
        "tags": [
          "TeleStream"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_products",
        "x-required-scope": "stream:read"
      },
      "post": {
        "description": "`price_cents` and `currency` are required. Live commerce runs on urgency, and urgency with the price hidden until checkout is a trap rather than a feature. Refused with `commerce_not_enabled` when the channel has no shop switched on.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Put something on sale",
        "tags": [
          "TeleStream"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_put_product",
        "x-required-scope": "stream:broadcast",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/telephones/orders/{id}": {
      "get": {
        "description": "Every state change, in order.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "One order and its history",
        "tags": [
          "TelePhones"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_order",
        "x-required-scope": "resale:read"
      },
      "delete": {
        "description": "Asked of the supplier, then recorded.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Cancel an order",
        "tags": [
          "TelePhones"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "delete_cancel_order",
        "x-required-scope": "resale:sell"
      }
    },
    "/api/v1/telecash/messages/{id}": {
      "get": {
        "description": "The words of an inbound text, by the `message_id` in an `sms.received` webhook. The webhook names the message and never carries its words, because deliveries are stored and replayable while message bodies are kept encrypted. Readable for 30 minutes after it arrived; older texts are the console's business.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "A text a customer sent",
        "tags": [
          "TeleCash"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_show_message",
        "x-required-scope": "cash:read"
      }
    },
    "/api/v1/telestream/broadcasts/{id}/products/{product_id}/pin": {
      "post": {
        "description": "One at a time, in one transaction, so there is no moment where the stream is showing two prices.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "product_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Put one product on screen",
        "tags": [
          "TeleStream"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_pin_product",
        "x-required-scope": "stream:broadcast",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/verify/check": {
      "post": {
        "description": "The same check against whatever is outstanding for a telephone number, for callers who know the number rather than our id.",
        "parameters": [],
        "summary": "Check by number",
        "tags": [
          "TeleAuth"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_check_number",
        "x-required-scope": "verify:check",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/marketing/campaigns": {
      "get": {
        "description": "Marketing campaigns and their state.",
        "parameters": [],
        "summary": "List campaigns",
        "tags": [
          "TeleMarketing"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_list_campaigns",
        "x-required-scope": "campaign:read"
      },
      "post": {
        "description": "A message and an audience. Marketing insists on opt-in and obeys quiet hours unless you say otherwise; `{{name}}` and anything else you stored about a person is filled in per message, and a message with a gap nothing fills is not sent to that person.",
        "parameters": [],
        "summary": "Create a campaign",
        "tags": [
          "TeleMarketing"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_create_campaign",
        "x-required-scope": "campaign:manage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/realtime/rooms/{room}/peers": {
      "get": {
        "description": "Participant rows for one of this tenant's rooms — peer id, name, role, admitted or waiting — with what each is publishing on the SFU and whether it is paused. The roster a host control is aimed from.",
        "parameters": [
          {
            "in": "path",
            "name": "room",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Who is in a room",
        "tags": [
          "Platform"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_peers",
        "x-required-scope": "meeting:manage"
      }
    },
    "/api/v1/meetings/by-pin/{pin}": {
      "get": {
        "description": "Used by the telephony switch. Authenticated with the infrastructure token, not an API key.",
        "parameters": [
          {
            "in": "path",
            "name": "pin",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Resolve a dial-in PIN",
        "tags": [
          "Switch"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_meeting_by_pin",
        "x-required-scope": "infrastructure token",
        "security": [
          {
            "infraToken": []
          }
        ]
      }
    },
    "/api/v1/telestream/broadcasts/{id}/viewers": {
      "get": {
        "description": "The samples, so a chart can show whether people arrived and stayed or arrived and left. A peak alone cannot tell you which.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "The audience over time",
        "tags": [
          "TeleStream"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_samples",
        "x-required-scope": "stream:read"
      },
      "post": {
        "description": "Reported by whoever is counting at the edge; the peak is stamped here as it is passed. Nothing estimates this number, because it is the one capacity is bought against.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "How many are watching",
        "tags": [
          "TeleStream"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_viewers",
        "x-required-scope": "stream:broadcast",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/telecash/summary": {
      "get": {
        "description": "What moved in the last day, and how many alerts have not gone out.",
        "parameters": [],
        "summary": "Today",
        "tags": [
          "TeleCash"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_summary",
        "x-required-scope": "cash:read"
      }
    },
    "/api/v1/share/accounts/{provider}": {
      "delete": {
        "description": "The row goes and the token with it. Not disabled: a credential we were asked to stop holding is not kept in case somebody comes back.",
        "parameters": [
          {
            "in": "path",
            "name": "provider",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Disconnect an account",
        "tags": [
          "Platform"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "delete_disconnect_share_account",
        "x-required-scope": "share:manage"
      }
    },
    "/api/v1/products": {
      "get": {
        "description": "The product line, what each one is for, which tiers it has, and which of them this tenant's plan actually includes. Read this rather than hard-coding the list.",
        "parameters": [],
        "summary": "The product line",
        "tags": [
          "Platform"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_list_products",
        "x-required-scope": "tenant:read"
      }
    },
    "/api/v1/ecommerce/rules": {
      "get": {
        "description": "What gets said when an order reaches a state.",
        "parameters": [],
        "summary": "List rules",
        "tags": [
          "TeleEcommerce"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_list_rules",
        "x-required-scope": "campaign:read"
      },
      "put": {
        "description": "One message per status. `channel` may be `sms` or `whatsapp`; a WhatsApp rule needs an approved template, and `fallback_channel` says what to do when WhatsApp cannot carry it — without one, nothing is sent rather than quietly switching channel.",
        "parameters": [],
        "summary": "Set a rule",
        "tags": [
          "TeleEcommerce"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "put_put_rule",
        "x-required-scope": "campaign:manage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/teledesk/tickets": {
      "get": {
        "description": "Help desk tickets for this tenant.",
        "parameters": [],
        "summary": "List tickets",
        "tags": [
          "TeleDesk"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_list_tickets",
        "x-required-scope": "helpdesk:read"
      },
      "post": {
        "description": "Routed to a queue by the same rules a ticket opened by a person would be.",
        "parameters": [],
        "summary": "Open a ticket",
        "tags": [
          "TeleDesk"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_create_ticket",
        "x-required-scope": "helpdesk:respond",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/status": {
      "get": {
        "description": "What this key can reach, and whether the platform is healthy.",
        "parameters": [],
        "summary": "Platform status",
        "tags": [
          "Platform"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_status",
        "x-required-scope": "tenant:read"
      }
    },
    "/api/v1/teleexpo/demos/{id}/questions": {
      "get": {
        "description": "The audience's questions, most upvoted first, with the answers given.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Questions asked",
        "tags": [
          "TeleExpo"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_demo_questions",
        "x-required-scope": "demo:read"
      }
    },
    "/api/v1/meetings/{id}/phone-legs": {
      "post": {
        "description": "Used by the conference bridge. Admits a caller and answers with the RTP addresses for their leg, or 202 when the host has not admitted them yet.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Join a meeting by telephone",
        "tags": [
          "Switch"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_meeting_phone_leg",
        "x-required-scope": "infrastructure token",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/telestream/broadcasts/{id}/messages": {
      "get": {
        "description": "Hidden lines are left out unless `moderator=true`, which needs `stream:moderate`.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "The chat",
        "tags": [
          "TeleStream"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_messages",
        "x-required-scope": "stream:read"
      },
      "post": {
        "description": "Needs only `stream:read`: a viewer is the point of a chat. Slow mode is enforced per author — a viewer with two tabs is one author — and a refusal says how many seconds are left rather than dropping the message.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Say something",
        "tags": [
          "TeleStream"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_say",
        "x-required-scope": "stream:read",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/workflows": {
      "get": {
        "description": "What runs on its own in this tenant.",
        "parameters": [],
        "summary": "List automations",
        "tags": [
          "Automation"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_list_workflows",
        "x-required-scope": "automation:read"
      }
    },
    "/api/v1/telecash/transactions/{reference}": {
      "get": {
        "description": "Including the counterparty, which is encrypted at rest.",
        "parameters": [
          {
            "in": "path",
            "name": "reference",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "One movement",
        "tags": [
          "TeleCash"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_show_transaction",
        "x-required-scope": "cash:read"
      }
    },
    "/api/v1/booking/rules": {
      "get": {
        "description": "What is said at each state of a stay.",
        "parameters": [],
        "summary": "List rules",
        "tags": [
          "TeleBooking"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_list_rules",
        "x-required-scope": "campaign:read"
      },
      "put": {
        "description": "One message per status, per channel.",
        "parameters": [],
        "summary": "Set a rule",
        "tags": [
          "TeleBooking"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "put_put_rule",
        "x-required-scope": "campaign:manage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/telehome/bundle": {
      "get": {
        "description": "What is on it, what it costs a month, and — if there is none — which bundle this account could take.",
        "parameters": [],
        "summary": "Your bundle",
        "tags": [
          "TeleHome"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_show",
        "x-required-scope": "bundle:read"
      },
      "delete": {
        "description": "The row stays, with the date. The charging stops.",
        "parameters": [],
        "summary": "Give it up",
        "tags": [
          "TeleHome"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "delete_cancel",
        "x-required-scope": "bundle:manage"
      },
      "post": {
        "description": "Refused for a company account: TeleHome is a household and TeleBusiness is premises, and selling either to the other is selling the wrong shape of thing.",
        "parameters": [],
        "summary": "Take TeleHome",
        "tags": [
          "TeleHome"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_subscribe",
        "x-required-scope": "bundle:manage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/markets/markets": {
      "get": {
        "description": "Everything anybody here is watching.",
        "parameters": [],
        "summary": "Markets",
        "tags": [
          "TeleMarkets"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_markets",
        "x-required-scope": "campaign:read"
      }
    },
    "/api/v1/marketing/campaigns/{id}/send": {
      "post": {
        "description": "The audience is fixed at this moment; people added later are not caught up in it.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Send it",
        "tags": [
          "TeleMarketing"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_launch_campaign",
        "x-required-scope": "campaign:manage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/realtime/rooms/{room}/recording": {
      "delete": {
        "description": "Closes the recording; hand it over with the recordings API.",
        "parameters": [
          {
            "in": "path",
            "name": "room",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Stop recording a room",
        "tags": [
          "Platform"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "delete_stop_recording",
        "x-required-scope": "meeting:record"
      },
      "post": {
        "description": "Server-side recording. Refused with the reason unless the tenant enabled it, the plan includes it and the meeting was created with `record_server_side`.",
        "parameters": [
          {
            "in": "path",
            "name": "room",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Start recording a room",
        "tags": [
          "Platform"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_start_recording",
        "x-required-scope": "meeting:record",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/telecenter/calls/{id}/answer": {
      "post": {
        "description": "The wait is measured here and stamped against the queue's own promise, once. Nothing recomputes a service level later from averages.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "The agent picked up",
        "tags": [
          "TeleCenter"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_answer",
        "x-required-scope": "center:work",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/assistants": {
      "get": {
        "description": "Each product has its own: what it is for, what it can do, what it refuses, and the questions worth asking it first. Only products on this plan are listed.",
        "parameters": [],
        "summary": "The assistants, one per product",
        "tags": [
          "Platform"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_list_product_assistants",
        "x-required-scope": "ai:use"
      }
    },
    "/api/v1/markets/watchers": {
      "get": {
        "description": "One row per person per market, with the condition each was last told about.",
        "parameters": [],
        "summary": "Who is watching what",
        "tags": [
          "TeleMarkets"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_watchers",
        "x-required-scope": "campaign:read"
      },
      "put": {
        "description": "`market` is the thing — an instrument, a commodity, a supply line — and `customer` is the telephone that hears about it. Idempotent per person per market, so a client retrying a sign-up does not create two.",
        "parameters": [],
        "summary": "Register a watch",
        "tags": [
          "TeleMarkets"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "put_watch",
        "x-required-scope": "campaign:manage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/telebusiness/addons": {
      "get": {
        "description": "Seats, sites, campaigns, storage and numbers.",
        "parameters": [],
        "summary": "What can be added",
        "tags": [
          "TeleBusiness"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_addons",
        "x-required-scope": "bundle:read"
      },
      "post": {
        "description": "Charged from the month it is added.",
        "parameters": [],
        "summary": "Add a paid line",
        "tags": [
          "TeleBusiness"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_add",
        "x-required-scope": "bundle:manage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/invoices/invoices": {
      "get": {
        "description": "Sent, viewed, due, paid, late.",
        "parameters": [],
        "summary": "List invoices",
        "tags": [
          "TeleInvoices"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_list_objects",
        "x-required-scope": "campaign:read"
      },
      "post": {
        "description": "Put the payment link in `attributes` and name it in the rule's body — the message that gets paid is the one somebody can pay from.",
        "parameters": [],
        "summary": "Record or update an invoice",
        "tags": [
          "TeleInvoices"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_track_object",
        "x-required-scope": "campaign:manage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/teleinternet/orders/{id}": {
      "get": {
        "description": "Every state change and every message from the partner, in order — because a line that took three weeks is a story somebody has to tell a customer.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "One order and its history",
        "tags": [
          "TeleInternet"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_order",
        "x-required-scope": "resale:read"
      },
      "delete": {
        "description": "The provider is asked first where they allow it, then the order is marked cancelled. A cancellation recorded but never received is a service that keeps being billed.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Cancel an order",
        "tags": [
          "TeleInternet"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "delete_cancel_order",
        "x-required-scope": "resale:sell"
      }
    },
    "/api/v1/alerts/{id}/recipients": {
      "get": {
        "description": "And who has replied to say they are on it.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Who was alerted",
        "tags": [
          "TeleAlert"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_campaign_recipients",
        "x-required-scope": "campaign:read"
      }
    },
    "/api/v1/ecommerce/orders/{reference}": {
      "get": {
        "description": "Including the history of what it has been.",
        "parameters": [
          {
            "in": "path",
            "name": "reference",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "One order",
        "tags": [
          "TeleEcommerce"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_show_object",
        "x-required-scope": "campaign:read"
      }
    },
    "/api/v1/reports/{reference}": {
      "get": {
        "description": "Including what was written.",
        "parameters": [
          {
            "in": "path",
            "name": "reference",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "One report",
        "tags": [
          "TeleCrime"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_show_report",
        "x-required-scope": "report:read"
      },
      "post": {
        "description": "received, acknowledged, investigating, closed.",
        "parameters": [
          {
            "in": "path",
            "name": "reference",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Move a report along",
        "tags": [
          "TeleCrime"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_update_report",
        "x-required-scope": "report:read",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/telestream/broadcasts/{id}/stats": {
      "get": {
        "description": "Ingest seconds and viewer seconds are reported separately because they are billed separately, and an invoice should be checkable against this.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "The numbers for one broadcast",
        "tags": [
          "TeleStream"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_stats",
        "x-required-scope": "stream:read"
      }
    },
    "/api/v1/marketing/campaigns/{id}/cancel": {
      "post": {
        "description": "Stops it for good.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Cancel",
        "tags": [
          "TeleMarketing"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_cancel_campaign",
        "x-required-scope": "campaign:manage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/transit/departures": {
      "put": {
        "description": "Keyed on stop, line and timetabled time, so pushing the same board every thirty seconds updates it rather than duplicating it. `expected_at` is what you now believe, and is what riders are told.",
        "parameters": [],
        "summary": "Upload departures",
        "tags": [
          "TeleTransit"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "put_put_departures",
        "x-required-scope": "textin:manage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/telecall/calls": {
      "get": {
        "description": "In-app audio calls this key can see, most recent first.",
        "parameters": [],
        "summary": "List TeleCall calls",
        "tags": [
          "TeleCall"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_list_app_calls",
        "x-required-scope": "voice:read"
      },
      "post": {
        "description": "Rings another account over WebRTC. No number is dialled and no carrier is involved, so there is no per-minute charge; pass `to_user_id`. For a call to a telephone, use TeleVoip instead.",
        "parameters": [],
        "summary": "Place an in-app call",
        "tags": [
          "TeleCall"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_start_app_call",
        "x-required-scope": "voice:call",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/health/events/{id}": {
      "get": {
        "description": "With the reading, for somebody allowed to see it.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "One event",
        "tags": [
          "TeleHealth"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_show_event",
        "x-required-scope": "device:read"
      }
    },
    "/api/v1/telechat/attachment-policy": {
      "get": {
        "description": "Allowed content types and extensions, the size ceiling per class, and how long a voice message may run. Published so an integration can refuse a file before uploading it.",
        "parameters": [],
        "summary": "What may be attached",
        "tags": [
          "TeleChat"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_attachment_policy",
        "x-required-scope": "chat:read"
      }
    },
    "/api/v1/marketing/campaigns/{id}": {
      "get": {
        "description": "Sent, delivered, failed, skipped, replied.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "A campaign and its numbers",
        "tags": [
          "TeleMarketing"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_show_campaign",
        "x-required-scope": "campaign:read"
      }
    },
    "/api/v1/telestream/broadcasts": {
      "get": {
        "description": "Filter with `status` (`scheduled`, `live`, `ended`, `failed`) and `channel_id`. `failed` means it went live and no video ever arrived — distinct from `ended`, because \"nobody watched\" and \"it was never on\" call for opposite responses.",
        "parameters": [],
        "summary": "Broadcasts, newest first",
        "tags": [
          "TeleStream"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_broadcasts",
        "x-required-scope": "stream:read"
      },
      "post": {
        "description": "`record` is decided here, while nobody is watching, and is refused afterwards. A recording switch that can be flipped mid-stream records people who were told it was off.",
        "parameters": [],
        "summary": "Schedule a broadcast",
        "tags": [
          "TeleStream"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_schedule",
        "x-required-scope": "stream:broadcast",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/marketing/campaigns/{id}/pause": {
      "post": {
        "description": "What has gone has gone; what has not, will not until it is sent again.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Pause",
        "tags": [
          "TeleMarketing"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_pause_campaign",
        "x-required-scope": "campaign:manage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/teleinternet/orders": {
      "get": {
        "description": "This organisation's orders for broadband, newest first.",
        "parameters": [],
        "summary": "Internet orders",
        "tags": [
          "TeleInternet"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_orders",
        "x-required-scope": "resale:read"
      },
      "post": {
        "description": "Needs the installation address. Refused when there is no signed agreement with the partner, when the agreement does not cover that country, or when the address came back unavailable. The price is taken from the catalogue and frozen onto the order; a price in the request is ignored.",
        "parameters": [],
        "summary": "Order a line",
        "tags": [
          "TeleInternet"
        ],
        "responses": {
          "200": {
            "description": "Done."
          },
          "201": {
            "description": "Created."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "post_place_order",
        "x-required-scope": "resale:sell",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/marketing/campaigns/{id}/recipients": {
      "get": {
        "description": "Per person: what happened, and if they were skipped, why.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "summary": "Who it reached",
        "tags": [
          "TeleMarketing"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_campaign_recipients",
        "x-required-scope": "campaign:read"
      }
    },
    "/api/v1/partners": {
      "get": {
        "description": "Filterable by `market`, `domain`, `model` and `white_label=true` — the last being the shortlist of programmes documented as allowing our own brand on their service. `resale_permitted`, `markup_permitted` and `has_api` are separate fields on purpose: **API access is not resale authorisation**, and a provider with an excellent API whose terms forbid a markup is a supplier of capacity rather than a product.",
        "parameters": [],
        "summary": "The partner programmes we know about",
        "tags": [
          "Platform"
        ],
        "responses": {
          "200": {
            "description": "The requested resource."
          },
          "401": {
            "description": "No valid key was presented."
          },
          "403": {
            "description": "The key does not hold the required scope."
          }
        },
        "operationId": "get_partners",
        "x-required-scope": "partner:read"
      }
    }
  },
  "openapi": "3.1.0",
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "servers": [
    {
      "description": "This deployment",
      "url": "https://telenaas.com"
    }
  ]
}