{
  "openapi": "3.0.0",
  "info": {
    "title": "VoipBin API",
    "version": "1.0.0",
    "x-logo": {
      "url": "https://github.com/pchero/voipbin/blob/master/logos/voipbin-high-resolution-logo-black-transparent.png?raw=true",
      "backgroundColor": "#FFFFFF",
      "altText": "voipbin",
      "href": "https://api.voipbin.net/docs/"
    }
  },
  "servers": [
    {
      "url": "https://api.voipbin.net/v1.0"
    }
  ],
  "tags": [
    {
      "name": "Auth",
      "description": "Authentication operations",
      "externalDocs": {
        "description": "Find more about authentication",
        "url": "https://api.voipbin.net/docs/auth.html"
      }
    },
    {
      "name": "Accesskey",
      "description": "Operations related to accesskey",
      "externalDocs": {
        "description": "Find more about accesskey",
        "url": "https://api.voipbin.net/docs/accesskey.html"
      }
    },
    {
      "name": "Activeflow",
      "description": "Operations related to activeflow",
      "externalDocs": {
        "description": "Find more about activeflow",
        "url": "https://api.voipbin.net/docs/activeflow.html"
      }
    },
    {
      "name": "Agent",
      "description": "Operations related to agent",
      "externalDocs": {
        "description": "Find more about agent",
        "url": "https://api.voipbin.net/docs/agent.html"
      }
    },
    {
      "name": "Billing",
      "description": "Operations related to billing",
      "externalDocs": {
        "description": "Find more about billing",
        "url": "https://api.voipbin.net/docs/billing_account.html"
      }
    },
    {
      "name": "Call",
      "description": "Operations related to call",
      "externalDocs": {
        "description": "Find more about call",
        "url": "https://api.voipbin.net/docs/call.html"
      }
    },
    {
      "name": "Campaign",
      "description": "Operations related to campaign",
      "externalDocs": {
        "description": "Find more about campaign",
        "url": "https://api.voipbin.net/docs/campaign.html"
      }
    },
    {
      "name": "AI",
      "description": "Operations related to ai",
      "externalDocs": {
        "description": "Find more about ai",
        "url": "https://api.voipbin.net/docs/ai.html"
      }
    },
    {
      "name": "Conference",
      "description": "Operations related to conference",
      "externalDocs": {
        "description": "Find more about conference",
        "url": "https://api.voipbin.net/docs/conference.html"
      }
    },
    {
      "name": "Conversation",
      "description": "Operations related to conversation",
      "externalDocs": {
        "description": "Find more about conversation",
        "url": "https://api.voipbin.net/docs/conversation.html"
      }
    },
    {
      "name": "Customer",
      "description": "Operations related to customer",
      "externalDocs": {
        "description": "Find more about customer",
        "url": "https://api.voipbin.net/docs/customer.html"
      }
    },
    {
      "name": "Extension",
      "description": "Operations related to extension",
      "externalDocs": {
        "description": "Find more about extension",
        "url": "https://api.voipbin.net/docs/extension.html"
      }
    },
    {
      "name": "File",
      "description": "Operations related to file"
    },
    {
      "name": "Flow",
      "description": "Operations related to flow",
      "externalDocs": {
        "description": "Find more about flow",
        "url": "https://api.voipbin.net/docs/flow.html"
      }
    },
    {
      "name": "Groupcall",
      "description": "Operations related to groupcall",
      "externalDocs": {
        "description": "Find more about groupcall",
        "url": "https://api.voipbin.net/docs/groupcall.html"
      }
    },
    {
      "name": "Me",
      "description": "Operations related to myself data"
    },
    {
      "name": "Message",
      "description": "Operations related to message",
      "externalDocs": {
        "description": "Find more about message",
        "url": "https://api.voipbin.net/docs/message.html"
      }
    },
    {
      "name": "Number",
      "description": "Operations related to number",
      "externalDocs": {
        "description": "Find more about number",
        "url": "https://api.voipbin.net/docs/number.html"
      }
    },
    {
      "name": "Outdial",
      "description": "Operations related to outdial",
      "externalDocs": {
        "description": "Find more about outdial",
        "url": "https://api.voipbin.net/docs/outdial.html"
      }
    },
    {
      "name": "Outplan",
      "description": "Operations related to outplan",
      "externalDocs": {
        "description": "Find more about outplan",
        "url": "https://api.voipbin.net/docs/outplan.html"
      }
    },
    {
      "name": "Provider",
      "description": "Operations related to provider",
      "externalDocs": {
        "description": "Find more about provider",
        "url": "https://api.voipbin.net/docs/provider.html"
      }
    },
    {
      "name": "Queue",
      "description": "Operations related to queue",
      "externalDocs": {
        "description": "Find more about queue",
        "url": "https://api.voipbin.net/docs/queue.html"
      }
    },
    {
      "name": "Recording",
      "description": "Operations related to recording",
      "externalDocs": {
        "description": "Find more about recording",
        "url": "https://api.voipbin.net/docs/recording.html"
      }
    },
    {
      "name": "Route",
      "description": "Operations related to route",
      "externalDocs": {
        "description": "Find more about route",
        "url": "https://api.voipbin.net/docs/route.html"
      }
    },
    {
      "name": "Service Agent",
      "description": "Operations related to individual agent service"
    },
    {
      "name": "Speaking",
      "description": "Operations related to real-time streaming TTS sessions"
    },
    {
      "name": "Storage",
      "description": "Operations related to storage",
      "externalDocs": {
        "description": "Find more about storage",
        "url": "https://api.voipbin.net/docs/storage.html"
      }
    },
    {
      "name": "Tag",
      "description": "Operations related to tag",
      "externalDocs": {
        "description": "Find more about tag",
        "url": "https://api.voipbin.net/docs/tag.html"
      }
    },
    {
      "name": "Transcribe",
      "description": "Operations related to transcribe",
      "externalDocs": {
        "description": "Find more about transcribe",
        "url": "https://api.voipbin.net/docs/transcribe.html"
      }
    },
    {
      "name": "Transfer",
      "description": "Operations related to transfer",
      "externalDocs": {
        "description": "Find more about transfer",
        "url": "https://api.voipbin.net/docs/transfer.html"
      }
    },
    {
      "name": "Trunk",
      "description": "Operations related to trunk",
      "externalDocs": {
        "description": "Find more about trunk",
        "url": "https://api.voipbin.net/docs/trunk.html"
      }
    },
    {
      "name": "Websocket",
      "description": "Operations related to websocket",
      "externalDocs": {
        "description": "Find more about websocket",
        "url": "https://api.voipbin.net/docs/websocket.html"
      }
    },
    {
      "name": "Timeline",
      "description": "Operations related to timeline events"
    },
    {
      "name": "RAG",
      "description": "Operations related to RAG (Retrieval-Augmented Generation)"
    },
    {
      "name": "Team",
      "description": "Team operations",
      "externalDocs": {
        "description": "Team Tutorial",
        "url": "https://api.voipbin.net/docs/team_overview.html"
      }
    }
  ],
  "paths": {
    "/accesskeys": {
      "get": {
        "summary": "Get list of accesskeys",
        "description": "Get accesskeys of the customer",
        "tags": [
          "Accesskey"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/PageToken"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/CommonPagination"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "result": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/CustomerManagerAccesskey"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Create a new accesskey.",
        "description": "Create a new accesskey.",
        "tags": [
          "Accesskey"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "detail": {
                    "type": "string"
                  },
                  "expire": {
                    "type": "integer",
                    "format": "int"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerManagerAccesskey"
                }
              }
            }
          }
        }
      }
    },
    "/accesskeys/{id}": {
      "get": {
        "summary": "Get details of an accesskey",
        "tags": [
          "Accesskey"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the accesskey",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Accesskey details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerManagerAccesskey"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete an accesskey",
        "tags": [
          "Accesskey"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the accesskey",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Accesskey deleted successfully"
          }
        }
      },
      "put": {
        "summary": "Update an accesskey",
        "tags": [
          "Accesskey"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the accesskey",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "detail": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Accesskey updated successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerManagerAccesskey"
                }
              }
            }
          }
        }
      }
    },
    "/activeflows": {
      "post": {
        "summary": "Create a new activeflow",
        "description": "Endpoint to create a new activeflow.",
        "tags": [
          "Activeflow"
        ],
        "requestBody": {
          "description": "Request body to create a new activeflow.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "ID of the activeflow."
                  },
                  "flow_id": {
                    "type": "string",
                    "description": "Flow id of."
                  },
                  "actions": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/FlowManagerAction"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "activeflow created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FlowManagerActiveflow"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input. One of `flow_id` or `actions` is required."
          }
        }
      },
      "get": {
        "summary": "List all activeflows",
        "description": "Retrieve a list of all activeflows.",
        "tags": [
          "Activeflow"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/PageToken"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/CommonPagination"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "result": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/FlowManagerActiveflow"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Server error."
          }
        }
      }
    },
    "/activeflows/{id}": {
      "delete": {
        "summary": "Delete an activeflow",
        "description": "Endpoint to delete an activeflow by its ID.",
        "tags": [
          "Activeflow"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The ID of the activeflow to delete."
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Activeflow deleted successfully."
          },
          "404": {
            "description": "Flow not found."
          }
        }
      },
      "get": {
        "summary": "Get an activeflow by ID",
        "description": "Retrieve details of a specific flow.",
        "tags": [
          "Activeflow"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The ID of the activeflow."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Activeflow details retrieved successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FlowManagerActiveflow"
                }
              }
            }
          },
          "404": {
            "description": "Flow not found."
          }
        }
      }
    },
    "/activeflows/{id}/stop": {
      "post": {
        "summary": "Stop an activeflow",
        "description": "Endpoint to stop an activeflow by its ID.",
        "tags": [
          "Activeflow"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The ID of the activeflow to stop."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Activeflow stopped successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FlowManagerActiveflow"
                }
              }
            }
          },
          "400": {
            "description": "Unable to stop the flow."
          },
          "404": {
            "description": "Flow not found."
          }
        }
      }
    },
    "/agents": {
      "get": {
        "summary": "List agents",
        "description": "Get agents of the user.",
        "tags": [
          "Agent"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/PageToken"
          },
          {
            "name": "tag_ids",
            "in": "query",
            "description": "Comma separated tag ids.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Agent status.",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/AgentManagerAgentStatus"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/CommonPagination"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "result": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/AgentManagerAgent"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Create a new agent",
        "description": "Endpoint to create a new agent.",
        "tags": [
          "Agent"
        ],
        "requestBody": {
          "description": "Request body to create a new agent.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "username": {
                    "type": "string"
                  },
                  "password": {
                    "type": "string"
                  },
                  "name": {
                    "type": "string"
                  },
                  "detail": {
                    "type": "string"
                  },
                  "ring_method": {
                    "$ref": "#/components/schemas/AgentManagerAgentRingMethod"
                  },
                  "permission": {
                    "$ref": "#/components/schemas/AgentManagerAgentPermission"
                  },
                  "tag_ids": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "addresses": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/CommonAddress"
                    }
                  }
                },
                "required": [
                  "username",
                  "password",
                  "name",
                  "detail",
                  "ring_method",
                  "permission",
                  "tag_ids",
                  "addresses"
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Agent created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentManagerAgent"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input."
          }
        }
      }
    },
    "/agents/{id}": {
      "get": {
        "summary": "Get the agent",
        "description": "Get the agent of the given ID.",
        "tags": [
          "Agent"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the agent.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentManagerAgent"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete the agent",
        "description": "Delete the agent of the given ID.",
        "tags": [
          "Agent"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the agent.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentManagerAgent"
                }
              }
            }
          }
        }
      },
      "put": {
        "summary": "Update an agent",
        "description": "Update an agent and return updated details.",
        "tags": [
          "Agent"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the agent.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "detail": {
                    "type": "string"
                  },
                  "ring_method": {
                    "$ref": "#/components/schemas/AgentManagerAgentRingMethod"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentManagerAgent"
                }
              }
            }
          }
        }
      }
    },
    "/agents/{id}/addresses": {
      "put": {
        "summary": "Update an agent's addresses",
        "description": "Update an agent's addresses and return updated details.",
        "tags": [
          "Agent"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the agent.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "addresses": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/CommonAddress"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentManagerAgent"
                }
              }
            }
          }
        }
      }
    },
    "/agents/{id}/tag_ids": {
      "put": {
        "summary": "Update an agent's tag IDs",
        "description": "Update an agent's tag IDs and return updated details.",
        "tags": [
          "Agent"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the agent.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "tag_ids": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentManagerAgent"
                }
              }
            }
          }
        }
      }
    },
    "/agents/{id}/permission": {
      "put": {
        "summary": "Update an agent's permission",
        "description": "Update an agent's permission and return updated details.",
        "tags": [
          "Agent"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the agent.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "permission": {
                    "$ref": "#/components/schemas/AgentManagerAgentPermission"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentManagerAgent"
                }
              }
            }
          }
        }
      }
    },
    "/agents/{id}/status": {
      "put": {
        "summary": "Update an agent's status",
        "description": "Update an agent's status and return updated details.",
        "tags": [
          "Agent"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the agent.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "status": {
                    "$ref": "#/components/schemas/AgentManagerAgentStatus"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentManagerAgent"
                }
              }
            }
          }
        }
      }
    },
    "/agents/{id}/password": {
      "put": {
        "summary": "Update an agent's password",
        "description": "Update an agent's password and return updated details.",
        "tags": [
          "Agent"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the agent.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "password": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentManagerAgent"
                }
              }
            }
          }
        }
      }
    },
    "/agents/{id}/direct-hash-regenerate": {
      "post": {
        "summary": "Regenerate direct hash for agent",
        "description": "Regenerates the direct hash for the specified agent. If no direct hash exists, one is created. Returns the updated agent with the new direct_hash.",
        "tags": [
          "Agent"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "550e8400-e29b-41d4-a716-446655440000"
            },
            "description": "The unique identifier of the agent. Returned from the `GET /agents` response."
          }
        ],
        "responses": {
          "200": {
            "description": "Direct hash regenerated successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentManagerAgent"
                }
              }
            }
          },
          "400": {
            "description": "Unable to regenerate direct hash."
          }
        }
      }
    },
    "/aimessages/{id}": {
      "get": {
        "summary": "Retrieve details of a aicall message",
        "description": "Fetches detailed information about a specific aicall message by ID.",
        "tags": [
          "AI"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The ID of the aicall message",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AIManagerMessage"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete a aicall message",
        "description": "Deletes a specific aicall message by ID and returns its details.",
        "tags": [
          "AI"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The ID of the aicall message",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AIManagerMessage"
                }
              }
            }
          }
        }
      }
    },
    "/aimessages": {
      "get": {
        "summary": "Retrieve a list of aicall messages",
        "description": "Fetches a paginated list of aicall messages.",
        "tags": [
          "AI"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/PageToken"
          },
          {
            "name": "aicall_id",
            "in": "query",
            "description": "The aicall id.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A list of aicall messages.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/CommonPagination"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "result": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/AIManagerMessage"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Send a aicall message",
        "description": "Creates and send a new aicall message and returns the details of the created message.",
        "tags": [
          "AI"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "aicall_id": {
                    "type": "string"
                  },
                  "role": {
                    "$ref": "#/components/schemas/AIManagerMessageRole"
                  },
                  "content": {
                    "type": "string"
                  }
                },
                "required": [
                  "aicall_id",
                  "role",
                  "content"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AIManagerMessage"
                }
              }
            }
          }
        }
      }
    },
    "/aicalls/{id}": {
      "get": {
        "summary": "Get details of a specific ai call",
        "description": "Retrieves detailed information about a ai call identified by its ID.",
        "tags": [
          "AI"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the ai call."
          }
        ],
        "responses": {
          "200": {
            "description": "Details of the specified ai call.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AIManagerAIcall"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete a specific ai call",
        "description": "Deletes a ai call identified by its ID.",
        "tags": [
          "AI"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the ai call."
          }
        ],
        "responses": {
          "200": {
            "description": "The aicall was successfully deleted.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AIManagerAIcall"
                }
              }
            }
          }
        }
      }
    },
    "/aicalls": {
      "get": {
        "summary": "Gets a list of ai calls",
        "description": "Retrieves a paginated list of ai calls based on the provided query parameters.",
        "tags": [
          "AI"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/PageToken"
          }
        ],
        "responses": {
          "200": {
            "description": "A list of ai calls.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/CommonPagination"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "result": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/AIManagerAIcall"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Create a new aicall.",
        "description": "Creates a new aicall and returns the created aicall's details.",
        "tags": [
          "AI"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "assistance_type": {
                    "$ref": "#/components/schemas/AIManagerAIcallAssistanceType"
                  },
                  "assistance_id": {
                    "type": "string"
                  },
                  "reference_type": {
                    "$ref": "#/components/schemas/AIManagerAIcallReferenceType"
                  },
                  "reference_id": {
                    "type": "string"
                  }
                },
                "required": [
                  "assistance_type",
                  "assistance_id",
                  "reference_type",
                  "reference_id"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Details of the created chatboaicall.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AIManagerAIcall"
                }
              }
            }
          }
        }
      }
    },
    "/ais/{id}": {
      "get": {
        "summary": "Get ai details.",
        "description": "Retrieves detailed information for a specific ai by its ID.",
        "tags": [
          "AI"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the ai."
          }
        ],
        "responses": {
          "200": {
            "description": "Details of the requested ai.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AIManagerAI"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete a ai.",
        "description": "Deletes an existing ai by its ID.",
        "tags": [
          "AI"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the ai."
          }
        ],
        "responses": {
          "200": {
            "description": "AI successfully deleted.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AIManagerAI"
                }
              }
            }
          }
        }
      },
      "put": {
        "summary": "Update a ai.",
        "description": "Updates an existing ai's details and returns the updated information.",
        "tags": [
          "AI"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the ai."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "detail": {
                    "type": "string"
                  },
                  "engine_model": {
                    "$ref": "#/components/schemas/AIManagerAIEngineModel"
                  },
                  "parameter": {
                    "type": "object",
                    "additionalProperties": true,
                    "description": "Data associated with the ai's engine, can be dynamic and vary based on the engine type."
                  },
                  "engine_key": {
                    "type": "string",
                    "description": "API key or credential for the AI engine."
                  },
                  "rag_id": {
                    "type": "string",
                    "description": "The knowledge base ID (UUID) for the search_knowledge tool. Returned from the `id` field of the `GET /rags` response. Send empty string or omit to clear."
                  },
                  "init_prompt": {
                    "type": "string"
                  },
                  "tts_type": {
                    "type": "string",
                    "description": "Text-to-speech engine type."
                  },
                  "tts_voice_id": {
                    "type": "string",
                    "description": "Voice ID for the text-to-speech engine."
                  },
                  "stt_type": {
                    "type": "string",
                    "description": "Speech-to-text engine type."
                  },
                  "stt_language": {
                    "type": "string",
                    "description": "STT language in BCP-47 format (e.g., ko-KR, en-US).",
                    "example": "en-US"
                  },
                  "vad_config": {
                    "$ref": "#/components/schemas/AIManagerVADConfig",
                    "description": "Voice Activity Detection configuration. All fields are optional."
                  },
                  "tool_names": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/AIManagerToolName"
                    },
                    "description": "List of tool names to enable for this AI. Use [\"all\"] to enable all available tools."
                  }
                },
                "required": [
                  "name",
                  "detail",
                  "engine_model",
                  "parameter",
                  "engine_key",
                  "init_prompt",
                  "tts_type",
                  "tts_voice_id",
                  "stt_type"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Details of the updated ai.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AIManagerAI"
                }
              }
            }
          }
        }
      }
    },
    "/ais/{id}/direct-hash-regenerate": {
      "post": {
        "summary": "Regenerate direct hash for AI",
        "description": "Regenerates the direct hash for the specified AI. If no direct hash exists, one is created. Returns the updated AI with the new direct_hash.",
        "tags": [
          "AI"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "550e8400-e29b-41d4-a716-446655440000"
            },
            "description": "The unique identifier of the AI. Returned from the `GET /ais` response."
          }
        ],
        "responses": {
          "200": {
            "description": "Direct hash regenerated successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AIManagerAI"
                }
              }
            }
          },
          "400": {
            "description": "Unable to regenerate direct hash."
          }
        }
      }
    },
    "/ais": {
      "get": {
        "summary": "Gets a list of ais.",
        "description": "Retrieves a paginated list of ais.",
        "tags": [
          "AI"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/PageToken"
          }
        ],
        "responses": {
          "200": {
            "description": "A list of ais.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/CommonPagination"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "result": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/AIManagerAI"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Create a new ai.",
        "description": "Creates a new ai and returns the created ai's details.",
        "tags": [
          "AI"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "detail": {
                    "type": "string"
                  },
                  "engine_model": {
                    "$ref": "#/components/schemas/AIManagerAIEngineModel"
                  },
                  "parameter": {
                    "type": "object",
                    "additionalProperties": true,
                    "description": "Data associated with the ai's engine, can be dynamic and vary based on the engine type."
                  },
                  "engine_key": {
                    "type": "string",
                    "description": "API key or credential for the AI engine."
                  },
                  "rag_id": {
                    "type": "string",
                    "description": "The knowledge base ID (UUID) for the search_knowledge tool. Returned from the `id` field of the `GET /rags` response. Send empty string or omit to clear."
                  },
                  "init_prompt": {
                    "type": "string"
                  },
                  "tts_type": {
                    "type": "string",
                    "description": "Text-to-speech engine type."
                  },
                  "tts_voice_id": {
                    "type": "string",
                    "description": "Voice ID for the text-to-speech engine."
                  },
                  "stt_type": {
                    "type": "string",
                    "description": "Speech-to-text engine type."
                  },
                  "stt_language": {
                    "type": "string",
                    "description": "STT language in BCP-47 format (e.g., ko-KR, en-US).",
                    "example": "en-US"
                  },
                  "vad_config": {
                    "$ref": "#/components/schemas/AIManagerVADConfig",
                    "description": "Voice Activity Detection configuration. All fields are optional."
                  },
                  "tool_names": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/AIManagerToolName"
                    },
                    "description": "List of tool names to enable for this AI. Use [\"all\"] to enable all available tools."
                  }
                },
                "required": [
                  "name",
                  "detail",
                  "engine_model",
                  "parameter",
                  "engine_key",
                  "init_prompt",
                  "tts_type",
                  "tts_voice_id",
                  "stt_type"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Details of the created ai.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AIManagerAI"
                }
              }
            }
          }
        }
      }
    },
    "/aisummaries/{id}": {
      "get": {
        "summary": "Get ai summary details.",
        "description": "Retrieves detailed information for a specific ai summary by its ID.",
        "tags": [
          "AI"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the ai summary."
          }
        ],
        "responses": {
          "200": {
            "description": "Details of the requested ai summary.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AIManagerSummary"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete a ai summary.",
        "description": "Deletes an existing ai summary by its ID.",
        "tags": [
          "AI"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the ai."
          }
        ],
        "responses": {
          "200": {
            "description": "AI successfully deleted.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AIManagerSummary"
                }
              }
            }
          }
        }
      }
    },
    "/aisummaries": {
      "get": {
        "summary": "Gets a list of ai summaries.",
        "description": "Retrieves a paginated list of ai summaries.",
        "tags": [
          "AI"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/PageToken"
          }
        ],
        "responses": {
          "200": {
            "description": "A list of ai summaries.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/CommonPagination"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "result": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/AIManagerSummary"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Create a new ai summary.",
        "description": "Creates a new ai summary and returns the created ai summary's details.",
        "tags": [
          "AI"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "on_end_flow_id": {
                    "type": "string",
                    "description": "The ID of the flow to be executed when the ai summary ends."
                  },
                  "reference_type": {
                    "$ref": "#/components/schemas/AIManagerSummaryReferenceType"
                  },
                  "reference_id": {
                    "type": "string",
                    "description": "The ID of the reference for the ai summary."
                  },
                  "language": {
                    "type": "string",
                    "description": "The language of the ai summary."
                  }
                },
                "required": [
                  "on_end_flow_id",
                  "reference_type",
                  "reference_id",
                  "language"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Details of the created ai summary.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AIManagerSummary"
                }
              }
            }
          }
        }
      }
    },
    "/teams/{id}": {
      "get": {
        "summary": "Get team details.",
        "description": "Retrieves detailed information for a specific team by its ID.",
        "tags": [
          "Team"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the team."
          }
        ],
        "responses": {
          "200": {
            "description": "Details of the requested team.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AIManagerTeam"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete a team.",
        "description": "Deletes an existing team by its ID.",
        "tags": [
          "Team"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the team."
          }
        ],
        "responses": {
          "200": {
            "description": "Team successfully deleted.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AIManagerTeam"
                }
              }
            }
          }
        }
      },
      "put": {
        "summary": "Update a team.",
        "description": "Updates an existing team's details and returns the updated information.",
        "tags": [
          "Team"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the team."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "Name of the team.",
                    "example": "Customer Support Team"
                  },
                  "detail": {
                    "type": "string",
                    "description": "Detailed description of the team.",
                    "example": "Multi-agent team for handling customer inquiries"
                  },
                  "start_member_id": {
                    "type": "string",
                    "format": "uuid",
                    "x-go-type": "string",
                    "description": "The member ID that starts the conversation. Must reference one of the members in the members array.",
                    "example": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
                  },
                  "members": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/AIManagerTeamMember"
                    },
                    "minItems": 1,
                    "description": "List of team members forming the graph nodes."
                  },
                  "parameter": {
                    "type": "object",
                    "additionalProperties": true,
                    "description": "Custom key-value parameter data for the team. Supports flow variable substitution at runtime.",
                    "example": {
                      "language": "en-US",
                      "department": "support"
                    }
                  }
                },
                "required": [
                  "name",
                  "detail",
                  "start_member_id",
                  "members"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Details of the updated team.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AIManagerTeam"
                }
              }
            }
          }
        }
      }
    },
    "/teams/{id}/direct-hash-regenerate": {
      "post": {
        "summary": "Regenerate direct hash for team",
        "description": "Regenerates the direct hash for the specified team. If no direct hash exists, one is created. Returns the updated team with the new direct_hash.",
        "tags": [
          "Team"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "550e8400-e29b-41d4-a716-446655440000"
            },
            "description": "The unique identifier of the team. Returned from the `GET /teams` response."
          }
        ],
        "responses": {
          "200": {
            "description": "Direct hash regenerated successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AIManagerTeam"
                }
              }
            }
          },
          "400": {
            "description": "Unable to regenerate direct hash."
          }
        }
      }
    },
    "/teams": {
      "get": {
        "summary": "Gets a list of teams.",
        "description": "Retrieves a paginated list of teams.",
        "tags": [
          "Team"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/PageToken"
          }
        ],
        "responses": {
          "200": {
            "description": "A list of teams.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/CommonPagination"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "result": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/AIManagerTeam"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Create a new team.",
        "description": "Creates a new team that composes multiple AI members into a directed graph for Pipecat Flows.",
        "tags": [
          "Team"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "Name of the team.",
                    "example": "Customer Support Team"
                  },
                  "detail": {
                    "type": "string",
                    "description": "Detailed description of the team.",
                    "example": "Multi-agent team for handling customer inquiries"
                  },
                  "start_member_id": {
                    "type": "string",
                    "format": "uuid",
                    "x-go-type": "string",
                    "description": "The member ID that starts the conversation. Must reference one of the members in the members array.",
                    "example": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
                  },
                  "members": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/AIManagerTeamMember"
                    },
                    "minItems": 1,
                    "description": "List of team members forming the graph nodes. Must contain at least one member."
                  },
                  "parameter": {
                    "type": "object",
                    "additionalProperties": true,
                    "description": "Custom key-value parameter data for the team. Supports flow variable substitution at runtime.",
                    "example": {
                      "language": "en-US",
                      "department": "support"
                    }
                  }
                },
                "required": [
                  "name",
                  "detail",
                  "start_member_id",
                  "members"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Details of the created team.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AIManagerTeam"
                }
              }
            }
          }
        }
      }
    },
    "/auth/boot": {
      "post": {
        "summary": "Generate a resource-scoped JWT from a direct hash.",
        "description": "Resolves a direct hash link and returns a resource-scoped JWT token. The token grants\nlimited access to specific resource types associated with the direct hash (e.g., aicall\nfor an AI direct hash). This endpoint is unauthenticated — the direct hash acts as the\ncredential.\n",
        "tags": [
          "Auth"
        ],
        "operationId": "postAuthBoot",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RequestBodyAuthBootPOST"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Resource-scoped JWT generated successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthBootResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request. Possible causes:\n- `direct_hash` is missing or empty.\n- The direct hash format is invalid.\n- The direct hash does not resolve to any resource.\n"
          }
        }
      }
    },
    "/auth/signup": {
      "post": {
        "summary": "Create a new customer account (self-service signup).",
        "description": "Initiates a new customer account registration. The request must include `accepted_tos: true`\nto confirm Terms of Service agreement.\n\nOn success, returns a customer object and a provisioned access key. On failure (e.g., duplicate email),\nstill returns HTTP 200 with an empty body to prevent email enumeration attacks.\n\nAfter signup, the customer receives a verification email. Use `POST /auth/email-verify` with the\ntoken from the email to verify the account.\n",
        "tags": [
          "Auth"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RequestBodyAuthSignupPOST"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Signup initiated successfully, or silently ignored if the email already exists (to prevent enumeration).\nOn success, the response contains the customer object and a provisioned access key.\nOn failure, the response body is an empty JSON object `{}`.\n",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerManagerSignupResult"
                }
              }
            }
          },
          "400": {
            "description": "Bad request. Possible causes:\n- `accepted_tos` is `false` or missing.\n- `email` is missing.\n- Request body is malformed JSON.\n"
          }
        }
      }
    },
    "/auth/email-verify": {
      "post": {
        "summary": "Verify customer email address.",
        "description": "Validates the email verification token sent to the customer's email during signup.\nOn success, the customer's email is marked as verified and an access key is provisioned.\n\nThe `token` is a 64-character lowercase hexadecimal string included in the verification email.\n",
        "tags": [
          "Auth"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RequestBodyAuthEmailVerifyPOST"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Email verified successfully. Returns the customer and a provisioned access key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerManagerEmailVerifyResult"
                }
              }
            }
          },
          "400": {
            "description": "Bad request. Possible causes:\n- Token is invalid, expired, or already used.\n- Request body is malformed JSON.\n- `token` field is missing.\n"
          }
        }
      }
    },
    "/auth/unregister": {
      "post": {
        "summary": "Schedule or immediately execute account deletion (self-service).",
        "description": "Marks the authenticated customer's account for deletion. The account enters 'frozen' state immediately.\nActive calls are terminated and new operations are blocked.\n\nBy default, the customer has 30 days to recover via `DELETE /auth/unregister` before permanent deletion.\n\nIf `immediate` is set to `true`, the account is frozen and then permanently deleted (PII anonymized,\nall resources cascade-deleted) in a single request. This cannot be undone.\n\nExactly one of `password` or `confirmation_phrase` must be provided:\n- Password-based accounts: provide `password` for re-authentication.\n- SSO or API-key authenticated requests: provide `confirmation_phrase` set to `\"DELETE\"`.\n",
        "tags": [
          "Auth"
        ],
        "parameters": [
          {
            "name": "accesskey",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "API access key token. Returned from the `GET /accesskeys` response. Alternative to Bearer token authentication."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RequestBodyAuthUnregisterPOST"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Account frozen successfully (or deleted if `immediate` was `true`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerManagerCustomer"
                }
              }
            }
          },
          "400": {
            "description": "Bad request. Possible causes:\n- Neither `password` nor `confirmation_phrase` was provided.\n- Both `password` and `confirmation_phrase` were provided (exactly one required).\n- Password validation failed.\n- `confirmation_phrase` is not `\"DELETE\"`.\n"
          },
          "401": {
            "description": "Authentication failed. Invalid or missing access key / bearer token."
          }
        }
      },
      "delete": {
        "summary": "Cancel account deletion (self-service recover).",
        "description": "Cancels a scheduled deletion and restores the authenticated customer's account to active state.\nOnly works during the 30-day grace period while the account is in 'frozen' status.\nNo request body required.\n",
        "tags": [
          "Auth"
        ],
        "parameters": [
          {
            "name": "accesskey",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "API access key token. Returned from the `GET /accesskeys` response. Alternative to Bearer token authentication."
          }
        ],
        "responses": {
          "200": {
            "description": "Account recovered successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerManagerCustomer"
                }
              }
            }
          },
          "400": {
            "description": "Recovery failed. Account may not be in frozen state."
          },
          "401": {
            "description": "Authentication failed. Invalid or missing access key / bearer token."
          }
        }
      }
    },
    "/available_numbers": {
      "get": {
        "summary": "List available numbers",
        "description": "Get available phone numbers for the specified country or virtual numbers.",
        "tags": [
          "Number"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "name": "country_code",
            "in": "query",
            "description": "The ISO country code. Required when type is not virtual.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "type",
            "in": "query",
            "description": "The type of available numbers to retrieve (normal or virtual). Defaults to normal.",
            "schema": {
              "$ref": "#/components/schemas/NumberManagerNumberType"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A list of available phone numbers.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "result": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/NumberManagerAvailableNumber"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request. The request is invalid or cannot be processed."
          }
        }
      }
    },
    "/billing_account": {
      "get": {
        "summary": "Get billing account info",
        "description": "Retrieve the billing account of the authenticated customer. The billing account is automatically resolved from the authenticated user's customer record.",
        "tags": [
          "Billing"
        ],
        "responses": {
          "200": {
            "description": "The billing account information.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BillingManagerAccount"
                }
              }
            }
          }
        }
      },
      "put": {
        "summary": "Update billing account",
        "description": "Update the billing account name and detail of the authenticated customer.",
        "tags": [
          "Billing"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "The display name of the billing account.",
                    "example": "Production Account"
                  },
                  "detail": {
                    "type": "string",
                    "description": "A human-readable note describing the purpose of this account.",
                    "example": "Main billing account for production services"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully updated billing account.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BillingManagerAccount"
                }
              }
            }
          }
        }
      }
    },
    "/billing_account/payment_info": {
      "put": {
        "summary": "Update billing account payment info",
        "description": "Update the payment type and method of the authenticated customer's billing account.",
        "tags": [
          "Billing"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "payment_type": {
                    "description": "The type of payment for the account.",
                    "example": "prepaid",
                    "$ref": "#/components/schemas/BillingManagerAccountPaymentType"
                  },
                  "payment_method": {
                    "description": "The method of payment for the account.",
                    "example": "credit card",
                    "$ref": "#/components/schemas/BillingManagerAccountPaymentMethod"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully updated billing account payment info.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BillingManagerAccount"
                }
              }
            }
          }
        }
      }
    },
    "/billing_account/paddle_portal_session": {
      "post": {
        "operationId": "postBillingAccountPaddlePortalSession",
        "summary": "Create Paddle portal session",
        "description": "Generate a Paddle Customer Portal session URL for the authenticated customer to manage their subscription. The customer must have an active Paddle subscription linked to their billing account.",
        "tags": [
          "Billing"
        ],
        "responses": {
          "200": {
            "description": "Successfully created portal session.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "url": {
                      "type": "string",
                      "description": "The Paddle Customer Portal URL. Valid for a limited time.",
                      "example": "https://customer-portal.paddle.com/cpl_session_abc123"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request. Possible causes:\n- The billing account has no linked Paddle subscription (no paddle_customer_id).\n- The Paddle API returned an error (e.g., invalid customer ID).\n"
          },
          "404": {
            "description": "Billing account not found for the authenticated customer."
          }
        }
      }
    },
    "/billing_accounts": {
      "get": {
        "summary": "Get list of billing accounts",
        "description": "Returns a list of all billing accounts. Requires project super admin permission.",
        "tags": [
          "Billing"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/PageToken"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved billing accounts list.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "next_page_token": {
                      "type": "string",
                      "description": "Token for the next page of results.",
                      "example": "2026-01-15T09:30:00.000000Z"
                    },
                    "result": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/BillingManagerAccountAdmin"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/billing_accounts/{id}": {
      "get": {
        "summary": "Get detailed billing account info",
        "description": "Returns detailed billing account info for the given ID.",
        "tags": [
          "Billing"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the billing account."
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved billing account info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BillingManagerAccountAdmin"
                }
              }
            }
          }
        }
      },
      "put": {
        "summary": "Update billing account",
        "description": "Updates the billing account information for the given ID.",
        "tags": [
          "Billing"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the billing account."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "detail": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully updated billing account",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BillingManagerAccountAdmin"
                }
              }
            }
          }
        }
      }
    },
    "/billing_accounts/{id}/payment_info": {
      "put": {
        "summary": "Update billing account's payment info",
        "description": "Updates the payment info for the given billing account ID.",
        "tags": [
          "Billing"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the billing account."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "payment_type": {
                    "$ref": "#/components/schemas/BillingManagerAccountPaymentType"
                  },
                  "payment_method": {
                    "$ref": "#/components/schemas/BillingManagerAccountPaymentMethod"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully updated billing account payment info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BillingManagerAccountAdmin"
                }
              }
            }
          }
        }
      }
    },
    "/billing_accounts/{id}/balance_add_force": {
      "post": {
        "summary": "Add balance to billing account",
        "description": "Adds the given balance to the billing account.",
        "tags": [
          "Billing"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the billing account."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "balance": {
                    "type": "number",
                    "format": "float"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully added balance to the billing account",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BillingManagerAccount"
                }
              }
            }
          }
        }
      }
    },
    "/billing_accounts/{id}/balance_subtract_force": {
      "post": {
        "summary": "Subtract balance from billing account",
        "description": "Subtracts the given balance from the billing account.",
        "tags": [
          "Billing"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the billing account."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "balance": {
                    "type": "number",
                    "format": "float"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully subtracted balance from the billing account",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BillingManagerAccount"
                }
              }
            }
          }
        }
      }
    },
    "/billings": {
      "get": {
        "summary": "Get list of billings",
        "description": "Retrieve a list of the customer's billings.",
        "tags": [
          "Billing"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/PageToken"
          }
        ],
        "responses": {
          "200": {
            "description": "A list of billings.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/CommonPagination"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "result": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/BillingManagerBilling"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/billings/{billing-id}": {
      "get": {
        "summary": "Get a billing record by ID",
        "description": "Retrieves a single billing record by its unique identifier. Returns only the billing record without related account or reference resource data.",
        "tags": [
          "Billing"
        ],
        "parameters": [
          {
            "name": "billing-id",
            "in": "path",
            "required": true,
            "description": "The unique identifier of the billing record",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "example": "550e8400-e29b-41d4-a716-446655440000"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved billing record",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BillingManagerBilling"
                }
              }
            }
          },
          "400": {
            "description": "Invalid billing ID format or not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Invalid UUID format"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - missing or invalid JWT token",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Unauthorized"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/calls/{id}/recording_start": {
      "post": {
        "summary": "Start call recording",
        "description": "Initiate recording for the specified call.",
        "tags": [
          "Call"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the call"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "format": {
                    "description": "The format of the recording.",
                    "type": "string",
                    "enum": [
                      "wav"
                    ]
                  },
                  "end_of_silence": {
                    "description": "The duration of silence (in seconds) after which the recording will be stopped.",
                    "type": "integer"
                  },
                  "end_of_key": {
                    "description": "The key that will stop the recording.",
                    "type": "string"
                  },
                  "duration": {
                    "description": "The maximum duration of the recording (in seconds).",
                    "type": "integer"
                  },
                  "on_end_flow_id": {
                    "description": "The ID of the flow to be executed when the recording ends.",
                    "type": "string"
                  }
                },
                "required": [
                  "format",
                  "end_of_silence",
                  "end_of_key",
                  "duration",
                  "on_end_flow_id"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Detailed call information.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CallManagerCall"
                }
              }
            }
          }
        }
      }
    },
    "/calls/{id}/recording_stop": {
      "post": {
        "summary": "Stop call recording",
        "description": "Stop the ongoing recording for the specified call.",
        "tags": [
          "Call"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the call"
          }
        ],
        "responses": {
          "200": {
            "description": "Detailed call information.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CallManagerCall"
                }
              }
            }
          }
        }
      }
    },
    "/calls/{id}/hangup": {
      "post": {
        "summary": "Hang up the call",
        "description": "Ends the call.",
        "tags": [
          "Call"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The result of the hangup action.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CallManagerCall"
                }
              }
            }
          }
        }
      }
    },
    "/calls/{id}/hold": {
      "post": {
        "summary": "Hold the call",
        "description": "Puts the specified call on hold.",
        "tags": [
          "Call"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The result of the hold action."
          }
        }
      },
      "delete": {
        "summary": "Unhold the call",
        "description": "Removes the hold status on the call.",
        "tags": [
          "Call"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The result of the unhold action."
          }
        }
      }
    },
    "/calls/{id}/media_stream": {
      "get": {
        "summary": "Get media stream for the call",
        "description": "Retrieve the media stream information for a specific call.",
        "tags": [
          "Call"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The ID of the call",
            "schema": {
              "type": "string"
            }
          },
          {
            "encapsulation": null,
            "name": "encapsulation",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Media stream information retrieved successfully"
          }
        }
      }
    },
    "/calls/{id}/moh": {
      "post": {
        "summary": "Enable Music on Hold (MOH)",
        "description": "Activates Music on Hold for the call.",
        "tags": [
          "Call"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The result of the MOH activation."
          }
        }
      },
      "delete": {
        "summary": "Disable Music on Hold (MOH)",
        "description": "Deactivates Music on Hold for the call.",
        "tags": [
          "Call"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The result of the MOH deactivation."
          }
        }
      }
    },
    "/calls/{id}/mute": {
      "post": {
        "summary": "Mute the call",
        "description": "Mutes the specified call.",
        "tags": [
          "Call"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "direction": {
                    "$ref": "#/components/schemas/CallManagerCallMuteDirection"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The result of the mute action."
          }
        }
      },
      "delete": {
        "summary": "Unmute the call",
        "description": "Unmutes the specified call.",
        "tags": [
          "Call"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "direction": {
                    "$ref": "#/components/schemas/CallManagerCallMuteDirection"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The result of the unmute action."
          }
        }
      }
    },
    "/calls/{id}/silence": {
      "post": {
        "summary": "Silence a call",
        "description": "Mute the audio stream for the specified call.",
        "tags": [
          "Call"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The ID of the call",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Call silenced successfully"
          },
          "400": {
            "description": "Invalid request"
          }
        }
      },
      "delete": {
        "summary": "Un-silence a call",
        "description": "Unmute the audio stream for the specified call.",
        "tags": [
          "Call"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The ID of the call",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Call un-silenced successfully"
          },
          "400": {
            "description": "Invalid request"
          }
        }
      }
    },
    "/calls/{id}/talk": {
      "post": {
        "summary": "Talk to the call",
        "description": "Initiates a talking action to the call.",
        "tags": [
          "Call"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "text": {
                    "type": "string"
                  },
                  "language": {
                    "type": "string"
                  },
                  "provider": {
                    "type": "string",
                    "description": "TTS provider to use (gcp or aws). If empty, defaults to GCP. If the selected provider fails, the system falls back to the alternative provider with the default voice for the language."
                  },
                  "voice_id": {
                    "type": "string",
                    "description": "Provider-specific voice ID. If empty, uses the default voice for the given language. On fallback, the voice_id is reset to the alternative provider's default."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The result of the talk action."
          }
        }
      }
    },
    "/calls/{id}": {
      "get": {
        "summary": "Get detail call info",
        "description": "Returns detailed information about the specified call.",
        "tags": [
          "Call"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Detailed call information.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CallManagerCall"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete up the call",
        "description": "Delete the call",
        "tags": [
          "Call"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The result of the deleted call info.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CallManagerCall"
                }
              }
            }
          }
        }
      }
    },
    "/calls": {
      "get": {
        "summary": "Get list of calls",
        "description": "Returns a list of calls for the given customer.",
        "tags": [
          "Call"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/PageToken"
          }
        ],
        "responses": {
          "200": {
            "description": "A list of calls.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/CommonPagination"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "result": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/CallManagerCall"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Make an outbound call",
        "description": "Creates a temporary flow and initiates a call with the specified flow.",
        "tags": [
          "Call"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "flow_id": {
                    "type": "string"
                  },
                  "actions": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/FlowManagerAction"
                    }
                  },
                  "source": {
                    "$ref": "#/components/schemas/CommonAddress"
                  },
                  "destinations": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/CommonAddress"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The details of the created call.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "calls": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/CallManagerCall"
                          }
                        },
                        "groupcalls": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/CallManagerGroupcall"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/campaigncalls/{id}": {
      "get": {
        "summary": "Get campaign call details",
        "description": "Retrieve detailed information for a specific campaign call.",
        "tags": [
          "Campaign"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The ID of the campaign call",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Detailed information for the specified campaign call",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CampaignManagerCampaigncall"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete a campaign call",
        "description": "Deletes an existing campaign call.",
        "tags": [
          "Campaign"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The ID of the campaign call to delete",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Campaign call deleted successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CampaignManagerCampaigncall"
                }
              }
            }
          }
        }
      }
    },
    "/campaigncalls": {
      "get": {
        "summary": "Get list of campaign calls",
        "description": "Retrieve a list of campaign calls for a given customer.",
        "tags": [
          "Campaign"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/PageToken"
          }
        ],
        "responses": {
          "200": {
            "description": "A list of campaign calls",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/CommonPagination"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "result": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/CampaignManagerCampaigncall"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/campaigns/{id}/actions": {
      "put": {
        "summary": "Update campaign's actions",
        "description": "Updates the actions of a specific campaign and return the updated campaign info.",
        "tags": [
          "Campaign"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ID of the campaign"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "actions": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/FlowManagerAction"
                    }
                  }
                },
                "required": [
                  "actions"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CampaignManagerCampaign"
                }
              }
            }
          }
        }
      }
    },
    "/campaigns/{id}/campaigncalls": {
      "get": {
        "summary": "Update campaign's actions",
        "description": "Updates the actions of a specific campaign and return the updated campaign info.",
        "tags": [
          "Campaign"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ID of the campaign"
          },
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/PageToken"
          }
        ],
        "responses": {
          "200": {
            "description": "A list of campaigns.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/CommonPagination"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "result": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/CampaignManagerCampaigncall"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/campaigns/{id}/next_campaign_id": {
      "put": {
        "summary": "Update campaign's service level",
        "description": "Updates the sevice level of a specific campaign and return the updated campaign info.",
        "tags": [
          "Campaign"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ID of the campaign"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "next_campaign_id": {
                    "type": "string",
                    "description": "The next campaign's id."
                  }
                },
                "required": [
                  "next_campaign_id"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CampaignManagerCampaign"
                }
              }
            }
          }
        }
      }
    },
    "/campaigns/{id}/resource_info": {
      "put": {
        "summary": "Update campaign's resource info",
        "description": "Updates the resource info of a specific campaign and return the updated campaign info.",
        "tags": [
          "Campaign"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ID of the campaign"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "outplan_id": {
                    "type": "string",
                    "description": "outplan's id."
                  },
                  "outdial_id": {
                    "type": "string",
                    "description": "outplan's id."
                  },
                  "queue_id": {
                    "type": "string",
                    "description": "queue's id."
                  },
                  "next_campaign_id": {
                    "type": "string",
                    "description": "next campaign's id."
                  }
                },
                "required": [
                  "outplan_id",
                  "outdial_id",
                  "queue_id",
                  "next_campaign_id"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CampaignManagerCampaign"
                }
              }
            }
          }
        }
      }
    },
    "/campaigns/{id}/service_level": {
      "put": {
        "summary": "Update campaign's service level",
        "description": "Updates the sevice level of a specific campaign and return the updated campaign info.",
        "tags": [
          "Campaign"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ID of the campaign"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "service_level": {
                    "type": "integer",
                    "description": "The campaign's service level."
                  }
                },
                "required": [
                  "service_level"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CampaignManagerCampaign"
                }
              }
            }
          }
        }
      }
    },
    "/campaigns/{id}/status": {
      "put": {
        "summary": "Update campaign status",
        "description": "Updates the status of a specific campaign.",
        "tags": [
          "Campaign"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ID of the campaign"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "status": {
                    "$ref": "#/components/schemas/CampaignManagerCampaignStatus"
                  }
                },
                "required": [
                  "status"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CampaignManagerCampaign"
                }
              }
            }
          }
        }
      }
    },
    "/campaigns/{id}": {
      "get": {
        "summary": "Get campaign details",
        "description": "Retrieves detailed information about a specific campaign by its ID.",
        "tags": [
          "Campaign"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ID of the campaign"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CampaignManagerCampaign"
                }
              }
            }
          }
        }
      },
      "put": {
        "summary": "Update a campaign",
        "description": "Updates the details of an existing campaign and returns the updated campaign.",
        "tags": [
          "Campaign"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ID of the campaign"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "Updated name of the campaign"
                  },
                  "detail": {
                    "type": "string",
                    "description": "Updated details of the campaign"
                  },
                  "type": {
                    "$ref": "#/components/schemas/CampaignManagerCampaignType"
                  },
                  "service_level": {
                    "type": "integer",
                    "description": "Updated service level of the campaign"
                  },
                  "end_handle": {
                    "$ref": "#/components/schemas/CampaignManagerCampaignEndHandle"
                  }
                },
                "required": [
                  "name",
                  "detail",
                  "type",
                  "service_level",
                  "end_handle"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CampaignManagerCampaign"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete a campaign",
        "description": "Deletes a campaign by its ID.",
        "tags": [
          "Campaign"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ID of the campaign"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CampaignManagerCampaign"
                }
              }
            }
          }
        }
      }
    },
    "/campaigns": {
      "get": {
        "summary": "Get a list of campaigns",
        "description": "Retrieves a paginated list of campaigns.",
        "tags": [
          "Campaign"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/PageToken"
          }
        ],
        "responses": {
          "200": {
            "description": "A list of campaigns.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/CommonPagination"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "result": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/CampaignManagerCampaign"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Create a new campaign",
        "description": "Creates a new campaign with the provided details and returns the created campaign.",
        "tags": [
          "Campaign"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "Name of the campaign"
                  },
                  "detail": {
                    "type": "string",
                    "description": "Detailed description of the campaign"
                  },
                  "type": {
                    "$ref": "#/components/schemas/CampaignManagerCampaignType"
                  },
                  "service_level": {
                    "type": "integer",
                    "description": "Service level of the campaign"
                  },
                  "end_handle": {
                    "$ref": "#/components/schemas/CampaignManagerCampaignEndHandle"
                  },
                  "actions": {
                    "type": "array",
                    "description": "Actions associated with the campaign",
                    "items": {
                      "$ref": "#/components/schemas/FlowManagerAction"
                    }
                  },
                  "outplan_id": {
                    "type": "string",
                    "description": "Outplan ID for the campaign"
                  },
                  "outdial_id": {
                    "type": "string",
                    "description": "Outdial ID for the campaign"
                  },
                  "queue_id": {
                    "type": "string",
                    "description": "Queue ID for the campaign"
                  },
                  "next_campaign_id": {
                    "type": "string",
                    "description": "ID of the next campaign"
                  }
                },
                "required": [
                  "name",
                  "detail",
                  "type",
                  "service_level",
                  "end_handle",
                  "actions",
                  "outplan_id",
                  "outdial_id",
                  "queue_id",
                  "next_campaign_id"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully subtracted balance from the billing account",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CampaignManagerCampaign"
                }
              }
            }
          }
        }
      }
    },
    "/conferencecalls/{id}": {
      "get": {
        "summary": "Get conference call details",
        "description": "Retrieve detailed information about a specific conference call using its ID.",
        "tags": [
          "Conference"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the conferencecall."
          }
        ],
        "responses": {
          "200": {
            "description": "Detailed information about a conference call.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConferenceManagerConferencecall"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Remove a conference call",
        "description": "Remove a specific conference call from the system by its ID.",
        "tags": [
          "Conference"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the conferencecall to delete."
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConferenceManagerConferencecall"
                }
              }
            }
          }
        }
      }
    },
    "/conferencecalls": {
      "get": {
        "summary": "Get list of conference calls",
        "description": "Retrieve a paginated list of conference calls for the authenticated customer.",
        "tags": [
          "Conference"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/PageToken"
          }
        ],
        "responses": {
          "200": {
            "description": "A list of conference calls.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/CommonPagination"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "result": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/ConferenceManagerConferencecall"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/conferences/{id}/media_stream": {
      "get": {
        "summary": "Start media streaming for a conference",
        "description": "Start the in/out media streaming of the specified conference.",
        "tags": [
          "Conference"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the conference"
          },
          {
            "name": "encapsulation",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The encapsulation for media stream.",
            "example": "mediasocket"
          }
        ],
        "responses": {
          "200": {
            "description": "Media streaming started successfully."
          }
        }
      }
    },
    "/conferences/{id}/recording_start": {
      "post": {
        "summary": "Start conference recording",
        "description": "Initiate recording for the specified conference.",
        "tags": [
          "Conference"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the conference"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "format": {
                    "description": "The format of the recording.",
                    "type": "string",
                    "enum": [
                      "wav"
                    ]
                  },
                  "duration": {
                    "description": "The maximum duration of the recording (in seconds).",
                    "type": "integer"
                  },
                  "on_end_flow_id": {
                    "description": "The ID of the flow to be executed when the recording ends.",
                    "type": "string"
                  }
                },
                "required": [
                  "format",
                  "duration",
                  "on_end_flow_id"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Recording started successfully."
          }
        }
      }
    },
    "/conferences/{id}/recording_stop": {
      "post": {
        "summary": "Stop conference recording",
        "description": "Stop the ongoing recording for the specified conference.",
        "tags": [
          "Conference"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the conference"
          }
        ],
        "responses": {
          "200": {
            "description": "Recording stopped successfully."
          }
        }
      }
    },
    "/conferences/{id}/transcribe_start": {
      "post": {
        "summary": "Start conference transcription",
        "description": "Begin transcription for the specified conference.",
        "tags": [
          "Conference"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the conference"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "language": {
                    "type": "string",
                    "description": "The language for transcription.",
                    "example": "en-US"
                  }
                },
                "required": [
                  "language"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Transcription started successfully."
          }
        }
      }
    },
    "/conferences/{id}/transcribe_stop": {
      "post": {
        "summary": "Stop conference transcription",
        "description": "Stop the ongoing transcription for the specified conference.",
        "tags": [
          "Conference"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the conference"
          }
        ],
        "responses": {
          "200": {
            "description": "Transcription stopped successfully."
          }
        }
      }
    },
    "/conferences/{id}/direct-hash-regenerate": {
      "post": {
        "summary": "Regenerate direct hash for conference",
        "description": "Regenerates the direct hash for the specified conference. If no direct hash exists, one is created. Returns the updated conference with the new direct_hash.",
        "tags": [
          "Conference"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "550e8400-e29b-41d4-a716-446655440000"
            },
            "description": "The unique identifier of the conference. Returned from the `GET /conferences` response."
          }
        ],
        "responses": {
          "200": {
            "description": "Direct hash regenerated successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConferenceManagerConference"
                }
              }
            }
          },
          "400": {
            "description": "Unable to regenerate direct hash."
          }
        }
      }
    },
    "/conferences/{id}": {
      "get": {
        "summary": "Get conference details",
        "description": "Retrieve detailed information about a specific conference.",
        "tags": [
          "Conference"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the conference"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConferenceManagerConference"
                }
              }
            }
          }
        }
      },
      "put": {
        "summary": "Update conference details",
        "description": "Update the details of a specific conference.",
        "tags": [
          "Conference"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the conference"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "detail": {
                    "type": "string"
                  },
                  "data": {
                    "type": "object",
                    "description": "Custom data associated with the conference.",
                    "additionalProperties": true
                  },
                  "timeout": {
                    "type": "integer"
                  },
                  "pre_flow_id": {
                    "type": "string"
                  },
                  "post_flow_id": {
                    "type": "string"
                  }
                },
                "required": [
                  "name",
                  "detail",
                  "data",
                  "timeout",
                  "pre_flow_id",
                  "post_flow_id"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConferenceManagerConference"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete a conference",
        "description": "Delete a specific conference. All participants will be removed.",
        "tags": [
          "Conference"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the conference"
          }
        ],
        "responses": {
          "200": {
            "description": "Conference deleted successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConferenceManagerConference"
                }
              }
            }
          }
        }
      }
    },
    "/conferences": {
      "get": {
        "summary": "Get list of conferences",
        "description": "Retrieve a paginated list of conferences for the customer.",
        "tags": [
          "Conference"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/PageToken"
          }
        ],
        "responses": {
          "200": {
            "description": "A list of conferences.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/CommonPagination"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "result": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/ConferenceManagerConference"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Create a new conference",
        "description": "Create a new conference with the provided details.",
        "tags": [
          "Conference"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "type": {
                    "$ref": "#/components/schemas/ConferenceManagerConferenceType"
                  },
                  "id": {
                    "type": "string"
                  },
                  "name": {
                    "type": "string"
                  },
                  "detail": {
                    "type": "string"
                  },
                  "timeout": {
                    "type": "integer"
                  },
                  "data": {
                    "type": "object",
                    "description": "Custom data associated with the conference.",
                    "additionalProperties": true
                  },
                  "pre_flow_id": {
                    "type": "string"
                  },
                  "post_flow_id": {
                    "type": "string"
                  }
                },
                "required": [
                  "type",
                  "name",
                  "detail",
                  "timeout",
                  "data",
                  "pre_flow_id",
                  "post_flow_id"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConferenceManagerConference"
                }
              }
            }
          }
        }
      }
    },
    "/contacts": {
      "get": {
        "summary": "List contacts",
        "description": "Get contacts for the customer.",
        "tags": [
          "Contact"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/PageToken"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/CommonPagination"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "result": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/ContactManagerContact"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Create a new contact",
        "description": "Create a new contact for the customer.",
        "tags": [
          "Contact"
        ],
        "requestBody": {
          "description": "Request body to create a new contact.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "first_name": {
                    "type": "string"
                  },
                  "last_name": {
                    "type": "string"
                  },
                  "display_name": {
                    "type": "string"
                  },
                  "company": {
                    "type": "string"
                  },
                  "job_title": {
                    "type": "string"
                  },
                  "source": {
                    "type": "string",
                    "enum": [
                      "manual",
                      "import",
                      "api",
                      "sync"
                    ]
                  },
                  "external_id": {
                    "type": "string"
                  },
                  "notes": {
                    "type": "string"
                  },
                  "phone_numbers": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "number": {
                          "type": "string"
                        },
                        "type": {
                          "type": "string",
                          "enum": [
                            "mobile",
                            "work",
                            "home",
                            "fax",
                            "other"
                          ]
                        },
                        "is_primary": {
                          "type": "boolean"
                        }
                      }
                    }
                  },
                  "emails": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "address": {
                          "type": "string",
                          "format": "email"
                        },
                        "type": {
                          "type": "string",
                          "enum": [
                            "work",
                            "personal",
                            "other"
                          ]
                        },
                        "is_primary": {
                          "type": "boolean"
                        }
                      }
                    }
                  },
                  "tag_ids": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "uuid"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Contact created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactManagerContact"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input."
          }
        }
      }
    },
    "/contacts/lookup": {
      "get": {
        "summary": "Lookup contact",
        "description": "Find a contact by phone number or email.",
        "tags": [
          "Contact"
        ],
        "parameters": [
          {
            "name": "phone",
            "in": "query",
            "description": "Phone number in E.164 format to lookup.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "email",
            "in": "query",
            "description": "Email address to lookup.",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Contact found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactManagerContact"
                }
              }
            }
          },
          "404": {
            "description": "Contact not found."
          }
        }
      }
    },
    "/contacts/{id}": {
      "get": {
        "summary": "Get the contact",
        "description": "Get the contact of the given ID.",
        "tags": [
          "Contact"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the contact.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactManagerContact"
                }
              }
            }
          }
        }
      },
      "put": {
        "summary": "Update a contact",
        "description": "Update a contact and return updated details.",
        "tags": [
          "Contact"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the contact.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "first_name": {
                    "type": "string"
                  },
                  "last_name": {
                    "type": "string"
                  },
                  "display_name": {
                    "type": "string"
                  },
                  "company": {
                    "type": "string"
                  },
                  "job_title": {
                    "type": "string"
                  },
                  "external_id": {
                    "type": "string"
                  },
                  "notes": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactManagerContact"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete the contact",
        "description": "Delete the contact of the given ID.",
        "tags": [
          "Contact"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the contact.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactManagerContact"
                }
              }
            }
          }
        }
      }
    },
    "/contacts/{id}/phone-numbers": {
      "post": {
        "summary": "Add phone number to contact",
        "description": "Add a new phone number to the contact.",
        "tags": [
          "Contact"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the contact.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "number"
                ],
                "properties": {
                  "number": {
                    "type": "string"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "mobile",
                      "work",
                      "home",
                      "fax",
                      "other"
                    ]
                  },
                  "is_primary": {
                    "type": "boolean"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Phone number added successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactManagerContact"
                }
              }
            }
          }
        }
      }
    },
    "/contacts/{id}/phone-numbers/{phone_number_id}": {
      "put": {
        "summary": "Update phone number on contact",
        "description": "Update a phone number on the contact.",
        "tags": [
          "Contact"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the contact.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "phone_number_id",
            "in": "path",
            "description": "The ID of the phone number.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "number": {
                    "type": "string"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "mobile",
                      "work",
                      "home",
                      "fax",
                      "other"
                    ]
                  },
                  "is_primary": {
                    "type": "boolean"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Phone number updated successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactManagerContact"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Remove phone number from contact",
        "description": "Remove a phone number from the contact.",
        "tags": [
          "Contact"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the contact.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "phone_number_id",
            "in": "path",
            "description": "The ID of the phone number.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Phone number removed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactManagerContact"
                }
              }
            }
          }
        }
      }
    },
    "/contacts/{id}/emails": {
      "post": {
        "summary": "Add email to contact",
        "description": "Add a new email address to the contact.",
        "tags": [
          "Contact"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the contact.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "address"
                ],
                "properties": {
                  "address": {
                    "type": "string",
                    "format": "email"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "work",
                      "personal",
                      "other"
                    ]
                  },
                  "is_primary": {
                    "type": "boolean"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Email added successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactManagerContact"
                }
              }
            }
          }
        }
      }
    },
    "/contacts/{id}/emails/{email_id}": {
      "put": {
        "summary": "Update email on contact",
        "description": "Update an email address on the contact.",
        "tags": [
          "Contact"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the contact.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "email_id",
            "in": "path",
            "description": "The ID of the email.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "address": {
                    "type": "string",
                    "format": "email"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "work",
                      "personal",
                      "other"
                    ]
                  },
                  "is_primary": {
                    "type": "boolean"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Email updated successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactManagerContact"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Remove email from contact",
        "description": "Remove an email address from the contact.",
        "tags": [
          "Contact"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the contact.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "email_id",
            "in": "path",
            "description": "The ID of the email.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Email removed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactManagerContact"
                }
              }
            }
          }
        }
      }
    },
    "/contacts/{id}/tags": {
      "post": {
        "summary": "Add tag to contact",
        "description": "Add a tag to the contact.",
        "tags": [
          "Contact"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the contact.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "tag_id"
                ],
                "properties": {
                  "tag_id": {
                    "type": "string",
                    "format": "uuid"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tag added successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactManagerContact"
                }
              }
            }
          }
        }
      }
    },
    "/contacts/{id}/tags/{tag_id}": {
      "delete": {
        "summary": "Remove tag from contact",
        "description": "Remove a tag from the contact.",
        "tags": [
          "Contact"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the contact.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "tag_id",
            "in": "path",
            "description": "The ID of the tag.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Tag removed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactManagerContact"
                }
              }
            }
          }
        }
      }
    },
    "/conversation_accounts/{id}": {
      "get": {
        "summary": "Get details of a conversation account",
        "description": "Fetches details of the conversation account specified by ID.",
        "tags": [
          "Conversation"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the conversation account."
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConversationManagerAccount"
                }
              }
            }
          }
        }
      },
      "put": {
        "summary": "Update a conversation account",
        "description": "Updates the details of the conversation account specified by ID.",
        "tags": [
          "Conversation"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the conversation account."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "detail": {
                    "type": "string"
                  },
                  "secret": {
                    "type": "string"
                  },
                  "token": {
                    "type": "string"
                  },
                  "message_flow_id": {
                    "type": "string",
                    "format": "uuid",
                    "x-go-type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConversationManagerAccount"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete a conversation account",
        "description": "Deletes the conversation account specified by ID.",
        "tags": [
          "Conversation"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the conversation account."
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConversationManagerAccount"
                }
              }
            }
          }
        }
      }
    },
    "/conversation_accounts": {
      "get": {
        "summary": "Gets a list of conversation accounts",
        "description": "Fetches a paginated list of conversation accounts.",
        "tags": [
          "Conversation"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/PageToken"
          }
        ],
        "responses": {
          "200": {
            "description": "A list of conversation accounts.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/CommonPagination"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "result": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/ConversationManagerAccount"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Create a new conversation account",
        "description": "Creates a new conversation account and returns its details.",
        "tags": [
          "Conversation"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "type": {
                    "$ref": "#/components/schemas/ConversationManagerAccountType"
                  },
                  "name": {
                    "type": "string"
                  },
                  "detail": {
                    "type": "string"
                  },
                  "secret": {
                    "type": "string"
                  },
                  "token": {
                    "type": "string"
                  },
                  "message_flow_id": {
                    "type": "string",
                    "format": "uuid",
                    "x-go-type": "string"
                  }
                },
                "required": [
                  "type",
                  "name",
                  "detail",
                  "secret",
                  "token"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConversationManagerAccount"
                }
              }
            }
          }
        }
      }
    },
    "/conversations/{id}/messages": {
      "get": {
        "summary": "Gets a list of conversation messages",
        "description": "Gets a paginated list of messages for a specific conversation.",
        "tags": [
          "Conversation"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/PageToken"
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the conversation."
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/CommonPagination"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "result": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/ConversationManagerMessage"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Send a message",
        "description": "Sends a message to a specific conversation and returns the sent message info.",
        "tags": [
          "Conversation"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the conversation."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "text": {
                    "type": "string",
                    "description": "The message text."
                  },
                  "medias": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/ConversationManagerMedia"
                    }
                  }
                },
                "required": [
                  "text",
                  "medias"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConversationManagerMessage"
                }
              }
            }
          }
        }
      }
    },
    "/conversations/{id}": {
      "get": {
        "summary": "Returns detailed conversation info",
        "description": "Returns detailed information about a specific conversation by its ID.",
        "tags": [
          "Conversation"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the conversation."
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConversationManagerConversation"
                }
              }
            }
          }
        }
      },
      "put": {
        "summary": "Update conversation info",
        "description": "Updates the details of a specific conversation by its ID.",
        "tags": [
          "Conversation"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the conversation."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "owner_type": {
                    "type": "string"
                  },
                  "owner_id": {
                    "type": "string"
                  },
                  "name": {
                    "type": "string"
                  },
                  "detail": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConversationManagerConversation"
                }
              }
            }
          }
        }
      }
    },
    "/conversations": {
      "get": {
        "summary": "Gets a list of conversations",
        "description": "Gets a list of conversations with pagination. Filters can be provided in the request body.",
        "tags": [
          "Conversation"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/PageToken"
          }
        ],
        "requestBody": {
          "description": "Optional filters for searching conversations",
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "customer_id": {
                    "type": "string",
                    "format": "uuid",
                    "description": "Filter by customer ID"
                  },
                  "account_id": {
                    "type": "string",
                    "format": "uuid",
                    "description": "Filter by account ID"
                  },
                  "dialog_id": {
                    "type": "string",
                    "description": "Filter by dialog ID"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "message",
                      "line"
                    ],
                    "description": "Filter by conversation type"
                  },
                  "deleted": {
                    "type": "boolean",
                    "description": "Include deleted conversations if true"
                  }
                }
              },
              "examples": {
                "filterByCustomer": {
                  "summary": "Filter by customer",
                  "value": {
                    "customer_id": "64a3cbd8-e863-11ec-85de-1bcd09d3872e",
                    "deleted": false
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/CommonPagination"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "result": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/ConversationManagerConversation"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/customer/metadata": {
      "put": {
        "summary": "Update customer metadata",
        "description": "Update the metadata configuration for the authenticated customer's account.",
        "tags": [
          "Customer"
        ],
        "requestBody": {
          "description": "Customer metadata update payload",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "rtp_debug": {
                    "type": "boolean",
                    "description": "When set to `true`, RTPEngine captures RTP traffic as PCAP files for this customer's calls.\nDefault is `false`. Enabling this increases storage usage — disable after debugging.\n",
                    "example": true
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated customer information.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerManagerCustomer"
                }
              }
            }
          }
        }
      }
    },
    "/customer/billing_account_id": {
      "put": {
        "summary": "Update a customer's billing account ID",
        "description": "Modify the billing account ID associated with a customer.",
        "tags": [
          "Customer"
        ],
        "requestBody": {
          "description": "Billing account update payload",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "billing_account_id": {
                    "type": "string",
                    "description": "The new billing account ID for the customer."
                  }
                },
                "required": [
                  "billing_account_id"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated customer billing account information.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerManagerCustomer"
                }
              }
            }
          }
        }
      }
    },
    "/customer/default_outgoing_source_number_id": {
      "put": {
        "summary": "Update a customer's default outgoing source number ID",
        "description": "Modify the default outgoing source number ID associated with the authenticated customer.",
        "tags": [
          "Customer"
        ],
        "requestBody": {
          "description": "Default outgoing source number ID update payload",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "default_outgoing_source_number_id": {
                    "type": "string",
                    "format": "uuid",
                    "description": "The new default outgoing source number ID for the customer. Obtained from the `id` field of `GET /numbers`.",
                    "example": "d4e5f6a7-b8c9-0123-4567-89abcdef0123"
                  }
                },
                "required": [
                  "default_outgoing_source_number_id"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated customer information.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerManagerCustomer"
                }
              }
            }
          }
        }
      }
    },
    "/customer": {
      "get": {
        "summary": "Get customer info",
        "description": "Retrieve the information of the customer.",
        "tags": [
          "Customer"
        ],
        "responses": {
          "200": {
            "description": "The customer information.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerManagerCustomer"
                }
              }
            }
          }
        }
      },
      "put": {
        "summary": "Update a customer",
        "description": "Update the information of a customer and retrieve the updated details.",
        "tags": [
          "Customer"
        ],
        "requestBody": {
          "description": "Customer update payload",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "The new name of the customer."
                  },
                  "detail": {
                    "type": "string",
                    "description": "Additional details about the customer."
                  },
                  "email": {
                    "type": "string",
                    "description": "The customer's email address."
                  },
                  "phone_number": {
                    "type": "string",
                    "description": "The customer's phone number."
                  },
                  "address": {
                    "type": "string",
                    "description": "The customer's address."
                  },
                  "webhook_method": {
                    "$ref": "#/components/schemas/CustomerManagerCustomerWebhookMethod"
                  },
                  "webhook_uri": {
                    "type": "string",
                    "description": "Webhook URI."
                  }
                },
                "required": [
                  "name",
                  "detail",
                  "email",
                  "phone_number",
                  "address",
                  "webhook_method",
                  "webhook_uri"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated customer information.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerManagerCustomer"
                }
              }
            }
          }
        }
      }
    },
    "/customers/{id}/freeze": {
      "post": {
        "summary": "Schedule customer deletion (freeze account).",
        "description": "Marks the customer for deletion. The account enters 'frozen' state immediately.\nActive calls are terminated and new operations are blocked.\nThe customer has 30 days to recover before permanent deletion.\nAdmin-only endpoint.\n",
        "tags": [
          "Customer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerManagerCustomerAdmin"
                }
              }
            }
          }
        }
      }
    },
    "/customers/{id}/recover": {
      "post": {
        "summary": "Cancel customer deletion (recover account).",
        "description": "Cancels a scheduled deletion and restores the account to active state.\nOnly works during the 30-day grace period.\nAdmin-only endpoint.\n",
        "tags": [
          "Customer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerManagerCustomerAdmin"
                }
              }
            }
          }
        }
      }
    },
    "/customers/{id}/billing_account_id": {
      "put": {
        "summary": "Update a customer's billing account ID.",
        "description": "Updates the billing account ID for a specific customer.",
        "tags": [
          "Customer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "billing_account_id": {
                    "type": "string"
                  }
                },
                "required": [
                  "billing_account_id"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerManagerCustomerAdmin"
                }
              }
            }
          }
        }
      }
    },
    "/customers/{id}/default_outgoing_source_number_id": {
      "put": {
        "summary": "Update a customer's default outgoing source number ID.",
        "description": "Updates the default outgoing source number ID for a specific customer.",
        "tags": [
          "Customer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "default_outgoing_source_number_id": {
                    "type": "string",
                    "format": "uuid",
                    "description": "The new default outgoing source number ID. Obtained from the `id` field of `GET /numbers`.",
                    "example": "d4e5f6a7-b8c9-0123-4567-89abcdef0123"
                  }
                },
                "required": [
                  "default_outgoing_source_number_id"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated customer information.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerManagerCustomerAdmin"
                }
              }
            }
          }
        }
      }
    },
    "/customers/{id}/metadata": {
      "put": {
        "summary": "Update a customer's metadata.",
        "description": "Updates internal configuration flags for a customer account. Requires `ProjectSuperAdmin` permission.\nRegular users cannot access this endpoint. The response returns the full admin customer object\nincluding the updated metadata.\n",
        "tags": [
          "Customer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The unique identifier of the customer (UUID). Obtained from the `id` field of `GET /customers`.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerManagerMetadata"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated customer object with the new metadata applied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerManagerCustomerAdmin"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request. Possible causes:\n- The `id` path parameter is not a valid UUID.\n- The request body is not valid JSON or does not match the `CustomerManagerMetadata` schema.\n"
          },
          "403": {
            "description": "Permission denied. The authenticated agent does not have `ProjectSuperAdmin` permission.\nOnly ProjectSuperAdmin agents can update customer metadata.\n"
          }
        }
      }
    },
    "/customers/{id}": {
      "get": {
        "summary": "Retrieve customer details.",
        "description": "Fetches detailed information about a specific customer by their ID.",
        "tags": [
          "Customer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerManagerCustomerAdmin"
                }
              }
            }
          }
        }
      },
      "put": {
        "summary": "Update a customer.",
        "description": "Updates the details of an existing customer and returns the updated information.",
        "tags": [
          "Customer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "detail": {
                    "type": "string"
                  },
                  "email": {
                    "type": "string"
                  },
                  "phone_number": {
                    "type": "string"
                  },
                  "address": {
                    "type": "string"
                  },
                  "webhook_method": {
                    "$ref": "#/components/schemas/CustomerManagerCustomerWebhookMethod"
                  },
                  "webhook_uri": {
                    "type": "string"
                  }
                },
                "required": [
                  "name",
                  "detail",
                  "email",
                  "phone_number",
                  "address",
                  "webhook_method",
                  "webhook_uri"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerManagerCustomerAdmin"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete a customer.",
        "description": "Removes a customer by their ID.",
        "tags": [
          "Customer"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerManagerCustomerAdmin"
                }
              }
            }
          }
        }
      }
    },
    "/customers": {
      "get": {
        "summary": "Gets a list of customers.",
        "description": "Retrieves a paginated list of customers.",
        "tags": [
          "Customer"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/PageToken"
          }
        ],
        "responses": {
          "200": {
            "description": "A list of customers.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/CommonPagination"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "result": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/CustomerManagerCustomerAdmin"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Create a new customer.",
        "description": "Creates a new customer with the provided details and returns the created customer.",
        "tags": [
          "Customer"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "detail": {
                    "type": "string"
                  },
                  "email": {
                    "type": "string"
                  },
                  "phone_number": {
                    "type": "string"
                  },
                  "address": {
                    "type": "string"
                  },
                  "webhook_method": {
                    "$ref": "#/components/schemas/CustomerManagerCustomerWebhookMethod"
                  },
                  "webhook_uri": {
                    "type": "string"
                  }
                },
                "required": [
                  "name",
                  "detail",
                  "email",
                  "phone_number",
                  "address",
                  "webhook_method",
                  "webhook_uri"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerManagerCustomerAdmin"
                }
              }
            }
          }
        }
      }
    },
    "/emails/{id}": {
      "get": {
        "summary": "Retrieve email details",
        "description": "Retrieves the details of a specific email by its ID.",
        "tags": [
          "Email"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the email."
          }
        ],
        "responses": {
          "200": {
            "description": "The email details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmailManagerEmail"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete a email",
        "description": "Deletes an existing email by its ID.",
        "tags": [
          "Email"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the email."
          }
        ],
        "responses": {
          "200": {
            "description": "The email was successfully deleted.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmailManagerEmail"
                }
              }
            }
          }
        }
      }
    },
    "/emails": {
      "get": {
        "summary": "Retrieve a list of emails",
        "description": "Retrieves a paginated list of emails accessible to the authenticated agent.",
        "tags": [
          "Email"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/PageToken"
          }
        ],
        "responses": {
          "200": {
            "description": "A list of emails.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/CommonPagination"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "result": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/EmailManagerEmail"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Send an email",
        "description": "Send an email with the provided details and returns the created email's information.",
        "tags": [
          "Email"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "destinations": {
                    "description": "The email addresses to send the email to.",
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/CommonAddress"
                    }
                  },
                  "subject": {
                    "description": "The subject of the email.",
                    "type": "string"
                  },
                  "content": {
                    "description": "The content of the email.",
                    "type": "string"
                  },
                  "attachments": {
                    "description": "List of attachments to include in the email.",
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/EmailManagerEmailAttachment"
                    }
                  }
                },
                "required": [
                  "destinations",
                  "subject",
                  "content",
                  "attachments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created email details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmailManagerEmail"
                }
              }
            }
          }
        }
      }
    },
    "/extensions/{id}": {
      "get": {
        "summary": "Get extension details",
        "description": "Retrieves details of a specific extension by its ID.",
        "tags": [
          "Extension"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The ID of the extension.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The extension details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RegistrarManagerExtension"
                }
              }
            }
          }
        }
      },
      "put": {
        "summary": "Update an extension",
        "description": "Updates an existing extension and returns the updated details.",
        "tags": [
          "Extension"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The ID of the extension.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "detail": {
                    "type": "string"
                  },
                  "password": {
                    "type": "string"
                  }
                },
                "required": [
                  "name",
                  "detail",
                  "password"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated extension.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RegistrarManagerExtension"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete an extension",
        "description": "Deletes an existing extension by its ID.",
        "tags": [
          "Extension"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The ID of the extension.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RegistrarManagerExtension"
                }
              }
            }
          }
        }
      }
    },
    "/extensions/{id}/direct-hash-regenerate": {
      "post": {
        "summary": "Regenerate direct hash for extension",
        "description": "Regenerates the direct hash for the specified extension. If no direct hash exists, one is created. Returns the updated extension with the new direct_hash.",
        "tags": [
          "Extension"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "550e8400-e29b-41d4-a716-446655440000"
            },
            "description": "The unique identifier of the extension. Returned from the `GET /extensions` response."
          }
        ],
        "responses": {
          "200": {
            "description": "Direct hash regenerated successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RegistrarManagerExtension"
                }
              }
            }
          },
          "400": {
            "description": "Unable to regenerate direct hash."
          }
        }
      }
    },
    "/extensions": {
      "get": {
        "summary": "Get a list of extensions",
        "description": "Retrieves a list of extensions.",
        "tags": [
          "Extension"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/PageToken"
          }
        ],
        "responses": {
          "200": {
            "description": "A list of extensions.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/CommonPagination"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "result": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/RegistrarManagerExtension"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Create a new extension",
        "description": "Creates a new extension and returns its details.",
        "tags": [
          "Extension"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "extension": {
                    "type": "string"
                  },
                  "password": {
                    "type": "string"
                  },
                  "name": {
                    "type": "string"
                  },
                  "detail": {
                    "type": "string"
                  }
                },
                "required": [
                  "extension",
                  "password",
                  "name",
                  "detail"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created extension.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RegistrarManagerExtension"
                }
              }
            }
          }
        }
      }
    },
    "/flows/{id}/direct-hash-regenerate": {
      "post": {
        "summary": "Regenerate direct hash for flow",
        "description": "Regenerates the direct hash for the specified flow. If no direct hash exists, one is created. Returns the updated flow with the new direct_hash.",
        "tags": [
          "Flow"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "550e8400-e29b-41d4-a716-446655440000"
            },
            "description": "The unique identifier of the flow. Returned from the `GET /flows` response."
          }
        ],
        "responses": {
          "200": {
            "description": "Direct hash regenerated successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FlowManagerFlow"
                }
              }
            }
          },
          "400": {
            "description": "Unable to regenerate direct hash."
          }
        }
      }
    },
    "/flows/{id}": {
      "get": {
        "summary": "Retrieve flow details",
        "description": "Retrieves the details of a specific flow by its ID.",
        "tags": [
          "Flow"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the flow."
          }
        ],
        "responses": {
          "200": {
            "description": "The flow details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FlowManagerFlow"
                }
              }
            }
          }
        }
      },
      "put": {
        "summary": "Update a flow",
        "description": "Updates the details of an existing flow and returns the updated information.",
        "tags": [
          "Flow"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the flow."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "description": "The updated name of the flow.",
                    "type": "string"
                  },
                  "detail": {
                    "description": "The updated details of the flow.",
                    "type": "string"
                  },
                  "actions": {
                    "description": "Updated list of actions associated with the flow.",
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/FlowManagerAction"
                    }
                  },
                  "on_complete_flow_id": {
                    "description": "ID of the flow to be executed on completion.",
                    "type": "string"
                  }
                },
                "required": [
                  "name",
                  "detail",
                  "actions"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated flow details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FlowManagerFlow"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete a flow",
        "description": "Deletes an existing flow by its ID.",
        "tags": [
          "Flow"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the flow."
          }
        ],
        "responses": {
          "200": {
            "description": "The flow was successfully deleted.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FlowManagerFlow"
                }
              }
            }
          }
        }
      }
    },
    "/flows": {
      "get": {
        "summary": "Retrieve a list of flows",
        "description": "Retrieves a paginated list of flows accessible to the authenticated agent.",
        "tags": [
          "Flow"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/PageToken"
          }
        ],
        "responses": {
          "200": {
            "description": "A list of flows.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/CommonPagination"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "result": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/FlowManagerFlow"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Create a new flow",
        "description": "Creates a new flow with the provided details and returns the created flow's information.",
        "tags": [
          "Flow"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "description": "The name of the flow.",
                    "type": "string"
                  },
                  "detail": {
                    "description": "Detailed information about the flow.",
                    "type": "string"
                  },
                  "actions": {
                    "description": "List of actions associated with the flow.",
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/FlowManagerAction"
                    }
                  },
                  "on_complete_flow_id": {
                    "description": "The ID of the flow to execute upon completion.",
                    "type": "string"
                  }
                },
                "required": [
                  "name",
                  "detail",
                  "actions"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created flow details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FlowManagerFlow"
                }
              }
            }
          }
        }
      }
    },
    "/groupcalls/{id}/hangup": {
      "post": {
        "summary": "Hangup the groupcall",
        "description": "Ends the groupcall with the specified ID.",
        "tags": [
          "Groupcall"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the groupcall."
          }
        ],
        "responses": {
          "200": {
            "description": "The updated groupcall details after hangup.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CallManagerGroupcall"
                }
              }
            }
          }
        }
      }
    },
    "/groupcalls/{id}": {
      "get": {
        "summary": "Get detailed information of a groupcall",
        "description": "Returns the details of the groupcall with the specified ID.",
        "tags": [
          "Groupcall"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the groupcall."
          }
        ],
        "responses": {
          "200": {
            "description": "The groupcall details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CallManagerGroupcall"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete a groupcall",
        "description": "Deletes the groupcall with the specified ID.",
        "tags": [
          "Groupcall"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the groupcall."
          }
        ],
        "responses": {
          "200": {
            "description": "The deleted groupcall information.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CallManagerGroupcall"
                }
              }
            }
          }
        }
      }
    },
    "/groupcalls": {
      "get": {
        "summary": "Get a list of groupcalls",
        "description": "Retrieves a list of groupcalls based on the provided parameters.",
        "tags": [
          "Groupcall"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/PageToken"
          }
        ],
        "responses": {
          "200": {
            "description": "A list of groupcalls.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/CommonPagination"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "result": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/CallManagerGroupcall"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Create a new groupcall",
        "description": "Creates a new groupcall with the specified information and returns the created groupcall.",
        "tags": [
          "Groupcall"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "source": {
                    "$ref": "#/components/schemas/CommonAddress"
                  },
                  "destinations": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/CommonAddress"
                    }
                  },
                  "flow_id": {
                    "type": "string"
                  },
                  "actions": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/FlowManagerAction"
                    }
                  },
                  "ring_method": {
                    "$ref": "#/components/schemas/CallManagerGroupcallRingMethod"
                  },
                  "answer_method": {
                    "$ref": "#/components/schemas/CallManagerGroupcallAnswerMethod"
                  }
                },
                "required": [
                  "source",
                  "destinations",
                  "flow_id",
                  "actions",
                  "ring_method",
                  "answer_method"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created groupcall details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CallManagerGroupcall"
                }
              }
            }
          }
        }
      }
    },
    "/me": {
      "get": {
        "summary": "Get the logged-in agent",
        "description": "Retrieves the information of the currently logged-in agent.",
        "tags": [
          "Me"
        ],
        "responses": {
          "200": {
            "description": "The logged-in agent's details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentManagerAgent"
                }
              }
            }
          }
        }
      }
    },
    "/messages/{id}": {
      "get": {
        "summary": "Get a message by ID",
        "description": "Retrieves the message of the given ID.",
        "tags": [
          "Message"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the message."
          }
        ],
        "responses": {
          "200": {
            "description": "The message details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageManagerMessage"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete a message by ID",
        "description": "Deletes the message with the given ID and returns the deleted message.",
        "tags": [
          "Message"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the message to delete."
          }
        ],
        "responses": {
          "200": {
            "description": "The deleted message details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageManagerMessage"
                }
              }
            }
          }
        }
      }
    },
    "/messages": {
      "get": {
        "summary": "List all messages",
        "description": "Retrieves a list of messages for the given customer.",
        "tags": [
          "Message"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/PageToken"
          }
        ],
        "responses": {
          "200": {
            "description": "A list of messages.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/CommonPagination"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "result": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/MessageManagerMessage"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Send a message and return the sent message",
        "description": "Sends a message with the provided information and returns the sent message details.",
        "tags": [
          "Message"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "source": {
                    "description": "The source of the message.",
                    "$ref": "#/components/schemas/CommonAddress"
                  },
                  "destinations": {
                    "description": "List of destinations for the message.",
                    "type": "array",
                    "items": {
                      "type": "string",
                      "$ref": "#/components/schemas/CommonAddress"
                    }
                  },
                  "text": {
                    "description": "The content of the message.",
                    "type": "string"
                  }
                },
                "required": [
                  "source",
                  "destinations",
                  "text"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The sent message details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageManagerMessage"
                }
              }
            }
          }
        }
      }
    },
    "/numbers/{id}/flow_ids": {
      "put": {
        "summary": "Update the order number's flow ID",
        "description": "Update the flow ID of the order number identified by the provided ID.",
        "tags": [
          "Number"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The ID of the order number to update.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "call_flow_id": {
                    "description": "The ID of the updated call flow.",
                    "type": "string"
                  },
                  "message_flow_id": {
                    "description": "The ID of the updated message flow.",
                    "type": "string"
                  }
                },
                "required": [
                  "call_flow_id",
                  "message_flow_id"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated order number details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NumberManagerNumber"
                }
              }
            }
          }
        }
      }
    },
    "/numbers/{id}": {
      "get": {
        "summary": "Get order number by ID",
        "description": "Get the details of the order number identified by the provided ID.",
        "tags": [
          "Number"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The ID of the order number.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The details of the order number.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NumberManagerNumber"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete order number by ID",
        "description": "Delete the order number identified by the provided ID.",
        "tags": [
          "Number"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The ID of the order number to delete.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The deleted order number details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NumberManagerNumber"
                }
              }
            }
          }
        }
      },
      "put": {
        "summary": "Update order number by ID",
        "description": "Update the order number's details with the provided information.",
        "tags": [
          "Number"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The ID of the order number to update.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "call_flow_id": {
                    "description": "The ID of the updated call flow.",
                    "type": "string"
                  },
                  "message_flow_id": {
                    "description": "The ID of the updated message flow.",
                    "type": "string"
                  },
                  "name": {
                    "description": "The updated name of the number.",
                    "type": "string"
                  },
                  "detail": {
                    "description": "Updated details for the number.",
                    "type": "string"
                  }
                },
                "required": [
                  "call_flow_id",
                  "message_flow_id",
                  "name",
                  "detail"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated order number details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NumberManagerNumber"
                }
              }
            }
          }
        }
      }
    },
    "/numbers/{id}/metadata": {
      "put": {
        "summary": "Update a number's metadata.",
        "description": "Updates configuration flags for a number. Requires `CustomerAdmin` or `CustomerManager` permission.\nThe response returns the full number object including the updated metadata.\n",
        "tags": [
          "Number"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The unique identifier of the number (UUID). Obtained from the `id` field of `GET /numbers`.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NumberManagerMetadata"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated number object with the new metadata applied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NumberManagerNumber"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request. Possible causes:\n- The `id` path parameter is not a valid UUID.\n- The request body is not valid JSON or does not match the `NumberManagerMetadata` schema.\n"
          },
          "403": {
            "description": "Permission denied. The authenticated agent does not have `CustomerAdmin` or `CustomerManager` permission.\n"
          }
        }
      }
    },
    "/numbers": {
      "get": {
        "summary": "List order numbers",
        "description": "Get a list of order numbers based on the customer's information.",
        "tags": [
          "Number"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/PageToken"
          }
        ],
        "responses": {
          "200": {
            "description": "A list of order numbers.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/CommonPagination"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "result": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/NumberManagerNumber"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Create a new number",
        "description": "Create a new order number and return the details of the created number.",
        "tags": [
          "Number"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "number": {
                    "description": "The phone number.",
                    "type": "string"
                  },
                  "type": {
                    "$ref": "#/components/schemas/NumberManagerNumberType",
                    "description": "The type of the number (normal or virtual). Defaults to normal."
                  },
                  "call_flow_id": {
                    "description": "The ID of the call flow.",
                    "type": "string"
                  },
                  "message_flow_id": {
                    "description": "The ID of the message flow.",
                    "type": "string"
                  },
                  "name": {
                    "description": "The name of the number.",
                    "type": "string"
                  },
                  "detail": {
                    "description": "Additional details about the number.",
                    "type": "string"
                  }
                },
                "required": [
                  "number",
                  "call_flow_id",
                  "message_flow_id",
                  "name",
                  "detail"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created order number details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NumberManagerNumber"
                }
              }
            }
          }
        }
      }
    },
    "/numbers/renew": {
      "post": {
        "summary": "Renew the numbers",
        "description": "Renew the specified numbers and return the updated number details.",
        "tags": [
          "Number"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "tm_renew": {
                    "type": "string",
                    "description": "The timestamp for renewing the number."
                  }
                },
                "required": [
                  "tm_renew"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A list of renewed order numbers.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NumberManagerNumber"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/outdials/{id}/campaign_id": {
      "put": {
        "summary": "Update an outdial's campaign ID.",
        "description": "Updates the campaign ID of the specified outdial and returns the updated outdial information.",
        "tags": [
          "Outdial"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the outdial to update."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "campaign_id": {
                    "type": "string"
                  }
                },
                "required": [
                  "campaign_id"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated outdial details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OutdialManagerOutdial"
                }
              }
            }
          }
        }
      }
    },
    "/outdials/{id}/data": {
      "put": {
        "summary": "Update an outdial's data.",
        "description": "Updates the data of the specified outdial and returns the updated outdial details.",
        "tags": [
          "Outdial"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the outdial to update."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "data": {
                    "type": "string"
                  }
                },
                "required": [
                  "data"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated outdial details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OutdialManagerOutdial"
                }
              }
            }
          }
        }
      }
    },
    "/outdials/{id}/targets/{target_id}": {
      "get": {
        "summary": "Retrieve an outdial target by its ID.",
        "description": "Gets the details of a specific outdial target using its ID.",
        "tags": [
          "Outdial"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the outdial."
          },
          {
            "name": "target_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the outdial target."
          }
        ],
        "responses": {
          "200": {
            "description": "The outdial target details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OutdialManagerOutdialtarget"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete an outdial target.",
        "description": "Deletes a specific outdial target based on its ID.",
        "tags": [
          "Outdial"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the outdial to delete the target from."
          },
          {
            "name": "target_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the target to delete."
          }
        ],
        "responses": {
          "200": {
            "description": "The result of the delete operation.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OutdialManagerOutdialtarget"
                }
              }
            }
          }
        }
      }
    },
    "/outdials/{id}/targets": {
      "get": {
        "summary": "Retrieve a list of outdial targets.",
        "description": "Gets a list of outdial targets based on the specified page size and page token.",
        "tags": [
          "Outdial"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/PageToken"
          },
          {
            "name": "id",
            "description": "The ID of the outdial to associate with the target.",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A list of outdial targets.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/CommonPagination"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "result": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/OutdialManagerOutdialtarget"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Create a new target for an outdial.",
        "description": "Creates a new target for the specified outdial and returns the created target information.",
        "tags": [
          "Outdial"
        ],
        "parameters": [
          {
            "name": "id",
            "description": "The ID of the outdial to associate with the target.",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "detail": {
                    "type": "string"
                  },
                  "data": {
                    "type": "string"
                  },
                  "destination_0": {
                    "$ref": "#/components/schemas/CommonAddress"
                  },
                  "destination_1": {
                    "$ref": "#/components/schemas/CommonAddress"
                  },
                  "destination_2": {
                    "$ref": "#/components/schemas/CommonAddress"
                  },
                  "destination_3": {
                    "$ref": "#/components/schemas/CommonAddress"
                  },
                  "destination_4": {
                    "$ref": "#/components/schemas/CommonAddress"
                  }
                },
                "required": [
                  "name",
                  "detail",
                  "data",
                  "destination_0",
                  "destination_1",
                  "destination_2",
                  "destination_3",
                  "destination_4"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created outdial target details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OutdialManagerOutdialtarget"
                }
              }
            }
          }
        }
      }
    },
    "/outdials/{id}": {
      "get": {
        "summary": "Retrieve an outdial by its ID.",
        "description": "Returns detailed information of a specific outdial based on the provided ID.",
        "tags": [
          "Outdial"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the outdial to retrieve."
          }
        ],
        "responses": {
          "200": {
            "description": "The outdial details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OutdialManagerOutdial"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete an existing outdial.",
        "description": "Deletes an outdial specified by its ID.",
        "tags": [
          "Outdial"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the outdial to delete."
          }
        ],
        "responses": {
          "200": {
            "description": "The result of the delete operation.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OutdialManagerOutdial"
                }
              }
            }
          }
        }
      },
      "put": {
        "summary": "Update an outdial.",
        "description": "Updates the specified outdial and returns the updated information.",
        "tags": [
          "Outdial"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the outdial to update."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "detail": {
                    "type": "string"
                  }
                },
                "required": [
                  "name",
                  "detail"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated outdial details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OutdialManagerOutdial"
                }
              }
            }
          }
        }
      }
    },
    "/outdials": {
      "get": {
        "summary": "Retrieve a list of outdials.",
        "description": "Gets a list of outdials based on the specified page size and page token.",
        "tags": [
          "Outdial"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/PageToken"
          }
        ],
        "responses": {
          "200": {
            "description": "A list of outdials.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/CommonPagination"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "result": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/OutdialManagerOutdial"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Create a new outdial.",
        "description": "Creates a new outdial with the specified information and returns the created outdial details.",
        "tags": [
          "Outdial"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "campaign_id": {
                    "type": "string"
                  },
                  "name": {
                    "type": "string"
                  },
                  "detail": {
                    "type": "string"
                  },
                  "data": {
                    "type": "string"
                  }
                },
                "required": [
                  "campaign_id",
                  "name",
                  "detail",
                  "data"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created outdial details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OutdialManagerOutdial"
                }
              }
            }
          }
        }
      }
    },
    "/outplans/{id}/dial_info": {
      "put": {
        "summary": "Update dial information of an existing outplan.",
        "description": "Updates the dial information for the outplan specified by the given ID and returns the updated outplan.",
        "tags": [
          "Outplan"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The ID of the outplan to update.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "source": {
                    "$ref": "#/components/schemas/CommonAddress",
                    "description": "The new source address."
                  },
                  "dial_timeout": {
                    "type": "integer",
                    "description": "The new dial timeout in seconds."
                  },
                  "try_interval": {
                    "type": "integer",
                    "description": "The new interval between retry attempts."
                  },
                  "max_try_count_0": {
                    "type": "integer",
                    "description": "The new maximum retry count for destination 0."
                  },
                  "max_try_count_1": {
                    "type": "integer",
                    "description": "The new maximum retry count for destination 1."
                  },
                  "max_try_count_2": {
                    "type": "integer",
                    "description": "The new maximum retry count for destination 2."
                  },
                  "max_try_count_3": {
                    "type": "integer",
                    "description": "The new maximum retry count for destination 3."
                  },
                  "max_try_count_4": {
                    "type": "integer",
                    "description": "The new maximum retry count for destination 4."
                  }
                },
                "required": [
                  "source",
                  "dial_timeout",
                  "try_interval",
                  "max_try_count_0",
                  "max_try_count_1",
                  "max_try_count_2",
                  "max_try_count_3",
                  "max_try_count_4"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated outplan with new dial information.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CampaignManagerOutplan"
                }
              }
            }
          }
        }
      }
    },
    "/outplans/{id}": {
      "get": {
        "summary": "Retrieve outplan details by ID.",
        "description": "Retrieves the details of the specified outplan based on the given ID.",
        "tags": [
          "Outplan"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The unique identifier of the outplan.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested outplan details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CampaignManagerOutplan"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete an existing outplan.",
        "description": "Deletes the outplan specified by the given ID.",
        "tags": [
          "Outplan"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The ID of the outplan to delete.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully deleted the outplan.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CampaignManagerOutplan"
                }
              }
            }
          }
        }
      },
      "put": {
        "summary": "Update dial information of an existing outplan.",
        "description": "Updates the dial information for the outplan specified by the given ID and returns the updated outplan.",
        "tags": [
          "Outplan"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The ID of the outplan to update.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "The new name of the outplan."
                  },
                  "detail": {
                    "type": "string",
                    "description": "The new detail of the outplan."
                  }
                },
                "required": [
                  "name",
                  "detail"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated outplan with new dial information.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CampaignManagerOutplan"
                }
              }
            }
          }
        }
      }
    },
    "/outplans": {
      "get": {
        "summary": "Retrieve a list of outplans.",
        "description": "Retrieves a paginated list of outplans based on the provided parameters.",
        "tags": [
          "Outplan"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/PageToken"
          }
        ],
        "responses": {
          "200": {
            "description": "A list of outplans.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/CommonPagination"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "result": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/CampaignManagerOutplan"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Create a new outplan.",
        "description": "Creates a new outplan with the provided details and returns the created outplan.",
        "tags": [
          "Outplan"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "The name of the outplan."
                  },
                  "detail": {
                    "type": "string",
                    "description": "Additional details about the outplan."
                  },
                  "source": {
                    "$ref": "#/components/schemas/CommonAddress",
                    "description": "The source address for the outplan."
                  },
                  "dial_timeout": {
                    "type": "integer",
                    "description": "The dial timeout in seconds."
                  },
                  "try_interval": {
                    "type": "integer",
                    "description": "The interval between retry attempts."
                  },
                  "max_try_count_0": {
                    "type": "integer",
                    "description": "Maximum retry count for destination 0."
                  },
                  "max_try_count_1": {
                    "type": "integer",
                    "description": "Maximum retry count for destination 1."
                  },
                  "max_try_count_2": {
                    "type": "integer",
                    "description": "Maximum retry count for destination 2."
                  },
                  "max_try_count_3": {
                    "type": "integer",
                    "description": "Maximum retry count for destination 3."
                  },
                  "max_try_count_4": {
                    "type": "integer",
                    "description": "Maximum retry count for destination 4."
                  }
                },
                "required": [
                  "name",
                  "detail",
                  "source",
                  "dial_timeout",
                  "try_interval",
                  "max_try_count_0",
                  "max_try_count_1",
                  "max_try_count_2",
                  "max_try_count_3",
                  "max_try_count_4"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created outplan details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CampaignManagerOutplan"
                }
              }
            }
          }
        }
      }
    },
    "/providers/{id}": {
      "get": {
        "summary": "Get provider by ID",
        "description": "Retrieves the provider details for the specified ID.",
        "tags": [
          "Provider"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the provider"
          }
        ],
        "responses": {
          "200": {
            "description": "The details of the provider with the specified ID.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RouteManagerProvider"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete provider by ID",
        "description": "Deletes the provider with the specified ID.",
        "tags": [
          "Provider"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the provider to delete."
          }
        ],
        "responses": {
          "200": {
            "description": "A confirmation of the deletion.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RouteManagerProvider"
                }
              }
            }
          }
        }
      },
      "put": {
        "summary": "Update provider information",
        "description": "Updates the provider details for the given ID with the provided information.",
        "tags": [
          "Provider"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the provider to update."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "type": {
                    "$ref": "#/components/schemas/RouteManagerProviderType"
                  },
                  "hostname": {
                    "type": "string"
                  },
                  "tech_prefix": {
                    "type": "string"
                  },
                  "tech_postfix": {
                    "type": "string"
                  },
                  "tech_headers": {
                    "type": "object"
                  },
                  "name": {
                    "type": "string"
                  },
                  "detail": {
                    "type": "string"
                  }
                },
                "required": [
                  "type",
                  "hostname",
                  "tech_prefix",
                  "tech_postfix",
                  "tech_headers",
                  "name",
                  "detail"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated provider details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RouteManagerProvider"
                }
              }
            }
          }
        }
      }
    },
    "/providers": {
      "get": {
        "summary": "List providers of the given customer",
        "description": "Returns a list of providers for the authenticated customer.",
        "tags": [
          "Provider"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/PageToken"
          }
        ],
        "responses": {
          "200": {
            "description": "A list of providers for the given customer.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/CommonPagination"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "result": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/RouteManagerProvider"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Create a new provider",
        "description": "Creates a new provider with the provided details.",
        "tags": [
          "Provider"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "type": {
                    "$ref": "#/components/schemas/RouteManagerProviderType"
                  },
                  "hostname": {
                    "type": "string"
                  },
                  "tech_prefix": {
                    "type": "string"
                  },
                  "tech_postfix": {
                    "type": "string"
                  },
                  "tech_headers": {
                    "type": "object"
                  },
                  "name": {
                    "type": "string"
                  },
                  "detail": {
                    "type": "string"
                  }
                },
                "required": [
                  "type",
                  "hostname",
                  "tech_prefix",
                  "tech_postfix",
                  "tech_headers",
                  "name",
                  "detail"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created provider details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RouteManagerProvider"
                }
              }
            }
          }
        }
      }
    },
    "/queuecalls/{id}/kick": {
      "post": {
        "summary": "Kick a queue call from the queue",
        "description": "Removes the specified queue call from the queue.",
        "tags": [
          "Queue"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The ID of the queue call.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully kicked the queue call.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QueueManagerQueuecall"
                }
              }
            }
          }
        }
      }
    },
    "/queuecalls/{id}": {
      "get": {
        "summary": "Get detailed queue call information",
        "description": "Returns detailed information for the specified queue call ID.",
        "tags": [
          "Queue"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The ID of the queue call.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The queue call details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QueueManagerQueuecall"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete a queue call",
        "description": "Deletes the specified queue call.",
        "tags": [
          "Queue"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The ID of the queue call to delete.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully deleted the queue call.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QueueManagerQueuecall"
                }
              }
            }
          }
        }
      }
    },
    "/queuecalls": {
      "get": {
        "summary": "List queue calls",
        "description": "Returns a list of queue calls for the given customer.",
        "tags": [
          "Queue"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/PageToken"
          }
        ],
        "responses": {
          "200": {
            "description": "A list of queue calls.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/CommonPagination"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "result": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/QueueManagerQueuecall"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/queuecalls/reference_id/{id}/kick": {
      "post": {
        "summary": "Kick a queue call by reference ID",
        "description": "Removes the queue call associated with the given reference ID from the queue.",
        "tags": [
          "Queue"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The reference ID of the queue call.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully kicked the queue call by reference ID.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QueueManagerQueuecall"
                }
              }
            }
          }
        }
      }
    },
    "/queues/{id}/direct-hash-regenerate": {
      "post": {
        "summary": "Regenerate direct hash for queue",
        "description": "Regenerates the direct hash for the specified queue. If no direct hash exists, one is created. Returns the updated queue with the new direct_hash.",
        "tags": [
          "Queue"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "550e8400-e29b-41d4-a716-446655440000"
            },
            "description": "The unique identifier of the queue. Returned from the `GET /queues` response."
          }
        ],
        "responses": {
          "200": {
            "description": "Direct hash regenerated successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QueueManagerQueue"
                }
              }
            }
          },
          "400": {
            "description": "Unable to regenerate direct hash."
          }
        }
      }
    },
    "/queues/{id}/routing_method": {
      "put": {
        "summary": "Update the queue's routing method",
        "description": "Updates the routing method of the specified queue.",
        "tags": [
          "Queue"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "routing_method": {
                    "$ref": "#/components/schemas/QueueManagerQueueRoutingMethod"
                  }
                },
                "required": [
                  "routing_method"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated queue details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QueueManagerQueue"
                }
              }
            }
          }
        }
      }
    },
    "/queues/{id}/tag_ids": {
      "put": {
        "summary": "Update the queue's tag IDs",
        "description": "Updates the tag IDs of the specified queue.",
        "tags": [
          "Queue"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "tag_ids": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "required": [
                  "tag_ids"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated queue details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QueueManagerQueue"
                }
              }
            }
          }
        }
      }
    },
    "/queues/{id}": {
      "get": {
        "summary": "Get the queue by ID",
        "description": "Retrieves the details of a specific queue by its ID.",
        "tags": [
          "Queue"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The queue details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QueueManagerQueue"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete a queue by ID",
        "description": "Deletes the queue specified by the given ID.",
        "tags": [
          "Queue"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Queue deleted successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QueueManagerQueue"
                }
              }
            }
          }
        }
      },
      "put": {
        "summary": "Update the queue details",
        "description": "Updates the details of the queue identified by the given ID.",
        "tags": [
          "Queue"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "detail": {
                    "type": "string"
                  },
                  "routing_method": {
                    "$ref": "#/components/schemas/QueueManagerQueueRoutingMethod"
                  },
                  "tag_ids": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "wait_flow_id": {
                    "type": "string",
                    "description": "Flow ID for the wait queue."
                  },
                  "wait_timeout": {
                    "type": "integer"
                  },
                  "service_timeout": {
                    "type": "integer"
                  }
                },
                "required": [
                  "name",
                  "detail",
                  "routing_method",
                  "tag_ids",
                  "wait_flow_id",
                  "wait_timeout",
                  "service_timeout"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated queue details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QueueManagerQueue"
                }
              }
            }
          }
        }
      }
    },
    "/queues": {
      "get": {
        "summary": "List queues of the customer",
        "description": "Retrieves a list of queues associated with the customer.",
        "tags": [
          "Queue"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/PageToken"
          }
        ],
        "responses": {
          "200": {
            "description": "A list of queues.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/CommonPagination"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "result": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/QueueManagerQueue"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Create a new queue",
        "description": "Creates a new queue with the provided details.",
        "tags": [
          "Queue"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "detail": {
                    "type": "string"
                  },
                  "routing_method": {
                    "$ref": "#/components/schemas/QueueManagerQueueRoutingMethod"
                  },
                  "tag_ids": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "wait_flow_id": {
                    "type": "string",
                    "description": "Flow ID for the wait queue."
                  },
                  "wait_timeout": {
                    "type": "integer"
                  },
                  "service_timeout": {
                    "type": "integer"
                  }
                },
                "required": [
                  "name",
                  "detail",
                  "routing_method",
                  "tag_ids",
                  "wait_flow_id",
                  "wait_timeout",
                  "service_timeout"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created queue details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QueueManagerQueue"
                }
              }
            }
          }
        }
      }
    },
    "/rags/{id}/sources/{source_id}": {
      "delete": {
        "summary": "Remove a source from a rag",
        "description": "Removes a single source (document) and its chunks from a RAG knowledge base. Returns the updated RAG with refreshed sources list.",
        "tags": [
          "RAG"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "The unique identifier of the rag. Returned from the `POST /rags` response."
          },
          {
            "name": "source_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "The unique identifier of the source to remove. Returned from the `id` field of the `sources[]` array in `GET /rags/{id}` response."
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully removed source. Returns the updated RAG.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RagManagerRag"
                }
              }
            }
          }
        }
      }
    },
    "/rags/{id}/sources": {
      "post": {
        "summary": "Add sources to a rag",
        "description": "Adds additional document sources to an existing RAG knowledge base. Documents are ingested asynchronously.",
        "tags": [
          "RAG"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "The unique identifier of the rag. Returned from the `POST /rags` response."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "storage_file_ids": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "description": "List of storage file IDs to ingest. Obtained from the `id` field of `POST /storage_files` response.",
                    "example": [
                      "b2c3d4e5-f6a7-8901-bcde-f12345678901"
                    ]
                  },
                  "source_urls": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "uri"
                    },
                    "description": "List of URLs to fetch and ingest as documents.",
                    "example": [
                      "https://example.com/docs/faq.html"
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully added sources.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RagManagerRag"
                }
              }
            }
          }
        }
      }
    },
    "/rags/{id}": {
      "get": {
        "summary": "Get rag details",
        "description": "Retrieves detailed information about a specific RAG knowledge base.",
        "tags": [
          "RAG"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "The unique identifier of the rag. Returned from the `POST /rags` response."
          }
        ],
        "responses": {
          "200": {
            "description": "Rag details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RagManagerRag"
                }
              }
            }
          }
        }
      },
      "put": {
        "summary": "Update a rag",
        "description": "Updates the name and/or description of an existing RAG knowledge base.",
        "tags": [
          "RAG"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "The unique identifier of the rag. Returned from the `POST /rags` response."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "Updated name for the rag.",
                    "example": "Updated Support KB"
                  },
                  "description": {
                    "type": "string",
                    "description": "Updated description.",
                    "example": "Updated knowledge base description"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updated rag.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RagManagerRag"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete a rag",
        "description": "Deletes a RAG knowledge base and all associated documents and chunks.",
        "tags": [
          "RAG"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "The unique identifier of the rag. Returned from the `POST /rags` response."
          }
        ],
        "responses": {
          "200": {
            "description": "Rag deleted.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RagManagerRag"
                }
              }
            }
          }
        }
      }
    },
    "/rags": {
      "get": {
        "summary": "Get a list of rags",
        "description": "Retrieves a paginated list of RAG knowledge bases for the authenticated customer.",
        "tags": [
          "RAG"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/PageToken"
          }
        ],
        "responses": {
          "200": {
            "description": "A list of rags.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/CommonPagination"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "result": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/RagManagerRag"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Create a new rag",
        "description": "Creates a new RAG knowledge base with document sources. Documents are ingested asynchronously.",
        "tags": [
          "RAG"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "name"
                ],
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "Human-readable name for the rag.",
                    "example": "Customer Support KB"
                  },
                  "description": {
                    "type": "string",
                    "description": "Description of what this rag contains.",
                    "example": "Knowledge base for customer support conversations"
                  },
                  "storage_file_ids": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "description": "List of storage file IDs to ingest. Obtained from the `id` field of `POST /storage_files` response.",
                    "example": [
                      "b2c3d4e5-f6a7-8901-bcde-f12345678901"
                    ]
                  },
                  "source_urls": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "uri"
                    },
                    "description": "List of URLs to fetch and ingest as documents.",
                    "example": [
                      "https://example.com/docs/faq.html"
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully created rag.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RagManagerRag"
                }
              }
            }
          }
        }
      }
    },
    "/recordingfiles/{id}": {
      "get": {
        "summary": "Download the recording file",
        "description": "Retrieves the specified recording file and redirects to the download URI.",
        "tags": [
          "Recording"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The recording file's ID.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "307": {
            "description": "The recording file download URL.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Bad request. Could not find agent information or recording file.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Could not get a recordingfile."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "The requested recording file was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Recording file not found."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/recordings/{id}": {
      "get": {
        "summary": "Get recording details",
        "description": "Retrieves detailed information about a specific recording.",
        "tags": [
          "Recording"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The recording's ID.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The recording details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CallManagerRecording"
                }
              }
            }
          },
          "400": {
            "description": "Bad request. Could not find agent information or recording."
          },
          "404": {
            "description": "Recording not found."
          }
        }
      },
      "delete": {
        "summary": "Delete recording",
        "description": "Deletes the specified recording and returns the deleted recording information.",
        "tags": [
          "Recording"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The recording's ID.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The deleted recording details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CallManagerRecording"
                }
              }
            }
          },
          "400": {
            "description": "Bad request. Could not find agent information or recording to delete."
          }
        }
      }
    },
    "/recordings": {
      "get": {
        "summary": "List recordings",
        "description": "Retrieves a list of recordings for the given customer.",
        "tags": [
          "Recording"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/PageToken"
          }
        ],
        "responses": {
          "200": {
            "description": "A list of recordings.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/CommonPagination"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "result": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/CallManagerRecording"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/routes/{id}": {
      "get": {
        "summary": "Get a route",
        "description": "Returns the details of the route for the given ID.",
        "tags": [
          "Route"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The route's ID.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The route details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RouteManagerRoute"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete the route",
        "description": "Deletes the route for the given ID.",
        "tags": [
          "Route"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The route's ID.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The route has been deleted successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RouteManagerRoute"
                }
              }
            }
          }
        }
      },
      "put": {
        "summary": "Update a route",
        "description": "Updates a route with the provided details and returns the updated route.",
        "tags": [
          "Route"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The route's ID.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "The name of the route."
                  },
                  "detail": {
                    "type": "string",
                    "description": "The detail information of the route."
                  },
                  "provider_id": {
                    "type": "string",
                    "description": "The provider ID for the route."
                  },
                  "priority": {
                    "type": "integer",
                    "description": "The priority of the route."
                  },
                  "target": {
                    "type": "string",
                    "description": "The target of the route."
                  }
                },
                "required": [
                  "name",
                  "detail",
                  "provider_id",
                  "priority",
                  "target"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated route details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RouteManagerRoute"
                }
              }
            }
          }
        }
      }
    },
    "/routes": {
      "get": {
        "summary": "List routes",
        "description": "Returns a list of routes for the given customer with pagination.",
        "tags": [
          "Route"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/PageToken"
          },
          {
            "name": "customer_id",
            "in": "query",
            "description": "target customer id",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A list of routes.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/CommonPagination"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "result": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/RouteManagerRoute"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Create a new route",
        "description": "Creates a new route with the provided details.",
        "tags": [
          "Route"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "customer_id": {
                    "type": "string",
                    "description": "The ID of the customer for the route."
                  },
                  "name": {
                    "type": "string",
                    "description": "The name of the route."
                  },
                  "detail": {
                    "type": "string",
                    "description": "The detail information of the route."
                  },
                  "provider_id": {
                    "type": "string",
                    "description": "The provider ID for the route."
                  },
                  "priority": {
                    "type": "integer",
                    "description": "The priority of the route."
                  },
                  "target": {
                    "type": "string",
                    "description": "The target of the route."
                  }
                },
                "required": [
                  "customer_id",
                  "name",
                  "detail",
                  "provider_id",
                  "priority",
                  "target"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created route details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RouteManagerRoute"
                }
              }
            }
          }
        }
      }
    },
    "/service_agents/agents/{id}": {
      "get": {
        "summary": "Retrieve detailed information of a service agent",
        "description": "Fetches detailed information of a specific service agent by its ID.",
        "tags": [
          "Service Agent"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the service agent.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The details of the requested service agent.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentManagerAgent"
                }
              }
            }
          }
        }
      }
    },
    "/service_agents/agents": {
      "get": {
        "summary": "Retrieve a list of service agents",
        "description": "Fetches a list of service agents with pagination support.",
        "tags": [
          "Service Agent"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/PageToken"
          }
        ],
        "responses": {
          "200": {
            "description": "A list of service agents.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/CommonPagination"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "result": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/AgentManagerAgent"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/service_agents/calls/{id}": {
      "get": {
        "summary": "Retrieve detailed information of a specific call",
        "description": "Fetches detailed information about a specific call by its ID.",
        "tags": [
          "Service Agent"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the call.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The details of the requested call.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CallManagerCall"
                }
              }
            }
          }
        }
      }
    },
    "/service_agents/calls": {
      "get": {
        "summary": "Retrieve a list of calls for the given customer",
        "description": "Fetches a list of calls for the given service agent, with pagination support.",
        "tags": [
          "Service Agent"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/PageToken"
          }
        ],
        "responses": {
          "200": {
            "description": "A list of calls for the service agent.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/CommonPagination"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "result": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/CallManagerCall"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/service_agents/conversations/{id}/messages": {
      "get": {
        "summary": "Get list of conversation messages",
        "description": "Retrieves a paginated list of messages for a specific conversation.",
        "tags": [
          "Service Agent"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/PageToken"
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the conversation."
          }
        ],
        "responses": {
          "200": {
            "description": "A list of messages in the conversation.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/CommonPagination"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "result": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/ConversationManagerMessage"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Send a message to the conversation",
        "description": "Sends a message to a specific conversation and returns the details of the sent message.",
        "tags": [
          "Service Agent"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the conversation."
          }
        ],
        "requestBody": {
          "description": "The details of the message to be sent.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "text": {
                    "type": "string",
                    "description": "The text content of the message."
                  },
                  "medias": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/ConversationManagerMedia"
                    }
                  }
                },
                "required": [
                  "text",
                  "medias"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The details of the sent message.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConversationManagerMessage"
                }
              }
            }
          }
        }
      }
    },
    "/service_agents/conversations/{id}": {
      "get": {
        "summary": "Get detailed conversation info",
        "description": "Retrieves detailed information about a specific conversation by its ID.",
        "tags": [
          "Service Agent"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the conversation."
          }
        ],
        "responses": {
          "200": {
            "description": "The details of the conversation.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConversationManagerConversation"
                }
              }
            }
          }
        }
      }
    },
    "/service_agents/conversations": {
      "get": {
        "summary": "Get list of conversations",
        "description": "Retrieves a paginated list of conversations associated with the authenticated agent.",
        "tags": [
          "Service Agent"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/PageToken"
          }
        ],
        "responses": {
          "200": {
            "description": "A list of conversations.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/CommonPagination"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "result": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/ConversationManagerConversation"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/service_agents/customer": {
      "get": {
        "summary": "Get customer details",
        "description": "Retrieves detailed information about the customer associated with the authenticated agent.",
        "tags": [
          "Service Agent"
        ],
        "responses": {
          "200": {
            "description": "The details of the customer.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerManagerCustomer"
                }
              }
            }
          }
        }
      }
    },
    "/service_agents/extensions/{id}": {
      "get": {
        "summary": "Get extension details",
        "description": "Retrieves detailed information about a specific extension by its ID.",
        "tags": [
          "Service Agent"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the extension."
          }
        ],
        "responses": {
          "200": {
            "description": "The details of the extension.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RegistrarManagerExtension"
                }
              }
            }
          }
        }
      }
    },
    "/service_agents/extensions": {
      "get": {
        "summary": "Get list of extensions",
        "description": "Retrieves a paginated list of extensions associated with the authenticated agent.",
        "tags": [
          "Service Agent"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/PageToken"
          }
        ],
        "responses": {
          "200": {
            "description": "A list of extensions.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/CommonPagination"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "result": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/RegistrarManagerExtension"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/service_agents/files/{id}": {
      "get": {
        "summary": "Get file details",
        "description": "Retrieves detailed information about a specific file by its ID.",
        "tags": [
          "Service Agent"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the file."
          }
        ],
        "responses": {
          "200": {
            "description": "The details of the file.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StorageManagerFile"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete a file",
        "description": "Deletes a specific file by its ID.",
        "tags": [
          "Service Agent"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the file."
          }
        ],
        "responses": {
          "200": {
            "description": "File successfully deleted.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StorageManagerFile"
                }
              }
            }
          }
        }
      }
    },
    "/service_agents/files/{id}/file": {
      "get": {
        "summary": "Download the service agent file",
        "description": "Retrieves the specified service agent file and redirects to the download URI.",
        "tags": [
          "Service Agent"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The file's ID. Obtained from the `id` field of `GET /service_agents/files`.",
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "550e8400-e29b-41d4-a716-446655440000"
            }
          }
        ],
        "responses": {
          "307": {
            "description": "Redirect to the service agent file download URL.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string",
                  "example": "https://storage.googleapis.com/bucket/storage/550e8400-e29b-41d4-a716-446655440000?X-Goog-Signature=abc123"
                }
              }
            }
          },
          "400": {
            "description": "Bad request. Could not find agent information or file.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Could not get service agent file."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/service_agents/files": {
      "post": {
        "summary": "Upload a file",
        "description": "Uploads a file and returns the details of the uploaded file.",
        "tags": [
          "Service Agent"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary",
                    "description": "The file to upload."
                  },
                  "type": {
                    "type": "string",
                    "description": "The type/category of the file. Must be 'talk' for this endpoint.",
                    "enum": [
                      "talk"
                    ],
                    "example": "talk"
                  }
                },
                "required": [
                  "file",
                  "type"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The details of the uploaded file.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StorageManagerFile"
                }
              }
            }
          }
        }
      },
      "get": {
        "summary": "Get list of files",
        "description": "Retrieves a paginated list of files associated with the authenticated agent.",
        "tags": [
          "Service Agent"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/PageToken"
          }
        ],
        "responses": {
          "200": {
            "description": "A list of files.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/CommonPagination"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "result": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/StorageManagerFile"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/service_agents/me/addresses": {
      "put": {
        "summary": "Update authenticated agent's addresses",
        "description": "Updates the address details of the authenticated agent and returns the updated information.",
        "tags": [
          "Service Agent"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "addresses": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/CommonAddress"
                    },
                    "description": "The updated list of addresses."
                  }
                },
                "required": [
                  "addresses"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated address information of the agent.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentManagerAgent"
                }
              }
            }
          }
        }
      }
    },
    "/service_agents/me/password": {
      "put": {
        "summary": "Update authenticated agent's password",
        "description": "Updates the password of the authenticated agent.",
        "tags": [
          "Service Agent"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "password": {
                    "type": "string",
                    "description": "The new password for the agent."
                  }
                },
                "required": [
                  "password"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Password updated successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentManagerAgent"
                }
              }
            }
          }
        }
      }
    },
    "/service_agents/me/status": {
      "put": {
        "summary": "Update authenticated agent's status",
        "description": "Updates the status of the authenticated agent and returns the updated information.",
        "tags": [
          "Service Agent"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "status": {
                    "$ref": "#/components/schemas/AgentManagerAgentStatus"
                  }
                },
                "required": [
                  "status"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated status information of the agent.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentManagerAgent"
                }
              }
            }
          }
        }
      }
    },
    "/service_agents/me": {
      "get": {
        "summary": "Get authenticated agent's details",
        "description": "Retrieves detailed information about the authenticated agent.",
        "tags": [
          "Service Agent"
        ],
        "responses": {
          "200": {
            "description": "The authenticated agent's details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentManagerAgent"
                }
              }
            }
          }
        }
      },
      "put": {
        "summary": "Update authenticated agent's information",
        "description": "Updates the basic information of the authenticated agent and returns the updated details.",
        "tags": [
          "Service Agent"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "The updated name of the agent."
                  },
                  "detail": {
                    "type": "string",
                    "description": "Additional details about the agent."
                  },
                  "ring_method": {
                    "$ref": "#/components/schemas/AgentManagerAgentRingMethod"
                  }
                },
                "required": [
                  "name",
                  "detail",
                  "ring_method"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated agent's details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentManagerAgent"
                }
              }
            }
          }
        }
      }
    },
    "/service_agents/ws": {
      "get": {
        "summary": "Establish a WebSocket connection",
        "description": "Creates a new WebSocket connection for the authenticated agent.",
        "tags": [
          "Service Agent"
        ]
      }
    },
    "/service_agents/talk_chats/{id}/participants/{participant_id}": {
      "delete": {
        "summary": "Remove a participant from a talk chat",
        "description": "Removes a specific participant from a talk chat.",
        "tags": [
          "Service Agent"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The talk chat ID."
          },
          {
            "name": "participant_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The participant ID."
          }
        ],
        "responses": {
          "200": {
            "description": "Participant removed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TalkManagerParticipant"
                }
              }
            }
          },
          "404": {
            "description": "Talk chat or participant not found."
          }
        }
      }
    },
    "/service_agents/talk_chats/{id}/participants": {
      "get": {
        "summary": "Get participants of a talk chat",
        "description": "Returns a list of participants in a specific talk chat.",
        "tags": [
          "Service Agent"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The talk chat ID."
          }
        ],
        "responses": {
          "200": {
            "description": "A list of participants.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TalkManagerParticipant"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Talk chat not found."
          }
        }
      },
      "post": {
        "summary": "Add a participant to a talk chat",
        "description": "Adds a new participant to a specific talk chat.",
        "tags": [
          "Service Agent"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The talk chat ID."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "owner_type": {
                    "type": "string",
                    "description": "Type of the owner (agent, customer, etc.)."
                  },
                  "owner_id": {
                    "type": "string",
                    "description": "ID of the owner to add as participant."
                  }
                },
                "required": [
                  "owner_type",
                  "owner_id"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Participant added successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TalkManagerParticipant"
                }
              }
            }
          },
          "404": {
            "description": "Talk chat not found."
          }
        }
      }
    },
    "/service_agents/talk_chats/{id}/join": {
      "post": {
        "summary": "Join a talk chat",
        "description": "Allows the authenticated agent to join a \"talk\" type chat (public channel).\nThis is a convenience endpoint that automatically adds the agent as a participant.\nOnly works for \"talk\" type chats - for group/direct chats, use the participants endpoint.\n",
        "tags": [
          "Service Agent"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The talk chat ID to join."
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully joined the chat.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TalkManagerParticipant"
                }
              }
            }
          },
          "400": {
            "description": "Bad request - chat is not a \"talk\" type or other validation error."
          },
          "404": {
            "description": "Talk chat not found."
          }
        }
      }
    },
    "/service_agents/talk_chats/{id}": {
      "get": {
        "summary": "Get talk chat by ID",
        "description": "Returns details of a specific talk chat.",
        "tags": [
          "Service Agent"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The talk chat ID."
          }
        ],
        "responses": {
          "200": {
            "description": "Talk chat details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TalkManagerTalk"
                }
              }
            }
          },
          "404": {
            "description": "Talk chat not found."
          }
        }
      },
      "put": {
        "summary": "Update talk chat",
        "description": "Updates a specific talk chat's name and/or detail.",
        "tags": [
          "Service Agent"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The talk chat ID."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "The new name of the talk chat."
                  },
                  "detail": {
                    "type": "string",
                    "description": "The new detail/description of the talk chat."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Talk chat updated successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TalkManagerTalk"
                }
              }
            }
          },
          "404": {
            "description": "Talk chat not found."
          }
        }
      },
      "delete": {
        "summary": "Delete talk chat",
        "description": "Deletes a specific talk chat (soft delete).",
        "tags": [
          "Service Agent"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The talk chat ID."
          }
        ],
        "responses": {
          "200": {
            "description": "Talk chat deleted successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TalkManagerTalk"
                }
              }
            }
          },
          "404": {
            "description": "Talk chat not found."
          }
        }
      }
    },
    "/service_agents/talk_chats": {
      "get": {
        "summary": "Get list of talk chats",
        "description": "Returns a list of talk chats for the authenticated agent.",
        "tags": [
          "Service Agent"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/PageToken"
          }
        ],
        "responses": {
          "200": {
            "description": "A list of talk chats.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/CommonPagination"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "result": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/TalkManagerTalk"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Create a new talk chat",
        "description": "Creates a new talk chat and returns the created talk's details.\n\nParticipant requirements by type:\n- `direct`: Requires exactly 1 other participant (creator is automatically added as second participant)\n- `group`: Can start with 0 or more participants (creator is automatically added, members can be added/removed later)\n- `talk`: No additional participants required (creator is automatically added)\n\nNote: If the creator includes themselves in the participants list, they will not be added twice.\n",
        "tags": [
          "Service Agent"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "type": {
                    "$ref": "#/components/schemas/TalkManagerTalkType"
                  },
                  "name": {
                    "type": "string",
                    "description": "Talk name (optional)."
                  },
                  "detail": {
                    "type": "string",
                    "description": "Talk description/detail (optional)."
                  },
                  "participants": {
                    "type": "array",
                    "description": "List of participants to add to the chat (creator is added automatically).",
                    "items": {
                      "$ref": "#/components/schemas/TalkManagerParticipantInput"
                    }
                  }
                },
                "required": [
                  "type"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created talk chat's details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TalkManagerTalk"
                }
              }
            }
          }
        }
      }
    },
    "/service_agents/talk_channels": {
      "get": {
        "summary": "Get list of public talk channels",
        "description": "Returns a list of all public \"talk\" type channels for the customer.\nThis endpoint is for discovering available public channels that the agent can join.\nUnlike /service_agents/talk_chats which returns only joined chats, this returns all public channels regardless of participation.\n",
        "tags": [
          "Service Agent"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/PageToken"
          }
        ],
        "responses": {
          "200": {
            "description": "A list of public talk channels.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/CommonPagination"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "result": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/TalkManagerTalk"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/service_agents/talk_messages/{id}/reactions": {
      "post": {
        "summary": "Add a reaction to a talk message",
        "description": "Adds an emoji reaction to a specific talk message.",
        "tags": [
          "Service Agent"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The talk message ID."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "emoji": {
                    "type": "string",
                    "description": "Emoji character for the reaction."
                  }
                },
                "required": [
                  "emoji"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Reaction added successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TalkManagerMessage"
                }
              }
            }
          },
          "404": {
            "description": "Talk message not found."
          }
        }
      }
    },
    "/service_agents/talk_messages/{id}": {
      "get": {
        "summary": "Get talk message by ID",
        "description": "Returns details of a specific talk message.",
        "tags": [
          "Service Agent"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The talk message ID."
          }
        ],
        "responses": {
          "200": {
            "description": "Talk message details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TalkManagerMessage"
                }
              }
            }
          },
          "404": {
            "description": "Talk message not found."
          }
        }
      },
      "delete": {
        "summary": "Delete talk message",
        "description": "Deletes a specific talk message (soft delete).",
        "tags": [
          "Service Agent"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The talk message ID."
          }
        ],
        "responses": {
          "200": {
            "description": "Talk message deleted successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TalkManagerMessage"
                }
              }
            }
          },
          "404": {
            "description": "Talk message not found."
          }
        }
      }
    },
    "/service_agents/talk_messages": {
      "get": {
        "summary": "Get list of talk messages for a specific chat",
        "description": "Returns a list of talk messages for a specific chat.",
        "tags": [
          "Service Agent"
        ],
        "parameters": [
          {
            "name": "chat_id",
            "in": "query",
            "required": true,
            "description": "Chat ID to filter messages",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/PageToken"
          }
        ],
        "responses": {
          "200": {
            "description": "A list of talk messages for the specified chat.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/CommonPagination"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "result": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/TalkManagerMessage"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Create a new talk message",
        "description": "Creates a new talk message and returns the created message's details.",
        "tags": [
          "Service Agent"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "chat_id": {
                    "type": "string",
                    "description": "Talk chat ID."
                  },
                  "parent_id": {
                    "type": "string",
                    "description": "Parent message ID for threading (optional)."
                  },
                  "type": {
                    "$ref": "#/components/schemas/TalkManagerMessageType"
                  },
                  "text": {
                    "type": "string",
                    "description": "Message text content."
                  },
                  "medias": {
                    "type": "array",
                    "description": "Media attachments (optional).",
                    "items": {
                      "$ref": "#/components/schemas/TalkManagerMedia"
                    }
                  }
                },
                "required": [
                  "chat_id",
                  "type",
                  "text"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created talk message's details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TalkManagerMessage"
                }
              }
            }
          }
        }
      }
    },
    "/service_agents/contacts/{id}/phone_numbers/{phone_number_id}": {
      "put": {
        "summary": "Update phone number on contact",
        "description": "Update a phone number on the contact.",
        "tags": [
          "Service Agent"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the contact.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "phone_number_id",
            "in": "path",
            "description": "The ID of the phone number.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "number": {
                    "type": "string"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "mobile",
                      "work",
                      "home",
                      "fax",
                      "other"
                    ]
                  },
                  "is_primary": {
                    "type": "boolean"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Phone number updated successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactManagerContact"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Remove phone number from contact",
        "description": "Remove a phone number from the contact.",
        "tags": [
          "Service Agent"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the contact.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "phone_number_id",
            "in": "path",
            "description": "The ID of the phone number.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Phone number removed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactManagerContact"
                }
              }
            }
          }
        }
      }
    },
    "/service_agents/contacts/{id}/phone_numbers": {
      "post": {
        "summary": "Add phone number to contact",
        "description": "Add a new phone number to the contact.",
        "tags": [
          "Service Agent"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the contact.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "number"
                ],
                "properties": {
                  "number": {
                    "type": "string"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "mobile",
                      "work",
                      "home",
                      "fax",
                      "other"
                    ]
                  },
                  "is_primary": {
                    "type": "boolean"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Phone number added successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactManagerContact"
                }
              }
            }
          }
        }
      }
    },
    "/service_agents/contacts/{id}/emails/{email_id}": {
      "put": {
        "summary": "Update email on contact",
        "description": "Update an email address on the contact.",
        "tags": [
          "Service Agent"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the contact.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "email_id",
            "in": "path",
            "description": "The ID of the email.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "address": {
                    "type": "string",
                    "format": "email"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "work",
                      "personal",
                      "other"
                    ]
                  },
                  "is_primary": {
                    "type": "boolean"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Email updated successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactManagerContact"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Remove email from contact",
        "description": "Remove an email address from the contact.",
        "tags": [
          "Service Agent"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the contact.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "email_id",
            "in": "path",
            "description": "The ID of the email.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Email removed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactManagerContact"
                }
              }
            }
          }
        }
      }
    },
    "/service_agents/contacts/{id}/emails": {
      "post": {
        "summary": "Add email to contact",
        "description": "Add a new email address to the contact.",
        "tags": [
          "Service Agent"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the contact.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "address"
                ],
                "properties": {
                  "address": {
                    "type": "string",
                    "format": "email"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "work",
                      "personal",
                      "other"
                    ]
                  },
                  "is_primary": {
                    "type": "boolean"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Email added successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactManagerContact"
                }
              }
            }
          }
        }
      }
    },
    "/service_agents/contacts/{id}/tags/{tag_id}": {
      "delete": {
        "summary": "Remove tag from contact",
        "description": "Remove a tag from the contact.",
        "tags": [
          "Service Agent"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the contact.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "tag_id",
            "in": "path",
            "description": "The ID of the tag.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Tag removed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactManagerContact"
                }
              }
            }
          }
        }
      }
    },
    "/service_agents/contacts/{id}/tags": {
      "post": {
        "summary": "Add tag to contact",
        "description": "Add a tag to the contact.",
        "tags": [
          "Service Agent"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the contact.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "tag_id"
                ],
                "properties": {
                  "tag_id": {
                    "type": "string",
                    "format": "uuid"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tag added successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactManagerContact"
                }
              }
            }
          }
        }
      }
    },
    "/service_agents/contacts/{id}": {
      "get": {
        "summary": "Get the contact",
        "description": "Get the contact of the given ID.",
        "tags": [
          "Service Agent"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the contact.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactManagerContact"
                }
              }
            }
          }
        }
      },
      "put": {
        "summary": "Update a contact",
        "description": "Update a contact and return updated details.",
        "tags": [
          "Service Agent"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the contact.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "first_name": {
                    "type": "string"
                  },
                  "last_name": {
                    "type": "string"
                  },
                  "display_name": {
                    "type": "string"
                  },
                  "company": {
                    "type": "string"
                  },
                  "job_title": {
                    "type": "string"
                  },
                  "external_id": {
                    "type": "string"
                  },
                  "notes": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactManagerContact"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete the contact",
        "description": "Delete the contact of the given ID.",
        "tags": [
          "Service Agent"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the contact.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactManagerContact"
                }
              }
            }
          }
        }
      }
    },
    "/service_agents/contacts/lookup": {
      "get": {
        "summary": "Lookup contact",
        "description": "Find a contact by phone number or email.",
        "tags": [
          "Service Agent"
        ],
        "parameters": [
          {
            "name": "phone",
            "in": "query",
            "description": "Phone number in E.164 format to lookup.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "email",
            "in": "query",
            "description": "Email address to lookup.",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Contact found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactManagerContact"
                }
              }
            }
          },
          "404": {
            "description": "Contact not found."
          }
        }
      }
    },
    "/service_agents/contacts": {
      "get": {
        "summary": "List contacts",
        "description": "Get contacts for the service agent's customer.",
        "tags": [
          "Service Agent"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/PageToken"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/CommonPagination"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "result": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/ContactManagerContact"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Create a new contact",
        "description": "Create a new contact for the service agent's customer.",
        "tags": [
          "Service Agent"
        ],
        "requestBody": {
          "description": "Request body to create a new contact.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "first_name": {
                    "type": "string"
                  },
                  "last_name": {
                    "type": "string"
                  },
                  "display_name": {
                    "type": "string"
                  },
                  "company": {
                    "type": "string"
                  },
                  "job_title": {
                    "type": "string"
                  },
                  "source": {
                    "type": "string",
                    "enum": [
                      "manual",
                      "import",
                      "api",
                      "sync"
                    ]
                  },
                  "external_id": {
                    "type": "string"
                  },
                  "notes": {
                    "type": "string"
                  },
                  "phone_numbers": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "number": {
                          "type": "string"
                        },
                        "type": {
                          "type": "string",
                          "enum": [
                            "mobile",
                            "work",
                            "home",
                            "fax",
                            "other"
                          ]
                        },
                        "is_primary": {
                          "type": "boolean"
                        }
                      }
                    }
                  },
                  "emails": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "address": {
                          "type": "string",
                          "format": "email"
                        },
                        "type": {
                          "type": "string",
                          "enum": [
                            "work",
                            "personal",
                            "other"
                          ]
                        },
                        "is_primary": {
                          "type": "boolean"
                        }
                      }
                    }
                  },
                  "tag_ids": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "uuid"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Contact created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactManagerContact"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input."
          }
        }
      }
    },
    "/service_agents/tags/{id}": {
      "get": {
        "summary": "Retrieve detailed information of a tag",
        "description": "Fetches detailed information of a specific tag by its ID.",
        "tags": [
          "Service Agent"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the tag.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The details of the requested tag.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TagManagerTag"
                }
              }
            }
          }
        }
      }
    },
    "/service_agents/tags": {
      "get": {
        "summary": "Retrieve a list of tags",
        "description": "Fetches a list of tags with pagination support.",
        "tags": [
          "Service Agent"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/PageToken"
          }
        ],
        "responses": {
          "200": {
            "description": "A list of tags.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/CommonPagination"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "result": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/TagManagerTag"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/speakings": {
      "get": {
        "summary": "List speaking sessions",
        "description": "Returns a list of speaking sessions for the authenticated customer.",
        "tags": [
          "Speaking"
        ],
        "parameters": [
          {
            "name": "page_size",
            "in": "query",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "page_token",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A list of speaking sessions.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TtsManagerSpeaking"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Create a speaking session",
        "description": "Creates a new streaming TTS session on a call or conference.",
        "tags": [
          "Speaking"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "reference_type",
                  "reference_id"
                ],
                "properties": {
                  "reference_type": {
                    "type": "string",
                    "description": "Type of the referenced entity (call, confbridge)"
                  },
                  "reference_id": {
                    "type": "string",
                    "description": "ID of the referenced entity"
                  },
                  "language": {
                    "type": "string",
                    "description": "TTS language (e.g. en-US)"
                  },
                  "provider": {
                    "type": "string",
                    "description": "TTS provider. Defaults to elevenlabs."
                  },
                  "voice_id": {
                    "type": "string",
                    "description": "Provider-specific voice ID. If empty, uses default for language."
                  },
                  "direction": {
                    "type": "string",
                    "description": "Audio injection direction (in, out, both). Defaults to none."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created speaking session.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TtsManagerSpeaking"
                }
              }
            }
          }
        }
      }
    },
    "/speakings/{id}": {
      "get": {
        "summary": "Get a speaking session",
        "description": "Returns details of a speaking session.",
        "tags": [
          "Speaking"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The speaking session.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TtsManagerSpeaking"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete a speaking session",
        "description": "Soft-deletes a speaking session. Stops the session if still active.",
        "tags": [
          "Speaking"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The deleted speaking session.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TtsManagerSpeaking"
                }
              }
            }
          }
        }
      }
    },
    "/speakings/{id}/say": {
      "post": {
        "summary": "Send text to a speaking session",
        "description": "Adds text to the speech queue. Can be called multiple times.",
        "tags": [
          "Speaking"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "text"
                ],
                "properties": {
                  "text": {
                    "type": "string",
                    "description": "Text to be spoken."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The speaking session.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TtsManagerSpeaking"
                }
              }
            }
          }
        }
      }
    },
    "/speakings/{id}/flush": {
      "post": {
        "summary": "Flush a speaking session",
        "description": "Cancels current speech and clears all queued messages. Session stays open.",
        "tags": [
          "Speaking"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The speaking session.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TtsManagerSpeaking"
                }
              }
            }
          }
        }
      }
    },
    "/speakings/{id}/stop": {
      "post": {
        "summary": "Stop a speaking session",
        "description": "Terminates the session. Closes AudioSocket and ElevenLabs connections.",
        "tags": [
          "Speaking"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The stopped speaking session.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TtsManagerSpeaking"
                }
              }
            }
          }
        }
      }
    },
    "/storage_account": {
      "get": {
        "summary": "Get details of a given account's storage account",
        "description": "Retrieves the details of a given account's storage account.",
        "tags": [
          "Storage"
        ],
        "responses": {
          "200": {
            "description": "The requested storage account details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StorageManagerAccount"
                }
              }
            }
          }
        }
      }
    },
    "/storage_accounts/{id}": {
      "get": {
        "summary": "Get details of a specific storage account",
        "description": "Retrieves the details of a specific storage account by its ID.",
        "tags": [
          "Storage"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The ID of the storage account.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested storage account details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StorageManagerAccount"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete a specific storage account",
        "description": "Deletes a specific storage account by its ID and returns the details of the deleted account.",
        "tags": [
          "Storage"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The ID of the storage account.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The deleted storage account details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StorageManagerAccount"
                }
              }
            }
          }
        }
      }
    },
    "/storage_accounts": {
      "get": {
        "summary": "Get a list of storage accounts",
        "description": "Retrieves a list of storage accounts with the provided pagination details.",
        "tags": [
          "Storage"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/PageToken"
          }
        ],
        "responses": {
          "200": {
            "description": "A list of storage accounts with pagination information.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/CommonPagination"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "result": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/StorageManagerAccount"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Create a new storage account",
        "description": "Creates a new storage account with the provided information and returns the created account details.",
        "tags": [
          "Storage"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "customer_id": {
                    "type": "string"
                  }
                },
                "required": [
                  "customer_id"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created storage account details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StorageManagerAccount"
                }
              }
            }
          }
        }
      }
    },
    "/storage_files/{id}": {
      "get": {
        "summary": "Get file details by ID",
        "description": "Retrieves detailed information for a specific file by ID.",
        "tags": [
          "Storage"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The file details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StorageManagerFile"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete a file",
        "description": "Deletes a file by ID.",
        "tags": [
          "Storage"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The deletion result.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StorageManagerFile"
                }
              }
            }
          }
        }
      }
    },
    "/storage_files/{id}/file": {
      "get": {
        "summary": "Download the storage file",
        "description": "Retrieves the specified storage file and redirects to the download URI.",
        "tags": [
          "Storage"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The storage file's ID. Obtained from the `id` field of `GET /storage_files`.",
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "550e8400-e29b-41d4-a716-446655440000"
            }
          }
        ],
        "responses": {
          "307": {
            "description": "Redirect to the storage file download URL.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string",
                  "example": "https://storage.googleapis.com/bucket/storage/550e8400-e29b-41d4-a716-446655440000?X-Goog-Signature=abc123"
                }
              }
            }
          },
          "400": {
            "description": "Bad request. Could not find agent information or storage file.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Could not get storage file."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/storage_files": {
      "get": {
        "summary": "Get a list of files",
        "description": "Retrieves a paginated list of files.",
        "tags": [
          "Storage"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/PageToken"
          }
        ],
        "responses": {
          "200": {
            "description": "A list of files.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/CommonPagination"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "result": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/StorageManagerFile"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Upload a file and create a call with it",
        "description": "Creates a temporary file and initiates a call with the temporary file.",
        "tags": [
          "Storage"
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  },
                  "type": {
                    "type": "string",
                    "description": "The type/category of the file. Must be 'rag' for this endpoint.",
                    "enum": [
                      "rag"
                    ],
                    "example": "rag"
                  }
                },
                "required": [
                  "file",
                  "type"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created call details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StorageManagerFile"
                }
              }
            }
          }
        }
      }
    },
    "/tags/{id}": {
      "get": {
        "summary": "Get the tag",
        "description": "Retrieves the tag details by its ID.",
        "tags": [
          "Tag"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The ID of the tag.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The tag details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TagManagerTag"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete the tag",
        "description": "Deletes the tag identified by the given ID.",
        "tags": [
          "Tag"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The ID of the tag to be deleted.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The result of the deletion.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TagManagerTag"
                }
              }
            }
          }
        }
      },
      "put": {
        "summary": "Update the tag info",
        "description": "Updates the tag's name and detail information.",
        "tags": [
          "Tag"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The ID of the tag.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "detail": {
                    "type": "string"
                  }
                },
                "required": [
                  "name",
                  "detail"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated tag details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TagManagerTag"
                }
              }
            }
          }
        }
      }
    },
    "/tags": {
      "post": {
        "summary": "Create a new tag.",
        "description": "Creates a new tag with the specified information.",
        "tags": [
          "Tag"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "detail": {
                    "type": "string"
                  }
                },
                "required": [
                  "name",
                  "detail"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created tag details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TagManagerTag"
                }
              }
            }
          }
        }
      },
      "get": {
        "summary": "List tags",
        "description": "Retrieves a list of tags for the customer.",
        "tags": [
          "Tag"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/PageToken"
          }
        ],
        "responses": {
          "200": {
            "description": "A list of tags.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/CommonPagination"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "result": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/TagManagerTag"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/transcribes/{id}/stop": {
      "post": {
        "summary": "Stop an ongoing transcription",
        "description": "Stops an ongoing transcription for the specified ID and returns the result.",
        "tags": [
          "Transcribe"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The stopped transcription details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TranscribeManagerTranscribe"
                }
              }
            }
          }
        }
      }
    },
    "/transcribes/{id}": {
      "get": {
        "summary": "Get detailed transcribe info",
        "description": "Retrieves detailed information about a specific transcription by ID.",
        "tags": [
          "Transcribe"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The detailed transcription information.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TranscribeManagerTranscribe"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete a transcribe",
        "description": "Deletes a transcription by ID.",
        "tags": [
          "Transcribe"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The deleted transcription details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TranscribeManagerTranscribe"
                }
              }
            }
          }
        }
      }
    },
    "/transcribes": {
      "get": {
        "summary": "Get list of transcribes",
        "description": "Retrieves a paginated list of transcriptions for the authenticated customer.",
        "tags": [
          "Transcribe"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/PageToken"
          }
        ],
        "responses": {
          "200": {
            "description": "A list of transcriptions.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/CommonPagination"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "result": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/TranscribeManagerTranscribe"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Create a transcribe",
        "description": "Creates a transcription of a recording and returns the result.",
        "tags": [
          "Transcribe"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "reference_type": {
                    "$ref": "#/components/schemas/TranscribeManagerTranscribeReferenceType"
                  },
                  "reference_id": {
                    "type": "string",
                    "description": "The ID of the reference for the transcription."
                  },
                  "language": {
                    "type": "string",
                    "description": "The language of the transcription."
                  },
                  "direction": {
                    "$ref": "#/components/schemas/TranscribeManagerTranscribeDirection"
                  },
                  "provider": {
                    "$ref": "#/components/schemas/TranscribeManagerTranscribeProvider"
                  },
                  "on_end_flow_id": {
                    "type": "string",
                    "description": "The ID of the flow to be executed when the transcription ends."
                  }
                },
                "required": [
                  "reference_type",
                  "reference_id",
                  "language",
                  "direction",
                  "on_end_flow_id"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created transcribe details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TranscribeManagerTranscribe"
                }
              }
            }
          }
        }
      }
    },
    "/transcripts": {
      "get": {
        "summary": "Retrieve a list of transcripts",
        "description": "Fetch a list of transcripts associated with the customer.",
        "tags": [
          "Transcribe"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/PageToken"
          },
          {
            "name": "transcribe_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A list of transcripts.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/CommonPagination"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "result": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/TranscribeManagerTranscript"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/transfers": {
      "post": {
        "summary": "Start a transfer",
        "description": "Initiates a call transfer and returns the result.",
        "tags": [
          "Transfer"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "transfer_type": {
                    "$ref": "#/components/schemas/TransferManagerTransferType"
                  },
                  "transferer_call_id": {
                    "type": "string",
                    "description": "Call ID of the transfer initiator."
                  },
                  "transferee_addresses": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/CommonAddress"
                    },
                    "description": "Addresses of the transfer recipients."
                  }
                },
                "required": [
                  "transfer_type",
                  "transferer_call_id",
                  "transferee_addresses"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The transfer details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransferManagerTransfer"
                }
              }
            }
          }
        }
      }
    },
    "/trunks/{id}": {
      "get": {
        "summary": "Retrieve trunk details.",
        "description": "Retrieves the details of a specific trunk by its ID.",
        "tags": [
          "Trunk"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The trunk details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RegistrarManagerTrunk"
                }
              }
            }
          }
        }
      },
      "put": {
        "summary": "Update a trunk.",
        "description": "Updates the details of an existing trunk and returns the updated trunk's information.",
        "tags": [
          "Trunk"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "detail": {
                    "type": "string"
                  },
                  "auth_types": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/RegistrarManagerAuthType"
                    }
                  },
                  "username": {
                    "type": "string"
                  },
                  "password": {
                    "type": "string"
                  },
                  "allowed_ips": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "required": [
                  "name",
                  "detail",
                  "auth_types",
                  "username",
                  "password",
                  "allowed_ips"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated trunk details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RegistrarManagerTrunk"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete a trunk.",
        "description": "Deletes an existing trunk by its ID.",
        "tags": [
          "Trunk"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Trunk deleted successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RegistrarManagerTrunk"
                }
              }
            }
          }
        }
      }
    },
    "/trunks": {
      "get": {
        "summary": "Retrieve a list of trunks.",
        "description": "Retrieves a paginated list of trunks.",
        "tags": [
          "Trunk"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/PageToken"
          }
        ],
        "responses": {
          "200": {
            "description": "A list of trunks.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/CommonPagination"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "result": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/RegistrarManagerTrunk"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Create a new trunk.",
        "description": "Creates a new trunk with the provided details and returns the created trunk's information.",
        "tags": [
          "Trunk"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "detail": {
                    "type": "string"
                  },
                  "domain_name": {
                    "type": "string"
                  },
                  "auth_types": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/RegistrarManagerAuthType"
                    }
                  },
                  "username": {
                    "type": "string"
                  },
                  "password": {
                    "type": "string"
                  },
                  "allowed_ips": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "required": [
                  "name",
                  "detail",
                  "domain_name",
                  "auth_types",
                  "username",
                  "password",
                  "allowed_ips"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created trunk details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RegistrarManagerTrunk"
                }
              }
            }
          }
        }
      }
    },
    "/timelines/{resource_type}/{resource_id}/events": {
      "get": {
        "summary": "Get timeline events for a resource",
        "description": "Returns timeline events for the specified resource in WebhookMessage format.",
        "tags": [
          "Timeline"
        ],
        "parameters": [
          {
            "name": "resource_type",
            "in": "path",
            "required": true,
            "description": "The type of resource (calls, conferences, flows, activeflows)",
            "schema": {
              "type": "string",
              "enum": [
                "calls",
                "conferences",
                "flows",
                "activeflows"
              ]
            }
          },
          {
            "name": "resource_id",
            "in": "path",
            "required": true,
            "description": "The UUID of the resource",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/PageToken"
          }
        ],
        "responses": {
          "200": {
            "description": "A list of timeline events.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/CommonPagination"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "result": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/TimelineManagerEvent"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid request parameters"
          },
          "404": {
            "description": "Resource not found"
          }
        }
      }
    },
    "/timelines/calls/{call_id}/sip-analysis": {
      "get": {
        "summary": "Get SIP analysis for a call",
        "description": "Returns SIP messages and RTCP quality stats for the specified call from Homer SIP capture.\nInternal-to-internal messages (where both src and dst IPs are RFC 1918 private addresses) are filtered out.\nRTCP stats are extracted from X-RTP-Stat headers in BYE messages before filtering.\n",
        "tags": [
          "Timeline"
        ],
        "parameters": [
          {
            "name": "call_id",
            "in": "path",
            "required": true,
            "description": "The UUID of the call",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "SIP analysis for the call.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "sip_messages"
                  ],
                  "properties": {
                    "sip_messages": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "timestamp": {
                            "type": "string",
                            "format": "date-time"
                          },
                          "method": {
                            "type": "string"
                          },
                          "src_ip": {
                            "type": "string"
                          },
                          "src_port": {
                            "type": "integer"
                          },
                          "dst_ip": {
                            "type": "string"
                          },
                          "dst_port": {
                            "type": "integer"
                          },
                          "raw": {
                            "type": "string"
                          }
                        }
                      }
                    },
                    "rtcp_stats": {
                      "type": "object",
                      "description": "RTCP quality metrics parsed from X-RTP-Stat header in BYE messages. Null if no RTCP stats available.",
                      "nullable": true,
                      "required": [
                        "mos",
                        "jitter",
                        "packet_loss_pct",
                        "rtt",
                        "rtp_bytes",
                        "rtp_packets",
                        "rtp_errors",
                        "rtcp_bytes",
                        "rtcp_packets",
                        "rtcp_errors"
                      ],
                      "properties": {
                        "mos": {
                          "type": "number",
                          "format": "double",
                          "description": "Mean Opinion Score (1.0-5.0)"
                        },
                        "jitter": {
                          "type": "integer",
                          "description": "Jitter in milliseconds"
                        },
                        "packet_loss_pct": {
                          "type": "number",
                          "format": "double",
                          "description": "Packet loss percentage"
                        },
                        "rtt": {
                          "type": "integer",
                          "description": "Round-trip time in microseconds as reported by RTPEngine (divide by 1000 for milliseconds)"
                        },
                        "rtp_bytes": {
                          "type": "integer",
                          "description": "Total RTP bytes transferred"
                        },
                        "rtp_packets": {
                          "type": "integer",
                          "description": "Total RTP packets transferred"
                        },
                        "rtp_errors": {
                          "type": "integer",
                          "description": "Total RTP errors"
                        },
                        "rtcp_bytes": {
                          "type": "integer",
                          "description": "Total RTCP bytes transferred"
                        },
                        "rtcp_packets": {
                          "type": "integer",
                          "description": "Total RTCP packets transferred"
                        },
                        "rtcp_errors": {
                          "type": "integer",
                          "description": "Total RTCP errors"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid request parameters"
          },
          "403": {
            "description": "Permission denied"
          },
          "404": {
            "description": "Call not found or no SIP data available"
          },
          "502": {
            "description": "Upstream service unavailable"
          }
        }
      }
    },
    "/timelines/calls/{call_id}/pcap": {
      "get": {
        "summary": "Get PCAP download for a call",
        "description": "Returns PCAP file containing SIP messages for the specified call.\nInternal-to-internal packets (where both src and dst IPs are RFC 1918 private addresses) are filtered out.\n",
        "tags": [
          "Timeline"
        ],
        "parameters": [
          {
            "name": "call_id",
            "in": "path",
            "required": true,
            "description": "The UUID of the call",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "PCAP download information.",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request parameters"
          },
          "403": {
            "description": "Permission denied"
          },
          "404": {
            "description": "Call not found or no SIP data available"
          },
          "502": {
            "description": "Upstream service unavailable"
          }
        }
      }
    },
    "/aggregated-events": {
      "get": {
        "summary": "Get aggregated timeline events",
        "description": "Returns all timeline events associated with a single activeflow execution.\nQuery by activeflow_id directly, or by call_id (which resolves to the call's activeflow).\nExactly one of activeflow_id or call_id must be provided.\n",
        "tags": [
          "Timeline"
        ],
        "parameters": [
          {
            "name": "activeflow_id",
            "in": "query",
            "required": false,
            "description": "The UUID of the activeflow. Obtained from the `id` field of `GET /activeflows` or from the `activeflow_id` field of a call.",
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "550e8400-e29b-41d4-a716-446655440000"
            }
          },
          {
            "name": "call_id",
            "in": "query",
            "required": false,
            "description": "The UUID of the call. Obtained from the `id` field of `GET /calls`. The call's activeflow_id will be used to query events.",
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
            }
          },
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/PageToken"
          }
        ],
        "responses": {
          "200": {
            "description": "A list of aggregated timeline events sorted by timestamp descending.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/CommonPagination"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "result": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/TimelineManagerEvent"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid request. Either both or neither query params provided."
          },
          "404": {
            "description": "Resource not found or call has no activeflow."
          }
        }
      }
    },
    "/ws": {
      "get": {
        "summary": "Create a new websocket connection.",
        "description": "Establishes a new websocket connection for real-time communication.",
        "tags": [
          "Websocket"
        ]
      }
    }
  },
  "components": {
    "parameters": {
      "PageSize": {
        "name": "page_size",
        "in": "query",
        "description": "Number of results to return per page.",
        "required": false,
        "schema": {
          "type": "integer",
          "example": 25
        }
      },
      "PageToken": {
        "name": "page_token",
        "in": "query",
        "description": "Cursor token for pagination. Use the `next_page_token` value from the previous response.",
        "required": false,
        "schema": {
          "type": "string"
        }
      }
    },
    "schemas": {
      "AgentManagerAgentPermission": {
        "type": "integer",
        "format": "uint64",
        "description": "Permission type",
        "example": 64,
        "enum": [
          0,
          65535,
          1,
          15,
          16,
          32,
          64,
          240
        ],
        "x-enum-varnames": [
          "AgentManagerPermissionNone",
          "AgentManagerPermissionAll",
          "AgentManagerPermissionProjectSuperAdmin",
          "AgentManagerPermissionProjectAll",
          "AgentManagerPermissionCustomerAgent",
          "AgentManagerPermissionCustomerAdmin",
          "AgentManagerPermissionCustomerManager",
          "AgentManagerPermissionCustomerAll"
        ]
      },
      "AgentManagerAgentRingMethod": {
        "type": "string",
        "description": "Method used to ring the agent for incoming calls.",
        "example": "ringall",
        "enum": [
          "ringall",
          "linear"
        ],
        "x-enum-varnames": [
          "AgentManagerAgentRingMethodRingAll",
          "AgentManagerAgentRingMethodLinear"
        ]
      },
      "AgentManagerAgentStatus": {
        "type": "string",
        "description": "Current availability status of the agent.",
        "example": "available",
        "enum": [
          "",
          "available",
          "away",
          "busy",
          "offline",
          "ringing"
        ],
        "x-enum-varnames": [
          "AgentManagerAgentStatusNone",
          "AgentManagerAgentStatusAvailable",
          "AgentManagerAgentStatusAway",
          "AgentManagerAgentStatusBusy",
          "AgentManagerAgentStatusOffline",
          "AgentManagerAgentStatusRinging"
        ]
      },
      "AgentManagerAgent": {
        "type": "object",
        "description": "Represents an agent resource.",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the agent.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "customer_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the customer who owns this agent. Returned from the `GET /customers` response.",
            "example": "7c4d2f3a-1b8e-4f5c-9a6d-3e2f1a0b4c5d"
          },
          "username": {
            "type": "string",
            "description": "Agent's login username, typically an email address.",
            "example": "agent@example.com"
          },
          "name": {
            "type": "string",
            "description": "Display name of the agent.",
            "example": "John Smith"
          },
          "detail": {
            "type": "string",
            "description": "Additional detail or notes about the agent.",
            "example": "Senior support agent"
          },
          "ring_method": {
            "$ref": "#/components/schemas/AgentManagerAgentRingMethod",
            "description": "Method used to ring the agent for incoming calls.",
            "example": "ringall"
          },
          "status": {
            "$ref": "#/components/schemas/AgentManagerAgentStatus",
            "description": "Current availability status of the agent.",
            "example": "available"
          },
          "permission": {
            "$ref": "#/components/schemas/AgentManagerAgentPermission",
            "description": "Permission level assigned to the agent.",
            "example": 64
          },
          "tag_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid",
              "x-go-type": "string"
            },
            "description": "List of tag IDs assigned to this agent. Returned from the `POST /tags` or `GET /tags` response.",
            "example": [
              "b1a2c3d4-e5f6-7890-abcd-ef1234567890"
            ]
          },
          "addresses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CommonAddress"
            },
            "description": "Agent's endpoint addresses for receiving calls."
          },
          "direct_hash": {
            "type": "string",
            "description": "Hash for direct access via SIP URI sip:direct.<hash>@sip.voipbin.net. Returned from the resource's `direct_hash` field.",
            "example": "a8f3b2c1d4e5"
          },
          "tm_create": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the agent was created.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_update": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the agent was last updated.",
            "example": "2026-01-16T14:20:00.000000Z"
          },
          "tm_delete": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the agent was deleted.",
            "example": "2026-01-17T10:00:00.000000Z"
          }
        }
      },
      "BillingManagerAccountPaymentMethod": {
        "type": "string",
        "description": "The method of payment used for the account.",
        "example": "credit card",
        "enum": [
          "",
          "credit card"
        ],
        "x-enum-varnames": [
          "BillingManagerAccountPaymentMethodNone",
          "BillingManagerAccountPaymentMethodCreditCard"
        ]
      },
      "BillingManagerAccountPaymentType": {
        "type": "string",
        "description": "The type of payment associated with the account.",
        "example": "prepaid",
        "enum": [
          "",
          "prepaid"
        ],
        "x-enum-varnames": [
          "BillingManagerAccountPaymentTypeNone",
          "BillingManagerAccountPaymentTypePrepaid"
        ]
      },
      "BillingManagerAccountPlanType": {
        "type": "string",
        "description": "The plan tier of the billing account. Determines resource creation limits.",
        "example": "basic",
        "enum": [
          "free",
          "basic",
          "professional",
          "unlimited"
        ],
        "x-enum-varnames": [
          "BillingManagerAccountPlanTypeFree",
          "BillingManagerAccountPlanTypeBasic",
          "BillingManagerAccountPlanTypeProfessional",
          "BillingManagerAccountPlanTypeUnlimited"
        ]
      },
      "BillingManagerAccountPlanStatus": {
        "type": "string",
        "description": "The subscription plan status of the billing account. Indicates whether the plan is actively running or scheduled for cancellation.",
        "example": "active",
        "enum": [
          "active",
          "canceling"
        ],
        "x-enum-varnames": [
          "BillingManagerAccountPlanStatusActive",
          "BillingManagerAccountPlanStatusCanceling"
        ]
      },
      "BillingManagerAccount": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the account.",
            "example": "b8c9d0e1-f2a3-4567-8901-23456789abcd"
          },
          "customer_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the associated customer. Returned from the `GET /customers` response.",
            "example": "7c4d2f3a-1b8e-4f5c-9a6d-3e2f1a0b4c5d"
          },
          "name": {
            "type": "string",
            "description": "The display name of the billing account.",
            "example": "Production Account"
          },
          "detail": {
            "type": "string",
            "description": "A human-readable note describing the purpose of this account.",
            "example": "Main billing account for production services"
          },
          "plan_type": {
            "description": "The plan tier of the billing account.",
            "example": "basic",
            "$ref": "#/components/schemas/BillingManagerAccountPlanType"
          },
          "plan_status": {
            "description": "The subscription plan status.",
            "example": "active",
            "$ref": "#/components/schemas/BillingManagerAccountPlanStatus"
          },
          "balance_credit": {
            "type": "integer",
            "format": "int64",
            "description": "The credit balance of the account in micros (1 USD = 1,000,000).",
            "example": 1500000
          },
          "balance_token": {
            "type": "integer",
            "format": "int64",
            "description": "The token balance of the account.",
            "example": 500
          },
          "payment_type": {
            "description": "The type of payment associated with the account.",
            "example": "prepaid",
            "$ref": "#/components/schemas/BillingManagerAccountPaymentType"
          },
          "payment_method": {
            "description": "The method of payment used for the account.",
            "example": "credit card",
            "$ref": "#/components/schemas/BillingManagerAccountPaymentMethod"
          },
          "paddle_subscription_id": {
            "type": "string",
            "description": "The Paddle subscription identifier for this billing account. Populated automatically when a Paddle subscription is created via Paddle webhook processing. Read-only — not settable via API. Present only when the account has an active Paddle subscription.",
            "example": "sub_01h8bxq9f3e4t5a6g7h8j9k0"
          },
          "paddle_customer_id": {
            "type": "string",
            "description": "The Paddle customer identifier for this billing account. Populated automatically when a Paddle customer record is created via Paddle webhook processing. Read-only — not settable via API. Present only when the account has a linked Paddle customer.",
            "example": "ctm_01h8bxq9f3e4t5a6g7h8j9k0"
          },
          "tm_last_topup": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "The timestamp of the last token top-up.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_next_topup": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "The timestamp of the next scheduled token top-up.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_create": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "The timestamp when the account was created.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_update": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "The timestamp when the account was last updated.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_delete": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "The timestamp when the account was deleted, if applicable.",
            "example": "2026-01-15T09:30:00.000000Z"
          }
        }
      },
      "BillingManagerAccountStatus": {
        "type": "string",
        "description": "The status of the billing account.",
        "example": "active",
        "enum": [
          "active",
          "frozen",
          "deleted"
        ],
        "x-enum-varnames": [
          "BillingManagerAccountStatusActive",
          "BillingManagerAccountStatusFrozen",
          "BillingManagerAccountStatusDeleted"
        ]
      },
      "BillingManagerAccountAdmin": {
        "type": "object",
        "description": "Internal billing account representation for project admins. Includes all fields including status.",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the account.",
            "example": "b8c9d0e1-f2a3-4567-8901-23456789abcd"
          },
          "customer_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the associated customer. Returned from the `GET /customers` response.",
            "example": "7c4d2f3a-1b8e-4f5c-9a6d-3e2f1a0b4c5d"
          },
          "status": {
            "description": "The status of the billing account.",
            "example": "active",
            "$ref": "#/components/schemas/BillingManagerAccountStatus"
          },
          "name": {
            "type": "string",
            "description": "The display name of the billing account.",
            "example": "Production Account"
          },
          "detail": {
            "type": "string",
            "description": "A human-readable note describing the purpose of this account.",
            "example": "Main billing account for production services"
          },
          "plan_type": {
            "description": "The plan tier of the billing account.",
            "example": "basic",
            "$ref": "#/components/schemas/BillingManagerAccountPlanType"
          },
          "plan_status": {
            "description": "The subscription plan status.",
            "example": "active",
            "$ref": "#/components/schemas/BillingManagerAccountPlanStatus"
          },
          "balance_credit": {
            "type": "integer",
            "format": "int64",
            "description": "The credit balance of the account in micros (1 USD = 1,000,000).",
            "example": 1500000
          },
          "balance_token": {
            "type": "integer",
            "format": "int64",
            "description": "The token balance of the account.",
            "example": 500
          },
          "payment_type": {
            "description": "The type of payment associated with the account.",
            "example": "prepaid",
            "$ref": "#/components/schemas/BillingManagerAccountPaymentType"
          },
          "payment_method": {
            "description": "The method of payment used for the account.",
            "example": "credit card",
            "$ref": "#/components/schemas/BillingManagerAccountPaymentMethod"
          },
          "paddle_subscription_id": {
            "type": "string",
            "description": "The Paddle subscription identifier for this billing account.",
            "example": "sub_01h8bxq9f3e4t5a6g7h8j9k0"
          },
          "paddle_customer_id": {
            "type": "string",
            "description": "The Paddle customer identifier for this billing account.",
            "example": "ctm_01h8bxq9f3e4t5a6g7h8j9k0"
          },
          "tm_last_topup": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "The timestamp of the last token top-up.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_next_topup": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "The timestamp of the next scheduled token top-up.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_create": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "The timestamp when the account was created.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_update": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "The timestamp when the account was last updated.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_delete": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "The timestamp when the account was deleted, if applicable.",
            "example": "2026-01-15T09:30:00.000000Z"
          }
        }
      },
      "BillingManagerBillingreferenceType": {
        "type": "string",
        "description": "The type of reference associated with this billing.",
        "example": "call",
        "enum": [
          "",
          "call",
          "call_extension",
          "sms",
          "email",
          "number",
          "number_renew",
          "credit_free_tier",
          "monthly_allowance",
          "credit_adjustment",
          "token_adjustment",
          "speaking",
          "recording"
        ],
        "x-enum-varnames": [
          "BillingManagerBillingreferenceTypeNone",
          "BillingManagerBillingreferenceTypeCall",
          "BillingManagerBillingreferenceTypeCallExtension",
          "BillingManagerBillingreferenceTypeSMS",
          "BillingManagerBillingreferenceTypeEmail",
          "BillingManagerBillingreferenceTypeNumber",
          "BillingManagerBillingreferenceTypeNumberRenew",
          "BillingManagerBillingreferenceTypeCreditFreeTier",
          "BillingManagerBillingreferenceTypeMonthlyAllowance",
          "BillingManagerBillingreferenceTypeCreditAdjustment",
          "BillingManagerBillingreferenceTypeTokenAdjustment",
          "BillingManagerBillingreferenceTypeSpeaking",
          "BillingManagerBillingreferenceTypeRecording"
        ]
      },
      "BillingManagerBillingCostType": {
        "type": "string",
        "description": "The classification of the billing cost.",
        "example": "call_pstn_outgoing",
        "enum": [
          "",
          "call_pstn_outgoing",
          "call_pstn_incoming",
          "call_vn",
          "call_extension",
          "call_direct_ext",
          "sms",
          "email",
          "number",
          "number_renew",
          "tts",
          "recording"
        ],
        "x-enum-varnames": [
          "BillingManagerBillingCostTypeNone",
          "BillingManagerBillingCostTypeCallPSTNOutgoing",
          "BillingManagerBillingCostTypeCallPSTNIncoming",
          "BillingManagerBillingCostTypeCallVN",
          "BillingManagerBillingCostTypeCallExtension",
          "BillingManagerBillingCostTypeCallDirectExt",
          "BillingManagerBillingCostTypeSMS",
          "BillingManagerBillingCostTypeEmail",
          "BillingManagerBillingCostTypeNumber",
          "BillingManagerBillingCostTypeNumberRenew",
          "BillingManagerBillingCostTypeTTS",
          "BillingManagerBillingCostTypeRecording"
        ]
      },
      "BillingManagerBillingStatus": {
        "type": "string",
        "description": "Status of the billing.",
        "example": "progressing",
        "enum": [
          "progressing",
          "end",
          "pending",
          "finished"
        ],
        "x-enum-varnames": [
          "BillingManagerBillingStatusProgressing",
          "BillingManagerBillingStatusEnd",
          "BillingManagerBillingStatusPending",
          "BillingManagerBillingStatusFinished"
        ]
      },
      "BillingManagerBillingTransactionType": {
        "type": "string",
        "description": "The nature of the ledger entry.",
        "example": "usage",
        "enum": [
          "usage",
          "top_up",
          "adjustment",
          "refund"
        ],
        "x-enum-varnames": [
          "BillingManagerBillingTransactionTypeUsage",
          "BillingManagerBillingTransactionTypeTopUp",
          "BillingManagerBillingTransactionTypeAdjustment",
          "BillingManagerBillingTransactionTypeRefund"
        ]
      },
      "BillingManagerBilling": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the billing.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "customer_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The customer's unique identifier. Returned from the `GET /customers` response.",
            "example": "7c4d2f3a-1b8e-4f5c-9a6d-3e2f1a0b4c5d"
          },
          "account_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The billing account ID. Returned from the `GET /billing_accounts/{id}` response.",
            "example": "b8c9d0e1-f2a3-4567-8901-23456789abcd"
          },
          "transaction_type": {
            "description": "The nature of the ledger entry.",
            "example": "usage",
            "$ref": "#/components/schemas/BillingManagerBillingTransactionType"
          },
          "status": {
            "description": "Status of the billing.",
            "example": "progressing",
            "$ref": "#/components/schemas/BillingManagerBillingStatus"
          },
          "reference_type": {
            "description": "The type of reference associated with this billing.",
            "example": "call",
            "$ref": "#/components/schemas/BillingManagerBillingreferenceType"
          },
          "reference_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the referenced resource. The actual resource type is determined by reference_type. Returned from the corresponding resource endpoint.",
            "example": "f6a7b8c9-d0e1-2345-6789-0abcdef01234"
          },
          "cost_type": {
            "description": "The classification of the billing cost.",
            "example": "call_pstn_outgoing",
            "$ref": "#/components/schemas/BillingManagerBillingCostType"
          },
          "usage_duration": {
            "type": "integer",
            "description": "The actual usage duration in seconds.",
            "example": 125
          },
          "billable_units": {
            "type": "integer",
            "description": "The number of billable units (e.g. minutes, rounded up).",
            "example": 3
          },
          "rate_token_per_unit": {
            "type": "integer",
            "format": "int64",
            "description": "The token rate per billable unit.",
            "example": 10
          },
          "rate_credit_per_unit": {
            "type": "integer",
            "format": "int64",
            "description": "The credit rate per billable unit in micros.",
            "example": 50000
          },
          "amount_token": {
            "type": "integer",
            "format": "int64",
            "description": "The token delta for this transaction (negative for usage, positive for top-up).",
            "example": -30
          },
          "amount_credit": {
            "type": "integer",
            "format": "int64",
            "description": "The credit delta for this transaction in micros (negative for usage, positive for top-up).",
            "example": -150000
          },
          "balance_token_snapshot": {
            "type": "integer",
            "format": "int64",
            "description": "The token balance after this transaction.",
            "example": 470
          },
          "balance_credit_snapshot": {
            "type": "integer",
            "format": "int64",
            "description": "The credit balance after this transaction in micros.",
            "example": 1350000
          },
          "idempotency_key": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "A unique key to prevent duplicate transactions.",
            "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
          },
          "tm_billing_start": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "The start timestamp of the billing period.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_billing_end": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "The end timestamp of the billing period.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_create": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "The creation timestamp.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_update": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "The last update timestamp.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_delete": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "The deletion timestamp, if applicable.",
            "example": "2026-01-15T09:30:00.000000Z"
          }
        }
      },
      "CallManagerCallDirection": {
        "type": "string",
        "description": "Call direction",
        "example": "outgoing",
        "enum": [
          "incoming",
          "outgoing"
        ],
        "x-enum-varnames": [
          "CallManagerCallDirectionIncoming",
          "CallManagerCallDirectionOutgoing"
        ]
      },
      "CallManagerCallHangupBy": {
        "type": "string",
        "description": "Indicates who hung up the call",
        "example": "remote",
        "enum": [
          "",
          "remote",
          "local"
        ],
        "x-enum-varnames": [
          "CallManagerCallHangupByNone",
          "CallManagerCallHangupByRemote",
          "CallManagerCallHangupByLocal"
        ]
      },
      "CallManagerCallHangupReason": {
        "type": "string",
        "description": "Reason for call hangup",
        "example": "normal",
        "enum": [
          "",
          "normal",
          "failed",
          "busy",
          "cancel",
          "timeout",
          "noanswer",
          "dialout",
          "amd"
        ],
        "x-enum-varnames": [
          "CallManagerCallHangupReasonNone",
          "CallManagerCallHangupReasonNormal",
          "CallManagerCallHangupReasonFailed",
          "CallManagerCallHangupReasonBusy",
          "CallManagerCallHangupReasonCancel",
          "CallManagerCallHangupReasonTimeout",
          "CallManagerCallHangupReasonNoanswer",
          "CallManagerCallHangupReasonDialout",
          "CallManagerCallHangupReasonAMD"
        ]
      },
      "CallManagerCallMuteDirection": {
        "type": "string",
        "description": "Possible mute directions for the call",
        "example": "both",
        "enum": [
          "",
          "both",
          "out",
          "in"
        ],
        "x-enum-varnames": [
          "CallManagerCallMuteDirectionNone",
          "CallManagerCallMuteDirectionBoth",
          "CallManagerCallMuteDirectionOut",
          "CallManagerCallMuteDirectionIn"
        ]
      },
      "CallManagerCallStatus": {
        "type": "string",
        "description": "Call status",
        "example": "progressing",
        "enum": [
          "dialing",
          "ringing",
          "progressing",
          "terminating",
          "canceling",
          "hangup"
        ],
        "x-enum-varnames": [
          "CallManagerCallStatusDialing",
          "CallManagerCallStatusRinging",
          "CallManagerCallStatusProgressing",
          "CallManagerCallStatusTerminating",
          "CallManagerCallStatusCanceling",
          "CallManagerCallStatusHangup"
        ]
      },
      "CallManagerCallType": {
        "type": "string",
        "description": "Call type",
        "example": "flow",
        "enum": [
          "",
          "flow",
          "conference",
          "sip-service"
        ],
        "x-enum-varnames": [
          "CallManagerCallTypeNone",
          "CallManagerCallTypeFlow",
          "CallManagerCallTypeConference",
          "CallManagerCallTypeSIPService"
        ]
      },
      "CallManagerCall": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the call.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "customer_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The customer ID that owns this call. Returned from the `GET /customers` response.",
            "example": "7c4d2f3a-1b8e-4f5c-9a6d-3e2f1a0b4c5d"
          },
          "owner_type": {
            "type": "string",
            "description": "Type of the resource owner (e.g., agent, queue).",
            "example": "agent"
          },
          "owner_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the resource owner. Returned from the corresponding owner resource endpoint (e.g., `GET /agents`, `GET /queues`).",
            "example": "c2d3e4f5-a6b7-8901-2cde-f01234567890"
          },
          "flow_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The flow ID associated with this call. Returned from the `POST /flows` or `GET /flows` response.",
            "example": "a1b2c3d4-e5f6-7890-1234-567890abcdef"
          },
          "activeflow_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The activeflow ID associated with this call. Returned from the `POST /activeflows` or `GET /activeflows` response.",
            "example": "d4e5f6a7-b8c9-0123-4567-890abcdef012"
          },
          "type": {
            "description": "The type of this call.",
            "example": "flow",
            "$ref": "#/components/schemas/CallManagerCallType"
          },
          "master_call_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the master call that initiated this call. Returned from the `POST /calls` or `GET /calls` response.",
            "example": "4d5e6f7a-8b9c-0123-def0-123456789012"
          },
          "chained_call_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid",
              "x-go-type": "string"
            },
            "description": "Chained call IDs. Each ID is returned from the `POST /calls` or `GET /calls` response.",
            "example": [
              "550e8400-e29b-41d4-a716-446655440000"
            ]
          },
          "recording_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The current recording ID. Returned from the `GET /recordings` response.",
            "example": "e5f6a7b8-c9d0-1234-5678-90abcdef0123"
          },
          "recording_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid",
              "x-go-type": "string"
            },
            "description": "Recording IDs associated with this call. Each ID is returned from the `GET /recordings` response.",
            "example": [
              "e5f6a7b8-c9d0-1234-5678-90abcdef0123"
            ]
          },
          "groupcall_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "Group call ID. Returned from the `POST /groupcalls` or `GET /groupcalls` response. Indicates this call is part of a group call.",
            "example": "5e6f7a8b-9c0d-1234-ef01-234567890123"
          },
          "source": {
            "description": "Source address of the call.",
            "$ref": "#/components/schemas/CommonAddress"
          },
          "destination": {
            "description": "Destination address of the call.",
            "$ref": "#/components/schemas/CommonAddress"
          },
          "status": {
            "description": "Current status of the call.",
            "example": "progressing",
            "$ref": "#/components/schemas/CallManagerCallStatus"
          },
          "action": {
            "description": "The current action being executed on this call.",
            "$ref": "#/components/schemas/FlowManagerAction"
          },
          "direction": {
            "description": "Direction of the call.",
            "example": "outgoing",
            "$ref": "#/components/schemas/CallManagerCallDirection"
          },
          "mute_direction": {
            "description": "Current mute direction of the call.",
            "example": "both",
            "$ref": "#/components/schemas/CallManagerCallMuteDirection"
          },
          "hangup_by": {
            "description": "Indicates who hung up the call.",
            "example": "remote",
            "$ref": "#/components/schemas/CallManagerCallHangupBy"
          },
          "hangup_reason": {
            "description": "Reason the call was hung up.",
            "example": "normal",
            "$ref": "#/components/schemas/CallManagerCallHangupReason"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": true,
            "nullable": true,
            "description": "Internal metadata for the call. Contains key-value pairs set by the system.\nCurrently supported keys:\n- `rtp_debug` (boolean): When `true`, RTPEngine is capturing RTP traffic for this call.\n",
            "example": {
              "rtp_debug": true
            }
          },
          "tm_progressing": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp for call progressing.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_ringing": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp for call ringing.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_hangup": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp for call hangup.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_create": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "The creation timestamp.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_update": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "The last update timestamp.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_delete": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "The deletion timestamp, if applicable.",
            "example": "2026-01-15T09:30:00.000000Z"
          }
        }
      },
      "CallManagerGroupcallAnswerMethod": {
        "type": "string",
        "description": "Method to handle answered calls",
        "example": "hangup_others",
        "enum": [
          "",
          "hangup_others"
        ],
        "x-enum-varnames": [
          "CallManagerGroupcallAnswerMethodNone",
          "CallManagerGroupcallAnswerMethodHangupOthers"
        ]
      },
      "CallManagerGroupcallRingMethod": {
        "type": "string",
        "description": "Method used for dialing",
        "example": "ring_all",
        "enum": [
          "",
          "ring_all",
          "linear"
        ],
        "x-enum-varnames": [
          "CallManagerGroupcallRingMethodNone",
          "CallManagerGroupcallRingMethodRingAll",
          "CallManagerGroupcallRingMethodLinear"
        ]
      },
      "CallManagerGroupcallStatus": {
        "type": "string",
        "description": "Current status of the call or group call",
        "example": "progressing",
        "enum": [
          "progressing",
          "hangingup",
          "hangup"
        ],
        "x-enum-varnames": [
          "CallManagerGroupcallStatusProgressing",
          "CallManagerGroupcallStatusHangingup",
          "CallManagerGroupcallStatusHangup"
        ]
      },
      "CallManagerGroupcall": {
        "type": "object",
        "description": "Call or group call information",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the group call.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "customer_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The customer ID that owns this group call. Returned from the `GET /customers` response.",
            "example": "7c4d2f3a-1b8e-4f5c-9a6d-3e2f1a0b4c5d"
          },
          "owner_type": {
            "type": "string",
            "description": "Type of the resource owner (e.g., agent, queue).",
            "example": "agent"
          },
          "owner_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the resource owner. Returned from the corresponding owner resource endpoint (e.g., `GET /agents`, `GET /queues`).",
            "example": "c2d3e4f5-a6b7-8901-2cde-f01234567890"
          },
          "status": {
            "description": "Current status of the group call.",
            "example": "progressing",
            "$ref": "#/components/schemas/CallManagerGroupcallStatus"
          },
          "flow_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The flow ID associated with this group call. Returned from the `POST /flows` or `GET /flows` response.",
            "example": "a1b2c3d4-e5f6-7890-1234-567890abcdef"
          },
          "source": {
            "$ref": "#/components/schemas/CommonAddress",
            "nullable": true,
            "description": "Source address of the group call."
          },
          "destinations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CommonAddress"
            },
            "minItems": 1,
            "description": "List of target addresses. Must contain at least one destination."
          },
          "master_call_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "nullable": true,
            "description": "The unique identifier of the master call that initiated this group call. Returned from the `POST /calls` or `GET /calls` response.",
            "example": "4d5e6f7a-8b9c-0123-def0-123456789012"
          },
          "master_groupcall_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "nullable": true,
            "description": "The unique identifier of the master group call, if applicable. Returned from the `POST /groupcalls` or `GET /groupcalls` response.",
            "example": "5e6f7a8b-9c0d-1234-ef01-234567890123"
          },
          "ring_method": {
            "description": "The method used for dialing destinations.",
            "example": "ring_all",
            "$ref": "#/components/schemas/CallManagerGroupcallRingMethod"
          },
          "answer_method": {
            "description": "The method to handle answered calls.",
            "example": "hangup_others",
            "$ref": "#/components/schemas/CallManagerGroupcallAnswerMethod"
          },
          "answer_call_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the answered call. Returned from the `POST /calls` or `GET /calls` response.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "call_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid",
              "x-go-type": "string"
            },
            "description": "List of associated call IDs. Each ID is returned from the `POST /calls` or `GET /calls` response.",
            "example": [
              "550e8400-e29b-41d4-a716-446655440000"
            ]
          },
          "answer_groupcall_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the answered group call. Returned from the `POST /groupcalls` or `GET /groupcalls` response.",
            "example": "5e6f7a8b-9c0d-1234-ef01-234567890123"
          },
          "groupcall_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid",
              "x-go-type": "string"
            },
            "description": "List of associated group call IDs. Each ID is returned from the `POST /groupcalls` or `GET /groupcalls` response.",
            "example": [
              "5e6f7a8b-9c0d-1234-ef01-234567890123"
            ]
          },
          "call_count": {
            "type": "integer",
            "description": "Number of remaining calls in the current dial.",
            "example": 2
          },
          "groupcall_count": {
            "type": "integer",
            "description": "Number of remaining group calls in the current dial.",
            "example": 1
          },
          "dial_index": {
            "type": "integer",
            "nullable": true,
            "description": "Current dial index, valid only when the ring method is \"ring_all\".",
            "example": 0
          },
          "tm_create": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "The creation timestamp.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_update": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "The last update timestamp.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_delete": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "nullable": true,
            "description": "The deletion timestamp, if applicable.",
            "example": "2026-01-15T09:30:00.000000Z"
          }
        }
      },
      "CallManagerRecordingFormat": {
        "type": "string",
        "description": "The format of the recording.",
        "example": "wav",
        "enum": [
          "wav"
        ],
        "x-enum-varnames": [
          "CallManagerRecordingFormatWAV"
        ]
      },
      "CallManagerRecordingReferenceType": {
        "type": "string",
        "description": "Type of reference for the recording.",
        "example": "call",
        "enum": [
          "call",
          "confbridge"
        ],
        "x-enum-varnames": [
          "CallManagerRecordingReferenceTypeCall",
          "CallManagerRecordingReferenceTypeConfbridge"
        ]
      },
      "CallManagerRecordingStatus": {
        "type": "string",
        "description": "The status of the recording.",
        "example": "recording",
        "enum": [
          "initiating",
          "recording",
          "stopping",
          "ended"
        ],
        "x-enum-varnames": [
          "CallManagerRecordingStatusInitiating",
          "CallManagerRecordingStatusRecording",
          "CallManagerRecordingStatusStopping",
          "CallManagerRecordingStatusEnded"
        ]
      },
      "CallManagerRecording": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the recording.",
            "example": "e5f6a7b8-c9d0-1234-5678-90abcdef0123"
          },
          "customer_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The customer ID that owns this recording. Returned from the `GET /customers` response.",
            "example": "7c4d2f3a-1b8e-4f5c-9a6d-3e2f1a0b4c5d"
          },
          "owner_type": {
            "type": "string",
            "description": "Type of the resource owner (e.g., call, confbridge).",
            "example": "call"
          },
          "owner_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the resource owner. Returned from the corresponding owner resource endpoint (e.g., `GET /calls`, `GET /conferences`).",
            "example": "c2d3e4f5-a6b7-8901-2cde-f01234567890"
          },
          "reference_type": {
            "description": "The type of reference, either a \"call\" or a \"confbridge\".",
            "example": "call",
            "$ref": "#/components/schemas/CallManagerRecordingReferenceType"
          },
          "reference_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the referenced resource. The actual resource type is determined by reference_type. Returned from the corresponding resource endpoint.",
            "example": "f6a7b8c9-d0e1-2345-6789-0abcdef01234"
          },
          "status": {
            "description": "The status of the recording.",
            "example": "recording",
            "$ref": "#/components/schemas/CallManagerRecordingStatus"
          },
          "format": {
            "description": "The format of the recording file (e.g., WAV).",
            "example": "wav",
            "$ref": "#/components/schemas/CallManagerRecordingFormat"
          },
          "activeflow_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The activeflow ID associated with this recording. Returned from the `POST /activeflows` or `GET /activeflows` response.",
            "example": "d4e5f6a7-b8c9-0123-4567-890abcdef012"
          },
          "on_end_flow_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "Flow ID to execute when recording ends. Returned from the `POST /flows` or `GET /flows` response.",
            "example": "a1b2c3d4-e5f6-7890-1234-567890abcdef"
          },
          "tm_start": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "The start timestamp of the recording.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_end": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "The end timestamp of the recording.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_create": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "The creation timestamp.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_update": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "The last update timestamp.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_delete": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "The deletion timestamp, if applicable.",
            "example": "2026-01-15T09:30:00.000000Z"
          }
        }
      },
      "CallManagerExternalMedia": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the external media resource.",
            "example": "a1b2c3d4-e5f6-7890-abcd-ef0123456789"
          },
          "asterisk_id": {
            "type": "string",
            "description": "The Asterisk instance handling this external media.",
            "example": "asterisk-01"
          },
          "channel_id": {
            "type": "string",
            "description": "The external media channel ID in Asterisk.",
            "example": "1643723400.42"
          },
          "bridge_id": {
            "type": "string",
            "description": "The bridge ID connecting the snoop channel and external media channel.",
            "example": "bridge-ext-media-001"
          },
          "reference_type": {
            "type": "string",
            "description": "The type of resource this external media is associated with.",
            "enum": [
              "call",
              "confbridge"
            ],
            "x-enum-varnames": [
              "CallManagerExternalMediaReferenceTypeCall",
              "CallManagerExternalMediaReferenceTypeConfbridge"
            ],
            "example": "call"
          },
          "reference_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the referenced resource. The actual resource type is determined by reference_type. Returned from the corresponding resource endpoint (e.g., `GET /calls` or `GET /conferences`).",
            "example": "b2c3d4e5-f6a7-8901-bcde-f01234567890"
          },
          "status": {
            "type": "string",
            "description": "The current status of the external media.",
            "enum": [
              "running",
              "terminating",
              "terminated"
            ],
            "x-enum-varnames": [
              "CallManagerExternalMediaStatusRunning",
              "CallManagerExternalMediaStatusTerminating",
              "CallManagerExternalMediaStatusTerminated"
            ],
            "example": "running"
          },
          "local_ip": {
            "type": "string",
            "description": "The local IP address assigned for external media streaming.",
            "example": "10.0.1.5"
          },
          "local_port": {
            "type": "integer",
            "description": "The local port assigned for external media streaming.",
            "example": 20000
          },
          "external_host": {
            "type": "string",
            "description": "The external host address for media streaming.",
            "example": "media.example.com:10000"
          },
          "encapsulation": {
            "type": "string",
            "description": "Payload encapsulation protocol.",
            "enum": [
              "rtp",
              "audiosocket",
              "none"
            ],
            "x-enum-varnames": [
              "CallManagerExternalMediaEncapsulationRTP",
              "CallManagerExternalMediaEncapsulationAudioSocket",
              "CallManagerExternalMediaEncapsulationNone"
            ],
            "example": "rtp"
          },
          "transport": {
            "type": "string",
            "description": "Transport protocol for media streaming.",
            "enum": [
              "udp",
              "tcp",
              "websocket"
            ],
            "x-enum-varnames": [
              "CallManagerExternalMediaTransportUDP",
              "CallManagerExternalMediaTransportTCP",
              "CallManagerExternalMediaTransportWebsocket"
            ],
            "example": "udp"
          },
          "transport_data": {
            "type": "string",
            "description": "Transport-specific data. For websocket transport, this is appended to the dialstring.",
            "example": ""
          },
          "media_uri": {
            "type": "string",
            "description": "WebSocket media URI for connecting to Asterisk. Present only when transport is websocket.",
            "example": "ws://10.0.1.5:8088/media/abc123"
          },
          "connection_type": {
            "type": "string",
            "description": "Connection type for media streaming.",
            "example": "client"
          },
          "format": {
            "type": "string",
            "description": "Audio format for the media stream.",
            "example": "ulaw"
          },
          "direction_listen": {
            "type": "string",
            "description": "The listen direction of the external media channel.",
            "enum": [
              "",
              "both",
              "in",
              "out"
            ],
            "x-enum-varnames": [
              "CallManagerExternalMediaDirectionNone",
              "CallManagerExternalMediaDirectionBoth",
              "CallManagerExternalMediaDirectionIn",
              "CallManagerExternalMediaDirectionOut"
            ],
            "example": "both"
          },
          "direction_speak": {
            "type": "string",
            "description": "The speak direction of the external media channel.",
            "enum": [
              "",
              "both",
              "in",
              "out"
            ],
            "x-enum-varnames": [
              "CallManagerExternalMediaDirectionSpeakNone",
              "CallManagerExternalMediaDirectionSpeakBoth",
              "CallManagerExternalMediaDirectionSpeakIn",
              "CallManagerExternalMediaDirectionSpeakOut"
            ],
            "example": "both"
          }
        }
      },
      "CampaignManagerCampaignEndHandle": {
        "type": "string",
        "description": "Behavior of the campaign after outdial has no more targets.",
        "example": "stop",
        "enum": [
          "stop",
          "continue"
        ],
        "x-enum-varnames": [
          "CampaignManagerCampaignEndHandleStop",
          "CampaignManagerCampaignEndHandleContinue"
        ]
      },
      "CampaignManagerCampaignExecute": {
        "type": "string",
        "description": "Execution action for the campaign.",
        "example": "run",
        "enum": [
          "run",
          "stop"
        ],
        "x-enum-varnames": [
          "CampaignManagerCampaignExecuteRun",
          "CampaignManagerCampaignExecuteStop"
        ]
      },
      "CampaignManagerCampaignStatus": {
        "type": "string",
        "description": "Status of the campaign.",
        "example": "run",
        "enum": [
          "stop",
          "stopping",
          "run"
        ],
        "x-enum-varnames": [
          "CampaignManagerCampaignStatusStop",
          "CampaignManagerCampaignStatusStopping",
          "CampaignManagerCampaignStatusRun"
        ]
      },
      "CampaignManagerCampaignType": {
        "type": "string",
        "description": "Type of campaign.",
        "example": "call",
        "enum": [
          "call",
          "flow"
        ],
        "x-enum-varnames": [
          "CampaignManagerCampaignTypeCall",
          "CampaignManagerCampaignTypeFlow"
        ]
      },
      "CampaignManagerCampaign": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the campaign.",
            "example": "c3d4e5f6-a7b8-9012-3456-7890abcdef01"
          },
          "customer_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the customer. Returned from the `GET /customers` response.",
            "example": "7c4d2f3a-1b8e-4f5c-9a6d-3e2f1a0b4c5d"
          },
          "type": {
            "$ref": "#/components/schemas/CampaignManagerCampaignType",
            "description": "The type of campaign.",
            "example": "call"
          },
          "name": {
            "type": "string",
            "description": "Display name of the campaign.",
            "example": "Q1 Outbound Campaign"
          },
          "detail": {
            "type": "string",
            "description": "Additional details about the campaign.",
            "example": "Quarterly customer outreach campaign"
          },
          "status": {
            "$ref": "#/components/schemas/CampaignManagerCampaignStatus",
            "description": "Current status of the campaign.",
            "example": "run"
          },
          "service_level": {
            "type": "integer",
            "description": "Target service level percentage.",
            "example": 80
          },
          "end_handle": {
            "$ref": "#/components/schemas/CampaignManagerCampaignEndHandle",
            "description": "Behavior when outdial has no more targets.",
            "example": "stop"
          },
          "actions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FlowManagerAction"
            },
            "description": "Ordered list of actions to execute for each campaign call."
          },
          "outplan_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the outplan. Returned from the `POST /outplans` or `GET /outplans` response.",
            "example": "2b3c4d5e-6f7a-8901-bcde-f12345678901"
          },
          "outdial_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the outdial. Returned from the `POST /outdials` or `GET /outdials` response.",
            "example": "3c4d5e6f-7a8b-9012-cdef-012345678901"
          },
          "queue_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the queue. Returned from the `POST /queues` or `GET /queues` response.",
            "example": "1a2b3c4d-5e6f-7890-abcd-ef1234567890"
          },
          "next_campaign_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the next campaign to execute after this one completes. Returned from the `POST /campaigns` or `GET /campaigns` response.",
            "example": "c3d4e5f6-a7b8-9012-3456-7890abcdef01"
          },
          "tm_create": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the campaign was created.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_update": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the campaign was last updated.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_delete": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the campaign was deleted.",
            "example": "2026-01-15T09:30:00.000000Z"
          }
        }
      },
      "CampaignManagerCampaigncallReferenceType": {
        "type": "string",
        "description": "Type of reference for the campaign call.",
        "example": "call",
        "enum": [
          "none",
          "call",
          "flow"
        ],
        "x-enum-varnames": [
          "CampaignManagerCampaigncallReferenceTypeNone",
          "CampaignManagerCampaigncallReferenceTypeCall",
          "CampaignManagerCampaigncallReferenceTypeFlow"
        ]
      },
      "CampaignManagerCampaigncallResult": {
        "type": "string",
        "description": "Result of the campaign call attempt.",
        "example": "success",
        "enum": [
          "",
          "success",
          "fail"
        ],
        "x-enum-varnames": [
          "CampaignManagerCampaigncallResultNone",
          "CampaignManagerCampaigncallResultSuccess",
          "CampaignManagerCampaigncallResultFail"
        ]
      },
      "CampaignManagerCampaigncallStatus": {
        "type": "string",
        "description": "Status of the campaign call.",
        "example": "progressing",
        "enum": [
          "dialing",
          "progressing",
          "done"
        ],
        "x-enum-varnames": [
          "CampaignManagerCampaigncallStatusDialing",
          "CampaignManagerCampaigncallStatusProgressing",
          "CampaignManagerCampaigncallStatusDone"
        ]
      },
      "CampaignManagerCampaigncall": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the campaign call.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "customer_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the customer. Returned from the `GET /customers` response.",
            "example": "7c4d2f3a-1b8e-4f5c-9a6d-3e2f1a0b4c5d"
          },
          "campaign_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the campaign. Returned from the `POST /campaigns` or `GET /campaigns` response.",
            "example": "c3d4e5f6-a7b8-9012-3456-7890abcdef01"
          },
          "outplan_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the outbound plan. Returned from the `POST /outplans` or `GET /outplans` response.",
            "example": "2b3c4d5e-6f7a-8901-bcde-f12345678901"
          },
          "outdial_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the outbound dial. Returned from the `POST /outdials` or `GET /outdials` response.",
            "example": "3c4d5e6f-7a8b-9012-cdef-012345678901"
          },
          "outdial_target_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the outbound dial target. Returned from the `GET /outdials/{id}/targets` response.",
            "example": "3c4d5e6f-7a8b-9012-cdef-012345678901"
          },
          "queue_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the queue. Returned from the `POST /queues` or `GET /queues` response.",
            "example": "1a2b3c4d-5e6f-7890-abcd-ef1234567890"
          },
          "activeflow_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the activeflow. Returned from the `GET /activeflows` response.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "flow_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the flow. Returned from the `POST /flows` or `GET /flows` response.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "reference_type": {
            "$ref": "#/components/schemas/CampaignManagerCampaigncallReferenceType",
            "description": "Type of reference for the campaign call.",
            "example": "call"
          },
          "reference_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the referenced resource. The actual resource type is determined by reference_type. Returned from the corresponding resource endpoint.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "status": {
            "$ref": "#/components/schemas/CampaignManagerCampaigncallStatus",
            "description": "Status of the campaign call.",
            "example": "progressing"
          },
          "result": {
            "$ref": "#/components/schemas/CampaignManagerCampaigncallResult",
            "description": "Result of the campaign call attempt.",
            "example": "success"
          },
          "source": {
            "$ref": "#/components/schemas/CommonAddress",
            "description": "Source address of the campaign call."
          },
          "destination": {
            "$ref": "#/components/schemas/CommonAddress",
            "description": "Destination address of the campaign call."
          },
          "destination_index": {
            "type": "integer",
            "description": "Index of the current destination being dialed.",
            "example": 0
          },
          "try_count": {
            "type": "integer",
            "description": "Number of dialing attempts made.",
            "example": 2
          },
          "tm_create": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the campaign call was created.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_update": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the campaign call was last updated.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_delete": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the campaign call was deleted.",
            "example": "2026-01-15T09:30:00.000000Z"
          }
        }
      },
      "CampaignManagerOutplan": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the outplan.",
            "example": "2b3c4d5e-6f7a-8901-bcde-f12345678901"
          },
          "customer_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the customer. Returned from the `GET /customers` response.",
            "example": "7c4d2f3a-1b8e-4f5c-9a6d-3e2f1a0b4c5d"
          },
          "name": {
            "type": "string",
            "description": "Name of the outplan.",
            "example": "Standard Outbound Plan"
          },
          "detail": {
            "type": "string",
            "description": "Detailed information about the outplan.",
            "example": "Default outbound dialing plan for campaigns"
          },
          "source": {
            "$ref": "#/components/schemas/CommonAddress",
            "description": "Source address for outbound calls."
          },
          "dial_timeout": {
            "type": "integer",
            "description": "Dial timeout in milliseconds.",
            "example": 30000
          },
          "try_interval": {
            "type": "integer",
            "description": "Interval between dialing attempts in milliseconds.",
            "example": 60000
          },
          "max_try_count_0": {
            "type": "integer",
            "description": "Maximum number of tries for level 0.",
            "example": 3
          },
          "max_try_count_1": {
            "type": "integer",
            "description": "Maximum number of tries for level 1.",
            "example": 2
          },
          "max_try_count_2": {
            "type": "integer",
            "description": "Maximum number of tries for level 2.",
            "example": 1
          },
          "max_try_count_3": {
            "type": "integer",
            "description": "Maximum number of tries for level 3.",
            "example": 1
          },
          "max_try_count_4": {
            "type": "integer",
            "description": "Maximum number of tries for level 4.",
            "example": 1
          },
          "tm_create": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the outplan was created.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_update": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the outplan was last updated.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_delete": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the outplan was deleted.",
            "example": "2026-01-15T09:30:00.000000Z"
          }
        }
      },
      "AIManagerAIEngineModel": {
        "type": "string",
        "description": "Model of the AI engine. Uses target.model format (e.g., openai.gpt-5). The target prefix identifies the provider, and the model name follows after the dot.",
        "example": "openai.gpt-5",
        "enum": [
          "gemini.gemini-2.5-flash",
          "gemini.gemini-2.5-pro",
          "gemini.gemini-2.0-flash",
          "gemini.gemini-pro-latest",
          "openai.gpt-5.2",
          "openai.gpt-5.1",
          "openai.gpt-5",
          "openai.gpt-5-mini",
          "openai.gpt-5-nano",
          "grok.grok-3",
          "grok.grok-3-mini"
        ],
        "x-enum-varnames": [
          "AIManagerAIEngineModelGeminiGemini2Dot5Flash",
          "AIManagerAIEngineModelGeminiGemini2Dot5Pro",
          "AIManagerAIEngineModelGeminiGemini2Dot0Flash",
          "AIManagerAIEngineModelGeminiGeminiProLatest",
          "AIManagerAIEngineModelOpenaiGPT5Dot2",
          "AIManagerAIEngineModelOpenaiGPT5Dot1",
          "AIManagerAIEngineModelOpenaiGPT5",
          "AIManagerAIEngineModelOpenaiGPT5Mini",
          "AIManagerAIEngineModelOpenaiGPT5Nano",
          "AIManagerAIEngineModelGrok3",
          "AIManagerAIEngineModelGrok3Mini"
        ]
      },
      "AIManagerVADConfig": {
        "type": "object",
        "description": "Voice Activity Detection configuration. Omitted fields use Pipecat defaults (confidence=0.7, start_secs=0.2, stop_secs=0.2, min_volume=0.6).",
        "properties": {
          "confidence": {
            "type": "number",
            "format": "double",
            "description": "Minimum confidence threshold to detect voice. Range 0.0–1.0. Omitted fields use Pipecat default.",
            "minimum": 0,
            "maximum": 1,
            "default": 0.7,
            "example": 0.7
          },
          "start_secs": {
            "type": "number",
            "format": "double",
            "description": "Duration in seconds of continuous speech needed to confirm speaking started. Range 0.0–30.0. Omitted fields use Pipecat default.",
            "minimum": 0,
            "maximum": 30,
            "default": 0.2,
            "example": 0.2
          },
          "stop_secs": {
            "type": "number",
            "format": "double",
            "description": "Duration in seconds of silence needed to confirm speaking stopped. Range 0.0–30.0. Omitted fields use Pipecat default.",
            "minimum": 0,
            "maximum": 30,
            "default": 0.2,
            "example": 0.5
          },
          "min_volume": {
            "type": "number",
            "format": "double",
            "description": "Minimum audio volume for voice detection. Range 0.0–1.0. Omitted fields use Pipecat default.",
            "minimum": 0,
            "maximum": 1,
            "default": 0.6,
            "example": 0.6
          }
        }
      },
      "AIManagerAI": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the AI.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "customer_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the associated customer. Returned from the `GET /customers` response.",
            "example": "7c4d2f3a-1b8e-4f5c-9a6d-3e2f1a0b4c5d"
          },
          "name": {
            "type": "string",
            "description": "Name of the AI.",
            "example": "Customer Support Bot"
          },
          "detail": {
            "type": "string",
            "description": "Detailed information about the AI.",
            "example": "AI assistant for handling customer inquiries"
          },
          "engine_model": {
            "$ref": "#/components/schemas/AIManagerAIEngineModel",
            "description": "Model of the AI engine.",
            "example": "gemini.gemini-pro-latest"
          },
          "parameter": {
            "type": "object",
            "additionalProperties": true,
            "description": "Custom key-value configuration data specific to the AI engine type."
          },
          "engine_key": {
            "type": "string",
            "description": "API key or authentication key for the AI engine. Write-only; not returned in responses.",
            "example": "sk-...redacted..."
          },
          "rag_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The knowledge base ID for the search_knowledge tool. Returned from the `id` field of the `GET /rags` response. When set, the AI assistant can search this knowledge base during voice calls.",
            "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
          },
          "init_prompt": {
            "type": "string",
            "description": "Initial prompt to configure the AI's behavior.",
            "example": "You are a helpful customer support assistant."
          },
          "tts_type": {
            "$ref": "#/components/schemas/AIManagerAITTSType",
            "description": "Text-to-speech provider type.",
            "example": "google"
          },
          "tts_voice_id": {
            "type": "string",
            "description": "Text-to-speech voice identifier.",
            "example": "en-US-Neural2-F"
          },
          "stt_type": {
            "$ref": "#/components/schemas/AIManagerAISTTType",
            "description": "Speech-to-text provider type.",
            "example": "deepgram"
          },
          "stt_language": {
            "type": "string",
            "description": "STT language in BCP-47 format (e.g., ko-KR, en-US). Empty for auto-detect.",
            "example": "en-US"
          },
          "vad_config": {
            "$ref": "#/components/schemas/AIManagerVADConfig"
          },
          "smart_turn_enabled": {
            "type": "boolean",
            "description": "Enable smart turn detection using Pipecat's LocalSmartTurnAnalyzerV3. When enabled, forces VAD stop_secs to 0.2 for optimal turn-taking.",
            "example": false
          },
          "tool_names": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AIManagerToolName"
            },
            "description": "List of tool names enabled for this AI. Use `[\"all\"]` to enable all available tools. See the Tool Functions documentation for detailed descriptions of each tool.",
            "example": [
              "all"
            ]
          },
          "direct_hash": {
            "type": "string",
            "description": "Hash for direct access via SIP URI sip:direct.<hash>@sip.voipbin.net. Returned from the resource's `direct_hash` field.",
            "example": "a8f3b2c1d4e5"
          },
          "tm_create": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the AI was created.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_update": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the AI was last updated.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_delete": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the AI was deleted.",
            "example": "2026-01-15T09:30:00.000000Z"
          }
        }
      },
      "AIManagerTeam": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the team.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "customer_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the associated customer. Returned from the `GET /customers` response.",
            "example": "7c4d2f3a-1b8e-4f5c-9a6d-3e2f1a0b4c5d"
          },
          "name": {
            "type": "string",
            "description": "Name of the team.",
            "example": "Customer Support Team"
          },
          "detail": {
            "type": "string",
            "description": "Detailed description of the team.",
            "example": "Multi-agent team for handling customer inquiries"
          },
          "start_member_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The member ID that starts the conversation. Must reference one of the members in the members array.",
            "example": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
          },
          "members": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AIManagerTeamMember"
            },
            "description": "List of team members forming the graph nodes."
          },
          "parameter": {
            "type": "object",
            "additionalProperties": true,
            "description": "Custom key-value parameter data for the team. Supports flow variable substitution at runtime.",
            "example": {
              "language": "en-US",
              "department": "support"
            }
          },
          "direct_hash": {
            "type": "string",
            "description": "Hash for direct access via SIP URI sip:direct.<hash>@sip.voipbin.net. Returned from the resource's `direct_hash` field.",
            "example": "a8f3b2c1d4e5"
          },
          "tm_create": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the team was created.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_update": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the team was last updated.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_delete": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the team was deleted.",
            "example": "2026-01-15T09:30:00.000000Z"
          }
        },
        "required": [
          "id",
          "customer_id",
          "name",
          "detail",
          "start_member_id",
          "members"
        ]
      },
      "AIManagerTeamMember": {
        "type": "object",
        "description": "A member node in the team graph, backed by an existing AI configuration.",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of this member within the team.",
            "example": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
          },
          "name": {
            "type": "string",
            "description": "Display name for this member.",
            "example": "Greeter"
          },
          "ai_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The AI configuration backing this member. Returned from the `POST /ais` or `GET /ais` response.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "transitions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AIManagerTeamTransition"
            },
            "description": "List of transitions (edges) from this member to other members."
          }
        },
        "required": [
          "id",
          "name",
          "ai_id"
        ]
      },
      "AIManagerTeamTransition": {
        "type": "object",
        "description": "A transition edge that triggers a switch from one member to another via LLM function calling.",
        "properties": {
          "function_name": {
            "type": "string",
            "description": "The function name that the LLM calls to trigger this transition. Must not collide with reserved tool names.",
            "example": "transfer_to_specialist"
          },
          "description": {
            "type": "string",
            "description": "Human-readable description of when this transition should be triggered. Used as the function description in LLM tool definitions.",
            "example": "Transfer to the specialist when the customer needs technical help"
          },
          "next_member_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The member ID to transition to. Must reference an existing member in the team.",
            "example": "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"
          }
        },
        "required": [
          "function_name",
          "description",
          "next_member_id"
        ]
      },
      "AIManagerAIcallAssistanceType": {
        "type": "string",
        "description": "Type of assistance entity associated with the AI call.",
        "example": "ai",
        "enum": [
          "",
          "ai",
          "team"
        ],
        "x-enum-varnames": [
          "AIManagerAIcallAssistanceTypeNone",
          "AIManagerAIcallAssistanceTypeAI",
          "AIManagerAIcallAssistanceTypeTeam"
        ]
      },
      "AIManagerAIcallReferenceType": {
        "type": "string",
        "description": "Type of reference associated with the ai call.",
        "example": "call",
        "enum": [
          "",
          "call",
          "conversation",
          "task"
        ],
        "x-enum-varnames": [
          "AIManagerAIcallReferenceTypeNone",
          "AIManagerAIcallReferenceTypeCall",
          "AIManagerAIcallReferenceTypeConversation",
          "AIManagerAIcallReferenceTypeTask"
        ]
      },
      "AIManagerAIcallStatus": {
        "type": "string",
        "description": "Status of the ai call.",
        "example": "progressing",
        "enum": [
          "initiating",
          "progressing",
          "pausing",
          "resuming",
          "terminating",
          "terminated"
        ],
        "x-enum-varnames": [
          "AIManagerAIcallStatusInitiating",
          "AIManagerAIcallStatusProgressing",
          "AIManagerAIcallStatusPausing",
          "AIManagerAIcallStatusResuming",
          "AIManagerAIcallStatusTerminating",
          "AIManagerAIcallStatusTerminated"
        ]
      },
      "AIManagerAITTSType": {
        "type": "string",
        "description": "Text-to-speech provider type.",
        "example": "elevenlabs",
        "enum": [
          "",
          "async",
          "aws",
          "azure",
          "cartesia",
          "deepgram",
          "elevenlabs",
          "fish",
          "google",
          "groq",
          "hume",
          "inworld",
          "lmnt",
          "minimax",
          "neuphonic",
          "nvidia-riva",
          "openai",
          "piper",
          "playht",
          "rime",
          "sarvam",
          "xtts"
        ],
        "x-enum-varnames": [
          "AIManagerAITTSTypeNone",
          "AIManagerAITTSTypeAsync",
          "AIManagerAITTSTypeAWS",
          "AIManagerAITTSTypeAzure",
          "AIManagerAITTSTypeCartesia",
          "AIManagerAITTSTypeDeepgram",
          "AIManagerAITTSTypeElevenLabs",
          "AIManagerAITTSTypeFish",
          "AIManagerAITTSTypeGoogle",
          "AIManagerAITTSTypeGroq",
          "AIManagerAITTSTypeHume",
          "AIManagerAITTSTypeInworld",
          "AIManagerAITTSTypeLMNT",
          "AIManagerAITTSTypeMiniMax",
          "AIManagerAITTSTypeNeuphonic",
          "AIManagerAITTSTypeNvidiaRiva",
          "AIManagerAITTSTypeOpenAI",
          "AIManagerAITTSTypePiper",
          "AIManagerAITTSTypePlayHT",
          "AIManagerAITTSTypeRime",
          "AIManagerAITTSTypeSarvam",
          "AIManagerAITTSTypeXTTS"
        ]
      },
      "AIManagerAISTTType": {
        "type": "string",
        "description": "Speech-to-text provider type.",
        "example": "deepgram",
        "enum": [
          "",
          "cartesia",
          "deepgram",
          "elevenlabs"
        ],
        "x-enum-varnames": [
          "AIManagerAISTTTypeNone",
          "AIManagerAISTTTypeCartesia",
          "AIManagerAISTTTypeDeepgram",
          "AIManagerAISTTTypeElevenLabs"
        ]
      },
      "AIManagerToolName": {
        "type": "string",
        "description": "Name of an AI tool function. Use `all` to enable every available tool.",
        "example": "connect_call",
        "enum": [
          "all",
          "connect_call",
          "get_aicall_messages",
          "get_variables",
          "search_knowledge",
          "send_email",
          "send_message",
          "set_variables",
          "stop_flow",
          "stop_media",
          "stop_service"
        ],
        "x-enum-varnames": [
          "AIManagerToolNameAll",
          "AIManagerToolNameConnectCall",
          "AIManagerToolNameGetAicallMessages",
          "AIManagerToolNameGetVariables",
          "AIManagerToolNameSearchKnowledge",
          "AIManagerToolNameSendEmail",
          "AIManagerToolNameSendMessage",
          "AIManagerToolNameSetVariables",
          "AIManagerToolNameStopFlow",
          "AIManagerToolNameStopMedia",
          "AIManagerToolNameStopService"
        ]
      },
      "AIManagerAIcall": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the AI call.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "customer_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the associated customer. Returned from the `GET /customers` response.",
            "example": "7c4d2f3a-1b8e-4f5c-9a6d-3e2f1a0b4c5d"
          },
          "assistance_type": {
            "$ref": "#/components/schemas/AIManagerAIcallAssistanceType",
            "description": "Type of assistance entity associated with the AI call.",
            "example": "ai"
          },
          "assistance_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the assistance entity (AI or Team). Returned from the `POST /ais`, `GET /ais`, `POST /teams`, or `GET /teams` response.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "ai_engine_model": {
            "$ref": "#/components/schemas/AIManagerAIEngineModel",
            "description": "Model of the AI engine used for this call.",
            "example": "gemini.gemini-pro-latest"
          },
          "ai_tts_type": {
            "$ref": "#/components/schemas/AIManagerAITTSType",
            "description": "Text-to-speech provider type used for this call.",
            "example": "elevenlabs"
          },
          "ai_tts_voice_id": {
            "type": "string",
            "description": "Text-to-speech voice identifier used for this call.",
            "example": "21m00Tcm4TlvDq8ikWAM"
          },
          "ai_stt_type": {
            "$ref": "#/components/schemas/AIManagerAISTTType",
            "description": "Speech-to-text provider type used for this call.",
            "example": "deepgram"
          },
          "ai_vad_config": {
            "$ref": "#/components/schemas/AIManagerVADConfig"
          },
          "ai_smart_turn_enabled": {
            "type": "boolean",
            "description": "Smart turn detection setting frozen from the AI configuration at call start.",
            "example": false
          },
          "parameter": {
            "type": "object",
            "additionalProperties": true,
            "description": "Merged key-value parameter data from AI and team configuration.",
            "example": {
              "language": "en-US",
              "department": "support"
            }
          },
          "activeflow_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the activeflow. Returned from the `GET /activeflows` response.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "reference_type": {
            "$ref": "#/components/schemas/AIManagerAIcallReferenceType",
            "description": "Type of reference associated with the AI call.",
            "example": "call"
          },
          "reference_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the referenced resource. The actual resource type is determined by reference_type. Returned from the corresponding resource endpoint.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "confbridge_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the conference bridge. Returned from the `GET /conferences` response.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "current_member_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the currently active team member. Only set when assistance_type is 'team'. Updated when the AI agent transitions to a different team member.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "status": {
            "$ref": "#/components/schemas/AIManagerAIcallStatus",
            "description": "Status of the AI call.",
            "example": "progressing"
          },
          "stt_language": {
            "type": "string",
            "description": "STT language copied from AI config at creation time.",
            "example": "en-US"
          },
          "tm_end": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the AI call ended.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_create": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the AI call was created.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_update": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the AI call was last updated.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_delete": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the AI call was deleted.",
            "example": "2026-01-15T09:30:00.000000Z"
          }
        }
      },
      "AIManagerMessageDirection": {
        "type": "string",
        "description": "Direction of the message.",
        "example": "incoming",
        "enum": [
          "",
          "incoming",
          "outgoing"
        ],
        "x-enum-varnames": [
          "AIManagerMessageDirectionNone",
          "AIManagerMessageDirectionIncoming",
          "AIManagerMessageDirectionOutgoing"
        ]
      },
      "AIManagerMessageRole": {
        "type": "string",
        "description": "Role of the entity in the conversation.",
        "example": "assistant",
        "enum": [
          "",
          "system",
          "user",
          "assistant",
          "function",
          "tool",
          "notification"
        ],
        "x-enum-varnames": [
          "AIManagerMessageRoleNone",
          "AIManagerMessageRoleSystem",
          "AIManagerMessageRoleUser",
          "AIManagerMessageRoleAssistant",
          "AIManagerMessageRoleFunction",
          "AIManagerMessageRoleTool",
          "AIManagerMessageRoleNotification"
        ]
      },
      "AIManagerMessage": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the message.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "customer_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the associated customer. Returned from the `GET /customers` response.",
            "example": "7c4d2f3a-1b8e-4f5c-9a6d-3e2f1a0b4c5d"
          },
          "aicall_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the associated AI call. Returned from the `GET /aicalls` response.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "activeflow_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the activeflow. Returned from the `GET /activeflows` response.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "role": {
            "$ref": "#/components/schemas/AIManagerMessageRole",
            "description": "Role of the entity in the conversation.",
            "example": "assistant"
          },
          "content": {
            "type": "string",
            "description": "Content of the message.",
            "example": "Hello, how can I help you today?"
          },
          "direction": {
            "$ref": "#/components/schemas/AIManagerMessageDirection",
            "description": "Direction of the message.",
            "example": "incoming"
          },
          "tool_calls": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "The unique identifier of the tool call.",
                  "example": "call_abc123"
                },
                "type": {
                  "type": "string",
                  "description": "The type of tool call.",
                  "example": "function"
                },
                "function": {
                  "type": "object",
                  "description": "The function call details.",
                  "properties": {
                    "name": {
                      "type": "string",
                      "description": "The name of the function to call.",
                      "example": "get_weather"
                    },
                    "arguments": {
                      "type": "string",
                      "description": "The arguments to pass to the function as a JSON string.",
                      "example": "{\"location\": \"San Francisco\"}"
                    }
                  }
                }
              }
            },
            "description": "List of tool calls made during the message."
          },
          "tool_call_id": {
            "type": "string",
            "description": "The tool call ID this message is responding to.",
            "example": "call_abc123"
          },
          "tm_create": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the message was created.",
            "example": "2026-01-15T09:30:00.000000Z"
          }
        }
      },
      "AIManagerSummaryReferenceType": {
        "type": "string",
        "description": "Type of reference for the AI summary.",
        "example": "call",
        "enum": [
          "",
          "call",
          "conference",
          "transcribe",
          "recording"
        ],
        "x-enum-varnames": [
          "AIManagerSummaryReferenceTypeNone",
          "AIManagerSummaryReferenceTypeCall",
          "AIManagerSummaryReferenceTypeConference",
          "AIManagerSummaryReferenceTypeTranscribe",
          "AIManagerSummaryReferenceTypeRecording"
        ]
      },
      "AIManagerSummaryStatus": {
        "type": "string",
        "description": "Status of the AI summary generation.",
        "example": "progressing",
        "enum": [
          "",
          "progressing",
          "done"
        ],
        "x-enum-varnames": [
          "AIManagerSummaryStatusNone",
          "AIManagerSummaryStatusProgressing",
          "AIManagerSummaryStatusDone"
        ]
      },
      "AIManagerSummary": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the summary.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "customer_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the associated customer. Returned from the `GET /customers` response.",
            "example": "7c4d2f3a-1b8e-4f5c-9a6d-3e2f1a0b4c5d"
          },
          "activeflow_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the activeflow. Returned from the `GET /activeflows` response.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "on_end_flow_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the flow to execute when the summary completes. Returned from the `POST /flows` or `GET /flows` response.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "reference_type": {
            "$ref": "#/components/schemas/AIManagerSummaryReferenceType",
            "description": "Type of reference for the AI summary.",
            "example": "call"
          },
          "reference_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the referenced resource. The actual resource type is determined by reference_type. Returned from the corresponding resource endpoint.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "status": {
            "$ref": "#/components/schemas/AIManagerSummaryStatus",
            "description": "Status of the AI summary generation.",
            "example": "progressing"
          },
          "language": {
            "type": "string",
            "description": "Language used for the AI summary.",
            "example": "en-US"
          },
          "content": {
            "type": "string",
            "description": "Content of the summary.",
            "example": "The customer called to inquire about their account balance and was assisted by the support agent."
          },
          "tm_create": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the summary was created.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_update": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the summary was last updated.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_delete": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the summary was deleted.",
            "example": "2026-01-15T09:30:00.000000Z"
          }
        }
      },
      "CommonAddress": {
        "type": "object",
        "description": "Contains source or destination detail info.",
        "properties": {
          "type": {
            "type": "string",
            "description": "Type of address.",
            "example": "tel",
            "enum": [
              "",
              "agent",
              "conference",
              "email",
              "extension",
              "line",
              "sip",
              "tel"
            ],
            "x-enum-varnames": [
              "CommonAddressTypeNone",
              "CommonAddressTypeAgent",
              "CommonAddressTypeConference",
              "CommonAddressTypeEmail",
              "CommonAddressTypeExtension",
              "CommonAddressTypeLine",
              "CommonAddressTypeSIP",
              "CommonAddressTypeTel"
            ]
          },
          "target": {
            "type": "string",
            "description": "The address endpoint. Format depends on type: phone number for tel (e.g. +14155551234), UUID for agent/conference/extension, email for email, SIP URI for sip.",
            "example": "+14155551234"
          },
          "target_name": {
            "type": "string",
            "description": "Address's name.",
            "example": "John Smith"
          },
          "name": {
            "type": "string",
            "description": "Optional label for this address.",
            "example": "Main Office"
          },
          "detail": {
            "type": "string",
            "description": "Additional notes about this address.",
            "example": "Primary contact number"
          }
        }
      },
      "CommonPagination": {
        "type": "object",
        "properties": {
          "next_page_token": {
            "type": "string",
            "description": "Cursor token for the next page of results. Pass this value as the page_token parameter in the next request."
          }
        }
      },
      "ConferenceManagerConferenceStatus": {
        "type": "string",
        "description": "Status of the conference.",
        "example": "progressing",
        "enum": [
          "starting",
          "progressing",
          "terminating",
          "terminated"
        ],
        "x-enum-varnames": [
          "ConferenceManagerConferenceStatusStarting",
          "ConferenceManagerConferenceStatusProgressing",
          "ConferenceManagerConferenceStatusTerminating",
          "ConferenceManagerConferenceStatusTerminated"
        ]
      },
      "ConferenceManagerConferenceType": {
        "type": "string",
        "description": "Types of conferences.",
        "example": "conference",
        "enum": [
          "",
          "conference",
          "connect",
          "queue"
        ],
        "x-enum-varnames": [
          "ConferenceManagerConferenceTypeNone",
          "ConferenceManagerConferenceTypeConference",
          "ConferenceManagerConferenceTypeConnect",
          "ConferenceManagerConferenceTypeQueue"
        ]
      },
      "ConferenceManagerConference": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "Unique identifier for the conference.",
            "example": "8b9c0d1e-2f3a-4567-0123-456789abcdef"
          },
          "customer_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "Unique identifier of the associated customer. Returned from the `GET /customers` response.",
            "example": "7c4d2f3a-1b8e-4f5c-9a6d-3e2f1a0b4c5d"
          },
          "type": {
            "$ref": "#/components/schemas/ConferenceManagerConferenceType",
            "description": "The type of conference.",
            "example": "conference"
          },
          "status": {
            "$ref": "#/components/schemas/ConferenceManagerConferenceStatus",
            "description": "Current status of the conference.",
            "example": "progressing"
          },
          "name": {
            "type": "string",
            "description": "Name of the conference.",
            "example": "Team Standup"
          },
          "detail": {
            "type": "string",
            "description": "Detailed information about the conference.",
            "example": "Daily team standup meeting"
          },
          "data": {
            "type": "object",
            "description": "Custom key-value data associated with the conference.",
            "additionalProperties": true
          },
          "timeout": {
            "type": "integer",
            "description": "Timeout for the conference in seconds.",
            "format": "int32",
            "example": 3600
          },
          "pre_flow_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the flow to execute before the conference starts. Returned from the `POST /flows` or `GET /flows` response.",
            "example": "a1b2c3d4-e5f6-7890-1234-567890abcdef"
          },
          "post_flow_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the flow to execute after the conference ends. Returned from the `POST /flows` or `GET /flows` response.",
            "example": "a1b2c3d4-e5f6-7890-1234-567890abcdef"
          },
          "conferencecall_ids": {
            "type": "array",
            "description": "List of associated conference call IDs. Each ID is returned from the `GET /conferencecalls` response.",
            "example": [
              "550e8400-e29b-41d4-a716-446655440000"
            ],
            "items": {
              "type": "string",
              "format": "uuid",
              "x-go-type": "string"
            }
          },
          "recording_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "ID of the main recording associated with the conference. Returned from the `GET /recordings` response.",
            "example": "e5f6a7b8-c9d0-1234-5678-90abcdef0123"
          },
          "recording_ids": {
            "type": "array",
            "description": "List of associated recording IDs. Each ID is returned from the `GET /recordings` response.",
            "example": [
              "e5f6a7b8-c9d0-1234-5678-90abcdef0123"
            ],
            "items": {
              "type": "string",
              "format": "uuid",
              "x-go-type": "string"
            }
          },
          "transcribe_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "ID of the main transcription associated with the conference. Returned from the `GET /transcribes` response.",
            "example": "9c0d1e2f-3a4b-5678-1234-567890abcdef"
          },
          "transcribe_ids": {
            "type": "array",
            "description": "List of associated transcription IDs. Each ID is returned from the `GET /transcribes` response.",
            "example": [
              "9c0d1e2f-3a4b-5678-1234-567890abcdef"
            ],
            "items": {
              "type": "string",
              "format": "uuid",
              "x-go-type": "string"
            }
          },
          "direct_hash": {
            "type": "string",
            "description": "Hash for direct access via SIP URI sip:direct.<hash>@sip.voipbin.net. Returned from the resource's `direct_hash` field.",
            "example": "a8f3b2c1d4e5"
          },
          "tm_end": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the conference ended.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_create": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the conference was created.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_update": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the conference was last updated.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_delete": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the conference was deleted.",
            "example": "2026-01-15T09:30:00.000000Z"
          }
        }
      },
      "ConferenceManagerConferencecallReferenceType": {
        "type": "string",
        "description": "Type of the reference associated with the conference call.",
        "example": "call",
        "enum": [
          "call"
        ],
        "x-enum-varnames": [
          "ConferenceManagerConferencecallReferenceTypeCall"
        ]
      },
      "ConferenceManagerConferencecallStatus": {
        "type": "string",
        "description": "Status of the conference call.",
        "example": "joined",
        "enum": [
          "joining",
          "joined",
          "leaving",
          "leaved"
        ],
        "x-enum-varnames": [
          "ConferenceManagerConferencecallStatusJoining",
          "ConferenceManagerConferencecallStatusJoined",
          "ConferenceManagerConferencecallStatusLeaving",
          "ConferenceManagerConferencecallStatusLeaved"
        ]
      },
      "ConferenceManagerConferencecall": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "Unique identifier for the conference call.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "customer_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "Unique identifier of the associated customer. Returned from the `GET /customers` response.",
            "example": "7c4d2f3a-1b8e-4f5c-9a6d-3e2f1a0b4c5d"
          },
          "activeflow_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "Activeflow ID associated with this conference call. Returned from the `POST /activeflows` or `GET /activeflows` response.",
            "example": "d4e5f6a7-b8c9-0123-4567-890abcdef012"
          },
          "conference_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "Unique identifier of the associated conference. Returned from the `GET /conferences` response.",
            "example": "8b9c0d1e-2f3a-4567-0123-456789abcdef"
          },
          "reference_type": {
            "$ref": "#/components/schemas/ConferenceManagerConferencecallReferenceType",
            "description": "Type of the reference associated with the conference call.",
            "example": "call"
          },
          "reference_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the referenced resource. The actual resource type is determined by reference_type. Returned from the corresponding resource endpoint.",
            "example": "f6a7b8c9-d0e1-2345-6789-0abcdef01234"
          },
          "status": {
            "$ref": "#/components/schemas/ConferenceManagerConferencecallStatus",
            "description": "Current status of the conference call.",
            "example": "joined"
          },
          "tm_create": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the conference call was created.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_update": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the conference call was last updated.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_delete": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the conference call was deleted.",
            "example": "2026-01-15T09:30:00.000000Z"
          }
        }
      },
      "ContactManagerContact": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Unique identifier for the contact.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "customer_id": {
            "type": "string",
            "format": "uuid",
            "description": "Unique identifier of the associated customer.",
            "example": "7c4d2f3a-1b8e-4f5c-9a6d-3e2f1a0b4c5d"
          },
          "first_name": {
            "type": "string",
            "description": "First name of the contact.",
            "example": "John"
          },
          "last_name": {
            "type": "string",
            "description": "Last name of the contact.",
            "example": "Smith"
          },
          "display_name": {
            "type": "string",
            "description": "Display name of the contact.",
            "example": "John Smith"
          },
          "company": {
            "type": "string",
            "description": "Company name associated with the contact.",
            "example": "Acme Corporation"
          },
          "job_title": {
            "type": "string",
            "description": "Job title of the contact.",
            "example": "Software Engineer"
          },
          "source": {
            "$ref": "#/components/schemas/ContactManagerContactSource",
            "description": "Source of the contact.",
            "example": "manual"
          },
          "external_id": {
            "type": "string",
            "description": "External identifier for the contact.",
            "example": "CRM-12345"
          },
          "phone_numbers": {
            "type": "array",
            "description": "List of phone numbers associated with the contact.",
            "items": {
              "$ref": "#/components/schemas/ContactManagerPhoneNumber"
            }
          },
          "emails": {
            "type": "array",
            "description": "List of email addresses associated with the contact.",
            "items": {
              "$ref": "#/components/schemas/ContactManagerEmail"
            }
          },
          "tag_ids": {
            "type": "array",
            "description": "List of tag IDs associated with the contact.",
            "example": [
              "b1a2c3d4-e5f6-7890-abcd-ef1234567890"
            ],
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "tm_create": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp when the contact was created.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_update": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp when the contact was last updated.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_delete": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp when the contact was deleted.",
            "example": "2026-01-15T09:30:00.000000Z"
          }
        }
      },
      "ContactManagerContactSource": {
        "type": "string",
        "description": "Source of the contact.",
        "example": "manual",
        "enum": [
          "manual",
          "import",
          "api",
          "sync"
        ],
        "x-enum-varnames": [
          "ContactManagerContactSourceManual",
          "ContactManagerContactSourceImport",
          "ContactManagerContactSourceAPI",
          "ContactManagerContactSourceSync"
        ]
      },
      "ContactManagerEmail": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Unique identifier for the email address.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "address": {
            "type": "string",
            "format": "email",
            "description": "Email address.",
            "example": "john.smith@acme.com"
          },
          "type": {
            "$ref": "#/components/schemas/ContactManagerEmailType",
            "description": "Type of the email address.",
            "example": "work"
          },
          "is_primary": {
            "type": "boolean",
            "description": "Indicates if this is the primary email address.",
            "example": true
          },
          "tm_create": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp when the email was created.",
            "example": "2026-01-15T09:30:00.000000Z"
          }
        }
      },
      "ContactManagerEmailType": {
        "type": "string",
        "description": "Type of the email address.",
        "example": "work",
        "enum": [
          "work",
          "personal",
          "other"
        ],
        "x-enum-varnames": [
          "ContactManagerEmailTypeWork",
          "ContactManagerEmailTypePersonal",
          "ContactManagerEmailTypeOther"
        ]
      },
      "ContactManagerPhoneNumber": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Unique identifier for the phone number.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "number": {
            "type": "string",
            "description": "Phone number as entered.",
            "example": "+14155551234"
          },
          "number_e164": {
            "type": "string",
            "description": "Phone number in E.164 format.",
            "example": "+14155551234"
          },
          "type": {
            "$ref": "#/components/schemas/ContactManagerPhoneNumberType",
            "description": "Type of the phone number.",
            "example": "mobile"
          },
          "is_primary": {
            "type": "boolean",
            "description": "Indicates if this is the primary phone number.",
            "example": true
          },
          "tm_create": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp when the phone number was created.",
            "example": "2026-01-15T09:30:00.000000Z"
          }
        }
      },
      "ContactManagerPhoneNumberType": {
        "type": "string",
        "description": "Type of the phone number.",
        "example": "mobile",
        "enum": [
          "mobile",
          "work",
          "home",
          "fax",
          "other"
        ],
        "x-enum-varnames": [
          "ContactManagerPhoneNumberTypeMobile",
          "ContactManagerPhoneNumberTypeWork",
          "ContactManagerPhoneNumberTypeHome",
          "ContactManagerPhoneNumberTypeFax",
          "ContactManagerPhoneNumberTypeOther"
        ]
      },
      "ConversationManagerAccountType": {
        "type": "string",
        "description": "Type of the account.",
        "example": "sms",
        "enum": [
          "line",
          "sms"
        ],
        "x-enum-varnames": [
          "ConversationManagerAccountTypeLine",
          "ConversationManagerAccountTypeSMS"
        ]
      },
      "ConversationManagerAccount": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the conversation account.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "customer_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the customer. Returned from the `GET /customers` response.",
            "example": "7c4d2f3a-1b8e-4f5c-9a6d-3e2f1a0b4c5d"
          },
          "type": {
            "$ref": "#/components/schemas/ConversationManagerAccountType",
            "description": "Type of messaging platform.",
            "example": "sms"
          },
          "name": {
            "type": "string",
            "description": "Name of the account.",
            "example": "Main SMS Account"
          },
          "detail": {
            "type": "string",
            "description": "Detailed information about the account.",
            "example": "Primary SMS messaging account"
          },
          "secret": {
            "type": "string",
            "writeOnly": true,
            "description": "Webhook secret for signature verification. Write-only.",
            "example": "whsec_...redacted..."
          },
          "token": {
            "type": "string",
            "writeOnly": true,
            "description": "API token for the messaging platform. Write-only.",
            "example": "xoxb_...redacted..."
          },
          "message_flow_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The flow ID to execute when a message is received on this account. Returned from the `GET /flows` response.",
            "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
          },
          "tm_create": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the account was created.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_update": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the account was last updated.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_delete": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the account was deleted.",
            "example": "2026-01-15T09:30:00.000000Z"
          }
        }
      },
      "ConversationManagerConversationType": {
        "type": "string",
        "description": "Type of the conversation.",
        "example": "message",
        "enum": [
          "",
          "message",
          "line"
        ],
        "x-enum-varnames": [
          "ConversationManagerConversationTypeNone",
          "ConversationManagerConversationTypeMessage",
          "ConversationManagerConversationTypeLine"
        ]
      },
      "ConversationManagerConversation": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the conversation.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "customer_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the customer. Returned from the `GET /customers` response.",
            "example": "7c4d2f3a-1b8e-4f5c-9a6d-3e2f1a0b4c5d"
          },
          "owner_type": {
            "type": "string",
            "description": "Type of the conversation owner.",
            "example": "agent"
          },
          "owner_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the conversation owner. Returned from the corresponding owner resource endpoint (e.g., `GET /agents`).",
            "example": "c2d3e4f5-a6b7-8901-2cde-f01234567890"
          },
          "account_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the conversation account. Returned from the `GET /conversation_accounts` response.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "name": {
            "type": "string",
            "description": "Name of the conversation.",
            "example": "Customer Support Chat"
          },
          "detail": {
            "type": "string",
            "description": "Detailed information about the conversation.",
            "example": "Support conversation with customer"
          },
          "type": {
            "$ref": "#/components/schemas/ConversationManagerConversationType",
            "description": "Type of the conversation (e.g., message, line).",
            "example": "message"
          },
          "dialog_id": {
            "type": "string",
            "description": "The identifier of the referenced conversation transaction. For Line, this is the chatroom ID.",
            "example": "chatroom-abc123"
          },
          "self": {
            "$ref": "#/components/schemas/CommonAddress",
            "description": "The self address of the conversation."
          },
          "peer": {
            "$ref": "#/components/schemas/CommonAddress",
            "description": "The peer address of the conversation."
          },
          "tm_create": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the conversation was created.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_update": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the conversation was last updated.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_delete": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the conversation was deleted.",
            "example": "2026-01-15T09:30:00.000000Z"
          }
        }
      },
      "ConversationManagerMediaType": {
        "type": "string",
        "description": "Type of the media.",
        "example": "image",
        "enum": [
          "image",
          "video",
          "audio",
          "file",
          "location",
          "sticker",
          "template",
          "imagemap",
          "flex"
        ],
        "x-enum-varnames": [
          "ConversationManagerMediaTypeImage",
          "ConversationManagerMediaTypeVideo",
          "ConversationManagerMediaTypeAudio",
          "ConversationManagerMediaTypeFile",
          "ConversationManagerMediaTypeLocation",
          "ConversationManagerMediaTypeSticker",
          "ConversationManagerMediaTypeTemplate",
          "ConversationManagerMediaTypeImagemap",
          "ConversationManagerMediaTypeFlex"
        ]
      },
      "ConversationManagerMedia": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the media.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "customer_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the customer. Returned from the `GET /customers` response.",
            "example": "7c4d2f3a-1b8e-4f5c-9a6d-3e2f1a0b4c5d"
          },
          "type": {
            "$ref": "#/components/schemas/ConversationManagerMediaType",
            "description": "Type of the media content.",
            "example": "image"
          },
          "filename": {
            "type": "string",
            "description": "Filename of the media.",
            "example": "photo_2026-01-15.jpg"
          },
          "tm_create": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the media was created.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_update": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the media was last updated.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_delete": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the media was deleted.",
            "example": "2026-01-15T09:30:00.000000Z"
          }
        }
      },
      "ConversationManagerMessageDirection": {
        "type": "string",
        "description": "Direction of the message (incoming or outgoing).",
        "example": "incoming",
        "enum": [
          "outgoing",
          "incoming"
        ],
        "x-enum-varnames": [
          "ConversationManagerMessageDirectionOutgoing",
          "ConversationManagerMessageDirectionIncoming"
        ]
      },
      "ConversationManagerMessageReferenceType": {
        "type": "string",
        "description": "Type of reference associated with the message (e.g., call, campaign).",
        "example": "call",
        "enum": [
          "none",
          "call",
          "campaign"
        ],
        "x-enum-varnames": [
          "ConversationManagerMessageReferenceTypeNone",
          "ConversationManagerMessageReferenceTypeCall",
          "ConversationManagerMessageReferenceTypeCampaign"
        ]
      },
      "ConversationManagerMessageStatus": {
        "type": "string",
        "description": "Status of the message.",
        "example": "sent",
        "enum": [
          "sending",
          "sent",
          "failed",
          "received"
        ],
        "x-enum-varnames": [
          "ConversationManagerMessageStatusSending",
          "ConversationManagerMessageStatusSent",
          "ConversationManagerMessageStatusFailed",
          "ConversationManagerMessageStatusReceived"
        ]
      },
      "ConversationManagerMessage": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the message.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "customer_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the customer. Returned from the `GET /customers` response.",
            "example": "7c4d2f3a-1b8e-4f5c-9a6d-3e2f1a0b4c5d"
          },
          "conversation_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the conversation. Returned from the `GET /conversations` response.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "direction": {
            "$ref": "#/components/schemas/ConversationManagerMessageDirection",
            "description": "Direction of the message.",
            "example": "incoming"
          },
          "status": {
            "$ref": "#/components/schemas/ConversationManagerMessageStatus",
            "description": "Current delivery status of the message.",
            "example": "sent"
          },
          "reference_type": {
            "$ref": "#/components/schemas/ConversationManagerMessageReferenceType",
            "description": "Type of reference associated with the message.",
            "example": "call"
          },
          "reference_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the referenced resource. The actual resource type is determined by reference_type. Returned from the corresponding resource endpoint.",
            "example": "f6a7b8c9-d0e1-2345-6789-0abcdef01234"
          },
          "text": {
            "type": "string",
            "description": "The message content.",
            "example": "Hello, how can I help you today?"
          },
          "medias": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ConversationManagerMedia"
            },
            "description": "List of media associated with the message."
          },
          "tm_create": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the message was created.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_update": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the message was last updated.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_delete": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the message was deleted.",
            "example": "2026-01-15T09:30:00.000000Z"
          }
        }
      },
      "CustomerManagerAccesskey": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the access key.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "customer_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the customer. Returned from the `GET /customers` response.",
            "example": "7c4d2f3a-1b8e-4f5c-9a6d-3e2f1a0b4c5d"
          },
          "name": {
            "type": "string",
            "description": "Name of the access key.",
            "example": "Production API Key"
          },
          "detail": {
            "type": "string",
            "description": "Additional details about the access key.",
            "example": "API key for production environment"
          },
          "token": {
            "type": "string",
            "description": "The access key token. Only returned once at creation time via `POST /accesskeys`. Subsequent `GET` requests will not include this field. Store it securely immediately after creation.",
            "example": "vb_a3Bf9xKmPq2nR7sT4wYzLp8mN5qR1xWe"
          },
          "token_prefix": {
            "type": "string",
            "description": "A short prefix of the access key token for identification purposes. Always returned in `GET` responses.",
            "example": "vb_a3Bf9xKm"
          },
          "tm_expire": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the access key expires.",
            "example": "2027-01-15T09:30:00.000000Z"
          },
          "tm_create": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the access key was created.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_update": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the access key was last updated.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_delete": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the access key was deleted.",
            "example": "2026-01-15T09:30:00.000000Z"
          }
        }
      },
      "CustomerManagerCustomerWebhookMethod": {
        "type": "string",
        "description": "The HTTP method used for webhook (e.g., POST, GET, PUT, DELETE).",
        "example": "POST",
        "enum": [
          "",
          "POST",
          "GET",
          "PUT",
          "DELETE"
        ],
        "x-enum-varnames": [
          "CustomerManagerCustomerWebhookMethodNone",
          "CustomerManagerCustomerWebhookMethodPost",
          "CustomerManagerCustomerWebhookMethodGet",
          "CustomerManagerCustomerWebhookMethodPut",
          "CustomerManagerCustomerWebhookMethodDelete"
        ]
      },
      "CustomerManagerMetadata": {
        "type": "object",
        "description": "Configuration flags for a customer account. Controls platform behavior\nsuch as RTP packet capture for debugging audio issues.\nUpdatable by CustomerAdmin via `PUT /customer/metadata`\nor by ProjectSuperAdmin via `PUT /customers/{id}/metadata`.\n",
        "properties": {
          "rtp_debug": {
            "type": "boolean",
            "description": "When set to `true`, RTPEngine captures RTP traffic as PCAP files for this customer's calls.\nUse this to debug audio quality issues (one-way audio, codec problems, jitter).\nDefault is `false`. Enabling this increases storage usage — disable after debugging.\n",
            "example": true
          }
        }
      },
      "CustomerManagerCustomerStatus": {
        "type": "string",
        "description": "Account lifecycle status.",
        "example": "active",
        "enum": [
          "active",
          "frozen",
          "deleted"
        ],
        "x-enum-varnames": [
          "CustomerManagerCustomerStatusActive",
          "CustomerManagerCustomerStatusFrozen",
          "CustomerManagerCustomerStatusDeleted"
        ]
      },
      "CustomerManagerCustomerIdentityVerificationStatus": {
        "type": "string",
        "description": "Customer's identity verification status. Determines access to PSTN number purchases and outbound PSTN calls.",
        "example": "none",
        "enum": [
          "none",
          "pending",
          "verified",
          "rejected"
        ],
        "x-enum-varnames": [
          "CustomerManagerCustomerIdentityVerificationStatusNone",
          "CustomerManagerCustomerIdentityVerificationStatusPending",
          "CustomerManagerCustomerIdentityVerificationStatusVerified",
          "CustomerManagerCustomerIdentityVerificationStatusRejected"
        ]
      },
      "CustomerManagerCustomer": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the customer.",
            "example": "7c4d2f3a-1b8e-4f5c-9a6d-3e2f1a0b4c5d"
          },
          "name": {
            "type": "string",
            "description": "Name of the customer.",
            "example": "Acme Corporation"
          },
          "detail": {
            "type": "string",
            "description": "Details about the customer.",
            "example": "Enterprise customer account"
          },
          "email": {
            "type": "string",
            "format": "email",
            "x-go-type": "string",
            "description": "Email address of the customer.",
            "example": "admin@acme.com"
          },
          "phone_number": {
            "type": "string",
            "description": "Customer's contact phone number in E.164 format.",
            "example": "+14155551234"
          },
          "address": {
            "type": "string",
            "description": "Address of the customer.",
            "example": "123 Main St, San Francisco, CA 94105"
          },
          "webhook_method": {
            "$ref": "#/components/schemas/CustomerManagerCustomerWebhookMethod",
            "description": "Webhook method used by the customer.",
            "example": "POST"
          },
          "webhook_uri": {
            "type": "string",
            "description": "URI where webhook events are delivered.",
            "example": "https://api.acme.com/webhooks/voipbin"
          },
          "billing_account_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the customer's default billing account. Returned from the `GET /billing_accounts/{id}` response.",
            "example": "b8c9d0e1-f2a3-4567-8901-23456789abcd"
          },
          "default_outgoing_source_number_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the customer's default outgoing source number. Returned from the `GET /numbers/{id}` response. When set, outgoing PSTN calls without a valid source number will use this number as the caller ID.",
            "example": "d4e5f6a7-b8c9-0123-4567-89abcdef0123"
          },
          "metadata": {
            "$ref": "#/components/schemas/CustomerManagerMetadata",
            "description": "Customer configuration flags (e.g., RTP debug). Updatable by CustomerAdmin via `PUT /customer/metadata`."
          },
          "email_verified": {
            "type": "boolean",
            "description": "Whether the customer's email has been verified.",
            "example": true
          },
          "status": {
            "$ref": "#/components/schemas/CustomerManagerCustomerStatus",
            "description": "Account lifecycle status.",
            "example": "active"
          },
          "identity_verification_status": {
            "$ref": "#/components/schemas/CustomerManagerCustomerIdentityVerificationStatus",
            "description": "Customer's identity verification status. Only 'verified' customers can purchase PSTN numbers and make outbound PSTN calls.",
            "example": "none"
          },
          "tm_deletion_scheduled": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when account deletion was requested. Null if not scheduled.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_create": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the customer was created.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_update": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the customer was last updated.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_delete": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the customer was deleted.",
            "example": "2026-01-15T09:30:00.000000Z"
          }
        }
      },
      "CustomerManagerCustomerAdmin": {
        "description": "Full customer object returned by admin-only endpoints (`/customers`, `/customers/{id}`,\n`/customers/{id}/metadata`, `/customers/{id}/billing_account_id`,\n`/customers/{id}/default_outgoing_source_number_id`, `/customers/{id}/freeze`,\n`/customers/{id}/recover`). Extends `CustomerManagerCustomer` with internal fields that are\nnever exposed to regular users via `/customer` (singular) endpoints.\n",
        "allOf": [
          {
            "$ref": "#/components/schemas/CustomerManagerCustomer"
          },
          {
            "type": "object",
            "properties": {
              "terms_agreed_version": {
                "type": "string",
                "description": "Version identifier of the Terms of Service the customer agreed to. Format: `YYYY-MM-DD` date string matching a published ToS revision.",
                "example": "2026-01-01"
              },
              "terms_agreed_ip": {
                "type": "string",
                "format": "ipv4",
                "x-go-type": "string",
                "description": "IPv4 address from which the customer accepted the Terms of Service. Logged for legal compliance and audit trail.",
                "example": "203.0.113.42"
              },
              "metadata": {
                "$ref": "#/components/schemas/CustomerManagerMetadata",
                "description": "Internal configuration flags managed exclusively by ProjectSuperAdmin via `PUT /customers/{id}/metadata`. Not visible to regular users."
              }
            }
          }
        ]
      },
      "EmailManagerEmailAttachmentReferenceType": {
        "type": "string",
        "description": "Type of the action.",
        "example": "recording",
        "enum": [
          "",
          "recording"
        ],
        "x-enum-varnames": [
          "EmailManagerEmailAttachmentReferenceTypeNone",
          "EmailManagerEmailAttachmentReferenceTypeRecording"
        ]
      },
      "EmailManagerEmailStatus": {
        "type": "string",
        "description": "Email status.",
        "example": "delivered",
        "enum": [
          "",
          "initiated",
          "processed",
          "delivered",
          "open",
          "click",
          "bounce",
          "dropped",
          "deferred",
          "unsubscribe",
          "spamreport"
        ],
        "x-enum-varnames": [
          "EmailManagerEmailStatusNone",
          "EmailManagerEmailStatusInitiated",
          "EmailManagerEmailStatusProcessed",
          "EmailManagerEmailStatusDelivered",
          "EmailManagerEmailStatusOpen",
          "EmailManagerEmailStatusClick",
          "EmailManagerEmailStatusBounce",
          "EmailManagerEmailStatusDropped",
          "EmailManagerEmailStatusDeferred",
          "EmailManagerEmailStatusUnsubscribe",
          "EmailManagerEmailStatusSpamreport"
        ]
      },
      "EmailManagerEmailAttachment": {
        "type": "object",
        "properties": {
          "reference_type": {
            "description": "Type of the reference.",
            "$ref": "#/components/schemas/EmailManagerEmailAttachmentReferenceType",
            "example": "recording"
          },
          "reference_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the referenced resource (e.g., recording ID). Returned from the corresponding resource endpoint.",
            "example": "e5f6a7b8-c9d0-1234-5678-90abcdef0123"
          }
        },
        "required": [
          "reference_type",
          "reference_id"
        ]
      },
      "EmailManagerEmail": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the email.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "customer_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the customer. Returned from the `GET /customers` response.",
            "example": "7c4d2f3a-1b8e-4f5c-9a6d-3e2f1a0b4c5d"
          },
          "source": {
            "$ref": "#/components/schemas/CommonAddress",
            "description": "The source address of the email."
          },
          "destinations": {
            "type": "array",
            "minItems": 1,
            "items": {
              "$ref": "#/components/schemas/CommonAddress"
            },
            "description": "List of destination addresses. Must contain at least one destination."
          },
          "status": {
            "$ref": "#/components/schemas/EmailManagerEmailStatus",
            "description": "Current delivery status of the email.",
            "example": "delivered"
          },
          "subject": {
            "type": "string",
            "description": "The subject of the email.",
            "example": "Your Call Recording is Ready"
          },
          "content": {
            "type": "string",
            "description": "The content of the email.",
            "example": "Please find your call recording attached."
          },
          "attachments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmailManagerEmailAttachment"
            },
            "description": "List of attachments"
          },
          "tm_create": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the email was created.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_update": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the email was last updated.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_delete": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the email was deleted.",
            "example": "2026-01-15T09:30:00.000000Z"
          }
        },
        "required": [
          "id",
          "customer_id",
          "source",
          "destinations",
          "status",
          "subject",
          "content",
          "attachments",
          "tm_create",
          "tm_update",
          "tm_delete"
        ]
      },
      "FlowManagerActionType": {
        "type": "string",
        "description": "Type of the action.",
        "example": "talk",
        "enum": [
          "ai_talk",
          "ai_summary",
          "amd",
          "answer",
          "beep",
          "branch",
          "call",
          "condition_call_digits",
          "condition_call_status",
          "condition_datetime",
          "condition_variable",
          "confbridge_join",
          "conference_join",
          "connect",
          "conversation_send",
          "digits_receive",
          "digits_send",
          "echo",
          "email_send",
          "external_media_start",
          "external_media_stop",
          "fetch",
          "fetch_flow",
          "goto",
          "hangup",
          "message_send",
          "mute",
          "play",
          "queue_join",
          "recording_start",
          "recording_stop",
          "sleep",
          "stop",
          "stream_echo",
          "talk",
          "transcribe_start",
          "transcribe_stop",
          "transcribe_recording",
          "variable_set",
          "webhook_send"
        ],
        "x-enum-varnames": [
          "FlowManagerActionTypeAITalk",
          "FlowManagerActionTypeAISummary",
          "FlowManagerActionTypeAMD",
          "FlowManagerActionTypeAnswer",
          "FlowManagerActionTypeBeep",
          "FlowManagerActionTypeBranch",
          "FlowManagerActionTypeCall",
          "FlowManagerActionTypeConditionCallDigits",
          "FlowManagerActionTypeConditionCallStatus",
          "FlowManagerActionTypeConditionDatetime",
          "FlowManagerActionTypeConditionVariable",
          "FlowManagerActionTypeConfbridgeJoin",
          "FlowManagerActionTypeConferenceJoin",
          "FlowManagerActionTypeConnect",
          "FlowManagerActionTypeConversationSend",
          "FlowManagerActionTypeDigitsReceive",
          "FlowManagerActionTypeDigitsSend",
          "FlowManagerActionTypeEcho",
          "FlowManagerActionTypeEmailSend",
          "FlowManagerActionTypeExternalMediaStart",
          "FlowManagerActionTypeExternalMediaStop",
          "FlowManagerActionTypeFetch",
          "FlowManagerActionTypeFetchFlow",
          "FlowManagerActionTypeGoto",
          "FlowManagerActionTypeHangup",
          "FlowManagerActionTypeMessageSend",
          "FlowManagerActionTypeMute",
          "FlowManagerActionTypePlay",
          "FlowManagerActionTypeQueueJoin",
          "FlowManagerActionTypeRecordingStart",
          "FlowManagerActionTypeRecordingStop",
          "FlowManagerActionTypeSleep",
          "FlowManagerActionTypeStop",
          "FlowManagerActionTypeStreamEcho",
          "FlowManagerActionTypeTalk",
          "FlowManagerActionTypeTranscribeStart",
          "FlowManagerActionTypeTranscribeStop",
          "FlowManagerActionTypeTranscribeRecording",
          "FlowManagerActionTypeVariableSet",
          "FlowManagerActionTypeWebhookSend"
        ]
      },
      "FlowManagerActionOptionAISummary": {
        "type": "object",
        "properties": {
          "on_end_flow_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the flow to execute when AI summary completes. Returned from the `POST /flows` or `GET /flows` response.",
            "example": "a1b2c3d4-e5f6-7890-1234-567890abcdef"
          },
          "reference_type": {
            "$ref": "#/components/schemas/AIManagerSummaryReferenceType",
            "example": "call"
          },
          "reference_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the referenced resource. Returned from the corresponding resource endpoint.",
            "example": "f6a7b8c9-d0e1-2345-6789-0abcdef01234"
          },
          "language": {
            "type": "string",
            "description": "BCP47 language code for the summary.",
            "example": "en-US"
          }
        }
      },
      "FlowManagerActionOptionAITalk": {
        "type": "object",
        "properties": {
          "ai_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "Deprecated: use assistance_type+assistance_id. The unique identifier of the AI configuration to use.",
            "example": "6f7a8b9c-0d1e-2345-f012-345678901234"
          },
          "assistance_type": {
            "$ref": "#/components/schemas/AIManagerAIcallAssistanceType",
            "description": "Type of assistance entity. Use \"ai\" for AI or \"team\" for Team."
          },
          "assistance_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the assistance entity (AI or Team).",
            "example": "6f7a8b9c-0d1e-2345-f012-345678901234"
          },
          "duration": {
            "type": "integer",
            "description": "Maximum duration of the AI talk session in seconds.",
            "example": 300
          }
        }
      },
      "FlowManagerActionOptionAMD": {
        "type": "object",
        "properties": {
          "machine_handle": {
            "type": "string",
            "enum": [
              "hangup",
              "continue"
            ],
            "x-enum-varnames": [
              "FlowManagerActionOptionAMDMachineHandleHangup",
              "FlowManagerActionOptionAMDMachineHandleContinue"
            ],
            "example": "hangup"
          },
          "async": {
            "type": "boolean",
            "description": "If false, the call flow will pause until AMD is complete.",
            "example": false
          }
        }
      },
      "FlowManagerActionOptionAnswer": {
        "type": "object",
        "description": "No options available for this action."
      },
      "FlowManagerActionOptionBeep": {
        "type": "object",
        "description": "No options available for this action."
      },
      "FlowManagerActionOptionBranch": {
        "type": "object",
        "properties": {
          "variable": {
            "type": "string",
            "description": "Variable name to evaluate for branching.",
            "example": "call_digits"
          },
          "default_target_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "Default target ID if input does not match any branch targets. References an action `id` within the same flow's `actions` array.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "target_ids": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Mapping of input values to target action IDs."
          }
        }
      },
      "FlowManagerActionOptionCall": {
        "type": "object",
        "properties": {
          "source": {
            "$ref": "#/components/schemas/CommonAddress",
            "description": "Source address for the outbound call."
          },
          "destinations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CommonAddress"
            },
            "minItems": 1,
            "description": "List of destination addresses. Must contain at least one destination."
          },
          "flow_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the flow to execute on the created call. Returned from the `POST /flows` or `GET /flows` response.",
            "example": "a1b2c3d4-e5f6-7890-1234-567890abcdef"
          },
          "actions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FlowManagerAction"
            },
            "description": "Inline actions to execute on the created call."
          },
          "chained": {
            "type": "boolean",
            "description": "If true, created calls will hang up when the master call hangs up.",
            "example": true
          },
          "early_execution": {
            "type": "boolean",
            "description": "If true, the created call executes the flow before call answer.",
            "example": false
          }
        }
      },
      "FlowManagerActionOptionConfbridgeJoin": {
        "type": "object",
        "properties": {
          "confbridge_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the conference bridge to join. Returned from the `POST /conferences` or `GET /conferences` response.",
            "example": "0d1e2f3a-4b5c-6789-2345-678901abcdef"
          }
        }
      },
      "FlowManagerActionOptionConferenceJoin": {
        "type": "object",
        "properties": {
          "conference_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the conference to join. Returned from the `GET /conferences` response.",
            "example": "8b9c0d1e-2f3a-4567-0123-456789abcdef"
          }
        }
      },
      "FlowManagerActionOptionConnect": {
        "type": "object",
        "properties": {
          "source": {
            "$ref": "#/components/schemas/CommonAddress",
            "description": "Source address for the outbound connection."
          },
          "destinations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CommonAddress"
            },
            "minItems": 1,
            "description": "List of destination addresses. Must contain at least one destination."
          },
          "early_media": {
            "type": "boolean",
            "description": "If true, the call will get early media from the destination.\n",
            "example": false
          },
          "relay_reason": {
            "type": "boolean",
            "description": "If true, the master call will try to hang up with the same reason as the first destination call.\nValid only if the first destination call hangs up earlier than the master call.\n",
            "example": true
          }
        }
      },
      "FlowManagerActionOptionConversationSend": {
        "type": "object",
        "properties": {
          "conversation_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the conversation. Returned from the `GET /conversations` response.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "text": {
            "type": "string",
            "description": "Message text.",
            "example": "Your verification code is 1234."
          },
          "sync": {
            "type": "boolean",
            "description": "Whether to wait for delivery confirmation.",
            "example": false
          }
        }
      },
      "FlowManagerActionOptionDigitsReceive": {
        "type": "object",
        "properties": {
          "duration": {
            "type": "integer",
            "description": "DTMF receiving duration in milliseconds.",
            "example": 10000
          },
          "key": {
            "type": "string",
            "description": "If set, determines which DTMF key triggers the next step.\nThe end key is not included in the resulting variable.\nIf not set, no key will trigger the next step.\n",
            "example": "#"
          },
          "length": {
            "type": "integer",
            "description": "An optional limit to the number of DTMF events that should be gathered before continuing.\n",
            "example": 4
          }
        }
      },
      "FlowManagerActionOptionDigitsSend": {
        "type": "object",
        "properties": {
          "digits": {
            "type": "string",
            "maxLength": 100,
            "pattern": "^[0-9ABCD#*]*$",
            "description": "Keys to send. Allowed characters: 0-9, A-D, #, *. Max 100 keys.\n",
            "example": "1234#"
          },
          "duration": {
            "type": "integer",
            "minimum": 100,
            "maximum": 1000,
            "description": "Duration per DTMF tone (ms).",
            "example": 250
          },
          "interval": {
            "type": "integer",
            "minimum": 0,
            "maximum": 5000,
            "description": "Interval between keys (ms).",
            "example": 100
          }
        }
      },
      "FlowManagerActionOptionEcho": {
        "type": "object",
        "properties": {
          "duration": {
            "type": "integer",
            "description": "Duration of the echo in milliseconds.",
            "example": 30000
          }
        }
      },
      "FlowManagerActionOptionEmailSend": {
        "type": "object",
        "properties": {
          "destinations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CommonAddress"
            },
            "minItems": 1,
            "description": "List of email destination addresses. Must contain at least one."
          },
          "subject": {
            "type": "string",
            "description": "Subject line of the email.",
            "example": "Meeting Recording"
          },
          "content": {
            "type": "string",
            "description": "Body content of the email.",
            "example": "Your recording is attached."
          },
          "attachments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmailManagerEmailAttachment"
            },
            "description": "List of attachments to include."
          }
        }
      },
      "FlowManagerActionOptionExternalMediaStart": {
        "type": "object",
        "properties": {
          "external_host": {
            "type": "string",
            "description": "External media target host address.",
            "example": "media.example.com:10000"
          },
          "encapsulation": {
            "type": "string",
            "description": "Encapsulation. Default value is rtp.",
            "example": "rtp"
          },
          "transport": {
            "type": "string",
            "description": "Transport. Default value is udp.",
            "example": "udp"
          },
          "connection_type": {
            "type": "string",
            "description": "Connection type. Default value is client.",
            "example": "client"
          },
          "format": {
            "type": "string",
            "description": "Format. Default value is ulaw.",
            "example": "ulaw"
          },
          "direction": {
            "type": "string",
            "description": "Direction. Default value is both.",
            "example": "both"
          },
          "data": {
            "type": "string",
            "description": "Optional data to pass to the external media endpoint.",
            "example": ""
          },
          "transport_data": {
            "type": "string",
            "description": "Transport-specific data. For websocket, this is appended to the dialstring.",
            "example": ""
          }
        }
      },
      "FlowManagerActionOptionExternalMediaStop": {
        "type": "object",
        "description": "No options required."
      },
      "FlowManagerActionOptionFetch": {
        "type": "object",
        "properties": {
          "event_url": {
            "type": "string",
            "description": "URL to fetch flow actions from.",
            "example": "https://api.example.com/webhooks/flow-event"
          },
          "event_method": {
            "type": "string",
            "description": "HTTP method for the fetch request.",
            "example": "POST"
          }
        }
      },
      "FlowManagerActionOptionFetchFlow": {
        "type": "object",
        "properties": {
          "flow_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the flow to fetch and execute. Returned from the `POST /flows` or `GET /flows` response.",
            "example": "a1b2c3d4-e5f6-7890-1234-567890abcdef"
          }
        }
      },
      "FlowManagerActionOptionGoto": {
        "type": "object",
        "properties": {
          "target_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The action ID within the flow to jump to. References an action `id` within the same flow's `actions` array.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "loop_count": {
            "type": "integer",
            "description": "Loop count.",
            "example": 3
          }
        }
      },
      "FlowManagerActionOptionHangup": {
        "type": "object",
        "properties": {
          "reason": {
            "type": "string",
            "description": "Hangup reason code. See cmcall.HangupReason for details.",
            "example": "normal"
          },
          "reference_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "If set, hangs up the call with the same reason as the referenced call ID. This will overwrite the `reason` option. Returned from the `POST /calls` or `GET /calls` response.",
            "example": "f6a7b8c9-d0e1-2345-6789-0abcdef01234"
          }
        }
      },
      "FlowManagerActionOptionMessageSend": {
        "type": "object",
        "properties": {
          "source": {
            "type": "object",
            "$ref": "#/components/schemas/CommonAddress",
            "description": "Source address for the outbound message."
          },
          "destinations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CommonAddress"
            },
            "minItems": 1,
            "description": "List of destination addresses. Must contain at least one."
          },
          "text": {
            "type": "string",
            "description": "The text of the message to send.",
            "example": "Your verification code is 1234."
          }
        }
      },
      "FlowManagerActionOptionPlay": {
        "type": "object",
        "properties": {
          "stream_urls": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "minItems": 1,
            "description": "List of stream URLs for media playback.",
            "example": [
              "https://media.voipbin.net/audio/greeting.wav"
            ]
          }
        }
      },
      "FlowManagerActionOptionQueueJoin": {
        "type": "object",
        "properties": {
          "queue_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the queue to join. Returned from the `POST /queues` or `GET /queues` response.",
            "example": "1a2b3c4d-5e6f-7890-abcd-ef1234567890"
          }
        }
      },
      "FlowManagerActionOptionRecordingStart": {
        "type": "object",
        "properties": {
          "format": {
            "type": "string",
            "description": "Format to encode audio in. Supported values are wav, mp3, ogg.",
            "example": "wav"
          },
          "end_of_silence": {
            "type": "integer",
            "description": "Maximum duration of silence, in seconds. 0 for no limit.",
            "example": 5
          },
          "end_of_key": {
            "type": "string",
            "description": "DTMF input to terminate recording. Supported values are none, any, *,",
            "example": "#"
          },
          "duration": {
            "type": "integer",
            "description": "Maximum duration of the recording, in seconds. 0 for no limit.",
            "example": 300
          },
          "beep_start": {
            "type": "boolean",
            "description": "Play beep when recording begins.",
            "example": true
          },
          "on_end_flow_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the flow to execute when recording ends. Returned from the `POST /flows` or `GET /flows` response.",
            "example": "a1b2c3d4-e5f6-7890-1234-567890abcdef"
          }
        }
      },
      "FlowManagerActionOptionRecordingStop": {
        "type": "object",
        "description": "No options for this action."
      },
      "FlowManagerActionOptionSleep": {
        "type": "object",
        "properties": {
          "duration": {
            "type": "integer",
            "description": "Sleep duration in milliseconds.",
            "example": 5000
          }
        }
      },
      "FlowManagerActionOptionStreamEcho": {
        "type": "object",
        "properties": {
          "duration": {
            "type": "integer",
            "description": "Duration of the stream echo.",
            "example": 30000
          }
        }
      },
      "FlowManagerActionOptionTalk": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "description": "The text to read, either in SSML format or plain text.",
            "example": "Welcome to VoIPBin. How can I help you?"
          },
          "gender": {
            "type": "string",
            "description": "Gender of the voice. Supported values are male, female, neutral.",
            "example": "female"
          },
          "language": {
            "type": "string",
            "description": "IETF locale name (e.g., ko-KR, en-US).",
            "example": "en-US"
          },
          "digits_handle": {
            "description": "Defines the action when it receives digits.",
            "type": "string",
            "enum": [
              "",
              "next"
            ],
            "x-enum-varnames": [
              "FlowManagerActionOptionTalkDigitsHandleNone",
              "FlowManagerActionOptionTalkDigitsHandleNext"
            ],
            "example": ""
          },
          "async": {
            "type": "boolean",
            "description": "If true, the talk action will not block the flow execution.",
            "example": false
          }
        }
      },
      "FlowManagerActionOptionTranscribeStart": {
        "type": "object",
        "properties": {
          "language": {
            "type": "string",
            "description": "BCP47 format for the language (e.g., en-US).",
            "example": "en-US"
          },
          "on_end_flow_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the flow to execute when transcription ends. Returned from the `POST /flows` or `GET /flows` response.",
            "example": "a1b2c3d4-e5f6-7890-1234-567890abcdef"
          },
          "provider": {
            "$ref": "#/components/schemas/TranscribeManagerTranscribeProvider",
            "description": "STT provider to use. If omitted, VoIPBIN selects the best available provider automatically.",
            "example": "gcp"
          },
          "direction": {
            "$ref": "#/components/schemas/TranscribeManagerTranscribeDirection",
            "description": "Audio direction to transcribe. If omitted, defaults to both.",
            "example": "both"
          }
        }
      },
      "FlowManagerActionOptionTranscribeStop": {
        "type": "object",
        "description": "No options for this action."
      },
      "FlowManagerActionOptionTranscribeRecording": {
        "type": "object",
        "properties": {
          "language": {
            "type": "string",
            "description": "BCP47 format for the language (e.g., en-US).",
            "example": "en-US"
          },
          "on_end_flow_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the flow to execute when recording transcription ends. Returned from the `POST /flows` or `GET /flows` response.",
            "example": "a1b2c3d4-e5f6-7890-1234-567890abcdef"
          },
          "provider": {
            "$ref": "#/components/schemas/TranscribeManagerTranscribeProvider",
            "description": "STT provider to use. If omitted, VoIPBIN selects the best available provider automatically.",
            "example": "gcp"
          },
          "direction": {
            "$ref": "#/components/schemas/TranscribeManagerTranscribeDirection",
            "description": "Audio direction to transcribe. If omitted, defaults to both.",
            "example": "both"
          }
        }
      },
      "FlowManagerActionOptionVariableSet": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "description": "The key of the variable to set.",
            "example": "caller_name"
          },
          "value": {
            "type": "string",
            "description": "The value of the variable to set.",
            "example": "John Smith"
          }
        }
      },
      "FlowManagerActionOptionWebhookSend": {
        "type": "object",
        "properties": {
          "sync": {
            "type": "boolean",
            "description": "Indicates whether the webhook is synchronous.",
            "example": false
          },
          "uri": {
            "type": "string",
            "description": "The URI to which the webhook is sent.",
            "example": "https://api.example.com/webhooks"
          },
          "method": {
            "type": "string",
            "enum": [
              "POST",
              "GET",
              "PUT",
              "DELETE"
            ],
            "x-enum-varnames": [
              "FlowManagerActionOptionWebhookSendMethodPost",
              "FlowManagerActionOptionWebhookSendMethodGet",
              "FlowManagerActionOptionWebhookSendMethodPut",
              "FlowManagerActionOptionWebhookSendMethodDelete"
            ],
            "description": "The HTTP method to use for the webhook.",
            "example": "POST"
          },
          "data_type": {
            "type": "string",
            "description": "The content type of the data being sent. Example `application/json`.",
            "example": "application/json"
          },
          "data": {
            "type": "string",
            "description": "The data to send in the webhook.",
            "example": "{}"
          }
        }
      },
      "FlowManagerAction": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of this action within the flow.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "next_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The identifier of the next action to execute. References an action `id` within the same flow's `actions` array. Null if this is the last action.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "type": {
            "description": "The type of action to execute.",
            "$ref": "#/components/schemas/FlowManagerActionType",
            "example": "talk"
          },
          "option": {
            "type": "object",
            "additionalProperties": true,
            "description": "Additional options based on the `type` field.\n- For `FlowManagerActionTypeAISummary`: see `FlowManagerActionOptionAISummary`\n- For `FlowManagerActionTypeAITalk`: see `FlowManagerActionOptionAITalk`\n- For `FlowManagerActionTypeAMD`: see `FlowManagerActionOptionAMD`\n- For `FlowManagerActionTypeAnswer`: see FlowManagerActionOptionAnswer\n- For `FlowManagerActionTypeBeep`: see FlowManagerActionOptionBeep\n- For `FlowManagerActionTypeBranch`: see FlowManagerActionOptionBranch\n- For `FlowManagerActionTypeCall`: see FlowManagerActionOptionCall\n- For `FlowManagerActionTypeConfbridgeJoin`: see FlowManagerActionOptionConfbridgeJoin\n- For `FlowManagerActionTypeConferenceJoin`: see FlowManagerActionOptionConferenceJoin\n- For `FlowManagerActionTypeConnect`: see FlowManagerActionOptionConnect\n- For `FlowManagerActionTypeConversationSend`: see FlowManagerActionOptionConversationSend\n- For `FlowManagerActionTypeDigitsReceive`: see FlowManagerActionOptionDigitsReceive\n- For `FlowManagerActionTypeDigitsSend`: see FlowManagerActionOptionDigitsSend\n- For `FlowManagerActionTypeEcho`: see FlowManagerActionOptionEcho\n- For `FlowManagerActionTypeEmailSend`: see FlowManagerActionOptionEmailSend\n- For `FlowManagerActionTypeExternalMediaStart`: see FlowManagerActionOptionExternalMediaStart\n- For `FlowManagerActionTypeExternalMediaStop`: see FlowManagerActionOptionExternalMediaStop\n- For `FlowManagerActionTypeFetch`: see FlowManagerActionOptionFetch\n- For `FlowManagerActionTypeFetchFlow`: see FlowManagerActionOptionFetchFlow\n- For `FlowManagerActionTypeGoto`: see FlowManagerActionOptionGoto\n- For `FlowManagerActionTypeHangup`: see FlowManagerActionOptionHangup\n- For `FlowManagerActionTypeMessageSend`: see FlowManagerActionOptionMessageSend\n- For `FlowManagerActionTypePlay`: see FlowManagerActionOptionPlay\n- For `FlowManagerActionTypeQueueJoin`: see FlowManagerActionOptionQueueJoin\n- For `FlowManagerActionTypeRecordingStart`: see FlowManagerActionOptionRecordingStart\n- For `FlowManagerActionTypeRecordingStop`: see FlowManagerActionOptionRecordingStop\n- For `FlowManagerActionTypeSleep`: see FlowManagerActionOptionSleep\n- For `FlowManagerActionTypeStreamEcho`: see FlowManagerActionOptionStreamEcho\n- For `FlowManagerActionTypeTalk`: see FlowManagerActionOptionTalk\n- For `FlowManagerActionTypeTranscribeStart`: see FlowManagerActionOptionTranscribeStart\n- For `FlowManagerActionTypeTranscribeStop`: see FlowManagerActionOptionTranscribeStop\n- For `FlowManagerActionTypeTranscribeRecording`: see FlowManagerActionOptionTranscribeRecording\n- For `FlowManagerActionTypeVariableSet`: see FlowManagerActionOptionVariableSet\n- For `FlowManagerActionTypeWebhookSend`: see FlowManagerActionOptionWebhookSend\n- ...\n"
          },
          "tm_execute": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when this action was executed.",
            "example": "2026-01-15T09:30:00.000000Z"
          }
        },
        "required": [
          "id",
          "type"
        ]
      },
      "FlowManagerActiveflowStatus": {
        "type": "string",
        "description": "Status of the activeflow.",
        "example": "running",
        "enum": [
          "",
          "running",
          "ended"
        ],
        "x-enum-varnames": [
          "FlowManagerActiveflowStatusNone",
          "FlowManagerActiveflowStatusRunning",
          "FlowManagerActiveflowStatusEnded"
        ]
      },
      "FlowManagerReferenceType": {
        "type": "string",
        "description": "Reference type of activeflow.",
        "example": "call",
        "enum": [
          "",
          "ai",
          "api",
          "call",
          "campaign",
          "conversation",
          "transcribe",
          "recording"
        ],
        "x-enum-varnames": [
          "FlowManagerReferenceTypeNone",
          "FlowManagerReferenceTypeAI",
          "FlowManagerReferenceTypeAPI",
          "FlowManagerReferenceTypeCall",
          "FlowManagerReferenceTypeCampaign",
          "FlowManagerReferenceTypeConversation",
          "FlowManagerReferenceTypeTranscribe",
          "FlowManagerReferenceTypeRecording"
        ]
      },
      "FlowManagerActiveflow": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "Unique identifier for the activeflow.",
            "example": "d4e5f6a7-b8c9-0123-4567-890abcdef012"
          },
          "customer_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the customer associated with this activeflow. Returned from the `GET /customers` response.",
            "example": "7c4d2f3a-1b8e-4f5c-9a6d-3e2f1a0b4c5d"
          },
          "flow_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the flow definition. Returned from the `POST /flows` or `GET /flows` response.",
            "example": "a1b2c3d4-e5f6-7890-1234-567890abcdef"
          },
          "status": {
            "$ref": "#/components/schemas/FlowManagerActiveflowStatus",
            "description": "Current status of the activeflow.",
            "example": "running"
          },
          "reference_type": {
            "$ref": "#/components/schemas/FlowManagerReferenceType",
            "description": "The type of resource this activeflow is associated with.",
            "example": "call"
          },
          "reference_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the referenced resource. The actual resource type is determined by `reference_type`. Returned from the corresponding resource endpoint.",
            "example": "f6a7b8c9-d0e1-2345-6789-0abcdef01234"
          },
          "reference_activeflow_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the referenced activeflow. Returned from the `GET /activeflows` response.",
            "example": "d4e5f6a7-b8c9-0123-4567-890abcdef012"
          },
          "on_complete_flow_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the flow to execute on completion. Returned from the `POST /flows` or `GET /flows` response.",
            "example": "a1b2c3d4-e5f6-7890-1234-567890abcdef"
          },
          "current_action": {
            "$ref": "#/components/schemas/FlowManagerAction",
            "description": "The action currently being executed."
          },
          "forward_action_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the next action to execute. References an action `id` within the current flow's `actions` array.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "executed_actions": {
            "type": "array",
            "description": "List of actions that have been executed.",
            "items": {
              "$ref": "#/components/schemas/FlowManagerAction"
            }
          },
          "tm_create": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the flow was created.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_update": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the flow was last updated.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_delete": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the flow was deleted.",
            "example": "2026-01-15T09:30:00.000000Z"
          }
        }
      },
      "FlowManagerFlowType": {
        "type": "string",
        "description": "Type of the flow.",
        "example": "flow",
        "enum": [
          "flow",
          "conference",
          "queue",
          "campaign",
          "transfer"
        ],
        "x-enum-varnames": [
          "FlowManagerFlowTypeFlow",
          "FlowManagerFlowTypeConference",
          "FlowManagerFlowTypeQueue",
          "FlowManagerFlowTypeCampaign",
          "FlowManagerFlowTypeTransfer"
        ]
      },
      "FlowManagerFlow": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "Unique identifier for the flow.",
            "example": "a1b2c3d4-e5f6-7890-1234-567890abcdef"
          },
          "customer_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the customer who owns this flow. Returned from the `GET /customers` response.",
            "example": "7c4d2f3a-1b8e-4f5c-9a6d-3e2f1a0b4c5d"
          },
          "type": {
            "description": "The type of the flow.",
            "$ref": "#/components/schemas/FlowManagerFlowType",
            "example": "flow"
          },
          "name": {
            "type": "string",
            "description": "Name of the flow.",
            "example": "Inbound Call Handler"
          },
          "detail": {
            "type": "string",
            "description": "Detailed description of the flow.",
            "example": "Main flow for handling inbound customer calls"
          },
          "actions": {
            "type": "array",
            "description": "Ordered list of actions to execute in this flow.",
            "items": {
              "$ref": "#/components/schemas/FlowManagerAction"
            }
          },
          "direct_hash": {
            "type": "string",
            "description": "Hash for direct access via SIP URI sip:direct.<hash>@sip.voipbin.net. Returned from the resource's `direct_hash` field.",
            "example": "a8f3b2c1d4e5"
          },
          "on_complete_flow_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the flow to execute on completion. Returned from the `POST /flows` or `GET /flows` response.",
            "example": "a1b2c3d4-e5f6-7890-1234-567890abcdef"
          },
          "tm_create": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the flow was created.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_update": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the flow was last updated.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_delete": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the flow was deleted.",
            "example": "2026-01-15T09:30:00.000000Z"
          }
        }
      },
      "MessageManagerMessageDirection": {
        "type": "string",
        "description": "Direction of the message.",
        "example": "outbound",
        "enum": [
          "outbound",
          "inbound"
        ],
        "x-enum-varnames": [
          "MessageManagerMessageDirectionOutbound",
          "MessageManagerMessageDirectionInbound"
        ]
      },
      "MessageManagerMessageProviderName": {
        "type": "string",
        "description": "Name of the message provider.",
        "example": "telnyx",
        "enum": [
          "telnyx",
          "twilio",
          "messagebird"
        ],
        "x-enum-varnames": [
          "MessageManagerMessageProviderNameTelnyx",
          "MessageManagerMessageProviderNameTwilio",
          "MessageManagerMessageProviderNameMessagebird"
        ]
      },
      "MessageManagerMessageType": {
        "type": "string",
        "description": "Type of the message.",
        "example": "sms",
        "enum": [
          "sms"
        ],
        "x-enum-varnames": [
          "MessageManagerMessageTypeSMS"
        ]
      },
      "MessageManagerMessage": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "Unique identifier for the message.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "customer_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "Unique identifier for the customer. Returned from the `GET /customers` response.",
            "example": "7c4d2f3a-1b8e-4f5c-9a6d-3e2f1a0b4c5d"
          },
          "type": {
            "$ref": "#/components/schemas/MessageManagerMessageType",
            "description": "The type of the message.",
            "example": "sms"
          },
          "source": {
            "$ref": "#/components/schemas/CommonAddress",
            "description": "The source address of the message."
          },
          "targets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MessageManagerTarget"
            },
            "description": "List of target addresses to which the message is sent."
          },
          "text": {
            "type": "string",
            "description": "The text delivered in the body of the message.",
            "example": "Your appointment is confirmed for tomorrow at 2 PM."
          },
          "direction": {
            "$ref": "#/components/schemas/MessageManagerMessageDirection",
            "description": "The direction of the message (outbound/inbound).",
            "example": "outbound"
          },
          "tm_create": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the message was created.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_update": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the message was last updated.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_delete": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the message was deleted.",
            "example": "2026-01-15T09:30:00.000000Z"
          }
        }
      },
      "MessageManagerTargetStatus": {
        "type": "string",
        "description": "The status of the message for the target.",
        "example": "delivered",
        "enum": [
          "received",
          "queued",
          "gw_timeout",
          "sent",
          "dlr_timeout",
          "failed",
          "delivered"
        ],
        "x-enum-varnames": [
          "MessageManagerTargetStatusReceived",
          "MessageManagerTargetStatusQueued",
          "MessageManagerTargetStatusGWTimeout",
          "MessageManagerTargetStatusSent",
          "MessageManagerTargetStatusDLRTimeout",
          "MessageManagerTargetStatusFailed",
          "MessageManagerTargetStatusDelivered"
        ]
      },
      "MessageManagerTarget": {
        "type": "object",
        "properties": {
          "destination": {
            "description": "The destination address for the message.",
            "$ref": "#/components/schemas/CommonAddress"
          },
          "status": {
            "description": "The current status of the message for the target.",
            "$ref": "#/components/schemas/MessageManagerTargetStatus",
            "example": "delivered"
          },
          "parts": {
            "type": "integer",
            "description": "The number of message parts (if the message is split).",
            "example": 1
          },
          "tm_update": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the target message was last updated.",
            "example": "2026-01-15T09:30:00.000000Z"
          }
        }
      },
      "NumberManagerAvailableNumber": {
        "type": "string",
        "description": "A feature supported by the phone number.",
        "example": "voice",
        "enum": [
          "emergency",
          "fax",
          "mms",
          "sms",
          "voice"
        ],
        "x-enum-varnames": [
          "NumberManagerAvailableNumberFeatureEmergency",
          "NumberManagerAvailableNumberFeatureFax",
          "NumberManagerAvailableNumberFeatureMMS",
          "NumberManagerAvailableNumberFeatureSMS",
          "NumberManagerAvailableNumberFeatureVoice"
        ]
      },
      "NumberManagerAvailableNumberFeature": {
        "type": "object",
        "properties": {
          "number": {
            "type": "string",
            "description": "The available phone number in E.164 format.",
            "example": "+14155551234"
          },
          "country": {
            "type": "string",
            "description": "The country where the number is available.",
            "example": "US"
          },
          "region": {
            "type": "string",
            "description": "The region within the country.",
            "example": "California"
          },
          "postal_code": {
            "type": "string",
            "description": "The postal code associated with the number.",
            "example": "94105"
          },
          "features": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NumberManagerAvailableNumberFeature"
            },
            "description": "The list of features supported by the number."
          }
        }
      },
      "NumberManagerNumberType": {
        "type": "string",
        "description": "The type of the number.",
        "example": "normal",
        "enum": [
          "normal",
          "virtual"
        ],
        "x-enum-varnames": [
          "NumberManagerNumberTypeNormal",
          "NumberManagerNumberTypeVirtual"
        ]
      },
      "NumberManagerNumberProviderName": {
        "type": "string",
        "description": "The provider name for the number.",
        "example": "telnyx",
        "enum": [
          "telnyx",
          "twilio",
          "messagebird"
        ],
        "x-enum-varnames": [
          "NumberManagerProviderNameTelnyx",
          "NumberManagerProviderNameTwilio",
          "NumberManagerProviderNameMessagebird"
        ]
      },
      "NumberManagerNumberStatus": {
        "type": "string",
        "description": "The status of the number.",
        "example": "active",
        "enum": [
          "active",
          "deleted"
        ],
        "x-enum-varnames": [
          "NumberManagerStatusActive",
          "NumberManagerStatusDeleted"
        ]
      },
      "NumberManagerNumber": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier for the number.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "customer_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The customer ID associated with the number. Returned from the `GET /customers` response.",
            "example": "7c4d2f3a-1b8e-4f5c-9a6d-3e2f1a0b4c5d"
          },
          "number": {
            "type": "string",
            "description": "The phone number in E.164 format (normal) or +899 format (virtual).",
            "example": "+14155551234"
          },
          "type": {
            "$ref": "#/components/schemas/NumberManagerNumberType",
            "description": "The type of the number (normal or virtual).",
            "example": "normal"
          },
          "call_flow_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the flow to execute for incoming calls. Returned from the `POST /flows` or `GET /flows` response.",
            "example": "a1b2c3d4-e5f6-7890-1234-567890abcdef"
          },
          "message_flow_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the flow to execute for incoming messages. Returned from the `POST /flows` or `GET /flows` response.",
            "example": "a1b2c3d4-e5f6-7890-1234-567890abcdef"
          },
          "name": {
            "type": "string",
            "description": "The name of the number.",
            "example": "Main Support Line"
          },
          "detail": {
            "type": "string",
            "description": "Additional details about the number.",
            "example": "Primary inbound number for customer support"
          },
          "status": {
            "$ref": "#/components/schemas/NumberManagerNumberStatus",
            "description": "The status of the number.",
            "example": "active"
          },
          "t38_enabled": {
            "type": "boolean",
            "description": "Whether T38 is enabled for the number.",
            "example": false
          },
          "emergency_enabled": {
            "type": "boolean",
            "description": "Whether emergency services are enabled for the number.",
            "example": false
          },
          "metadata": {
            "$ref": "#/components/schemas/NumberManagerMetadata"
          },
          "tm_purchase": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "The timestamp of when the number was purchased.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_renew": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "The timestamp of when the number was renewed.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_create": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "The timestamp of when the number was created.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_update": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "The timestamp of when the number was last updated.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_delete": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "The timestamp of when the number was deleted.",
            "example": "2026-01-15T09:30:00.000000Z"
          }
        }
      },
      "NumberManagerMetadata": {
        "type": "object",
        "description": "Configuration flags for a number. Controls platform behavior\nsuch as RTP packet capture for debugging audio issues on this specific number.\nUpdatable by CustomerAdmin or CustomerManager via `PUT /numbers/{id}/metadata`.\n",
        "properties": {
          "rtp_debug": {
            "type": "boolean",
            "description": "When set to `true`, RTPEngine captures RTP traffic as PCAP files for calls to this number.\nThis flag is OR'd with the customer-level `rtp_debug` — if either is `true`, capture is enabled.\nUse this to debug audio quality issues on a specific number without enabling capture for all customer calls.\nDefault is `false`. Enabling this increases storage usage — disable after debugging.\n",
            "example": false
          }
        }
      },
      "OutdialManagerOutdial": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier for the outdial.",
            "example": "3c4d5e6f-7a8b-9012-cdef-012345678901"
          },
          "customer_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier for the customer associated with the outdial. Returned from the `GET /customers` response.",
            "example": "7c4d2f3a-1b8e-4f5c-9a6d-3e2f1a0b4c5d"
          },
          "campaign_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the campaign. Returned from the `POST /campaigns` or `GET /campaigns` response.",
            "example": "c3d4e5f6-a7b8-9012-3456-7890abcdef01"
          },
          "name": {
            "type": "string",
            "description": "The name of the outdial.",
            "example": "Q1 Target List"
          },
          "detail": {
            "type": "string",
            "description": "The detailed description of the outdial.",
            "example": "Outbound dial list for Q1 campaign"
          },
          "data": {
            "type": "string",
            "description": "The data associated with the outdial.",
            "example": "custom-data"
          },
          "tm_create": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the outdial was created.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_update": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the outdial was last updated.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_delete": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the outdial was deleted.",
            "example": "2026-01-15T09:30:00.000000Z"
          }
        }
      },
      "OutdialManagerOutdialtargetStatus": {
        "type": "string",
        "description": "The status of the outdial.",
        "example": "idle",
        "enum": [
          "progressing",
          "done",
          "idle"
        ],
        "x-enum-varnames": [
          "OutdialManagerOutdialtargetStatusProgressing",
          "OutdialManagerOutdialtargetStatusDone",
          "OutdialManagerOutdialtargetStatusIdle"
        ]
      },
      "OutdialManagerOutdialtarget": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier for the outdial target.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "outdial_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the outdial. Returned from the `POST /outdials` or `GET /outdials` response.",
            "example": "3c4d5e6f-7a8b-9012-cdef-012345678901"
          },
          "name": {
            "type": "string",
            "description": "The name of the outdial target.",
            "example": "John Smith"
          },
          "detail": {
            "type": "string",
            "description": "Additional details about the outdial target.",
            "example": "Priority customer"
          },
          "data": {
            "type": "string",
            "description": "The data associated with the outdial target.",
            "example": "vip-tag"
          },
          "status": {
            "$ref": "#/components/schemas/OutdialManagerOutdialtargetStatus",
            "description": "The status of the outdial target.",
            "example": "idle"
          },
          "destination_0": {
            "$ref": "#/components/schemas/CommonAddress",
            "description": "The destination address 0."
          },
          "destination_1": {
            "$ref": "#/components/schemas/CommonAddress",
            "description": "The destination address 1."
          },
          "destination_2": {
            "$ref": "#/components/schemas/CommonAddress",
            "description": "The destination address 2."
          },
          "destination_3": {
            "$ref": "#/components/schemas/CommonAddress",
            "description": "The destination address 3."
          },
          "destination_4": {
            "$ref": "#/components/schemas/CommonAddress",
            "description": "The destination address 4."
          },
          "try_count_0": {
            "type": "integer",
            "description": "The try count for destination 0.",
            "example": 0
          },
          "try_count_1": {
            "type": "integer",
            "description": "The try count for destination 1.",
            "example": 0
          },
          "try_count_2": {
            "type": "integer",
            "description": "The try count for destination 2.",
            "example": 0
          },
          "try_count_3": {
            "type": "integer",
            "description": "The try count for destination 3.",
            "example": 0
          },
          "try_count_4": {
            "type": "integer",
            "description": "The try count for destination 4.",
            "example": 0
          },
          "tm_create": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "The creation timestamp.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_update": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "The update timestamp.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_delete": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "The deletion timestamp.",
            "example": "2026-01-15T09:30:00.000000Z"
          }
        }
      },
      "QueueManagerQueueRoutingMethod": {
        "type": "string",
        "enum": [
          "",
          "random"
        ],
        "x-enum-varnames": [
          "QueueManagerQueueRoutingMethodNone",
          "QueueManagerQueueRoutingMethodRandom"
        ],
        "example": "random"
      },
      "QueueManagerQueue": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the queue. Returned from the `POST /queues` or `GET /queues` response.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "customer_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the customer who owns this queue. Returned from the `GET /customers` response.",
            "example": "7c4d2f3a-1b8e-4f5c-9a6d-3e2f1a0b4c5d"
          },
          "name": {
            "type": "string",
            "description": "Display name of the queue.",
            "example": "Sales Queue"
          },
          "detail": {
            "type": "string",
            "description": "Detailed description of the queue.",
            "example": "Handles incoming sales inquiries"
          },
          "routing_method": {
            "$ref": "#/components/schemas/QueueManagerQueueRoutingMethod",
            "description": "The method used to route calls to agents.",
            "example": "random"
          },
          "tag_ids": {
            "type": "array",
            "description": "List of tag IDs assigned to this queue. Returned from the `POST /tags` or `GET /tags` response.",
            "items": {
              "type": "string",
              "format": "uuid",
              "x-go-type": "string"
            },
            "example": [
              "b1a2c3d4-e5f6-7890-abcd-ef1234567890"
            ]
          },
          "direct_hash": {
            "type": "string",
            "description": "Hash for direct access via SIP URI sip:direct.<hash>@sip.voipbin.net. Returned from the resource's `direct_hash` field.",
            "example": "a8f3b2c1d4e5"
          },
          "wait_flow_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The flow ID executed while callers wait in queue. Returned from the `POST /flows` or `GET /flows` response.",
            "example": "d4e5f6a7-b8c9-0d1e-2f3a-4b5c6d7e8f90"
          },
          "wait_timeout": {
            "type": "integer",
            "description": "Wait queue timeout in milliseconds.",
            "example": 300000
          },
          "service_timeout": {
            "type": "integer",
            "description": "Service queue timeout in milliseconds.",
            "example": 600000
          },
          "wait_queuecall_ids": {
            "type": "array",
            "description": "List of queuecall IDs currently waiting. Returned from the `GET /queuecalls` response.",
            "items": {
              "type": "string",
              "format": "uuid",
              "x-go-type": "string"
            },
            "example": [
              "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
            ]
          },
          "service_queuecall_ids": {
            "type": "array",
            "description": "List of queuecall IDs currently being serviced. Each ID is returned from the `GET /queuecalls` response.",
            "items": {
              "type": "string",
              "format": "uuid",
              "x-go-type": "string"
            },
            "example": [
              "c3d4e5f6-a7b8-9c0d-1e2f-3a4b5c6d7e8f"
            ]
          },
          "total_incoming_count": {
            "type": "integer",
            "description": "Total incoming call count.",
            "example": 150
          },
          "total_serviced_count": {
            "type": "integer",
            "description": "Total serviced call count.",
            "example": 120
          },
          "total_abandoned_count": {
            "type": "integer",
            "description": "Total abandoned call count.",
            "example": 10
          },
          "tm_create": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "The creation timestamp.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_update": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "The last update timestamp.",
            "example": "2026-01-16T14:20:00.000000Z"
          },
          "tm_delete": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "The deletion timestamp.",
            "example": "2026-01-17T18:45:00.000000Z"
          }
        }
      },
      "QueueManagerQueuecallReferenceType": {
        "type": "string",
        "enum": [
          "call"
        ],
        "x-enum-varnames": [
          "QueueManagerQueuecallReferenceTypeCall"
        ],
        "example": "call"
      },
      "QueueManagerQueuecallStatus": {
        "type": "string",
        "enum": [
          "initiating",
          "waiting",
          "connecting",
          "kicking",
          "service",
          "done",
          "abandoned"
        ],
        "x-enum-varnames": [
          "QueueManagerQueuecallStatusInitiating",
          "QueueManagerQueuecallStatusWaiting",
          "QueueManagerQueuecallStatusConnecting",
          "QueueManagerQueuecallStatusKicking",
          "QueueManagerQueuecallStatusService",
          "QueueManagerQueuecallStatusDone",
          "QueueManagerQueuecallStatusAbandoned"
        ],
        "example": "waiting"
      },
      "QueueManagerQueuecall": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the queuecall. Returned from the `GET /queuecalls` response.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "customer_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the customer who owns this queuecall. Returned from the `GET /customers` response.",
            "example": "7c4d2f3a-1b8e-4f5c-9a6d-3e2f1a0b4c5d"
          },
          "reference_type": {
            "$ref": "#/components/schemas/QueueManagerQueuecallReferenceType",
            "description": "The type of resource this queuecall references.",
            "example": "call"
          },
          "reference_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the referenced resource (e.g., a call). Returned from the corresponding resource endpoint.",
            "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
          },
          "status": {
            "$ref": "#/components/schemas/QueueManagerQueuecallStatus",
            "description": "Current status of the queuecall.",
            "example": "waiting"
          },
          "service_agent_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the agent handling this queuecall. Returned from the `GET /agents` response.",
            "example": "c3d4e5f6-a7b8-9c0d-1e2f-3a4b5c6d7e8f"
          },
          "duration_waiting": {
            "type": "integer",
            "description": "Duration for waiting in milliseconds",
            "example": 45000
          },
          "duration_service": {
            "type": "integer",
            "description": "Duration for service in milliseconds",
            "example": 180000
          },
          "tm_create": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "The creation timestamp.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_service": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the queue call started service.",
            "example": "2026-01-15T09:35:00.000000Z"
          },
          "tm_update": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "The last update timestamp.",
            "example": "2026-01-16T14:20:00.000000Z"
          },
          "tm_delete": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "The deletion timestamp.",
            "example": "2026-01-17T18:45:00.000000Z"
          }
        }
      },
      "RagManagerRag": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "The unique identifier of the rag. Returned from the `POST /rags` response.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "customer_id": {
            "type": "string",
            "format": "uuid",
            "description": "The customer ID that owns this rag.",
            "example": "7d4e8f2a-1b3c-4d5e-9f6a-8b7c6d5e4f3a"
          },
          "name": {
            "type": "string",
            "description": "Human-readable name for the rag.",
            "example": "Customer Support KB"
          },
          "description": {
            "type": "string",
            "description": "Description of what this rag contains.",
            "example": "Knowledge base for customer support conversations"
          },
          "tm_create": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp when the rag was created.",
            "example": "2026-03-18T10:30:00Z"
          },
          "tm_update": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp when the rag was last updated.",
            "example": "2026-03-18T10:30:00Z"
          },
          "status": {
            "$ref": "#/components/schemas/RagManagerRagDocumentStatus"
          },
          "sources": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RagManagerRagSource"
            },
            "description": "List of document sources in this rag with their ingestion status."
          }
        }
      },
      "RagManagerRagDocumentStatus": {
        "type": "string",
        "description": "The document processing status. Indicates the current stage of document ingestion.",
        "enum": [
          "pending",
          "processing",
          "ready",
          "error"
        ],
        "x-enum-varnames": [
          "RagManagerRagDocumentStatusPending",
          "RagManagerRagDocumentStatusProcessing",
          "RagManagerRagDocumentStatusReady",
          "RagManagerRagDocumentStatusError"
        ],
        "x-enum-descriptions": [
          "Document has been created but not yet processed.",
          "Document is being parsed, chunked, and embedded.",
          "Document processing is complete. Chunks are available for queries.",
          "Document processing failed. See `status_message` for details."
        ],
        "example": "ready"
      },
      "RagManagerRagSource": {
        "type": "object",
        "description": "A source document in a RAG knowledge base.",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "The unique identifier of the source (document). Use this ID with `DELETE /rags/{rag-id}/sources/{source-id}` to remove the source.",
            "example": "c3d4e5f6-a7b8-9012-cdef-123456789012"
          },
          "customer_id": {
            "type": "string",
            "format": "uuid",
            "description": "The customer ID that owns this source. Returned from the `GET /customer` response.",
            "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
          },
          "storage_file_id": {
            "type": "string",
            "format": "uuid",
            "description": "The storage file ID if the source is an uploaded file. Returned from the `POST /storage_files` response.",
            "example": "b2c3d4e5-f6a7-8901-bcde-f12345678901"
          },
          "source_url": {
            "type": "string",
            "format": "uri",
            "description": "The URL if the source is a web document.",
            "example": "https://example.com/docs/faq.html"
          },
          "status": {
            "$ref": "#/components/schemas/RagManagerRagDocumentStatus"
          },
          "status_message": {
            "type": "string",
            "description": "Additional details about the current ingestion status.",
            "example": "Document parsed and 42 chunks created"
          }
        }
      },
      "RegistrarManagerAuthType": {
        "type": "string",
        "description": "Defines the authentication type. Can be 'basic' or 'ip'.",
        "enum": [
          "basic",
          "ip"
        ],
        "x-enum-varnames": [
          "RegistrarManagerAuthTypeBasic",
          "RegistrarManagerAuthTypeIP"
        ],
        "example": "basic"
      },
      "RegistrarManagerExtension": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the extension. Returned from the `POST /extensions` or `GET /extensions` response.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "customer_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the customer who owns this extension. Returned from the `GET /customers` response.",
            "example": "7c4d2f3a-1b8e-4f5c-9a6d-3e2f1a0b4c5d"
          },
          "name": {
            "type": "string",
            "description": "Display name of the extension.",
            "example": "Reception Desk"
          },
          "detail": {
            "type": "string",
            "description": "Detailed description of the extension.",
            "example": "Main reception extension for building A"
          },
          "extension": {
            "type": "string",
            "description": "The SIP extension number.",
            "example": "1001"
          },
          "domain_name": {
            "type": "string",
            "description": "Domain name, same as the customer_id, used by Kamailio's INVITE validation",
            "example": "7c4d2f3a-1b8e-4f5c-9a6d-3e2f1a0b4c5d"
          },
          "username": {
            "type": "string",
            "description": "Username, same as the Extension, used by Kamailio's INVITE validation",
            "example": "1001"
          },
          "password": {
            "type": "string",
            "description": "The SIP password for authentication.",
            "example": "s3cur3P@ss"
          },
          "direct_hash": {
            "type": "string",
            "description": "Hash for direct access via SIP URI sip:direct.<hash>@sip.voipbin.net. Returned from the resource's `direct_hash` field.",
            "example": "a8f3b2c1d4e5"
          },
          "tm_create": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "The creation timestamp.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_update": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "The last update timestamp.",
            "example": "2026-01-16T14:20:00.000000Z"
          },
          "tm_delete": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "The deletion timestamp.",
            "example": "2026-01-17T18:45:00.000000Z"
          }
        }
      },
      "RegistrarManagerTrunk": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the trunk. Returned from the `POST /trunks` or `GET /trunks` response.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "customer_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the customer who owns this trunk. Returned from the `GET /customers` response.",
            "example": "7c4d2f3a-1b8e-4f5c-9a6d-3e2f1a0b4c5d"
          },
          "name": {
            "type": "string",
            "description": "Display name of the trunk.",
            "example": "Primary SIP Trunk"
          },
          "detail": {
            "type": "string",
            "description": "Detailed description of the trunk.",
            "example": "Main SIP trunk for outbound calls"
          },
          "domain_name": {
            "type": "string",
            "description": "The SIP domain for this trunk.",
            "example": "sip.example.com"
          },
          "auth_types": {
            "type": "array",
            "description": "List of authentication methods for this trunk.",
            "items": {
              "$ref": "#/components/schemas/RegistrarManagerAuthType"
            },
            "example": [
              "basic"
            ]
          },
          "username": {
            "type": "string",
            "description": "The SIP username for authentication.",
            "example": "trunk_user"
          },
          "password": {
            "type": "string",
            "description": "The SIP password for authentication.",
            "example": "s3cur3P@ss"
          },
          "allowed_ips": {
            "type": "array",
            "description": "List of IP addresses allowed for IP-based authentication.",
            "items": {
              "type": "string"
            },
            "example": [
              "203.0.113.10",
              "203.0.113.11"
            ]
          },
          "tm_create": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "The creation timestamp.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_update": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "The last update timestamp.",
            "example": "2026-01-16T14:20:00.000000Z"
          },
          "tm_delete": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "The deletion timestamp.",
            "example": "2026-01-17T18:45:00.000000Z"
          }
        }
      },
      "RouteManagerProviderType": {
        "type": "string",
        "description": "Defines the type of the provider. Currently, only 'sip' is supported for VoIP/SIP providers.",
        "enum": [
          "sip"
        ],
        "x-enum-varnames": [
          "RouteManagerProviderTypeSIP"
        ],
        "example": "sip"
      },
      "RouteManagerProvider": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the provider. Returned from the `POST /providers` or `GET /providers` response.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "type": {
            "$ref": "#/components/schemas/RouteManagerProviderType",
            "description": "The type of the provider.",
            "example": "sip"
          },
          "hostname": {
            "type": "string",
            "description": "The destination hostname for the provider.",
            "example": "sip.provider.example.com"
          },
          "tech_prefix": {
            "type": "string",
            "description": "The tech prefix, valid only for SIP type providers.",
            "example": "9"
          },
          "tech_postfix": {
            "type": "string",
            "description": "The tech postfix, valid only for SIP type providers.",
            "example": "#"
          },
          "tech_headers": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "The tech headers, valid only for SIP type providers.",
            "example": {
              "X-Custom-Header": "value1"
            }
          },
          "name": {
            "type": "string",
            "description": "The name of the provider.",
            "example": "Twilio SIP Provider"
          },
          "detail": {
            "type": "string",
            "description": "The details about the provider.",
            "example": "Primary outbound SIP provider"
          },
          "tm_create": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "The creation timestamp.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_update": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "The last update timestamp.",
            "example": "2026-01-16T14:20:00.000000Z"
          },
          "tm_delete": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "The deletion timestamp.",
            "example": "2026-01-17T18:45:00.000000Z"
          }
        }
      },
      "RouteManagerRoute": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the route. Returned from the `POST /routes` or `GET /routes` response.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "customer_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the customer who owns this route. Returned from the `GET /customers` response.",
            "example": "7c4d2f3a-1b8e-4f5c-9a6d-3e2f1a0b4c5d"
          },
          "name": {
            "type": "string",
            "description": "The name of the route.",
            "example": "US Outbound Route"
          },
          "detail": {
            "type": "string",
            "description": "The details about the route.",
            "example": "Routes calls to US numbers via primary provider"
          },
          "provider_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the provider used for this route. Returned from the `GET /providers` response.",
            "example": "e5f6a7b8-c9d0-1e2f-3a4b-5c6d7e8f9a0b"
          },
          "priority": {
            "type": "integer",
            "description": "The priority of the route, used for routing decisions.",
            "example": 1
          },
          "target": {
            "type": "string",
            "description": "The target destination for the route (e.g., country code or 'all').",
            "example": "1"
          },
          "tm_create": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "The creation timestamp.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_update": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "The last update timestamp.",
            "example": "2026-01-16T14:20:00.000000Z"
          },
          "tm_delete": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "The deletion timestamp.",
            "example": "2026-01-17T18:45:00.000000Z"
          }
        }
      },
      "StorageManagerAccount": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the storage account. Returned from the `GET /storage_accounts` response.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "customer_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the customer who owns this storage account. Returned from the `GET /customers` response.",
            "example": "7c4d2f3a-1b8e-4f5c-9a6d-3e2f1a0b4c5d"
          },
          "total_file_count": {
            "type": "integer",
            "format": "int64",
            "description": "The total number of files in the account.",
            "example": 42
          },
          "total_file_size": {
            "type": "integer",
            "format": "int64",
            "description": "The total file size in bytes.",
            "example": 1073741824
          },
          "tm_create": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "The creation timestamp.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_update": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "The last update timestamp.",
            "example": "2026-01-16T14:20:00.000000Z"
          },
          "tm_delete": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "The deletion timestamp.",
            "example": "2026-01-17T18:45:00.000000Z"
          }
        }
      },
      "StorageManagerFileReferenceType": {
        "type": "string",
        "description": "The reference type of the file.",
        "enum": [
          "",
          "normal",
          "recording"
        ],
        "x-enum-varnames": [
          "StorageManagerFileReferenceTypeNone",
          "StorageManagerFileReferenceTypeNormal",
          "StorageManagerFileReferenceTypeRecording"
        ],
        "example": "recording"
      },
      "StorageManagerFileType": {
        "type": "string",
        "description": "The type/category of the file. Indicates the purpose of the uploaded file.",
        "enum": [
          "",
          "rag",
          "talk",
          "recording"
        ],
        "x-enum-varnames": [
          "StorageManagerFileTypeNone",
          "StorageManagerFileTypeRAG",
          "StorageManagerFileTypeTalk",
          "StorageManagerFileTypeRecording"
        ],
        "example": "rag"
      },
      "StorageManagerFile": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the file. Returned from the `POST /storage_files` or `GET /storage_files` response.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "customer_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the customer who owns this file. Returned from the `GET /customers` response.",
            "example": "7c4d2f3a-1b8e-4f5c-9a6d-3e2f1a0b4c5d"
          },
          "owner_type": {
            "type": "string",
            "description": "Type of the resource owner (e.g., agent).",
            "example": "agent"
          },
          "owner_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the resource that owns this file (e.g., an agent or a call). Returned from the corresponding owner resource endpoint.",
            "example": "d4e5f6a7-b8c9-0d1e-2f3a-4b5c6d7e8f90"
          },
          "reference_type": {
            "$ref": "#/components/schemas/StorageManagerFileReferenceType",
            "description": "The type of resource this file is associated with.",
            "example": "recording"
          },
          "reference_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the referenced resource. Returned from the corresponding resource endpoint.",
            "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
          },
          "type": {
            "$ref": "#/components/schemas/StorageManagerFileType",
            "description": "The type/category of the file.",
            "example": "rag"
          },
          "name": {
            "type": "string",
            "description": "The name of the file.",
            "example": "meeting-recording.wav"
          },
          "detail": {
            "type": "string",
            "description": "The details of the file.",
            "example": "Recording of the sales meeting"
          },
          "filename": {
            "type": "string",
            "description": "The filename of the file.",
            "example": "550e8400-e29b-41d4-a716-446655440000.wav"
          },
          "filesize": {
            "type": "integer",
            "format": "int64",
            "description": "The size of the file in bytes.",
            "example": 5242880
          },
          "uri_download": {
            "type": "string",
            "description": "The URI for downloading the file.",
            "example": "https://storage.voipbin.net/files/550e8400-e29b-41d4-a716-446655440000.wav"
          },
          "tm_download_expire": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the download link expires.",
            "example": "2026-02-15T09:30:00.000000Z"
          },
          "tm_create": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "The creation timestamp.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_update": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "The last update timestamp.",
            "example": "2026-01-16T14:20:00.000000Z"
          },
          "tm_delete": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "The deletion timestamp.",
            "example": "2026-01-17T18:45:00.000000Z"
          }
        }
      },
      "TalkManagerTalkType": {
        "type": "string",
        "description": "Type of the talk.",
        "enum": [
          "direct",
          "group",
          "talk"
        ],
        "x-enum-varnames": [
          "TalkManagerTalkTypeDirect",
          "TalkManagerTalkTypeGroup",
          "TalkManagerTalkTypeTalk"
        ],
        "example": "direct"
      },
      "TalkManagerParticipantInput": {
        "type": "object",
        "description": "Participant information for chat creation.",
        "properties": {
          "owner_type": {
            "type": "string",
            "description": "Owner type (e.g., \"agent\", \"customer\").",
            "example": "agent"
          },
          "owner_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the participant owner. Returned from the corresponding owner resource endpoint (e.g., `GET /agents`).",
            "example": "d4e5f6a7-b8c9-0d1e-2f3a-4b5c6d7e8f90"
          }
        },
        "required": [
          "owner_type",
          "owner_id"
        ]
      },
      "TalkManagerTalk": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the talk. Returned from the `POST /service_agents/talk_chats` or `GET /service_agents/talk_chats` response.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "customer_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the customer who owns this talk. Returned from the `GET /customers` response.",
            "example": "7c4d2f3a-1b8e-4f5c-9a6d-3e2f1a0b4c5d"
          },
          "type": {
            "$ref": "#/components/schemas/TalkManagerTalkType",
            "description": "The type of the talk.",
            "example": "direct"
          },
          "name": {
            "type": "string",
            "description": "Talk name (optional).",
            "example": "Sales Team Chat"
          },
          "detail": {
            "type": "string",
            "description": "Talk description/detail (optional).",
            "example": "Internal chat for the sales team"
          },
          "member_count": {
            "type": "integer",
            "description": "Number of participants in this chat.",
            "example": 5
          },
          "tm_create": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the talk was created.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_update": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the talk was last updated.",
            "example": "2026-01-16T14:20:00.000000Z"
          },
          "tm_delete": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the talk was deleted.",
            "example": "2026-01-17T18:45:00.000000Z"
          }
        }
      },
      "TalkManagerMessageType": {
        "type": "string",
        "description": "Type of the message.",
        "enum": [
          "normal",
          "system"
        ],
        "x-enum-varnames": [
          "TalkManagerMessageTypeNormal",
          "TalkManagerMessageTypeSystem"
        ],
        "example": "normal"
      },
      "TalkManagerMessage": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the message. Returned from the `POST /service_agents/talk_messages` or `GET /service_agents/talk_messages` response.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "customer_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the customer who owns this message. Returned from the `GET /customers` response.",
            "example": "7c4d2f3a-1b8e-4f5c-9a6d-3e2f1a0b4c5d"
          },
          "owner_type": {
            "type": "string",
            "description": "Resource's owner type.",
            "example": "agent"
          },
          "owner_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the message author. Returned from the corresponding owner resource endpoint.",
            "example": "d4e5f6a7-b8c9-0d1e-2f3a-4b5c6d7e8f90"
          },
          "chat_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the talk this message belongs to. Returned from the `GET /service_agents/talk_chats` response.",
            "example": "f6a7b8c9-d0e1-2f3a-4b5c-6d7e8f9a0b1c"
          },
          "parent_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the parent message (for threaded replies). Returned from the `GET /service_agents/talk_messages` response.",
            "example": "a7b8c9d0-e1f2-3a4b-5c6d-7e8f9a0b1c2d"
          },
          "type": {
            "$ref": "#/components/schemas/TalkManagerMessageType",
            "description": "The type of the message.",
            "example": "normal"
          },
          "text": {
            "type": "string",
            "description": "Message text content.",
            "example": "Hello team, any updates on the project?"
          },
          "medias": {
            "type": "array",
            "description": "Media attachments.",
            "items": {
              "$ref": "#/components/schemas/TalkManagerMedia"
            }
          },
          "metadata": {
            "$ref": "#/components/schemas/TalkManagerMetadata",
            "description": "Message metadata including reactions."
          },
          "tm_create": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the message was created.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_update": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the message was last updated.",
            "example": "2026-01-16T14:20:00.000000Z"
          },
          "tm_delete": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the message was deleted.",
            "example": "2026-01-17T18:45:00.000000Z"
          }
        }
      },
      "TalkManagerMediaType": {
        "type": "string",
        "description": "Type of the media content.",
        "enum": [
          "address",
          "agent",
          "file",
          "link"
        ],
        "x-enum-varnames": [
          "TalkManagerMediaTypeAddress",
          "TalkManagerMediaTypeAgent",
          "TalkManagerMediaTypeFile",
          "TalkManagerMediaTypeLink"
        ],
        "example": "file"
      },
      "TalkManagerMedia": {
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/TalkManagerMediaType",
            "description": "The type of media content.",
            "example": "file"
          },
          "address": {
            "description": "Valid only if the type is `address`.",
            "$ref": "#/components/schemas/CommonAddress"
          },
          "agent_id": {
            "description": "The unique identifier of the agent. Valid only if the type is `agent`. Returned from the `GET /agents` response.",
            "type": "string",
            "format": "uuid",
            "example": "c3d4e5f6-a7b8-9c0d-1e2f-3a4b5c6d7e8f"
          },
          "file_id": {
            "description": "The unique identifier of the file. Valid only if the type is `file`. Returned from the `GET /storage_files` response.",
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
          },
          "link_url": {
            "description": "The URL of the linked resource. Valid only if the type is `link`.",
            "type": "string",
            "format": "uri",
            "example": "https://example.com/document.pdf"
          }
        }
      },
      "TalkManagerMetadata": {
        "type": "object",
        "properties": {
          "reactions": {
            "type": "array",
            "description": "List of reactions on the message.",
            "items": {
              "$ref": "#/components/schemas/TalkManagerReaction"
            }
          }
        }
      },
      "TalkManagerReaction": {
        "type": "object",
        "properties": {
          "emoji": {
            "type": "string",
            "description": "Emoji character for the reaction.",
            "example": "👍"
          },
          "owner_type": {
            "type": "string",
            "description": "Type of the owner who reacted.",
            "example": "agent"
          },
          "owner_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the owner who reacted. Returned from the corresponding owner resource endpoint (e.g., `GET /agents`).",
            "example": "d4e5f6a7-b8c9-0d1e-2f3a-4b5c6d7e8f90"
          },
          "tm_create": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the reaction was created.",
            "example": "2026-01-15T09:30:00.000000Z"
          }
        }
      },
      "TalkManagerParticipant": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the participant.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "customer_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the customer. Returned from the `GET /customers` response.",
            "example": "7c4d2f3a-1b8e-4f5c-9a6d-3e2f1a0b4c5d"
          },
          "owner_type": {
            "type": "string",
            "description": "Resource's owner type.",
            "example": "agent"
          },
          "owner_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the participant owner. Returned from the corresponding owner resource endpoint.",
            "example": "d4e5f6a7-b8c9-0d1e-2f3a-4b5c6d7e8f90"
          },
          "chat_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the talk this participant belongs to. Returned from the `GET /service_agents/talk_chats` response.",
            "example": "f6a7b8c9-d0e1-2f3a-4b5c-6d7e8f9a0b1c"
          },
          "tm_joined": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the participant joined the talk.",
            "example": "2026-01-15T10:00:00.000000Z"
          }
        }
      },
      "TimelineManagerEvent": {
        "type": "object",
        "description": "A timeline event with WebhookMessage data",
        "properties": {
          "timestamp": {
            "type": "string",
            "format": "date-time",
            "description": "When the event occurred",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "event_type": {
            "type": "string",
            "description": "Type of event (e.g., call_created, conference_started)",
            "example": "call_created"
          },
          "data": {
            "type": "object",
            "description": "Event data in WebhookMessage format",
            "example": {}
          }
        }
      },
      "TagManagerTag": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the tag. Returned from the `POST /tags` or `GET /tags` response.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "customer_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the customer who owns this tag. Returned from the `GET /customers` response.",
            "example": "7c4d2f3a-1b8e-4f5c-9a6d-3e2f1a0b4c5d"
          },
          "name": {
            "type": "string",
            "description": "The name of the tag.",
            "example": "VIP Customer"
          },
          "detail": {
            "type": "string",
            "description": "The details about the tag.",
            "example": "Tag for high-priority VIP customers"
          },
          "tm_create": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the tag was created.",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_update": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the tag was last updated.",
            "example": "2026-01-16T14:20:00.000000Z"
          },
          "tm_delete": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the tag was deleted.",
            "example": "2026-01-17T18:45:00.000000Z"
          }
        }
      },
      "TtsManagerSpeakingReferenceType": {
        "type": "string",
        "description": "Type of the referenced entity for the speaking session.",
        "example": "call",
        "enum": [
          "",
          "call",
          "confbridge"
        ],
        "x-enum-varnames": [
          "TtsManagerSpeakingReferenceTypeNone",
          "TtsManagerSpeakingReferenceTypeCall",
          "TtsManagerSpeakingReferenceTypeConfbridge"
        ]
      },
      "TtsManagerSpeakingDirection": {
        "type": "string",
        "description": "Audio injection direction for the speaking session.",
        "example": "both",
        "enum": [
          "",
          "in",
          "out",
          "both"
        ],
        "x-enum-varnames": [
          "TtsManagerSpeakingDirectionNone",
          "TtsManagerSpeakingDirectionIn",
          "TtsManagerSpeakingDirectionOut",
          "TtsManagerSpeakingDirectionBoth"
        ]
      },
      "TtsManagerSpeakingStatus": {
        "type": "string",
        "description": "Status of the speaking session.",
        "example": "active",
        "enum": [
          "initiating",
          "active",
          "stopped"
        ],
        "x-enum-varnames": [
          "TtsManagerSpeakingStatusInitiating",
          "TtsManagerSpeakingStatusActive",
          "TtsManagerSpeakingStatusStopped"
        ]
      },
      "TtsManagerSpeaking": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the speaking session. Returned from the `POST /speakings` or `GET /speakings` response.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "customer_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the customer who owns this speaking session. Returned from the `GET /customers` response.",
            "example": "7c4d2f3a-1b8e-4f5c-9a6d-3e2f1a0b4c5d"
          },
          "reference_type": {
            "$ref": "#/components/schemas/TtsManagerSpeakingReferenceType",
            "description": "Type of the referenced entity (call, confbridge).",
            "example": "call"
          },
          "reference_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the referenced resource (call or confbridge). Returned from the corresponding resource endpoint.",
            "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
          },
          "language": {
            "type": "string",
            "description": "TTS language (e.g. en-US)",
            "example": "en-US"
          },
          "provider": {
            "type": "string",
            "description": "TTS provider (elevenlabs)",
            "example": "elevenlabs"
          },
          "voice_id": {
            "type": "string",
            "description": "Provider-specific voice ID",
            "example": "21m00Tcm4TlvDq8ikWAM"
          },
          "direction": {
            "$ref": "#/components/schemas/TtsManagerSpeakingDirection",
            "description": "Audio injection direction (in, out, both).",
            "example": "both"
          },
          "status": {
            "$ref": "#/components/schemas/TtsManagerSpeakingStatus",
            "description": "Status of the speaking session.",
            "example": "active"
          },
          "tm_create": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Creation timestamp",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_update": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Last update timestamp",
            "example": "2026-01-16T14:20:00.000000Z"
          },
          "tm_delete": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Soft-delete timestamp",
            "example": "2026-01-17T18:45:00.000000Z"
          }
        }
      },
      "TranscribeManagerTranscribeDirection": {
        "type": "string",
        "enum": [
          "both",
          "in",
          "out"
        ],
        "x-enum-varnames": [
          "TranscribeManagerTranscribeDirectionBoth",
          "TranscribeManagerTranscribeDirectionIn",
          "TranscribeManagerTranscribeDirectionOut"
        ],
        "example": "both"
      },
      "TranscribeManagerTranscribeProvider": {
        "type": "string",
        "enum": [
          "",
          "gcp",
          "aws"
        ],
        "x-enum-varnames": [
          "TranscribeManagerTranscribeProviderEmpty",
          "TranscribeManagerTranscribeProviderGcp",
          "TranscribeManagerTranscribeProviderAws"
        ],
        "example": "gcp"
      },
      "TranscribeManagerTranscribeReferenceType": {
        "type": "string",
        "enum": [
          "unknown",
          "recording",
          "call",
          "confbridge"
        ],
        "x-enum-varnames": [
          "TranscribeManagerTranscribeReferenceTypeUnknown",
          "TranscribeManagerTranscribeReferenceTypeRecording",
          "TranscribeManagerTranscribeReferenceTypeCall",
          "TranscribeManagerTranscribeReferenceTypeConfbridge"
        ],
        "example": "call"
      },
      "TranscribeManagerTranscribeStatus": {
        "type": "string",
        "enum": [
          "progressing",
          "done"
        ],
        "x-enum-varnames": [
          "TranscribeManagerTranscribeStatusProgressing",
          "TranscribeManagerTranscribeStatusDone"
        ],
        "example": "progressing"
      },
      "TranscribeManagerTranscribe": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the transcribe session. Returned from the `POST /transcribes` or `GET /transcribes` response.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "customer_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the customer who owns this transcribe session. Returned from the `GET /customers` response.",
            "example": "7c4d2f3a-1b8e-4f5c-9a6d-3e2f1a0b4c5d"
          },
          "activeflow_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the activeflow associated with this transcribe session. Returned from the `POST /activeflows` or `GET /activeflows` response.",
            "example": "d4e5f6a7-b8c9-0123-4567-890abcdef012"
          },
          "on_end_flow_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the flow to execute when the transcribe session ends. Returned from the `POST /flows` or `GET /flows` response.",
            "example": "a1b2c3d4-e5f6-7890-1234-567890abcdef"
          },
          "reference_type": {
            "$ref": "#/components/schemas/TranscribeManagerTranscribeReferenceType",
            "description": "The type of resource being transcribed.",
            "example": "call"
          },
          "reference_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the resource being transcribed (call, conference, or recording). Returned from the corresponding resource endpoint.",
            "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
          },
          "status": {
            "$ref": "#/components/schemas/TranscribeManagerTranscribeStatus",
            "description": "Current status of the transcribe session.",
            "example": "progressing"
          },
          "language": {
            "type": "string",
            "description": "BCP47 type's language code.",
            "example": "en-US"
          },
          "direction": {
            "$ref": "#/components/schemas/TranscribeManagerTranscribeDirection",
            "description": "The audio direction to transcribe.",
            "example": "both"
          },
          "provider": {
            "$ref": "#/components/schemas/TranscribeManagerTranscribeProvider",
            "description": "The STT provider used for the transcription.",
            "example": "gcp"
          },
          "tm_create": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when created",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_update": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when updated",
            "example": "2026-01-16T14:20:00.000000Z"
          },
          "tm_delete": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when deleted",
            "example": "2026-01-17T18:45:00.000000Z"
          }
        }
      },
      "TranscribeManagerTranscriptDirection": {
        "type": "string",
        "enum": [
          "both",
          "in",
          "out"
        ],
        "x-enum-varnames": [
          "TranscribeManagerTranscriptDirectionBoth",
          "TranscribeManagerTranscriptDirectionIn",
          "TranscribeManagerTranscriptDirectionOut"
        ],
        "example": "both"
      },
      "TranscribeManagerTranscript": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the transcript.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "customer_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the customer who owns this transcript. Returned from the `GET /customers` response.",
            "example": "7c4d2f3a-1b8e-4f5c-9a6d-3e2f1a0b4c5d"
          },
          "transcribe_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the parent transcribe session. Returned from the `POST /transcribes` or `GET /transcribes` response.",
            "example": "b8c9d0e1-f2a3-4b5c-6d7e-8f9a0b1c2d3e"
          },
          "direction": {
            "$ref": "#/components/schemas/TranscribeManagerTranscriptDirection",
            "description": "The audio direction of this transcript.",
            "example": "both"
          },
          "message": {
            "type": "string",
            "description": "Transcript message",
            "example": "Hello, thank you for calling. How can I help you?"
          },
          "tm_transcript": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when this transcript was spoken.",
            "example": "2026-01-15T09:31:15.000000Z"
          },
          "tm_create": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the transcript record was created.",
            "example": "2026-01-15T09:30:00.000000Z"
          }
        }
      },
      "TranscribeManagerSpeechWebhookMessage": {
        "type": "object",
        "description": "Webhook payload for speech recognition events (transcribe_speech_started, transcribe_speech_interim, transcribe_speech_ended). Delivered when voice activity is detected during a streaming transcription session.",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the speech event.",
            "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
          },
          "customer_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the customer who owns this transcription session. Returned from the `GET /customers` response.",
            "example": "7c4d2f3a-1b8e-4f5c-9a6d-3e2f1a0b4c5d"
          },
          "streaming_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the audio streaming session that produced this speech event.",
            "example": "b8c9d0e1-f2a3-4b5c-6d7e-8f9a0b1c2d3e"
          },
          "transcribe_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the parent transcribe session. Returned from the `POST /transcribes` or `GET /transcribes` response.",
            "example": "c9d0e1f2-a3b4-5c6d-7e8f-9a0b1c2d3e4f"
          },
          "direction": {
            "$ref": "#/components/schemas/TranscribeManagerTranscriptDirection",
            "description": "The audio direction of this speech event.",
            "example": "in"
          },
          "message": {
            "type": "string",
            "description": "The interim transcribed text. Present for `transcribe_speech_interim` events. Empty for `transcribe_speech_started` and `transcribe_speech_ended` events.",
            "example": "Hello, I need help with my account"
          },
          "tm_event": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the speech event occurred.",
            "example": "2026-01-15T09:31:15.000000Z"
          },
          "tm_create": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when the speech event record was created.",
            "example": "2026-01-15T09:31:15.000000Z"
          }
        }
      },
      "TransferManagerTransferType": {
        "type": "string",
        "enum": [
          "attended",
          "blind"
        ],
        "x-enum-varnames": [
          "TransferManagerTransferTypeAttended",
          "TransferManagerTransferTypeBlind"
        ],
        "example": "blind"
      },
      "TransferManagerTransfer": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the transfer. Returned from the `POST /transfers` response.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "customer_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the customer who owns this transfer. Returned from the `GET /customers` response.",
            "example": "7c4d2f3a-1b8e-4f5c-9a6d-3e2f1a0b4c5d"
          },
          "type": {
            "$ref": "#/components/schemas/TransferManagerTransferType",
            "description": "The type of transfer being performed.",
            "example": "blind"
          },
          "transferer_call_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the call initiating the transfer. Returned from the `GET /calls` response.",
            "example": "c9d0e1f2-a3b4-5c6d-7e8f-9a0b1c2d3e4f"
          },
          "transferee_addresses": {
            "type": "array",
            "description": "List of target addresses for the transfer.",
            "minItems": 1,
            "items": {
              "$ref": "#/components/schemas/CommonAddress"
            }
          },
          "transferee_call_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the call being transferred. Returned from the `GET /calls` response.",
            "example": "d0e1f2a3-b4c5-6d7e-8f9a-0b1c2d3e4f5a"
          },
          "groupcall_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the groupcall created for the transfer. Returned from the `GET /groupcalls` response.",
            "example": "e1f2a3b4-c5d6-7e8f-9a0b-1c2d3e4f5a6b"
          },
          "confbridge_id": {
            "type": "string",
            "format": "uuid",
            "x-go-type": "string",
            "description": "The unique identifier of the conference bridge used for attended transfer. Returned from the `GET /conferences` response.",
            "example": "f2a3b4c5-d6e7-8f9a-0b1c-2d3e4f5a6b7c"
          },
          "tm_create": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when created",
            "example": "2026-01-15T09:30:00.000000Z"
          },
          "tm_update": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when updated",
            "example": "2026-01-16T14:20:00.000000Z"
          },
          "tm_delete": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Timestamp when deleted",
            "example": "2026-01-17T18:45:00.000000Z"
          }
        }
      },
      "RequestBodyAuthSignupPOST": {
        "type": "object",
        "required": [
          "email",
          "accepted_tos"
        ],
        "description": "Request body for POST /auth/signup (self-service customer registration).",
        "properties": {
          "name": {
            "type": "string",
            "description": "Display name for the customer account.",
            "example": "Acme Corporation"
          },
          "detail": {
            "type": "string",
            "description": "Additional details about the customer.",
            "example": "Enterprise customer account"
          },
          "email": {
            "type": "string",
            "format": "email",
            "x-go-type": "string",
            "description": "Email address for the new customer account. Must be unique across all customers.",
            "example": "admin@acme.com"
          },
          "phone_number": {
            "type": "string",
            "description": "Contact phone number in E.164 format.",
            "example": "+14155551234"
          },
          "address": {
            "type": "string",
            "description": "Mailing address of the customer.",
            "example": "123 Main St, San Francisco, CA 94105"
          },
          "webhook_method": {
            "type": "string",
            "description": "HTTP method for webhook delivery. One of: POST, GET, PUT, DELETE.",
            "example": "POST"
          },
          "webhook_uri": {
            "type": "string",
            "description": "URI where webhook events will be delivered.",
            "example": "https://api.acme.com/webhooks/voipbin"
          },
          "accepted_tos": {
            "type": "boolean",
            "description": "Must be `true` to confirm acceptance of the Terms of Service. Requests with `false` or missing value are rejected with HTTP 400.",
            "example": true
          }
        }
      },
      "RequestBodyAuthEmailVerifyPOST": {
        "type": "object",
        "required": [
          "token"
        ],
        "description": "Request body for POST /auth/email-verify (email verification).",
        "properties": {
          "token": {
            "type": "string",
            "description": "64-character lowercase hexadecimal verification token. Sent to the customer's email after `POST /auth/signup`.",
            "example": "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6abcd"
          }
        }
      },
      "CustomerManagerSignupResult": {
        "type": "object",
        "description": "Result of a successful signup. Contains the newly created customer and a provisioned access key.",
        "properties": {
          "customer": {
            "$ref": "#/components/schemas/CustomerManagerCustomer"
          },
          "accesskey": {
            "$ref": "#/components/schemas/CustomerManagerAccesskey"
          }
        }
      },
      "CustomerManagerEmailVerifyResult": {
        "type": "object",
        "required": [
          "customer"
        ],
        "description": "Result of a successful email verification. Contains the verified customer.",
        "properties": {
          "customer": {
            "$ref": "#/components/schemas/CustomerManagerCustomer"
          }
        }
      },
      "RequestBodyAuthUnregisterPOST": {
        "type": "object",
        "description": "Request body for POST /auth/unregister (self-service account deletion).\nExactly one of `password` or `confirmation_phrase` must be provided.\n",
        "properties": {
          "password": {
            "type": "string",
            "description": "Account password for re-authentication. Required for password-based accounts. Mutually exclusive with `confirmation_phrase`.",
            "example": "mySecurePassword123"
          },
          "confirmation_phrase": {
            "type": "string",
            "description": "Must be exactly \"DELETE\". Required for SSO users and API-key authenticated requests. Mutually exclusive with `password`.",
            "example": "DELETE"
          },
          "immediate": {
            "type": "boolean",
            "description": "If true, skip the 30-day grace period and delete the account immediately. The account is frozen and then permanently deleted (PII anonymized, all resources cascade-deleted) in a single request. Default: false.",
            "example": false
          }
        }
      },
      "RequestBodyAuthBootPOST": {
        "type": "object",
        "required": [
          "direct_hash"
        ],
        "description": "Request body for POST /auth/boot (resource-scoped JWT generation from a direct hash).",
        "properties": {
          "direct_hash": {
            "type": "string",
            "description": "The direct hash link (e.g., \"direct.a1b2c3d4e5f6\"). Obtained from resource direct hash endpoints such as `POST /ais/{id}/direct_hash_regenerate`.",
            "example": "direct.a1b2c3d4e5f6"
          }
        }
      },
      "AuthBootResponse": {
        "type": "object",
        "description": "Result of a successful boot request. Contains a resource-scoped JWT and metadata about the scoped resource.",
        "properties": {
          "token": {
            "type": "string",
            "description": "JWT token string for API authentication. Pass as `Bearer <token>` in the Authorization header.",
            "example": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjdXN0b21lcl9pZCI6IjU1MGU4NDAwLWUyOWItNDFkNC1hNzE2LTQ0NjY1NTQ0MDAwMCJ9.abc123"
          },
          "type": {
            "type": "string",
            "enum": [
              "direct"
            ],
            "description": "Token type. Always \"direct\" for boot tokens.",
            "example": "direct"
          },
          "resource_type": {
            "type": "string",
            "description": "The type of resource this token is scoped to (e.g., \"ai\").",
            "example": "ai"
          },
          "resource_id": {
            "type": "string",
            "format": "uuid",
            "description": "The UUID of the resource this token is scoped to. Returned from the resource creation endpoint (e.g., `POST /ais`).",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "customer_id": {
            "type": "string",
            "format": "uuid",
            "description": "The UUID of the customer that owns the resource. Returned from the `POST /auth/signup` response.",
            "example": "660e8400-e29b-41d4-a716-446655440001"
          },
          "expire": {
            "type": "string",
            "format": "date-time",
            "x-go-type": "string",
            "description": "Token expiry timestamp in ISO 8601 format.",
            "example": "2026-04-07T12:00:00Z"
          }
        }
      }
    }
  }
}