{
  "openapi": "3.0.3",
  "info": {
    "title": "Daily API",
    "description": "The Daily REST API offers the ability to manage the following: \n- Overall Domain Configuration\n- Individual Room creation and config management \n- Meeting token creation and validation\n- Recording and compositing management \n- Meeting analytics\n- Logs and metrics\n- Real-time presence\n\nPlease reach out to help@daily.co if we can help with anything",
    "version": "1.1.1",
    "contact": {
      "name": "Daily",
      "url": "https://docs.daily.co",
      "email": "help@daily.co"
    }
  },
  "servers": [
    {
      "url": "https://api.daily.co/v1"
    }
  ],
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "paths": {
    "/rooms": {
      "get": {
        "summary": "/rooms",
        "description": "List rooms",
        "operationId": "ListRooms",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "Sets the number of rooms listed",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "ending_before",
            "in": "query",
            "description": "Returns room objects created before a provided room  id",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "starting_after",
            "in": "query",
            "description": "Returns room objects created after a provided room id",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "total_count": {
                      "type": "integer",
                      "example": 2,
                      "default": 0
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "example": "5e3cf703-5547-47d6-a371-37b1f0b4427f"
                          },
                          "name": {
                            "type": "string",
                            "example": "w2pp2cf4kltgFACPKXmX"
                          },
                          "api_created": {
                            "type": "boolean",
                            "example": false,
                            "default": true
                          },
                          "privacy": {
                            "type": "string",
                            "example": "public"
                          },
                          "url": {
                            "type": "string",
                            "example": "https://api-demo.daily.co/w2pp2cf4kltgFACPKXmX"
                          },
                          "created_at": {
                            "type": "string",
                            "example": "2019-01-26T09:01:22.000Z"
                          },
                          "config": {
                            "type": "object",
                            "properties": {
                              "start_video_off": {
                                "type": "boolean",
                                "example": true,
                                "default": true
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                },
                "examples": {
                  "Result": {
                    "value": {
                      "total_count": 2,
                      "data": [
                        {
                          "id": "5e3cf703-5547-47d6-a371-37b1f0b4427f",
                          "name": "w2pp2cf4kltgFACPKXmX",
                          "api_created": false,
                          "privacy": "public",
                          "url": "https://api-demo.daily.co/w2pp2cf4kltgFACPKXmX",
                          "created_at": "2019-01-26T09:01:22.000Z",
                          "config": {
                            "start_video_off": true
                          }
                        },
                        {
                          "id": "d61cd7b2-a273-42b4-89bd-be763fd562c1",
                          "name": "hello",
                          "api_created": false,
                          "privacy": "public",
                          "url": "https://your-domain.daily.co/hello",
                          "created_at": "2019-01-25T23:49:42.000Z",
                          "config": {}
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          }
        },
        "deprecated": false,
        "tags": ["rooms"],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      },
      "post": {
        "summary": "/rooms",
        "description": "Create a room",
        "operationId": "CreateRoom",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "privacy": {
                    "type": "string"
                  },
                  "properties": {
                    "$ref": "#/components/schemas/room-properties"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "example": "d61cd7b2-a273-42b4-89bd-be763fd562c1"
                    },
                    "name": {
                      "type": "string",
                      "example": "w2pp2cf4kltgFACPKXmX"
                    },
                    "api_created": {
                      "type": "boolean",
                      "example": true,
                      "default": true
                    },
                    "privacy": {
                      "type": "string",
                      "example": "public"
                    },
                    "url": {
                      "type": "string",
                      "example": "https://api-demo.daily.co/w2pp2cf4kltgFACPKXmX"
                    },
                    "created_at": {
                      "type": "string",
                      "example": "2019-01-26T09:01:22.000Z"
                    },
                    "config": {
                      "$ref": "#/components/schemas/rooms-room_name-get-res"
                    }
                  }
                },
                "examples": {
                  "Result": {
                    "value": {
                      "id": "d61cd7b2-a273-42b4-89bd-be763fd562c1",
                      "name": "w2pp2cf4kltgFACPKXmX",
                      "api_created": true,
                      "privacy": "public",
                      "url": "https://api-demo.daily.co/w2pp2cf4kltgFACPKXmX",
                      "created_at": "2019-01-26T09:01:22.000Z",
                      "config": {
                        "start_video_off": true
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          }
        },
        "deprecated": false,
        "tags": ["rooms"],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/rooms/{room_name}": {
      "get": {
        "summary": "rooms/:name",
        "description": "Get info about a room",
        "operationId": "GetRoomConfig",
        "parameters": [
          {
            "name": "room_name",
            "in": "path",
            "required": true,
            "style": "simple",
            "explode": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rooms-room_name-get-res"
                },
                "examples": {
                  "Result": {
                    "value": {
                      "id": "d61cd7b2-a273-42b4-89bd-be763fd562c1",
                      "name": "w2pp2cf4kltgFACPKXmX",
                      "api_created": false,
                      "privacy": "public",
                      "url": "https://api-demo.daily.co/w2pp2cf4kltgFACPKXmX",
                      "created_at": "2019-01-26T09:01:22.000Z",
                      "config": {
                        "start_video_off": true
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          }
        },
        "deprecated": false,
        "tags": ["rooms"],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      },
      "post": {
        "summary": "rooms/:name",
        "description": "Set a room's privacy and config properties",
        "operationId": "SetRoomConfig",
        "parameters": [
          {
            "name": "room_name",
            "in": "path",
            "required": true,
            "style": "simple",
            "explode": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "privacy": {
                    "type": "string"
                  },
                  "properties": {
                    "$ref": "#/components/schemas/room-properties"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "examples": {
                  "Result": {
                    "value": {
                      "id": "d61cd7b2-a273-42b4-89bd-be763fd562c1",
                      "name": "w2pp2cf4kltgFACPKXmX",
                      "api_created": false,
                      "privacy": "public",
                      "url": "https://api-demo.daily.co/w2pp2cf4kltgFACPKXmX",
                      "created_at": "2019-01-26T09:01:22.000Z",
                      "config": {
                        "start_video_off": true
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          }
        },
        "deprecated": false,
        "tags": ["rooms"],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      },
      "delete": {
        "summary": "rooms/:name",
        "description": "Delete a room",
        "operationId": "DeleteRoom",
        "parameters": [
          {
            "name": "room_name",
            "in": "path",
            "required": true,
            "style": "simple",
            "explode": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "deleted": {
                      "type": "boolean"
                    },
                    "name": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Result": {
                    "value": {
                      "deleted": true,
                      "name": "my-room"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          }
        },
        "deprecated": false,
        "tags": ["rooms"],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/rooms/{room_name}/presence": {
      "get": {
        "summary": "rooms/:name/presence",
        "description": "Get a presence snapshot for a room",
        "operationId": "GetRoomPresence",
        "parameters": [
          {
            "name": "room_name",
            "in": "path",
            "description": "The name of the room",
            "required": true,
            "style": "simple",
            "explode": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Sets the number of participants returned.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "userId",
            "in": "query",
            "description": "Returns presence for the user with the given userId, if available. The userId is specified via a [meeting token](/products/rest-api/meeting-tokens/config#user_id).",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "userName",
            "in": "query",
            "description": "Returns presence for the user with the given name, if available.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rooms-room_name_presence-get-res"
                },
                "examples": {
                  "Result": {
                    "value": {
                      "total_count": 1,
                      "data": [
                        {
                          "room": "w2pp2cf4kltgFACPKXmX",
                          "id": "d61cd7b2-a273-42b4-89bd-be763fd562c1",
                          "userId": "pbZ+ismP7dk=",
                          "userName": "Moishe",
                          "mtgSessionId": "16e9701a-93e0-4933-83c9-223e7c40d552",
                          "joinTime": "2023-01-01T20:53:19.000Z",
                          "duration": 2312
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          }
        },
        "deprecated": false,
        "tags": ["rooms"],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/rooms/{room_name}/send-app-message": {
      "post": {
        "summary": "rooms/:name/send-app-message",
        "description": "Send a message to participants in a room",
        "operationId": "SendAppMessage",
        "parameters": [
          {
            "name": "room_name",
            "in": "path",
            "required": true,
            "style": "simple",
            "explode": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "data": {
                    "type": "object",
                    "description": "A javascript object that can be serialized into JSON. Data sent must be within the 4kb size limit."
                  },
                  "recipient": {
                    "type": "string",
                    "description": "Determines who will recieve the message. It can be either a participant session_id, or `*`. The `*` value is the default, and means that the message is a \"broadcast\" message intended for all participants.",
                    "default": "*"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "examples": {
                  "Result": {
                    "value": {
                      "sent": "true"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          }
        },
        "deprecated": false,
        "tags": ["rooms"],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/rooms/{room_name}/get-session-data": {
      "get": {
        "summary": "rooms/:name/get-session-data",
        "description": "Gets meeting session data",
        "operationId": "GetSessionData",
        "parameters": [
          {
            "name": "room_name",
            "in": "path",
            "required": true,
            "style": "simple",
            "explode": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "examples": {
                  "Result": {
                    "value": {
                      "data": {
                        "hello": "world"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          }
        },
        "deprecated": false,
        "tags": ["rooms"],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/rooms/{room_name}/set-session-data": {
      "post": {
        "summary": "rooms/:name/set-session-data",
        "description": "Sets meeting session data",
        "operationId": "SetSessionData",
        "parameters": [
          {
            "name": "room_name",
            "in": "path",
            "required": true,
            "style": "simple",
            "explode": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "data": {
                    "type": "object",
                    "description": "A javascript object that can be serialized into JSON. Defaults to `{}`."
                  },
                  "mergeStrategy": {
                    "type": "string",
                    "enum": ["replace", "shallow-merge"],
                    "description": "`replace` to replace the existing meeting session data object or `shallow-merge` to merge with it.",
                    "default": "replace"
                  },
                  "keysToDelete": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Optional list of keys to delete from the existing meeting session data object when using `shallow-merge`."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "examples": {
                  "Result": {
                    "value": {
                      "sent": "true"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          }
        },
        "deprecated": false,
        "tags": ["rooms"],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/rooms/{room_name}/eject": {
      "post": {
        "summary": "rooms/:name/eject",
        "description": "Ejects participants from a room",
        "operationId": "Eject",
        "parameters": [
          {
            "name": "room_name",
            "in": "path",
            "required": true,
            "style": "simple",
            "explode": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "ids": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "List of participant ids (max 100) to eject from the existing meeting session."
                  },
                  "user_ids": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "List of user_ids (max 100) to eject from the existing meeting session."
                  },
                  "ban": {
                    "type": "boolean",
                    "default": false,
                    "description": "If true, participants are prevented from (re)joining with the given user_ids."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ejectedIds": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          }
        },
        "deprecated": false,
        "tags": ["rooms"],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/rooms/{room_name}/update-permissions": {
      "post": {
        "summary": "rooms/:name/update-permissions",
        "description": "Modifies permissions for one or more participants in a room",
        "operationId": "UpdatePermissions",
        "parameters": [
          {
            "name": "room_name",
            "in": "path",
            "required": true,
            "style": "simple",
            "explode": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "data": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "object",
                      "properties": {
                        "hasPresence": {
                          "type": "boolean"
                        },
                        "canSend": {
                          "oneOf": [
                            {
                              "type": "boolean"
                            },
                            {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            }
                          ]
                        },
                        "canReceive": {
                          "type": "object"
                        },
                        "canAdmin": {
                          "oneOf": [
                            {
                              "type": "boolean"
                            },
                            {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            }
                          ]
                        }
                      },
                      "description": "Permissions to modify for a given participant id or '*'."
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "examples": {
                  "Result": {
                    "value": {
                      "status": "sent"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          }
        },
        "deprecated": false,
        "tags": ["rooms"],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/rooms/{room_name}/recordings/start": {
      "post": {
        "summary": "rooms/:name/recordings/start",
        "description": "Start a recording in a room",
        "operationId": "RoomRecordingsStart",
        "parameters": [
          {
            "name": "room_name",
            "in": "path",
            "required": true,
            "style": "simple",
            "explode": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RecordingStreamingOptions"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "examples": {
                  "Result": {
                    "value": {
                      "status": "sent"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          }
        },
        "deprecated": false,
        "tags": ["rooms"],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/rooms/{room_name}/recordings/update": {
      "post": {
        "summary": "rooms/:name/recordings/update",
        "description": "Update a recording in a room",
        "operationId": "RoomRecordingsUpdate",
        "parameters": [
          {
            "name": "room_name",
            "in": "path",
            "required": true,
            "style": "simple",
            "explode": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DailyStreamingOptions"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "examples": {
                  "Result": {
                    "value": {
                      "status": "sent"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          }
        },
        "deprecated": false,
        "tags": ["rooms"],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/rooms/{room_name}/recordings/stop": {
      "post": {
        "summary": "rooms/:name/recordings/stop",
        "description": "Stop a recording in a room",
        "operationId": "RoomRecordingsStop",
        "parameters": [
          {
            "name": "room_name",
            "in": "path",
            "required": true,
            "style": "simple",
            "explode": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "examples": {
                  "Result": {
                    "value": {
                      "status": "sent"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          }
        },
        "deprecated": false,
        "tags": ["rooms"],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/rooms/{room_name}/live-streaming/start": {
      "post": {
        "summary": "rooms/:name/live-streaming/start",
        "description": "Start a live stream in a room",
        "operationId": "RoomLivestreamingStart",
        "parameters": [
          {
            "name": "room_name",
            "in": "path",
            "required": true,
            "style": "simple",
            "explode": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DailyLiveStreamingOptions"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "examples": {
                  "Result": {
                    "value": {
                      "sent": "true"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          }
        },
        "deprecated": false,
        "tags": ["rooms"],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/rooms/{room_name}/live-streaming/update": {
      "post": {
        "summary": "rooms/:name/live-streaming/update",
        "description": "Update a live stream in a room",
        "operationId": "RoomLivestreamingUpdate",
        "parameters": [
          {
            "name": "room_name",
            "in": "path",
            "required": true,
            "style": "simple",
            "explode": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DailyLiveStreamingOptions"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "examples": {
                  "Result": {
                    "value": {
                      "sent": "true"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          }
        },
        "deprecated": false,
        "tags": ["rooms"],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/rooms/{room_name}/live-streaming/stop": {
      "post": {
        "summary": "rooms/:name/live-streaming/stop",
        "description": "Stop a live stream in a room",
        "operationId": "RoomLivestreamingStop",
        "parameters": [
          {
            "name": "room_name",
            "in": "path",
            "required": true,
            "style": "simple",
            "explode": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "examples": {
                  "Result": {
                    "value": {
                      "sent": "true"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          }
        },
        "deprecated": false,
        "tags": ["rooms"],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/rooms/{room_name}/transcription/start": {
      "post": {
        "summary": "rooms/:name/transcription/start",
        "description": "Start a transcription in a room",
        "operationId": "RoomTranscriptionStart",
        "parameters": [
          {
            "name": "room_name",
            "in": "path",
            "required": true,
            "style": "simple",
            "explode": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/transcription-properties"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "examples": {
                  "Result": {
                    "value": {
                      "sent": "true"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          }
        },
        "deprecated": false,
        "tags": ["rooms"],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/rooms/{room_name}/transcription/update": {
      "post": {
        "summary": "rooms/:name/transcription/update",
        "description": "Update the set of participants being transcribed",
        "operationId": "RoomTranscriptionUpdate",
        "parameters": [
          {
            "name": "room_name",
            "in": "path",
            "required": true,
            "style": "simple",
            "explode": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "description": "",
                "type": "object",
                "properties": {
                  "instanceId": {
                    "type": "string",
                    "description": "instanceId to be updated."
                  },
                  "participants": {
                    "description": "A list of participant IDs to be transcribed. Only the participant IDs included in this array will be processed",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "examples": {
                  "Result": {
                    "value": {
                      "sent": "true"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          }
        },
        "deprecated": false,
        "tags": ["rooms"],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/rooms/{room_name}/transcription/stop": {
      "post": {
        "summary": "rooms/:name/transcription/stop",
        "description": "Stop a transcription in a room",
        "operationId": "RoomTranscriptionStop",
        "parameters": [
          {
            "name": "room_name",
            "in": "path",
            "required": true,
            "style": "simple",
            "explode": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "description": "",
                "type": "object",
                "properties": {
                  "instanceId": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "examples": {
                  "Result": {
                    "value": {
                      "sent": "true"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          }
        },
        "deprecated": false,
        "tags": ["rooms"],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/rooms/{room_name}/dialOut/start": {
      "post": {
        "summary": "rooms/:name/dialOut/start",
        "description": "Start a dial-out in a room",
        "operationId": "RoomDialOutStart",
        "parameters": [
          {
            "name": "room_name",
            "in": "path",
            "required": true,
            "style": "simple",
            "explode": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/dialout-properties"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "examples": {
                  "Result": {
                    "value": {
                      "ok": "true",
                      "sessionId": "UUID of the dial-out session"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          }
        },
        "deprecated": false,
        "tags": ["rooms"],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/rooms/{room_name}/dialOut/sendDTMF": {
      "post": {
        "summary": "rooms/:name/dialOut/sendDTMF",
        "description": "send DTMF digits on the dialout",
        "operationId": "RoomDialOutSendDTMF",
        "parameters": [
          {
            "name": "room_name",
            "in": "path",
            "required": true,
            "style": "simple",
            "explode": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "description": "",
                "type": "object",
                "properties": {
                  "sessionId": {
                    "type": "string",
                    "description": "The participant ID of the dialOut session"
                  },
                  "tones": {
                    "type": "string",
                    "description": "Combined string of DTMF tones to send (e.g., \"1234#\"). Maximum 20 characters."
                  },
                  "digitDurationMs": {
                    "type": "integer",
                    "description": "Duration in milliseconds, represents the duration between each DTMF digit. Must be between 50 and 2000. The default duration is 500ms.",
                    "minimum": 50,
                    "maximum": 2000
                  }
                },
                "required": ["sessionId", "tones"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "examples": {
                  "Result": {
                    "value": {
                      "ok": "true",
                      "sessionId": "UUID of the dial-out session"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          }
        },
        "deprecated": false,
        "tags": ["rooms"],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/rooms/{room_name}/dialOut/stop": {
      "post": {
        "summary": "rooms/:name/dialOut/stop",
        "description": "Stop a dial out in a room",
        "operationId": "RoomDialOutStop",
        "parameters": [
          {
            "name": "room_name",
            "in": "path",
            "required": true,
            "style": "simple",
            "explode": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "description": "",
                "type": "object",
                "properties": {
                  "sessionId": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "examples": {
                  "Result": {
                    "value": {
                      "status": "sent"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          }
        },
        "deprecated": false,
        "tags": ["rooms"],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/rooms/{room_name}/sipCallTransfer": {
      "post": {
        "summary": "rooms/:name/sipCallTransfer",
        "description": "transfer sip/pstn call",
        "operationId": "RoomSipCallTransfer",
        "parameters": [
          {
            "name": "room_name",
            "in": "path",
            "required": true,
            "style": "simple",
            "explode": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "description": "",
                "type": "object",
                "properties": {
                  "sessionId": {
                    "type": "string"
                  },
                  "toEndPoint": {
                    "type": "string",
                    "description": "the SIP/phoneNumber endpoint to transfer the call to."
                  },
                  "callerId": {
                    "type": "string",
                    "description": "determine the phone number used for outbound call (i.e. phone number displayed on the called phone). [purchased phone](/products/rest-api/phone-numbers/purchased-phone-numbers)"
                  },
                  "waitBeforeExtensionDialSec": {
                    "type": "integer",
                    "description": "number of seconds to wait before dialing the extension, once dialed number is connected.",
                    "default": 0,
                    "minimum": 0,
                    "maximum": 60
                  },
                  "extension": {
                    "type": "string",
                    "description": "the extension to dial after dialed number is connected. e.g. `1234`",
                    "maxLength": 20,
                    "minLength": 1,
                    "example": "1234"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "examples": {
                  "Result": {
                    "value": {
                      "ok": "true"
                    }
                  }
                }
              }
            }
          }
        },
        "deprecated": false,
        "tags": ["rooms"],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/rooms/{room_name}/sipRefer": {
      "post": {
        "summary": "rooms/:name/sipRefer",
        "description": "refer a sip call to other sip endpoint",
        "operationId": "RoomSipRefer",
        "parameters": [
          {
            "name": "room_name",
            "in": "path",
            "required": true,
            "style": "simple",
            "explode": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "description": "",
                "type": "object",
                "properties": {
                  "sessionId": {
                    "type": "string"
                  },
                  "toEndPoint": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "examples": {
                  "Result": {
                    "value": {
                      "ok": "true"
                    }
                  }
                }
              }
            },
            "$ref": "#/components/responses/400"
          }
        },
        "deprecated": false,
        "tags": ["rooms"],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/meeting-tokens": {
      "post": {
        "summary": "meeting-tokens",
        "description": "Create a meeting token",
        "operationId": "CreateMeetingToken",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "properties": {
                    "$ref": "#/components/schemas/properties"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "token": {
                      "type": "string",
                      "example": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyIjoicm9vbS0wMjUzIiwiZCI6IjI1ZGY1MDU3LWVmMGQtNGQ5Ny1iZGU2LTBjZjI4NzI3NmNiYiIsImlhdCI6MTU0ODcyMjIwN30.LXZtTnksTjWLTNvucr0MCHL6cOaqCa2m3DKk4ugnkSQ"
                    }
                  }
                },
                "examples": {
                  "Example Response": {
                    "value": {
                      "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyIjoicm9vbS0wMjUzIiwiZCI6IjI1ZGY1MDU3LWVmMGQtNGQ5Ny1iZGU2LTBjZjI4NzI3NmNiYiIsImlhdCI6MTU0ODcyMjIwN30.LXZtTnksTjWLTNvucr0MCHL6cOaqCa2m3DKk4ugnkSQ"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          }
        },
        "deprecated": false,
        "tags": ["meeting-tokens"],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/meeting-tokens/{meeting_token}": {
      "get": {
        "summary": "meeting-tokens/:meeting_token",
        "description": "Validate meeting tokens",
        "operationId": "ValidateMeetingToken",
        "parameters": [
          {
            "name": "meeting_token",
            "in": "path",
            "required": true,
            "style": "simple",
            "explode": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ignoreNbf",
            "in": "query",
            "description": "Ignore the `nbf` in a JWT, if given",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "room_name": {
                      "type": "string",
                      "example": "EevVrrxee4JBxKzmKkjC"
                    },
                    "is_owner": {
                      "type": "boolean",
                      "example": true,
                      "default": true
                    },
                    "user_name": {
                      "type": "string",
                      "example": "host"
                    },
                    "start_video_off": {
                      "type": "boolean",
                      "example": false,
                      "default": true
                    },
                    "start_audio_off": {
                      "type": "boolean",
                      "example": true,
                      "default": true
                    },
                    "lang": {
                      "type": "string",
                      "example": "en"
                    }
                  }
                },
                "examples": {
                  "Result": {
                    "value": {
                      "room_name": "EevVrrxee4JBxKzmKkjC",
                      "is_owner": true,
                      "user_name": "host",
                      "start_video_off": false,
                      "start_audio_off": true,
                      "lang": "en"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          }
        },
        "deprecated": false,
        "tags": ["meeting-tokens"],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/recordings": {
      "get": {
        "summary": "/recordings",
        "description": "List recordings",
        "operationId": "ListRecordings",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "ending_before",
            "in": "query",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "starting_after",
            "in": "query",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "room_name",
            "in": "query",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "total_count": {
                      "type": "integer",
                      "example": 3,
                      "default": 0
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "example": "bfd0c52b-3a2a-4269-80ce-cae9eef55536"
                          },
                          "start_ts": {
                            "type": "integer",
                            "example": 1548790974,
                            "default": 0
                          },
                          "status": {
                            "type": "string",
                            "example": "in-progress"
                          },
                          "max_participants": {
                            "type": "integer",
                            "example": 2,
                            "default": 0
                          },
                          "share_token": {
                            "type": "string",
                            "example": "NcWgEiJuqD8v"
                          },
                          "s3key": {
                            "type": "string",
                            "example": "mydomain/test-recording-room/11245260397"
                          },
                          "mtgSessionId": {
                            "type": "string",
                            "example": "257764e6-c74e-4c30-944a-a887a03173a3"
                          }
                        }
                      }
                    }
                  }
                },
                "examples": {
                  "Result": {
                    "value": {
                      "total_count": 3,
                      "data": [
                        {
                          "id": "bfd0c52b-3a2a-4269-80ce-cae9eef55536",
                          "start_ts": 1548790974,
                          "status": "in-progress",
                          "max_participants": 2,
                          "share_token": "NcWgEiJuqD8v",
                          "s3key": "mydomain/test-recording-room/11245260397",
                          "mtgSessionId": "411c96b4-c13b-4f35-b639-4fda02863743"
                        },
                        {
                          "id": "0cb313e1-211f-4be0-833d-8c7305b19902",
                          "start_ts": 1548789650,
                          "status": "finished",
                          "max_participants": 2,
                          "duration": 277,
                          "share_token": "TivXjlD22QQt",
                          "s3key": "mydomain/test-recording-room/277255707741,",
                          "mtgSessionId": "1117a5d8-f6c4-4ff5-a9ec-2a324666f0da"
                        },
                        {
                          "id": "89a4a0a4-03cf-454f-b874-e83d91b0296f",
                          "start_ts": 1548788621,
                          "status": "finished",
                          "max_participants": 1,
                          "duration": 53,
                          "share_token": "QehWXiO2zMMf",
                          "s3key": "mydomain/test-recording-room/11245260397,",
                          "mtgSessionId": "257764e6-c74e-4c30-944a-a887a03173a3,"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          }
        },
        "deprecated": false,
        "tags": ["recordings"],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/recordings/{recording_id}": {
      "get": {
        "summary": "recordings/:id",
        "description": "Get info about a recording",
        "operationId": "GetRecordingInfo",
        "parameters": [
          {
            "name": "recording_id",
            "in": "path",
            "required": true,
            "style": "simple",
            "explode": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "example": "0cb313e1-211f-4be0-833d-8c7305b19902",
                      "description": "A unique, opaque ID for this object. You can use this ID in API calls, and in paginated list operations."
                    },
                    "room_name": {
                      "type": "string",
                      "description": "The name of the [room](/reference/rest-api/rooms)."
                    },
                    "start_ts": {
                      "type": "integer",
                      "example": 1548789650,
                      "description": "When the recording started. This is a unix timestamp (seconds since the epoch)."
                    },
                    "status": {
                      "type": "string",
                      "example": "finished",
                      "enum": ["finished", "in-progress", "canceled"]
                    },
                    "max_participants": {
                      "type": "integer",
                      "example": 2,
                      "description": "The maximum number of participants that were ever in this room together during the meeting session that was recorded."
                    },
                    "duration": {
                      "type": "integer",
                      "example": 277,
                      "description": "How many seconds long the recording is, approximately. This property is not returned for recordings that are in-progress."
                    },
                    "share_token": {
                      "type": "string",
                      "example": "TivXjlD22QQt",
                      "description": "Deprecated."
                    },
                    "s3key": {
                      "type": "string",
                      "example": "mydomain/test-recording-room/11245260397",
                      "description": "The S3 Key associated with this recording."
                    },
                    "mtgSessionId": {
                      "type": "string",
                      "example": "257764e6-c74e-4c30-944a-a887a03173a3",
                      "description": "The meeting session ID for this recording."
                    },
                    "tracks": {
                      "type": "array",
                      "description": "If the recording is a raw-tracks recording, a tracks field will be provided. If role permissions have been removed, the tracks field may be null.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "size": {
                            "type": "integer",
                            "example": 15620,
                            "description": "The size of the file."
                          },
                          "type": {
                            "type": "string",
                            "example": "audio",
                            "enum": ["audio", "video"],
                            "description": "The type of track file, audio or video."
                          },
                          "s3key": {
                            "type": "string",
                            "example": "mydomain/test-recording-room/11245260397-audio",
                            "description": "The S3 Key associated with this partiicular track file."
                          }
                        }
                      }
                    }
                  }
                },
                "examples": {
                  "Result": {
                    "value": {
                      "id": "0cb313e1-211f-4be0-833d-8c7305b19902",
                      "start_ts": 1548789650,
                      "status": "finished",
                      "max_participants": 2,
                      "duration": 277,
                      "share_token": "TivXjlD22QQt",
                      "s3key": "mydomain/test-recording-room/11245260397",
                      "mtgSessionId": "257764e6-c74e-4c30-944a-a887a03173a3"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          }
        },
        "deprecated": false,
        "tags": ["recordings"],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      },
      "delete": {
        "summary": "recordings/:id",
        "description": "Delete a recording",
        "operationId": "DeleteRecording",
        "parameters": [
          {
            "name": "recording_id",
            "in": "path",
            "required": true,
            "style": "simple",
            "explode": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "deleted": {
                      "type": "boolean"
                    },
                    "id": {
                      "type": "string"
                    },
                    "s3_bucket": {
                      "type": "string"
                    },
                    "s3_region": {
                      "type": "string"
                    },
                    "s3_key": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Result": {
                    "value": {
                      "deleted": true,
                      "id": "0868d783-69c0-4556-b39e-0fbd6bf2bd45",
                      "s3_bucket": "daily-meeting-recordings",
                      "s3_region": "us-west-2",
                      "s3_key": "mydomain/raw-tracks/1234567890"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          }
        },
        "deprecated": false,
        "tags": ["recordings"],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/recordings/{recording_id}/access-link": {
      "get": {
        "summary": "recordings/:id/access-link",
        "description": "Generate an access link for a recording",
        "operationId": "GetRecordingLink",
        "parameters": [
          {
            "name": "recording_id",
            "in": "path",
            "required": true,
            "style": "simple",
            "explode": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "download_link": {
                      "type": "string",
                      "example": "https://daily-meeting-recordings.s3.us-west-2.amazonaws.com/api-demo/hello/1548790973821?AWSAccessKeyId=AKIAJVYA3B2F4672K3RQ&Expires=1548809176&Signature=xfSPW1kXksNriqmlm%2FT9hb%2Fq%2Bas%3D&response-content-disposition=attachment%3B%20filename%3D%22api-demo%2Fhello%2F1548790973821.webm%22"
                    },
                    "expires": {
                      "type": "integer",
                      "example": 1548809176,
                      "default": 0
                    }
                  }
                },
                "examples": {
                  "Result": {
                    "value": {
                      "download_link": "https://daily-meeting-recordings.s3.us-west-2.amazonaws.com/api-demo/hello/1548790973821?AWSAccessKeyId=AKIAJVYA3B2F4672K3RQ&Expires=1548809176&Signature=xfSPW1kXksNriqmlm%2FT9hb%2Fq%2Bas%3D&response-content-disposition=attachment%3B%20filename%3D%22api-demo%2Fhello%2F1548790973821.webm%22",
                      "expires": 1548809176
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          }
        },
        "deprecated": false,
        "tags": ["recordings"],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/transcript": {
      "get": {
        "summary": "/transcript",
        "description": "List transcripts",
        "operationId": "ListTranscript",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "ending_before",
            "in": "query",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "starting_after",
            "in": "query",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "roomId",
            "in": "query",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "mtgSessionId",
            "in": "query",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "total_count": {
                      "type": "integer",
                      "example": 3,
                      "default": 0
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "transcriptId": {
                            "type": "string",
                            "example": "0cb313e1-211f-4be0-833d-8c7305b19902",
                            "description": "A unique, opaque ID for this object. You can use this ID in API calls, and in paginated list operations."
                          },
                          "domainId": {
                            "type": "string",
                            "description": "The Id of the domain [domain](/reference/rest-api/domain)."
                          },
                          "roomId": {
                            "type": "string",
                            "example": "1a5afbf4-211f-4be0-833d-8c7305b19902",
                            "description": "The id of the room [room](/reference/rest-api/rooms)."
                          },
                          "mtgSessionId": {
                            "type": "string",
                            "example": "257764e6-c74e-4c30-944a-a887a03173a3",
                            "description": "The meeting session ID for this transcription."
                          },
                          "status": {
                            "type": "string",
                            "example": "t_finished",
                            "enum": [
                              "t_finished",
                              "t_in_progress",
                              "t_error",
                              "t_deleted"
                            ]
                          },
                          "isVttAvailable": {
                            "type": "boolean",
                            "example": true,
                            "description": "Whether the transcription has been stored in a WebVTT file. See [transcription storage](/docs/guides/features/transcription#storage)."
                          },
                          "duration": {
                            "type": "integer",
                            "example": 277,
                            "description": "How many seconds long the transcription is, approximately."
                          },
                          "created_at": {
                            "type": "string",
                            "format": "date-time",
                            "example": "2024-01-15T10:30:00.000Z",
                            "description": "When the transcript record was created (i.e. transcription started)."
                          },
                          "updated_at": {
                            "type": "string",
                            "format": "date-time",
                            "example": "2024-01-15T10:35:00.000Z",
                            "description": "When the transcript record was last updated."
                          }
                        }
                      }
                    }
                  }
                },
                "examples": {
                  "Result": {
                    "value": {
                      "total_count": 3,
                      "data": [
                        {
                          "transcriptId": "0cb313e1-211f-4be0-833d-8c7305b19902",
                          "domainId": "0cb313e1-211f-4be0-833d-8c7305b19902",
                          "roomId": "1a5afbf4-211f-4be0-833d-8c7305b19902",
                          "mtgSessionId": "257764e6-c74e-4c30-944a-a887a03173a3",
                          "status": "t_finished",
                          "duration": 277,
                          "created_at": "2024-01-15T10:30:00.000Z",
                          "updated_at": "2024-01-15T10:35:00.000Z"
                        },
                        {
                          "transcriptId": "257764e6-211f-4be0-833d-8c7305b19903",
                          "domainId": "0cb313e1-211f-4be0-833d-8c7305b19902",
                          "roomId": "1a5afbf4-211f-4be0-833d-8c7305b19902",
                          "mtgSessionId": "211f64e6-c74e-4c30-944a-a887a03173a3",
                          "status": "t_in_progress",
                          "duration": 21,
                          "created_at": "2024-01-15T10:28:00.000Z",
                          "updated_at": "2024-01-15T10:28:00.000Z"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          }
        },
        "deprecated": false,
        "tags": ["transcript"],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/transcript/{transcriptId}": {
      "get": {
        "summary": "transcript/:transcriptId",
        "description": "Get info about a Transcript",
        "operationId": "GetTranscriptInfo",
        "parameters": [
          {
            "name": "transcriptId",
            "in": "path",
            "required": true,
            "style": "simple",
            "explode": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "transcriptId": {
                      "type": "string",
                      "example": "0cb313e1-211f-4be0-833d-8c7305b19902",
                      "description": "A unique, opaque ID for this object. You can use this ID in API calls, and in paginated list operations."
                    },
                    "domainId": {
                      "type": "string",
                      "description": "The Id of the [domain](/reference/rest-api/domain)."
                    },
                    "roomId": {
                      "type": "string",
                      "example": "1a5afbf4-211f-4be0-833d-8c7305b19902",
                      "description": "The id of the [room](/reference/rest-api/rooms)."
                    },
                    "mtgSessionId": {
                      "type": "string",
                      "example": "257764e6-c74e-4c30-944a-a887a03173a3",
                      "description": "The meeting session ID for this transcription."
                    },
                    "status": {
                      "type": "string",
                      "example": "t_finished",
                      "enum": [
                        "t_finished",
                        "t_in_progress",
                        "t_error",
                        "t_deleted"
                      ]
                    },
                    "isVttAvailable": {
                      "type": "boolean",
                      "example": true,
                      "description": "Whether the transcription has been stored in a WebVTT file. See [transcription storage](/docs/guides/features/transcription#storage)."
                    },
                    "duration": {
                      "type": "integer",
                      "example": 277,
                      "description": "How many seconds long the transcription is, approximately."
                    },
                    "outParams": {
                      "description": "Object representing the storage location for the transcript if `transcription_bucket` is defined.",
                      "type": "object",
                      "properties": {
                        "s3key": {
                          "type": "string",
                          "example": "mydomain/test-recording-room/11245260397"
                        },
                        "bucket": {
                          "type": "string",
                          "example": "my-transcript-bucket"
                        },
                        "region": {
                          "type": "string",
                          "example": "us-west-2"
                        }
                      }
                    },
                    "error": {
                      "type": "string",
                      "example": "Failed to upload Vtt",
                      "description": "If `status` is `t_error`, this provide the description of the error, otherwise `null`."
                    },
                    "created_at": {
                      "type": "string",
                      "format": "date-time",
                      "example": "2024-01-15T10:30:00.000Z",
                      "description": "When the transcript record was created (i.e. transcription started)."
                    },
                    "updated_at": {
                      "type": "string",
                      "format": "date-time",
                      "example": "2024-01-15T10:35:00.000Z",
                      "description": "When the transcript record was last updated."
                    }
                  }
                },
                "examples": {
                  "Result": {
                    "value": {
                      "transcriptId": "0cb313e1-211f-4be0-833d-8c7305b19902",
                      "domainId": "0cb313e1-211f-4be0-833d-8c7305b19902",
                      "roomId": "1a5afbf4-211f-4be0-833d-8c7305b19902",
                      "mtgSessionId": "257764e6-c74e-4c30-944a-a887a03173a3",
                      "status": "t_finished",
                      "duration": 277,
                      "outParams": {
                        "key": "my-transcript.vtt",
                        "bucket": "my-transcript-bucket",
                        "region": "us-west-2"
                      },
                      "created_at": "2024-01-15T10:30:00.000Z",
                      "updated_at": "2024-01-15T10:35:00.000Z"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          }
        },
        "deprecated": false,
        "tags": ["transcript"],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      },
      "delete": {
        "summary": "transcript/:id",
        "description": "Delete a transcript",
        "operationId": "DeleteTranscript",
        "parameters": [
          {
            "name": "transcriptId",
            "in": "path",
            "required": true,
            "style": "simple",
            "explode": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "transcriptId": {
                      "type": "string",
                      "example": "0cb313e1-211f-4be0-833d-8c7305b19902",
                      "description": "A unique, opaque ID for this object. You can use this ID in API calls, and in paginated list operations."
                    },
                    "domainId": {
                      "type": "string",
                      "description": "The ID of the domain [domain](/reference/rest-api/domain)."
                    },
                    "roomId": {
                      "type": "string",
                      "example": "1a5afbf4-211f-4be0-833d-8c7305b19902",
                      "description": "The ID of the room [room](/reference/rest-api/rooms)."
                    },
                    "mtgSessionId": {
                      "type": "string",
                      "example": "257764e6-c74e-4c30-944a-a887a03173a3",
                      "description": "The meeting session ID for this transcription."
                    },
                    "status": {
                      "type": "string",
                      "example": "t_finished",
                      "enum": [
                        "t_finished",
                        "t_in_progress",
                        "t_error",
                        "t_deleted"
                      ]
                    },
                    "isVttAvailable": {
                      "type": "boolean",
                      "example": true,
                      "description": "Whether the transcription has been stored in a WebVTT file. See [transcription storage](/docs/guides/features/transcription#storage)."
                    },
                    "duration": {
                      "type": "integer",
                      "example": 277,
                      "description": "Transcription length in seconds"
                    },
                    "outParams": {
                      "description": "Object representing the storage location for the transcript if `transcription_bucket` is defined.",
                      "type": "object",
                      "properties": {
                        "s3key": {
                          "type": "string",
                          "example": "mydomain/test-recording-room/11245260397"
                        },
                        "bucket": {
                          "type": "string",
                          "example": "my-transcript-bucket"
                        },
                        "region": {
                          "type": "string",
                          "example": "us-west-2"
                        }
                      }
                    },
                    "created_at": {
                      "type": "string",
                      "format": "date-time",
                      "example": "2024-01-15T10:30:00.000Z",
                      "description": "When the transcript record was created (i.e. transcription started)."
                    }
                  }
                },
                "examples": {
                  "Result": {
                    "value": {
                      "transcriptId": "0cb313e1-211f-4be0-833d-8c7305b19902",
                      "domainId": "0cb313e1-211f-4be0-833d-8c7305b19902",
                      "roomId": "1a5afbf4-211f-4be0-833d-8c7305b19902",
                      "mtgSessionId": "257764e6-c74e-4c30-944a-a887a03173a3",
                      "status": "t_deleted",
                      "duration": 277,
                      "outParams": {
                        "key": "my-transcript.vtt",
                        "bucket": "my-transcript-bucket",
                        "region": "us-west-2"
                      },
                      "created_at": "2024-01-15T10:30:00.000Z"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          }
        },
        "deprecated": false,
        "tags": ["transcript"],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/transcript/{transcriptId}/access-link": {
      "get": {
        "summary": "transcript/:id/access-link",
        "description": "Generate an access link for a transcript",
        "operationId": "GetTranscriptLink",
        "parameters": [
          {
            "name": "transcriptId",
            "in": "path",
            "required": true,
            "style": "simple",
            "explode": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "transcriptId": {
                      "type": "string",
                      "example": "0cb313e1-211f-4be0-833d-8c7305b19902",
                      "description": "A unique, opaque ID for this object. You can use this ID in API calls, and in paginated list operations."
                    },
                    "link": {
                      "type": "string",
                      "example": "https://daily-meeting-transcripts.s3.us-west-2.amazonaws.com/api-demo/hello/1548790973821?AWSAccessKeyId=AKIAJVYA3B2F4672K3RQ&Expires=1548809176&Signature=xfSPW1kXksNriqmlm%2FT9hb%2Fq%2Bas%3D&response-content-disposition=attachment%3B%20filename%3D%22api-demo%2Fhello%2F1548790973821.webm%22"
                    },
                    "outParams": {
                      "description": "Object representing the storage location for the transcript if `transcription_bucket` is defined.",
                      "type": "object",
                      "properties": {
                        "s3key": {
                          "type": "string",
                          "example": "mydomain/test-recording-room/11245260397"
                        },
                        "bucket": {
                          "type": "string",
                          "example": "my-transcript-bucket"
                        },
                        "region": {
                          "type": "string",
                          "example": "us-west-2"
                        }
                      }
                    }
                  }
                },
                "examples": {
                  "Result": {
                    "value": {
                      "transcriptId": "0cb313e1-211f-4be0-833d-8c7305b19902",
                      "download_link": "https://daily-meeting-transcripts.s3.us-west-2.amazonaws.com/api-demo/hello/1548790973821?AWSAccessKeyId=AKIAJVYA3B2F4672K3RQ&Expires=1548809176&Signature=xfSPW1kXksNriqmlm%2FT9hb%2Fq%2Bas%3D&response-content-disposition=attachment%3B%20filename%3D%22api-demo%2Fhello%2F1548790973821.webm%22",
                      "outParams": {
                        "key": "my-transcript.vtt",
                        "bucket": "my-transcript-bucket",
                        "region": "us-west-2"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          }
        },
        "deprecated": false,
        "tags": ["transcript"],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/domain-dialin-config": {
      "get": {
        "summary": "/domain-dialin-config",
        "description": "List all the pinless_dialin and pin_dialin configs for the domain, with pagination",
        "operationId": "ListDomainDialinConfigs",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "ending_before",
            "in": "query",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "starting_after",
            "in": "query",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "phone_number",
            "in": "query",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "phone_numbers",
            "in": "query",
            "required": false,
            "style": "form",
            "explode": false,
            "description": "a comma separated list of phone numbers to filter by. The filter will match any phone number that contains the provided numbers as a substring (partial match).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sip_username",
            "in": "query",
            "required": false,
            "style": "form",
            "explode": true,
            "description": "The sip username associated with this dialin config (only the username part of the sip uri)",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "name_prefix",
            "in": "query",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "type",
            "in": "query",
            "required": false,
            "style": "form",
            "explode": true,
            "description": "The type of dialin config. It can be pinless_dialin or pin_dialin.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "total_count": {
                      "type": "integer",
                      "example": 3,
                      "default": 0
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "example": "0cb313e1-211f-4be0-833d-8c7305b19902",
                            "description": "A unique, opaque ID for this object. You can use this ID in API calls, and in paginated list operations."
                          },
                          "type": {
                            "type": "string",
                            "example": "pinless_dialin",
                            "description": "describe the type of configuration. It can be pinless_dialin or pin_dialin.",
                            "enum": ["pinless_dialin", "pin_dialin"]
                          },
                          "config": {
                            "$ref": "#/components/schemas/domain_dialin_config_create_req"
                          }
                        }
                      }
                    }
                  }
                },
                "examples": {
                  "Result": {
                    "value": {
                      "total_count": 2,
                      "data": [
                        {
                          "id": "bfd0c52b-3a2a-4269-80ce-cae9eef55536",
                          "type": "pinless_dialin",
                          "config": {
                            "sip_uri": "user--1739943585193@daily-<domainId>-stage-pinless-sip.dapp.signalwire.com",
                            "name_prefix": "new-api"
                          }
                        },
                        {
                          "id": "0cb313e1-211f-4be0-833d-8c7305b19902",
                          "type": "pin_dialin",
                          "config": {
                            "sip_uri": null,
                            "name_prefix": "new-api-pin",
                            "phone_number": "+12555599999"
                          }
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          }
        },
        "deprecated": false,
        "tags": ["domain-dialin-config"],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      },
      "post": {
        "summary": "create new config",
        "description": "create a new pinless_dialin or pin_dialin config",
        "operationId": "CreateDomainDialConfigInfo",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/domain_dialin_config_create_req"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The final dialin config for the id.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/domain_dialin_config_info_res"
                }
              }
            }
          },
          "400": {
            "description": "400",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "info": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Result": {
                    "value": {
                      "error": "invalid-request-error",
                      "info": "Failed to configure pin dialin: 12096181843 not associated with domain: your-domain"
                    }
                  }
                }
              }
            }
          }
        },
        "deprecated": false,
        "tags": ["domain-dialin-config"],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/domain-dialin-config/{id}": {
      "get": {
        "summary": "domain-dialin-config/:id",
        "description": "Get info about an existing pinless_dialin or pin_dialin config",
        "operationId": "GetDomainDialinConfigInfo",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "style": "simple",
            "explode": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/domain_dialin_config_info_res"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          }
        },
        "deprecated": false,
        "tags": ["domain-dialin-config"],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      },
      "put": {
        "summary": "domain-dialin-config/:id",
        "description": "update an existing pinless_dialin or pin_dialin config",
        "operationId": "UpdateDomainDialConfigInfo",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "style": "simple",
            "explode": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/domain_dialin_config_update_req"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/domain_dialin_config_info_res"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          }
        },
        "deprecated": false,
        "tags": ["domain-dialin-config"],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      },
      "delete": {
        "summary": "domain-dialin-config/:id",
        "description": "Delete a given pinless_dialin or pin_dialin config",
        "operationId": "DeleteDomainDialinConfig",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "style": "simple",
            "explode": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Result": {
                    "value": {
                      "status": "ok"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          }
        },
        "deprecated": false,
        "tags": ["domain-dialin-config"],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/webhooks": {
      "get": {
        "summary": "/webhooks",
        "description": "Get Webhooks",
        "operationId": "GetWebhooks",
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/webhook"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          }
        },
        "deprecated": false,
        "tags": ["webhooks"],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      },
      "post": {
        "summary": "/webhooks",
        "description": "Create a webhook",
        "operationId": "CreateWebhook",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/post_webhook"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/webhook"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          }
        },
        "deprecated": false,
        "tags": ["webhooks"],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/webhooks/{id}": {
      "get": {
        "summary": "webhooks/:id",
        "description": "Get info about a webhook",
        "operationId": "GetWebhookConfig",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "style": "simple",
            "explode": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/webhook"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          }
        },
        "deprecated": false,
        "tags": ["webhooks"],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      },
      "post": {
        "summary": "webhooks/:id",
        "description": "Update webhook config",
        "operationId": "UpdateWebhookConfig",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "style": "simple",
            "explode": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/update_webhook"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/webhook"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          }
        },
        "deprecated": false,
        "tags": ["webhooks"],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      },
      "delete": {
        "summary": "webhooks/:id",
        "description": "Delete a webhook",
        "operationId": "DeleteWebhook",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "style": "simple",
            "explode": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "200"
          },
          "400": {
            "$ref": "#/components/responses/400"
          }
        },
        "deprecated": false,
        "tags": ["webhooks"],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/meetings": {
      "get": {
        "summary": "/meetings",
        "description": "retrieve meeting analytics",
        "operationId": "GetMeetingInfo",
        "parameters": [
          {
            "name": "room",
            "in": "query",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "timeframe_start",
            "in": "query",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "timeframe_end",
            "in": "query",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "starting_after",
            "in": "query",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ending_before",
            "in": "query",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ongoing",
            "in": "query",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "no_participants",
            "in": "query",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "total_count": {
                      "type": "integer",
                      "description": "Total number of meetings matching the query."
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "description": "Unique meeting session ID."
                          },
                          "room": {
                            "type": "string",
                            "description": "The room name the meeting took place in."
                          },
                          "start_time": {
                            "type": "integer",
                            "description": "Unix timestamp of when the meeting started."
                          },
                          "duration": {
                            "type": "integer",
                            "description": "Duration of the meeting in seconds."
                          },
                          "ongoing": {
                            "type": "boolean",
                            "description": "Whether the meeting is currently in progress."
                          },
                          "max_participants": {
                            "type": "integer",
                            "description": "Peak number of simultaneous participants during the meeting."
                          },
                          "participants": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "user_id": {
                                  "type": "string",
                                  "nullable": true,
                                  "description": "The user ID if set on the meeting token, otherwise null."
                                },
                                "participant_id": {
                                  "type": "string",
                                  "description": "Unique participant session ID."
                                },
                                "user_name": {
                                  "type": "string",
                                  "nullable": true,
                                  "description": "Display name of the participant."
                                },
                                "join_time": {
                                  "type": "integer",
                                  "description": "Unix timestamp of when this participant joined."
                                },
                                "duration": {
                                  "type": "integer",
                                  "description": "How long this participant was in the meeting, in seconds."
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                },
                "examples": {
                  "Result": {
                    "value": {
                      "total_count": 42,
                      "data": [
                        {
                          "id": "aaaaaaaa-0000-0000-0000-000000000001",
                          "room": "my-room",
                          "start_time": 1774363859,
                          "duration": 600,
                          "ongoing": false,
                          "max_participants": 1,
                          "participants": [
                            {
                              "user_id": null,
                              "participant_id": "bbbbbbbb-0000-0000-0000-000000000001",
                              "user_name": "Alice",
                              "join_time": 1774363859,
                              "duration": 600
                            }
                          ]
                        },
                        {
                          "id": "aaaaaaaa-0000-0000-0000-000000000002",
                          "room": "my-room",
                          "start_time": 1774283912,
                          "duration": 187,
                          "ongoing": false,
                          "max_participants": 2,
                          "participants": [
                            {
                              "user_id": null,
                              "participant_id": "bbbbbbbb-0000-0000-0000-000000000002",
                              "user_name": "Alice",
                              "join_time": 1774283925,
                              "duration": 174
                            },
                            {
                              "user_id": null,
                              "participant_id": "bbbbbbbb-0000-0000-0000-000000000003",
                              "user_name": "Bob",
                              "join_time": 1774283912,
                              "duration": 179
                            }
                          ]
                        },
                        {
                          "id": "aaaaaaaa-0000-0000-0000-000000000003",
                          "room": "my-room",
                          "start_time": 1773860661,
                          "duration": 304,
                          "ongoing": false,
                          "max_participants": 2,
                          "participants": [
                            {
                              "user_id": "cccccccc-0000-0000-0000-000000000001",
                              "participant_id": "cccccccc-0000-0000-0000-000000000001",
                              "user_name": "Pipecat Bot",
                              "join_time": 1773860661,
                              "duration": 296
                            },
                            {
                              "user_id": null,
                              "participant_id": "bbbbbbbb-0000-0000-0000-000000000004",
                              "user_name": null,
                              "join_time": 1773860662,
                              "duration": 303
                            }
                          ]
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          }
        },
        "deprecated": false,
        "tags": ["meetings"],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/meetings/{meeting}": {
      "get": {
        "summary": "/meetings/:meeting",
        "description": "retrieve info about a particular meeting",
        "operationId": "GetIndividualMeetingInfo",
        "parameters": [
          {
            "name": "meeting",
            "in": "path",
            "description": "the ID of the meeting session",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/meetings_meeting-get-res"
                },
                "examples": {
                  "Result": {
                    "value": {
                      "id": "d61cd7b2-a273-42b4-89bd-be763fd562c1",
                      "room": "room-name",
                      "start_time": 1672606399,
                      "duration": 2055,
                      "ongoing": false,
                      "max_participants": 5
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          }
        },
        "deprecated": false,
        "tags": ["meetings"],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/meetings/{meeting}/participants": {
      "get": {
        "summary": "/meetings/:meeting/participants",
        "description": "retrieve info about the participants in a particular meeting",
        "operationId": "GetMeetingParticipants",
        "parameters": [
          {
            "name": "meeting",
            "in": "path",
            "description": "the ID of the meeting session",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "the largest number of participant records to return",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "joined_after",
            "in": "query",
            "description": "limit to participants who joined after the given participant, identified by `participant_id`",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "joined_before",
            "in": "query",
            "description": "limit to participants who joined before the given participant, identified by `participant_id`",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/meeting_participants-get-res"
                },
                "examples": {
                  "Result": {
                    "value": {
                      "data": [
                        {
                          "user_id": "4q47OTmqa/w=",
                          "participant_id": "d61cd7b2-a273-42b4-89bd-be763fd562c1",
                          "user_name": "Lindsey",
                          "join_time": 1672786813,
                          "duration": 150
                        },
                        {
                          "user_id": "pbZ+ismP7dk=",
                          "participant_id": "b3d56359-14d7-46af-ac8b-18f8c991f5f6",
                          "user_name": "Moishe",
                          "join_time": 1672786797,
                          "duration": 165
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          }
        },
        "deprecated": false,
        "tags": ["meetings"],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/logs": {
      "get": {
        "summary": "/logs",
        "operationId": "ListLogs",
        "parameters": [
          {
            "name": "includeLogs",
            "in": "query",
            "description": "If true, you get a \"logs\" array in the results",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "boolean",
              "default": true
            }
          },
          {
            "name": "includeMetrics",
            "in": "query",
            "description": "If true, results have \"metrics\" array",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "userSessionId",
            "in": "query",
            "description": "Filters by this user ID (aka \"participant ID\"). Required if `mtgSessionId` is not present in the request",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "mtgSessionId",
            "in": "query",
            "description": "Filters by this Session ID. Required if `userSessionId` is not present in the request",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "logLevel",
            "in": "query",
            "description": "Filters by the given log level name",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string",
              "enum": ["ERROR", "INFO", "DEBUG"]
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "ASC or DESC, case insensitive",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string",
              "default": "DESC"
            }
          },
          {
            "name": "startTime",
            "in": "query",
            "description": "A JS timestamp (ms since epoch in UTC)",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "endTime",
            "in": "query",
            "description": "A JS timestamp (ms since epoch), defaults to the current time",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Limit the number of logs and/or metrics returned",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "integer",
              "format": "i32",
              "default": 20
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip before returning results",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "integer",
              "format": "i32",
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "logs": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "time": {
                            "type": "string",
                            "format": "date-time"
                          },
                          "clientTime": {
                            "type": "string",
                            "format": "date-time"
                          },
                          "message": {
                            "type": "string"
                          },
                          "mtgSessionId": {
                            "type": "string"
                          },
                          "userSessionId": {
                            "type": "string"
                          },
                          "peerId": {
                            "type": "string",
                            "nullable": true
                          },
                          "domainName": {
                            "type": "string"
                          },
                          "level": {
                            "type": "integer"
                          },
                          "code": {
                            "type": "integer",
                            "nullable": true
                          }
                        }
                      }
                    }
                  }
                },
                "examples": {
                  "Result": {
                    "value": {
                      "logs": [
                        {
                          "time": "2026-03-23T16:32:55.473000000Z",
                          "clientTime": "2026-03-23T16:32:55.324000000Z",
                          "message": "disconnect on pagehide",
                          "mtgSessionId": "008c1f0f-6fc5-4e5f-b872-1b9623cb1e7a",
                          "userSessionId": "7a51a4b2-92cf-4ad2-b53b-9d01cc985a38",
                          "peerId": null,
                          "domainName": "your-domain",
                          "level": 2,
                          "code": 7991
                        },
                        {
                          "time": "2026-03-23T16:32:55.473000000Z",
                          "clientTime": "2026-03-23T16:32:55.324000000Z",
                          "message": "leaving session",
                          "mtgSessionId": "008c1f0f-6fc5-4e5f-b872-1b9623cb1e7a",
                          "userSessionId": "7a51a4b2-92cf-4ad2-b53b-9d01cc985a38",
                          "peerId": null,
                          "domainName": "your-domain",
                          "level": 1,
                          "code": 8000
                        },
                        {
                          "time": "2026-03-23T16:32:55.473000000Z",
                          "clientTime": "2026-03-23T16:32:54.338000000Z",
                          "message": "participant left",
                          "mtgSessionId": "008c1f0f-6fc5-4e5f-b872-1b9623cb1e7a",
                          "userSessionId": "7a51a4b2-92cf-4ad2-b53b-9d01cc985a38",
                          "peerId": "6436dbcb-f60a-48c4-90ca-4588f60f6fbc",
                          "domainName": "your-domain",
                          "level": 1,
                          "code": 8020
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "400",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "info": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Result": {
                    "value": {
                      "error": "invalid-request-error",
                      "info": "mtgSessionId or userSessionId is required"
                    }
                  }
                }
              }
            }
          }
        },
        "deprecated": false,
        "tags": ["logs"],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/logs/api": {
      "get": {
        "summary": "/logs/api",
        "operationId": "ListAPILogs",
        "parameters": [
          {
            "name": "starting_after",
            "description": "Given the log ID, will return all records after that ID. See [pagination docs](/docs/rest-api#pagination)",
            "in": "query",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ending_before",
            "description": "Given the log ID, will return all records before that ID. See [pagination docs](/docs/rest-api#pagination)",
            "in": "query",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Limit the number of logs and/or metrics returned",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "integer",
              "format": "i32",
              "default": 20
            }
          },
          {
            "name": "source",
            "in": "query",
            "description": "The source of the given logs, either `\"api\"` or `\"webhook\"`",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string",
              "default": "api"
            }
          },
          {
            "name": "url",
            "in": "query",
            "description": "Either the webhook server URL, or the API endpoint that was logged",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "An ID identifying the log that was generated."
                      },
                      "userId": {
                        "type": "string",
                        "description": "The user ID associated with the owner of the account."
                      },
                      "domainId": {
                        "type": "string",
                        "description": "The domain ID associated with this log statement."
                      },
                      "source": {
                        "type": "string",
                        "description": "The source of this log statement. This will be `\"api\"` or `\"webhook\"`."
                      },
                      "ip": {
                        "type": "string",
                        "description": "The originating IP address of this request."
                      },
                      "method": {
                        "type": "string",
                        "description": "The HTTP method used for this request."
                      },
                      "url": {
                        "type": "string",
                        "description": "The API route that was queried."
                      },
                      "status": {
                        "type": "integer",
                        "description": "The HTTP status code returned by the endpoint."
                      },
                      "createdAt": {
                        "type": "string",
                        "format": "date-time",
                        "description": "The timestamp representing when the record was created."
                      },
                      "request": {
                        "type": "string",
                        "nullable": true,
                        "description": "A JSON string representing the request body of this API request."
                      },
                      "response": {
                        "type": "string",
                        "nullable": true,
                        "description": "A JSON string representing the response body of this API request."
                      }
                    }
                  }
                },
                "examples": {
                  "Result": {
                    "value": [
                      {
                        "id": "aaaaaaaa-0000-0000-0000-000000000001",
                        "userId": "bbbbbbbb-0000-0000-0000-000000000001",
                        "domainId": "cccccccc-0000-0000-0000-000000000001",
                        "source": "api",
                        "ip": "203.0.113.10",
                        "method": "GET",
                        "url": "/v1/rooms",
                        "status": 200,
                        "createdAt": "2024-03-15T18:42:00.000Z",
                        "request": null,
                        "response": "{\"total_count\":3,\"data\":[{\"id\":\"room-1\",\"name\":\"hello\"},{\"id\":\"room-2\",\"name\":\"world\"},{\"id\":\"room-3\",\"name\":\"test\"}]}"
                      },
                      {
                        "id": "aaaaaaaa-0000-0000-0000-000000000002",
                        "userId": "bbbbbbbb-0000-0000-0000-000000000001",
                        "domainId": "cccccccc-0000-0000-0000-000000000001",
                        "source": "api",
                        "ip": "203.0.113.10",
                        "method": "POST",
                        "url": "/v1/rooms",
                        "status": 200,
                        "createdAt": "2024-03-15T18:41:30.000Z",
                        "request": "{\"name\":\"my-room\",\"properties\":{\"exp\":1710527690}}",
                        "response": "{\"id\":\"aaaaaaaa-0000-0000-0000-000000000099\",\"name\":\"my-room\",\"api_created\":true}"
                      },
                      {
                        "id": "aaaaaaaa-0000-0000-0000-000000000003",
                        "userId": "bbbbbbbb-0000-0000-0000-000000000001",
                        "domainId": "cccccccc-0000-0000-0000-000000000001",
                        "source": "api",
                        "ip": "203.0.113.10",
                        "method": "POST",
                        "url": "/v1/meeting-tokens",
                        "status": 400,
                        "createdAt": "2024-03-15T18:41:00.000Z",
                        "request": "{\"properties\":{\"room_name\":\"nonexistent-room\"}}",
                        "response": "{\"error\":\"invalid-request-error\",\"info\":\"room not found\"}"
                      }
                    ]
                  }
                }
              }
            }
          },
          "400": {
            "description": "400",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "info": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Result": {
                    "value": {
                      "info": "\"source\" must be one of [webhook, api] [Received source=\"api\"]\n",
                      "error": "invalid-request-error"
                    }
                  }
                }
              }
            }
          }
        },
        "deprecated": false,
        "tags": ["logs"],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/presence": {
      "get": {
        "summary": "/presence",
        "operationId": "GetPresence",
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "A map of room name to array of currently present participants.",
                  "additionalProperties": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "room": {
                          "type": "string",
                          "description": "The room name."
                        },
                        "id": {
                          "type": "string",
                          "description": "Unique participant session ID."
                        },
                        "userId": {
                          "type": "string",
                          "nullable": true,
                          "description": "The user ID if set on the meeting token, otherwise null."
                        },
                        "userName": {
                          "type": "string",
                          "nullable": true,
                          "description": "Display name of the participant."
                        },
                        "mtgSessionId": {
                          "type": "string",
                          "description": "The meeting session ID."
                        },
                        "joinTime": {
                          "type": "string",
                          "format": "date-time",
                          "description": "ISO 8601 timestamp of when this participant joined."
                        },
                        "duration": {
                          "type": "integer",
                          "description": "How long this participant has been in the meeting, in seconds."
                        }
                      }
                    }
                  },
                  "x-additionalPropertiesName": "room"
                },
                "examples": {
                  "Result": {
                    "value": {
                      "my-room": [
                        {
                          "room": "my-room",
                          "id": "aaaaaaaa-0000-0000-0000-000000000001",
                          "userId": null,
                          "userName": "Alice",
                          "mtgSessionId": "16e9701a-93e0-4933-83c9-223e7c40d552",
                          "joinTime": "2026-03-27T16:37:22.000Z",
                          "duration": 22
                        },
                        {
                          "room": "my-room",
                          "id": "aaaaaaaa-0000-0000-0000-000000000002",
                          "userId": null,
                          "userName": "Bob",
                          "mtgSessionId": "16e9701a-93e0-4933-83c9-223e7c40d552",
                          "joinTime": "2026-03-27T16:37:25.000Z",
                          "duration": 19
                        }
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "deprecated": false,
        "tags": ["presence"],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/batch/rooms": {
      "post": {
        "summary": "/batch/rooms",
        "description": "Create rooms in bulk",
        "operationId": "BatchRoomCreate",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "rooms": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "name": {
                          "type": "string"
                        },
                        "privacy": {
                          "type": "string"
                        },
                        "properties": {
                          "$ref": "#/components/schemas/room-properties"
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/rooms-room_name-get-res"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          }
        },
        "deprecated": false,
        "tags": ["batch/rooms"],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      },
      "delete": {
        "summary": "/batch/rooms",
        "description": "Delete rooms in bulk",
        "operationId": "BatchRoomDelete",
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "deleted_count": {
                      "type": "integer"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          }
        },
        "deprecated": false,
        "tags": ["batch/rooms"],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/list-available-numbers": {
      "get": {
        "summary": "/list-available-numbers",
        "x-paidPlan": "paid",
        "description": "Search for available phone numbers to purchase",
        "operationId": "ListAvailableNumbers",
        "parameters": [
          {
            "name": "areacode",
            "in": "query",
            "description": "An areacode to search within.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "region",
            "in": "query",
            "description": "A region or state to search within. Must be an ISO 3166-2 alpha-2 code, i.e. CA for California. Cannot be used in combination with areacode.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "city",
            "in": "query",
            "description": "A specific City to search within. Example, New York. The string must be url encoded because it is a url parameter. Must be used in combination with region. Cannot be used in combination with areacode, starts_with, contains, or ends_with.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "contains",
            "in": "query",
            "description": "A string of 3 to 7 digits that should appear somewhere in the number.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "starts_with",
            "in": "query",
            "description": "A string of 3 to 7 digits that should be used as the start of a number. Cannot be used in combination with contains or ends_with.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ends_with",
            "in": "query",
            "description": "A string of 3 to 7 digits that should be used as the end of a number. Cannot be used in combination with starts_with or contains.",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "examples": {
                  "Result": {
                    "value": {
                      "total_count": 6,
                      "data": [
                        {
                          "phoneNumber": "+13058700061",
                          "region": "FL"
                        },
                        {
                          "phoneNumber": "+13058700062",
                          "region": "FL"
                        },
                        {
                          "phoneNumber": "+13058700063",
                          "region": "FL"
                        },
                        {
                          "phoneNumber": "+13058700064",
                          "region": "FL"
                        },
                        {
                          "phoneNumber": "+13058700065",
                          "region": "FL"
                        },
                        {
                          "phoneNumber": "+13058700066",
                          "region": "FL"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "400 Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {}
                },
                "examples": {
                  "Result": {
                    "value": {
                      "error": "validation-error",
                      "info": "invalid path parameter"
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "500 Vendor Unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {}
                },
                "examples": {
                  "Result": {
                    "value": {
                      "error": "vendor-unavailable",
                      "info": "Phone number unavailable"
                    }
                  }
                }
              }
            }
          }
        },
        "deprecated": false,
        "tags": ["phone-numbers"],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/purchased-phone-numbers": {
      "get": {
        "summary": "/purchased-phone-numbers",
        "x-paidPlan": "paid",
        "description": "List the purchased phone numbers for this domain",
        "operationId": "PurchasedPhoneNumbers",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "ending_before",
            "in": "query",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "starting_after",
            "in": "query",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter_name",
            "in": "query",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter_number",
            "in": "query",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "examples": {
                  "Result": {
                    "value": {
                      "total_count": 2,
                      "data": [
                        {
                          "name": "Acme Enterprises",
                          "type": "purchased_phone_number",
                          "id": "85a70a9a-e22f-4a8d-8302-bbf1b88dd909",
                          "pagination_id": 3391,
                          "created_date": "2025-03-14T04:46:31.000Z",
                          "number": "+18058700061",
                          "status": "verified",
                          "verified": true
                        },
                        {
                          "name": "Acme Enterprises Dialin",
                          "type": "purchased_phone_number",
                          "id": "841d430e-bd9e-42c1-8abb-8f35d78b33b9",
                          "pagination_id": 3392,
                          "created_date": "2025-02-11T05:46:20.000Z",
                          "number": "+16575870006",
                          "status": "verified",
                          "verified": true
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          }
        },
        "deprecated": false,
        "tags": ["phone-numbers"],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/buy-phone-number": {
      "post": {
        "summary": "/buy-phone-number",
        "x-paidPlan": "paid",
        "description": "This will buy a phone number. In the POST request you can either provide the phone number you want to buy, or leave it empty. If the specified `number` is still available, it will be bought or the API will return a failure. Alternatively, if you skipped the `number` field, a random phone number from California (CA) will be bought.",
        "operationId": "BuyPhoneNumber",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "number": {
                    "type": "string",
                    "description": "The phone number to purchase, in E.164 format (e.g. \"+18058700061\"). If not provided, a random US number will be purchased.",
                    "example": "+18058700061"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {}
                },
                "examples": {
                  "Result": {
                    "value": {
                      "id": "85a70a9a-e22f-4a8d-8302-bbf1b88dd909",
                      "number": "+18058700061"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "422": {
            "description": "Unprocessable Entity",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "detail": {
                            "type": "string"
                          },
                          "status": {
                            "type": "string"
                          },
                          "title": {
                            "type": "string"
                          },
                          "code": {
                            "type": "string"
                          }
                        }
                      }
                    },
                    "status": {
                      "type": "integer"
                    }
                  }
                },
                "examples": {
                  "Result": {
                    "value": {
                      "errors": [
                        {
                          "detail": "Number is invalid.",
                          "status": "422",
                          "title": "Invalid Attribute",
                          "code": "422"
                        }
                      ],
                      "status": 422
                    }
                  }
                }
              }
            }
          }
        },
        "deprecated": false,
        "tags": ["phone-numbers"],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/release-phone-number/{id}": {
      "delete": {
        "summary": "release-phone-number/:id",
        "x-paidPlan": "paid",
        "description": "Release a purchased number. The number is referenced by its id. A number cannot be deleted within the 14 days of purchase. Calling this API before this period expires results in an error.",
        "operationId": "ReleasePhoneNumber",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "style": "simple",
            "explode": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Result": {
                    "value": {
                      "status": "ok"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "422": {
            "description": "Unprocessable Entity",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Result": {
                    "value": {
                      "error": "Failed to release new number, try again in 14 days"
                    }
                  }
                }
              }
            }
          }
        },
        "deprecated": false,
        "tags": ["phone-numbers"],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/dialin/pinlessCallUpdate": {
      "post": {
        "summary": "/dialin/pinlessCallUpdate",
        "description": "Direct a SIP or PSTN call on hold to a specified SIP URI associated to a Daily Room.",
        "operationId": "PinlessCallUpdate",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "callId": {
                    "type": "string",
                    "description": "CallId is represented by UUID and represents the sessionId in the SIP Network. This is obtained from the [webhook payload](/guides/features/dial-in-dial-out/sip-interconnect-pinless)."
                  },
                  "callDomain": {
                    "type": "string",
                    "description": "Call Domain is represented by UUID and represents your Daily Domain on the SIP Network. This is obtained from the [webhook payload](/guides/features/dial-in-dial-out/sip-interconnect-pinless)."
                  },
                  "sipUri": {
                    "type": "string",
                    "description": "This SIP URI is associated to the Daily Room that you want to forward the SIP Interconnect call to."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "examples": {
                  "Result": {
                    "value": {
                      "ok": "true"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          }
        },
        "deprecated": false,
        "tags": ["dialin"],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/": {
      "get": {
        "summary": "Get domain configuration",
        "description": "Get top-level configuration of your domain",
        "operationId": "GetDomainConfig",
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "examples": {
                  "Example Response": {
                    "value": {
                      "domain_name": "api-test-1",
                      "domain_id": "30f866c3-9123-452a-8723-ff58322d09c5",
                      "config": {
                        "redirect_on_meeting_exit": "",
                        "hide_daily_branding": false,
                        "hipaa": false,
                        "intercom_auto_record": false,
                        "lang": "en",
                        "meeting_join_hook": ""
                      }
                    }
                  }
                },
                "schema": {
                  "description": "",
                  "type": "object",
                  "x-examples": {
                    "example-1": {
                      "domain_name": "your-domain",
                      "domain_id": "8cbd738e1-6a95-47f1-a517-0a19s328a79",
                      "config": {
                        "hide_daily_branding": true,
                        "redirect_on_meeting_exit": "",
                        "meeting_join_hook": "",
                        "hipaa": false,
                        "intercom_auto_record": false,
                        "intercom_manual_record": "",
                        "sfu_impl": "s",
                        "sfu_switchover": null,
                        "switchover_impl": null,
                        "lang": null,
                        "max_api_rooms": null,
                        "webhook_meeting_end": null,
                        "recordings_bucket": null,
                        "max_live_streams": 20,
                        "max_streaming_instances_per_room": 1,
                        "enable_daily_logger": true,
                        "enable_prejoin_ui": true,
                        "enable_live_captions_ui": false,
                        "enable_network_ui": false,
                        "disable_rate_limiting": false,
                        "attach_callobject_to_window": false
                      }
                    }
                  },
                  "properties": {
                    "domain_name": {
                      "type": "string",
                      "minLength": 1
                    },
                    "domain_id": {
                      "type": "string",
                      "minLength": 1
                    },
                    "config": {
                      "type": "object",
                      "properties": {
                        "hide_daily_branding": {
                          "type": "boolean",
                          "description": "Whether \"Powered by Daily\" displays in the in-call UI."
                        },
                        "redirect_on_meeting_exit": {
                          "type": "string",
                          "description": "(For meetings that open in a separate browser tab.) When a user clicks on the in-call menu bar's \"leave meeting\" button, the browser loads this URL. A query string that includes a parameter of the form `recent-call=<domain>/<room>` is appended to the URL. On mobile, you can redirect to a deep link to bring a user back into your app."
                        },
                        "meeting_join_hook": {
                          "type": "string",
                          "description": "Sets a URL that will receive a webhook when a user joins a room.\n\n\u26a0\ufe0f In place of the `meeting_join_hook`, we recommend setting up a [webhook](/products/rest-api/webhooks) and listening for the [`participant.joined`](/products/rest-api/webhooks/events/participant-joined) event."
                        },
                        "hipaa": {
                          "type": "boolean",
                          "description": "Email us at help@daily.co to turn on HIPAA. Learn more about [our HIPAA compliance](https://www.daily.co/hipaa-compliance)."
                        },
                        "intercom_auto_record": {
                          "type": "boolean",
                          "description": "Whether to automatically start recording when an Intercom support agent joins an Intercom-created call. Please see our [Intercom Messenger App page](https://www.daily.co/intercom) for more information. \n\n\u26a0\ufe0fThis method is read-only; please contact us if you'd like to enable intercom call auto-recording."
                        },
                        "intercom_manual_record": {
                          "type": "string"
                        },
                        "sfu_impl": {
                          "type": "string",
                          "minLength": 1
                        },
                        "sfu_switchover": {
                          "type": "integer"
                        },
                        "switchover_impl": {
                          "type": "string"
                        },
                        "lang": {
                          "type": "string",
                          "description": "The default language for the video call UI, for all calls. \n\nIf you set the language at this domain level, you can still override the setting for specific rooms in [a room's configuration properties](/products/rest-api/rooms/config), or for a specific participant in a [meeting token](/products/rest-api/meeting-tokens/config). \n\nYou can also set the language dynamically using the front-end library [setDailyLang() method](/products/daily-js/instance-methods/set-daily-lang).\n\n`*` Norwegian `\"no\"` and Russian `\"ru\"` are only available in the new Daily Prebuilt."
                        },
                        "webhook_meeting_end": {
                          "type": "string"
                        },
                        "recordings_bucket": {
                          "type": "object",
                          "properties": {
                            "bucket_name": {
                              "type": "string"
                            },
                            "bucket_region": {
                              "type": "string"
                            }
                          }
                        },
                        "max_live_streams": {
                          "type": "number"
                        },
                        "max_streaming_instances_per_room": {
                          "type": "number"
                        },
                        "enable_daily_logger": {
                          "type": "boolean"
                        },
                        "enable_prejoin_ui": {
                          "type": "boolean",
                          "description": "Determines whether participants enter a waiting room with a camera, mic, and browser check before joining a call in any room under this domain. \n\n\u26a0\ufe0f You must be using [Daily Prebuilt](https://daily.co/blog/daily-prebuilt-video-chat) to use `enable_prejoin_ui`."
                        },
                        "enable_live_captions_ui": {
                          "type": "boolean",
                          "description": "Sets whether participants in a room see a closed captions button in their Daily Prebuilt call tray. When the closed caption button is clicked, closed captions are displayed locally.\n\nWhen set to `true`, a closed captions button appears in the call tray. When set to `false`, the closed captions button is hidden from the call tray.\n\nNote: Transcription must be enabled for the room or users must have permission to start transcription for this feature to be enabled. View the [transcription guide](/guides/products/transcription) for more details.\n\n\u26a0\ufe0f You must be using [Daily Prebuilt](https://daily.co/blog/daily-prebuilt-video-chat) to use `enable_live_captions_ui`."
                        },
                        "enable_network_ui": {
                          "type": "boolean",
                          "description": "Determines whether the network button, and the network panel it reveals on click, appears across all rooms belonging to this domain. \n\n\u26a0\ufe0f You must be using [Daily Prebuilt](https://daily.co/blog/daily-prebuilt-video-chat) to use `enable_network_ui`."
                        },
                        "disable_rate_limiting": {
                          "type": "boolean"
                        },
                        "attach_callobject_to_window": {
                          "type": "boolean"
                        },
                        "enable_raw_tracks_transcoded_audio": {
                          "type": "string",
                          "enum": ["aac", "wav", "wav-48k", "wav-48k-stereo", "wav-48k-mono", "wav-44k1", "wav-44k1-stereo", "wav-44k1-mono", ""],
                          "description": "Enable gapless transcoded audio for `raw-tracks` recordings in all rooms under this domain. When set, each participant's audio track is decoded, gaps (muted mic, idle periods, packet loss) are filled with silence, and the track is re-encoded as a continuous file. Affects audio tracks only; video tracks still record as `.webm`. A room value takes priority over this domain value.\n\nSupported values:\n\n* `aac`: AAC at 160 kbps, 48 kHz stereo, in an MP4 container.\n* `wav-48k-stereo` (aliases `wav` and `wav-48k`): 16-bit PCM WAV, 48 kHz stereo.\n* `wav-48k-mono`: 16-bit PCM WAV, 48 kHz mono.\n* `wav-44k1-stereo` (alias `wav-44k1`): 16-bit PCM WAV, 44.1 kHz stereo.\n* `wav-44k1-mono`: 16-bit PCM WAV, 44.1 kHz mono.\n\nLeave unset to keep the default Opus audio in a `.webm` container. See the [recording guide](/docs/guides/features/recording#gapless-transcoded-audio)."
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          }
        },
        "deprecated": false,
        "tags": ["domain"],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      },
      "post": {
        "summary": "Set domain configuration",
        "description": "Set top-level configuration options for your domain",
        "operationId": "SetDomainConfig",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/domain"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "examples": {
                  "Result": {
                    "value": {
                      "domain_name": "your-domain",
                      "config": {
                        "hide_daily_branding": false,
                        "hipaa": false,
                        "intercom_auto_record": false,
                        "lang": "es"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "deprecated": false,
        "tags": ["domain"],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    }
  },
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer"
      }
    },
    "responses": {
      "400": {
        "description": "400",
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "properties": {
                "error": {
                  "type": "string"
                },
                "info": {
                  "type": "string"
                }
              }
            },
            "examples": {
              "Result": {
                "value": {
                  "error": "invalid-request-error",
                  "info": "missing required field"
                }
              }
            }
          }
        }
      }
    },
    "schemas": {
      "geo": {
        "type": "string",
        "description": "Daily uses signaling servers to manage all of the participants in a given call session. In an SFU/server mode call, the server will send and receive all audio and video from each participant. In a peer-to-peer call, each participant sends media directly to and from each other peer, but a signaling server still manages call state.\n\nDaily runs servers in several different AWS regions to minimize latency for users around the world. The job of 'picking' a call server is handled when the first participant joins a room. The first participant's browser connects to a call server using Amazon's Route 53 DNS resolution, which chooses a server in the region closest to them.\n\nThis isn't always optimal. For example, if one person joins in London, and then ten more people join from Cape Town, the call will still be hosted out of `eu-west-2` . The majority of the participants will have higher latency to the server than if one of them had joined first and the call was being hosted in `af-south-1`. In cases like this, you may want to configure your domain (or a specific room) to always choose a call server in a specific AWS region.\n\nAvailable regions:\n- `\"af-south-1\"` (Cape Town)\n- `\"ap-northeast-2\"` (Seoul)\n- `\"ap-southeast-1\"` (Singapore)\n- `\"ap-southeast-2\"` (Sydney)\n- `\"ap-south-1\"` (Mumbai)\n- `\"eu-central-1\"` (Frankfurt)\n- `\"eu-west-2\"` (London)\n- `\"sa-east-1\"` (S\u00e3o Paulo)\n- `\"us-east-1\"` (N. Virginia)\n- `\"us-west-2\"` (Oregon)",
        "default": "NULL"
      },
      "rtmp_geo": {
        "type": "string",
        "default": "The closest available region to the SFU region used by the meeting.",
        "description": "Used to select the region where an RTMP stream should originate. In cases where RTMP streaming services aren't available in the desired region, we'll attempt to fall back to the default region based on the SFU being used for the meeting.\n\n  Available regions:\n  - `\"us-west-2\"` (Oregon)\n  - `\"eu-central-1\"` (Frankfurt)\n  - `\"ap-south-1\"` (Mumbai)\n\n  The default regions are grouped based on the SFU region like so:\n  - RTMP region `\"us-west-2\"` includes SFU regions: `\"us-west-2\"`, `\"us-east-1\"`, `\"sa-east-1\"`\n  - RTMP region `\"eu-central-1\"` includes SFU regions: `\"eu-central-1\"`, `\"eu-west-2\"`, `\"af-south-1\"`\n  - RTMP region `\"ap-south-1\"` includes SFU regions: `\"ap-southeast-1\"`, `\"ap-southeast-2\"`, `\"ap-northeast-2\"`, `\"ap-south-1\"`"
      },
      "disable_rtmp_geo_fallback": {
        "type": "boolean",
        "default": false,
        "description": "Disable the fall back behavior of rtmp_geo. When rtmp_geo is set, we first try to connect to a media server in desired region. If a media server is not available in the desired region, we fall back to default region based on SFU's region. This property disables this automatic fall back.\nWhen this property is set, we will trigger a recording/streaming error event when media worker is unavailable. Also, the client should retry recording/streaming."
      },
      "enable_terse_logging": {
        "type": "boolean",
        "description": "Reduces the volume of log messages. This feature should be enabled when there are more than 200 participants in a meeting to help improve performance.\n\nSee our [guides for supporting large experiences](/guides/scaling-calls) for additional instruction.",
        "default": false
      },
      "enable_transcription_storage": {
        "type": "boolean",
        "description": "Live transcriptions generated can be saved as WebVTT. This flag controls if transcription started with [`startTranscription()`](/products/daily-js/instance-methods/start-transcription) should be saved or not.",
        "default": false
      },
      "transcription_bucket": {
        "type": "object",
        "description": "Configures an S3 bucket in which to store transcriptions.\nSee the [S3 bucket guide](/guides/products/live-streaming-recording/storing-recordings-in-a-custom-s3-bucket) for more information.",
        "properties": {
          "bucket_name": {
            "type": "string",
            "description": "The name of the Amazon S3 bucket to use for transcription storage.",
            "example": "my-daily-recording"
          },
          "bucket_region": {
            "type": "string",
            "description": "The region which the specified S3 bucket is located in.",
            "example": "ap-south-1"
          },
          "assume_role_arn": {
            "type": "string",
            "description": "The Amazon Resource Name (ARN) of the role Daily should assume when storing the transcription in the specified bucket.",
            "example": "arn:aws:iam::555555555555:role/DailyS3AccessRole"
          },
          "allow_api_access": {
            "type": "boolean",
            "description": "Whether the transcription should be accessible using Daily's API."
          }
        }
      },
      "recordings_template": {
        "type": "string",
        "default": "{domain_name}/{room_name}/{epoch_time}.",
        "description": "Cloud recordings are stored in either Daily's S3 bucket or the customer's own S3 bucket. By default recordings are stored as `{domain_name}/{room_name}/{epoch_time}`. Sometimes, the use case may call for custom recording file names to be used (for example, if you'd like to enforce the presence of the .mp4 extension in the file name).\n\n`recordings_template` is made up of a replacement string with prefixes, suffixes, or both. The currently supported replacements are:\n  - `epoch_time`: The epoch time in milliseconds (mandatory)\n  - `domain_name`: Your Daily domain (optional)\n  - `room_name`: The name of the room which is getting recorded (optional)\n  - `mtg_session_id`: The ID of the meeting session which is getting recorded (optional)\n  - `instance_id`: The instance ID of the recording (optional)\n  - `recording_id`: The recording ID of the recording (optional)\n\n  The restrictions for defining a recording template are as follows:\n  - The `epoch_time` tag is mandatory to ensure the recording file name is unique under all conditions\n  - The maximum size of the template is 1024 characters\n  - Each replacement parameter should be placed within a curly bracket (e.g., `{domain_name}`)\n  - Only alphanumeric characters `(0-9, A-Z, a-z)` and `.`, `/`, `-`, `_` are valid within the template\n  - `.mp4` is the only valid extension\n\nExamples\n- Example domain: \"myDomain\"\n- Example room: \"myRoom\"\n\nExample 1:\n- Template: `myprefix-{domain_name}-{epoch_time}.mp4`\n- Resulting file name: `myprefix-myDomain-1675842936274.mp4`\n\nExample 2:\n- Template: `{room_name}/{instance_id}/{epoch_time}`\n- Resulting room name: `myRoom/d529cd2f-fbcc-4fb7-b2c0-c4995b1162b6/1675842936274`"
      },
      "transcription_template": {
        "type": "string",
        "default": "{domain_name}/{room_name}/{epoch_time}.vtt.",
        "description": "transcriptions can be stored in either Daily's S3 bucket or the customer's own S3 bucket. By default transcriptions are stored as `{domain_name}/{room_name}/{epoch_time}.vtt`. Sometimes, the use case may call for custom file path to be used (for example, if you'd like to map stored transcription to mtgSessionId).\n\n`transcription_template` is made up of a replacement string with prefixes, suffixes, or both. The currently supported replacements are:\n  - `epoch_time`: The epoch time in seconds (mandatory)\n  - `domain_name`: Your Daily domain (optional)\n  - `room_name`: The name of the room which is getting transcribed (optional)\n  - `mtg_session_id`: The ID of the meeting session which is getting transcribed (optional)\n  - `instance_id`: The instance ID of the transcription (optional)\n  - `transcript_id`: The transcript ID of the transcription (optional)\n\n  The restrictions for defining a transcription template are as follows:\n  - The `epoch_time` tag is mandatory to ensure the transcription file name is unique under all conditions\n  - The maximum size of the template is 1024 characters\n  - Each replacement parameter should be placed within a curly bracket (e.g., `{domain_name}`)\n  - Only alphanumeric characters `(0-9, A-Z, a-z)` and `.`, `/`, `-`, `_` are valid within the template\n\nExamples\n- Example domain: \"myDomain\"\n- Example room: \"myRoom\"\n\nExample 1:\n- Template: `myprefix-{domain_name}-{epoch_time}.mp4`\n- Resulting file name: `myprefix-myDomain-1675842936274.mp4`\n\nExample 2:\n- Template: `{room_name}/{instance_id}/{epoch_time}`\n- Resulting room name: `myRoom/d529cd2f-fbcc-4fb7-b2c0-c4995b1162b6/1675842936274`"
      },
      "enable_mesh_sfu": {
        "type": "boolean",
        "description": "Configures a room to use multiple SFUs for a call's media. This feature enables calls to scale to large sizes and to reduce latency between participants. It is recommended specifically for interactive live streaming.\n\nSee our [guide for interactive live streaming](/guides/scaling-calls/interactive-live-streaming-rtmp-output#daily-prebuilt-configurations-to-support-100-000-participants) for additional instruction."
      },
      "sfu_switchover": {
        "type": "number",
        "description": "Dictates the participant count after which room topology automatically switches from Peer-to-Peer (P2P) to Selective Forwarding Unit (SFU) mode, or vice versa.\n\nFor example, if `sfu_switchover` is set to `2` and the current network topology is P2P, the topology will switch to SFU mode when the _third_ participant joins the call. If the current topology is SFU, it will switch to P2P mode when the participant count decreases from `2` to `1`.\n\nWe recommend specifying an integer value for this property except for cases where you would like the room to switch to SFU mode as soon as the first participant joins. In this case, set `sfu_switchover` to `0.5`.\n\nSee our [guide about video call architecture](/guides/architecture-and-monitoring/intro-to-video-arch#the-architecture-of-a-room-p2p-vs-sfu-calls) for additional information.",
        "default": 0.5
      },
      "enable_adaptive_simulcast": {
        "type": "boolean",
        "description": "Configures a domain or room to use [Daily Adaptive Bitrate](/guides/building-additional-features/daily-adaptive-bitrate). When enabled, along with configuring the client to [`allowAdaptiveLayers`](/products/daily-js/instance-methods/update-send-settings#sendsettings), the Daily client will continually adapt send settings to the current network conditions. `allowAdaptiveLayers` is `true` by default; if you haven't modified that setting, then setting `enable_adaptive_simulcast` to `true` will enable Daily Adaptive Bitrate for 1:1 calls.",
        "default": true
      },
      "enforce_unique_user_ids": {
        "type": "boolean",
        "description": "Configures a domain or room to disallow multiple participants from having the same `user_id`. This feature can be enabled to prevent users from \"sharing\" meeting tokens. When enabled, a participant joining or reconnecting to a meeting will cause existing participants with the same user_id to be ejected.",
        "default": false
      },
      "recordings_bucket": {
        "type": "object",
        "description": "Configures an S3 bucket in which to store recordings.\nSee the [S3 bucket guide](/guides/products/live-streaming-recording/storing-recordings-in-a-custom-s3-bucket) for more information.\n\nProperties:",
        "properties": {
          "bucket_name": {
            "type": "string",
            "description": "The name of the Amazon S3 bucket to use for recording storage.",
            "example": "my-daily-recording"
          },
          "bucket_region": {
            "type": "string",
            "description": "The region which the specified S3 bucket is located in.",
            "example": "ap-south-1"
          },
          "assume_role_arn": {
            "type": "string",
            "description": "The Amazon Resource Name (ARN) of the role Daily should assume when storing the recording in the specified bucket.",
            "example": "arn:aws:iam::555555555555:role/DailyS3AccessRole"
          },
          "allow_api_access": {
            "type": "boolean",
            "description": "Controls whether the recording will be accessible using Daily's API."
          },
          "allow_streaming_from_bucket": {
            "type": "boolean",
            "description": "Specifies which [`Content-Disposition`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Disposition) response header the recording link retrieved from the [access-link](/products/rest-api/recordings/get-recording-link) REST API endpoint will have. If `allow_streaming_from_bucket` is `false`, the header will be `Content-Dispostion: attachment`. If `allow_streaming_from_bucket` is `true`, the header will be `Content-Disposition: inline`.\nTo play the recording link directly in the browser or embed it in a video player, set this property to `true`. Defaults to `false`"
          }
        }
      },
      "permissions": {
        "type": "object",
        "description": "Specifies the initial default permissions for a non-[meeting-owner](/guides/configurations-and-settings/controlling-who-joins-a-meeting#meeting-owner-privileges) participant joining a call.\n\nEach permission (i.e. each of the properties listed below) can be configured in the meeting token, the room, and/or the domain, in decreasing order of precedence.\n\nParticipant admins (those with the `'participants'` value in their `canAdmin` permission) can also change participants' permissions on the fly during a call using [`updateParticipant()`](/products/daily-js/instance-methods/update-participant#param-update-permissions) or [`updateParticipants()`](/products/daily-js/instance-methods/update-participants).",
        "properties": {
          "hasPresence": {
            "type": "boolean",
            "description": "Whether the participant appears as \"present\" in the call, i.e. whether they appear in [`participants()`](/products/daily-js/instance-methods/participants)."
          },
          "canSend": {
            "oneOf": [
              {
                "type": "boolean"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ],
            "description": "Which types of media a participant should be permitted to send.\n\nCan be:\n- An Array containing any of `'video'`, `'audio'`, `'screenVideo'`, and `'screenAudio'`\n- `true` (meaning \"all\")\n- `false` (meaning \"none\")"
          },
          "canReceive": {
            "type": "object",
            "description": "Which media the participant should be permitted to receive. \n\n[See here for `canReceive` object format](/products/daily-js/instance-methods/participants#permissionscanreceive-properties)."
          },
          "canAdmin": {
            "oneOf": [
              {
                "type": "boolean"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ],
            "description": "Which admin tasks a participant is permitted to do.\n\nCan be:\n- An array containing any of `'participants'`, `'streaming'`, or `'transcription'`\n- `true` (meaning \"all\")\n- `false` (meaning \"none\")"
          }
        }
      },
      "pinless_dialin": {
        "type": "array",
        "x-paidPlan": "paid",
        "deprecated": true,
        "description": "**Deprecated:** Use [domain dial-in config](/rest-api/domainDialinConfig) instead.\n\n[SIP Interconnect and Pinless Dialin](/guides/products/dial-in-dial-out/dialin-pinless#provisioning-sip-interconnect-and-pinless-dialin-workflow),i.e., without entering a PIN code when dialling a phone number or directly calling a Daily SIP Interconnect address. In this case you dont need a SIP address associated to a particular Daily Room. \n\nWhen a call comes in to this phone number or to the sip interconnect address, it will trigger a webhook, where you'll need to create the Daily room and forward the call to the `sipUri` assocaited to the newly created room. \n\nThe Pinless Dialin only works with purchased phone numbers, because the call is not intended for a particular Daily room. Read more details on our [dosc-site](/guides/products/dial-in-dial-out/dialin-pinless).",
        "items": {
          "type": "object",
          "properties": {
            "phone_number": {
              "type": "string",
              "description": "Associate a purchased phone number to the Pinless dialin workflow. Must be in E.164 format (e.g. \"+18058700061\")."
            },
            "room_creation_api": {
              "type": "string",
              "description": "The webhook URL to trigger when an incoming call arrives. Typically, you will need to spin-up a Daily meeting room and patch the incoming call to the room. Read more in the [pinless/sip interconnect guide](/guides/products/dial-in-dial-out/dialin-pinless#incoming-call-triggers-the-webhook)."
            },
            "name_prefix": {
              "type": "string",
              "description": "An identifier or name to associate to the workflow."
            },
            "sip_uri": {
              "type": "string",
              "description": "This is not a settable value, Daily returns the `sip_uri` in cases where you want to directly send the call to the SIP URI instead of the phone_number. If you dial in to the `phone_number` or this `sip_uri`, the [webhook will be triggered](/guides/products/dial-in-dial-out/dialin-pinless#incoming-call-triggers-the-webhook). "
            },
            "hold_music_url": {
              "type": "string",
              "description": "URL of the MP3 file to be played as hold music while the room is being created. The URL must be publicly accessible, and the file must be in MP3 format with a duration of less than 60 seconds."
            },
            "timeout_config": {
              "type": "object",
              "properties": {
                "message": {
                  "type": "string",
                  "description": "message to say if room could not be created within timeout of the hold_music. default message is \"there are no available agents to service your call\"."
                }
              }
            }
          }
        }
      },
      "pin_dialin": {
        "type": "array",
        "x-paidPlan": "paid",
        "deprecated": true,
        "description": "**Deprecated:** Use [domain dial-in config](/rest-api/domainDialinConfig) instead.\n\nDialin with a [PIN code](/guides/products/dial-in-dial-out/dialin-pin). This works with both the Global phone numbers and any number that you purchased. When a call comes into one of the phone numbers, the dialer must enter the PIN code. If the code is correct, the user will be connected to the Daily Room. Otherwise the incoming call will be disconnected if an incorrect PIN code is entered.",
        "items": {
          "type": "object",
          "properties": {
            "phone_number": {
              "type": "string",
              "description": "Associate a purchased phone number to the dialin with PIN workflow. Must be in E.164 format (e.g. \"+18058700061\")."
            },
            "name_prefix": {
              "type": "string",
              "description": "An identifier or name to associate to the workflow."
            },
            "ivr_greeting": {
              "type": "object",
              "properties": {
                "message": {
                  "type": "string",
                  "description": "message to \"Say\" when user call the phone_number."
                }
              }
            }
          }
        }
      },
      "domain": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "properties": {
            "type": "object",
            "properties": {
              "enable_advanced_chat": {
                "type": "boolean",
                "description": "Property that gives end users a richer chat experience. This includes:\n\n* Emoji reactions to chat messages\n* Emoji picker in the chat input form\n* Ability to send a Giphy chat message\n\n\u26a0\ufe0f This flag only applies to Daily Prebuilt. It has no effect when building custom video applications with the Daily call object.",
                "default": false
              },
              "enable_people_ui": {
                "type": "boolean",
                "default": true,
                "description": "Determines if [Daily Prebuilt](/guides/products/prebuilt) displays the People UI. When set to true, a People button in the call tray reveals a People tab in the call sidebar. The tab lists all participants, and next to each name indicates audio status and an option to pin the participant. When `enable_people_ui` is set to false, the button and tab are hidden.\n\n\u26a0\ufe0f Has no effect on custom calls built on the Daily [call object](/guides/products/call-object)."
              },
              "enable_cpu_warning_notifications": {
                "type": "boolean",
                "default": true,
                "description": "Determines if [Daily Prebuilt](/guides/products/prebuilt) displays CPU warning notifications. When set to true, snackbar notifications appear when high CPU usage is detected. When set to false, these notifications are hidden.\n\n\u26a0\ufe0f This flag only applies to Daily Prebuilt. It has no effect when building custom video applications with the Daily call object."
              },
              "enable_pip_ui": {
                "type": "boolean",
                "description": "Sets whether rooms for this domain can use [Daily Prebuilt](https://www.daily.co/prebuilt)'s Picture in Picture controls. When set to `true`, an additional button will be available in Daily Prebuilt's UI to toggle the Picture in Picture feature.\n\n\u26a0\ufe0f This flag only applies to Daily Prebuilt. It has no effect when building custom video applications with the Daily call object.",
                "default": false
              },
              "enable_emoji_reactions": {
                "type": "boolean",
                "description": "Determines if [Daily Prebuilt](https://www.daily.co/prebuilt) displays the Emoji Reactions UI. When set to `true`, a Reactions button appears in the call tray. This button allows users to select and send a reaction into the call. When set to `false`, the Reactions button is hidden and the feature is disabled.\n\nUsage: This feature is a good fit for meetings when a host or presenter would benefit from receiving nonverbal cues from the audience. It's also great to keep meetings fun.\n\n\u26a0\ufe0f This flag only applies to Daily Prebuilt. It has no effect when building custom video applications with the Daily call object.",
                "default": false
              },
              "enable_hand_raising": {
                "type": "boolean",
                "description": "Sets whether the participants in the room can use [Daily Prebuilt](https://www.daily.co/prebuilt)'s hand raising controls. When set to `true`, an additional button will be available in Daily Prebuilt's UI to toggle a hand raise.\n\n\u26a0\ufe0f This flag only applies to Daily Prebuilt. It has no effect when building custom video applications with the Daily call object.",
                "default": false
              },
              "enable_prejoin_ui": {
                "type": "boolean",
                "default": true,
                "description": "Determines whether participants enter a waiting room with a camera, mic, and browser check before joining a call in any room under this domain. \n\n\u26a0\ufe0f You must be using [Daily Prebuilt](https://daily.co/blog/daily-prebuilt-video-chat) to use `enable_prejoin_ui`."
              },
              "enable_breakout_rooms": {
                "type": "boolean",
                "default": false,
                "description": "Sets whether rooms for this domain have [Daily Prebuilt](https://www.daily.co/prebuilt)\u2019s breakout rooms feature enabled. When set to `true`, an owner in a Prebuilt call can create breakout rooms to divide participants into smaller, private groups. \n\n\u26a0\ufe0f You must be using [Daily Prebuilt](https://daily.co/blog/daily-prebuilt-video-chat) to use `enable_breakout_rooms`.\n\n\u26a0\ufe0f This property is in beta."
              },
              "enable_live_captions_ui": {
                "type": "boolean",
                "default": false,
                "description": "Sets whether participants in a room see a closed captions button in their Daily Prebuilt call tray. When the closed caption button is clicked, closed captions are displayed locally.\n\nWhen set to `true`, a closed captions button appears in the call tray. When set to `false`, the closed captions button is hidden from the call tray.\n\nNote: Transcription must be enabled for the room or users must have permission to start transcription for this feature to be enabled. View the [transcription guide](/guides/products/transcription) for more details.\n\n\u26a0\ufe0f You must be using [Daily Prebuilt](https://daily.co/blog/daily-prebuilt-video-chat) to use `enable_live_captions_ui`."
              },
              "enable_network_ui": {
                "type": "boolean",
                "default": false,
                "description": "Determines whether the network button, and the network panel it reveals on click, appears across all rooms belonging to this domain. \n\n\u26a0\ufe0f You must be using [Daily Prebuilt](https://daily.co/blog/daily-prebuilt-video-chat) to use `enable_network_ui`."
              },
              "enable_noise_cancellation_ui": {
                "type": "boolean",
                "default": true,
                "description": "Determines whether Daily Prebuilt displays noise cancellation controls. When set to `true`, a participant can enable microphone noise cancellation during a Daily Prebuilt call.\n\u26a0\ufe0f This flag only applies to Daily Prebuilt. It has no effect when building custom video applications with the Daily call object. To learn more about adding noise cancellation to a custom application, see the [`updateInputSettings()` docs](/products/daily-js/instance-methods/update-input-settings)."
              },
              "enable_video_processing_ui": {
                "type": "boolean",
                "default": true,
                "description": "Determines whether Daily Prebuilt displays background blur controls. When set to `true`, a participant can enable blur during a Daily Prebuilt call. \n\n\u26a0\ufe0f This flag only applies to Daily Prebuilt. It has no effect when building custom video applications with the Daily call object."
              },
              "hide_daily_branding": {
                "type": "boolean",
                "default": false,
                "x-paidPlan": "paid",
                "description": "Whether \"Powered by Daily\" displays in the in-call UI."
              },
              "redirect_on_meeting_exit": {
                "type": "string",
                "description": "(For meetings that open in a separate browser tab.) When a user clicks on the in-call menu bar's \"leave meeting\" button, the browser loads this URL. A query string that includes a parameter of the form `recent-call=<domain>/<room>` is appended to the URL. On mobile, you can redirect to a deep link to bring a user back into your app."
              },
              "hipaa": {
                "type": "boolean",
                "default": false,
                "description": "Email us at help@daily.co to turn on HIPAA. Learn more about [our HIPAA compliance](https://www.daily.co/hipaa-compliance).",
                "x-paidPlan": "addon"
              },
              "intercom_auto_record": {
                "type": "boolean",
                "description": "Whether to automatically start recording when an Intercom support agent joins an Intercom-created call. Please see our [Intercom Messenger App page](https://www.daily.co/intercom) for more information. \n\n\u26a0\ufe0fThis method is read-only; please contact us if you'd like to enable intercom call auto-recording."
              },
              "lang": {
                "type": "string",
                "enum": [
                  "da",
                  "de",
                  "en",
                  "es",
                  "fi",
                  "fr",
                  "it",
                  "jp",
                  "ka",
                  "nl",
                  "no",
                  "pt",
                  "pt-BR",
                  "pl",
                  "ru",
                  "sv",
                  "tr",
                  "user"
                ],
                "default": "en",
                "description": "The default language for the video call UI, for all calls. \n\nIf you set the language at this domain level, you can still override the setting for specific rooms in [a room's configuration properties](/products/rest-api/rooms/config), or for a specific participant in a [meeting token](/products/rest-api/meeting-tokens/config). \n\nYou can also set the language dynamically using the front-end library [setDailyLang() method](/products/daily-js/instance-methods/set-daily-lang).\n\n`*` Norwegian `\"no\"` and Russian `\"ru\"` are only available in the new Daily Prebuilt."
              },
              "meeting_join_hook": {
                "type": "string",
                "description": "Sets a URL that will receive a webhook when a user joins a room.\n\n\u26a0\ufe0f In place of the `meeting_join_hook`, we recommend setting up a [webhook](/products/rest-api/webhooks) and listening for the [`participant.joined`](/products/rest-api/webhooks/events/participant-joined) event.",
                "default": "NULL"
              },
              "geo": {
                "$ref": "#/components/schemas/geo"
              },
              "rtmp_geo": {
                "$ref": "#/components/schemas/rtmp_geo"
              },
              "disable_rtmp_geo_fallback": {
                "$ref": "#/components/schemas/disable_rtmp_geo_fallback"
              },
              "enable_terse_logging": {
                "$ref": "#/components/schemas/enable_terse_logging"
              },
              "enable_transcription_storage": {
                "$ref": "#/components/schemas/enable_transcription_storage"
              },
              "transcription_bucket": {
                "$ref": "#/components/schemas/transcription_bucket"
              },
              "recordings_template": {
                "$ref": "#/components/schemas/recordings_template"
              },
              "transcription_template": {
                "$ref": "#/components/schemas/transcription_template"
              },
              "enable_mesh_sfu": {
                "$ref": "#/components/schemas/enable_mesh_sfu"
              },
              "sfu_switchover": {
                "$ref": "#/components/schemas/sfu_switchover"
              },
              "enable_adaptive_simulcast": {
                "$ref": "#/components/schemas/enable_adaptive_simulcast"
              },
              "enable_multiparty_adaptive_simulcast": {
                "$ref": "#/components/schemas/enable_multiparty_adaptive_simulcast"
              },
              "enforce_unique_user_ids": {
                "$ref": "#/components/schemas/enforce_unique_user_ids"
              },
              "recordings_bucket": {
                "$ref": "#/components/schemas/recordings_bucket"
              },
              "permissions": {
                "$ref": "#/components/schemas/permissions",
                "default": "{ canSend: true, canReceive: { base: true }, hasPresence: true, canAdmin: false }"
              },
              "batch_processor_bucket": {
                "type": "object",
                "description": "Defines a custom S3 bucket where the batch processor will write its output"
              },
              "enable_opus_fec": {
                "type": "boolean",
                "description": "Enables the use of Opus in-band FEC (Forward Error Correction) when encoding audio to send, where possible. This can make audio quality more resilient to packet loss."
              },
              "pinless_dialin": {
                "$ref": "#/components/schemas/pinless_dialin"
              },
              "pin_dialin": {
                "$ref": "#/components/schemas/pin_dialin"
              },
              "enable_raw_tracks_transcoded_audio": {
                "type": "string",
                "enum": ["aac", "wav", "wav-48k", "wav-48k-stereo", "wav-48k-mono", "wav-44k1", "wav-44k1-stereo", "wav-44k1-mono", ""],
                "description": "Enable gapless transcoded audio for `raw-tracks` recordings in all rooms under this domain. When set, each participant's audio track is decoded, gaps (muted mic, idle periods, packet loss) are filled with silence, and the track is re-encoded as a continuous file. Affects audio tracks only; video tracks still record as `.webm`. A room value takes priority over this domain value.\n\nSupported values:\n\n* `aac`: AAC at 160 kbps, 48 kHz stereo, in an MP4 container.\n* `wav-48k-stereo` (aliases `wav` and `wav-48k`): 16-bit PCM WAV, 48 kHz stereo.\n* `wav-48k-mono`: 16-bit PCM WAV, 48 kHz mono.\n* `wav-44k1-stereo` (alias `wav-44k1`): 16-bit PCM WAV, 44.1 kHz stereo.\n* `wav-44k1-mono`: 16-bit PCM WAV, 44.1 kHz mono.\n\nLeave unset to keep the default Opus audio in a `.webm` container. See the [recording guide](/docs/guides/features/recording#gapless-transcoded-audio)."
              }
            }
          }
        }
      },
      "enable_multiparty_adaptive_simulcast": {
        "type": "boolean",
        "description": "Configures a domain or room to use [Daily Adaptive Bitrate](/guides/building-additional-features/daily-adaptive-bitrate). When enabled, along with configuring the client to [`allowAdaptiveLayers`](/products/daily-js/instance-methods/update-send-settings#sendsettings), the Daily client will continually adapt send settings to the current network conditions. `allowAdaptiveLayers` is `true` by default; if you haven't modified that setting, then setting `enable_multiparty_adaptive_simulcast` to `true` will enable Daily Adaptive Bitrate for multi-party calls. To use this feature, `enable_adaptive_simulcast` must also be set to `true`.",
        "default": false
      },
      "auto_transcription_settings": {
        "type": "object",
        "example": {
          "language": "de"
        },
        "x-paidPlan": "paid",
        "description": "Options to use when `auto_start_transcription` is true. See [`startTranscription()`](/products/daily-js/instance-methods/start-transcription) for available options."
      },
      "room-properties": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "nbf": {
            "type": "integer",
            "format": "int32",
            "description": "\"Not before\". This is a [unix timestamp](https://stackoverflow.com/questions/20822821/what-is-a-unix-timestamp-and-why-use-it) (seconds since the epoch.) Users cannot join a meeting in this room before this time."
          },
          "exp": {
            "type": "integer",
            "format": "int32",
            "description": "\"Expires\". This is a unix timestamp (seconds since the epoch.) Users cannot join a meeting in this room after this time.\n\nMore resources:\n- [Add advanced security to video chats with the Daily API](https://www.daily.co/blog/add-advanced-security-features-to-video-chats-with-the-daily-api/)"
          },
          "max_participants": {
            "type": "integer",
            "format": "int32",
            "description": "How many people are allowed in a room at the same time.\n\n\u26a0\ufe0f [Contact us](https://www.daily.co/contact) if you need to set the limit above 200.",
            "x-paidPlan": "paid",
            "default": 200
          },
          "enable_people_ui": {
            "type": "boolean",
            "description": "Determines if [Daily Prebuilt](/guides/products/prebuilt) displays the People UI. When set to true, a People button in the call tray reveals a People tab in the call sidebar. The tab lists all participants, and next to each name indicates audio status and an option to pin the participant. When `enable_people_ui` is set to false, the button and tab are hidden.\n\n\u26a0\ufe0f Has no effect on custom calls built on the Daily [call object](/guides/products/call-object)."
          },
          "enable_cpu_warning_notifications": {
            "type": "boolean",
            "description": "Determines if [Daily Prebuilt](/guides/products/prebuilt) displays CPU warning notifications. When set to true, snackbar notifications appear when high CPU usage is detected. When set to false, these notifications are hidden.\n\n\u26a0\ufe0f This flag only applies to Daily Prebuilt. It has no effect when building custom video applications with the Daily call object."
          },
          "enable_pip_ui": {
            "type": "boolean",
            "description": "Sets whether the room can use [Daily Prebuilt](https://www.daily.co/prebuilt)'s Picture in Picture controls. When set to `true`, an additional button will be available in Daily Prebuilt's UI to toggle the Picture in Picture feature.\n\n\u26a0\ufe0f This flag only applies to Daily Prebuilt. It has no effect when building custom video applications with the Daily call object."
          },
          "enable_emoji_reactions": {
            "type": "boolean",
            "description": "Determines if [Daily Prebuilt](https://www.daily.co/prebuilt) displays the Emoji Reactions UI. When set to `true`, a Reactions button appears in the call tray. This button allows users to select and send a reaction into the call. When set to `false`, the Reactions button is hidden and the feature is disabled.\n\nUsage: This feature is a good fit for meetings when a host or presenter would benefit from receiving nonverbal cues from the audience. It's also great to keep meetings fun.\n\n\u26a0\ufe0f This flag only applies to Daily Prebuilt. It has no effect when building custom video applications with the Daily call object."
          },
          "enable_hand_raising": {
            "type": "boolean",
            "description": "Sets whether the participants in the room can use [Daily Prebuilt](https://www.daily.co/prebuilt)'s hand raising controls. When set to `true`, an additional button will be available in Daily Prebuilt's UI to toggle a hand raise.\n\n\u26a0\ufe0f This flag only applies to Daily Prebuilt. It has no effect when building custom video applications with the Daily call object."
          },
          "enable_prejoin_ui": {
            "type": "boolean",
            "description": "Determines whether participants enter a waiting room with a camera, mic, and browser check before joining a call.\n\n\u26a0\ufe0f You must be using [Daily Prebuilt](https://daily.co/prebuilt) to use `enable_prejoin_ui`."
          },
          "enable_live_captions_ui": {
            "type": "boolean",
            "description": "Sets whether participants in a room see a closed captions button in their Daily Prebuilt call tray. When the closed caption button is clicked, closed captions are displayed locally.\n\nWhen set to `true`, a closed captions button appears in the call tray. When set to `false`, the closed captions button is hidden from the call tray.\n\nNote: Transcription must be enabled for the room or users must have permission to start transcription for this feature to be enabled. View the [transcription guide](/guides/products/transcription) for more details.\n\n\u26a0\ufe0f You must be using [Daily Prebuilt](https://daily.co/blog/daily-prebuilt-video-chat) to use `enable_live_captions_ui`."
          },
          "enable_network_ui": {
            "type": "boolean",
            "description": "Determines whether the network button, and the network panel it reveals on click, appears in this room.\n\n\u26a0\ufe0f You must be using [Daily Prebuilt](https://daily.co/prebuilt) to use `enable_network_ui`."
          },
          "enable_noise_cancellation_ui": {
            "type": "boolean",
            "description": "Determines whether Daily Prebuilt displays noise cancellation controls. When set to `true`, a participant can enable microphone noise cancellation during a Daily Prebuilt call.\n\u26a0\ufe0f This flag only applies to [Daily Prebuilt](https://daily.co/prebuilt). It has no effect when building custom video applications with the Daily call object. To learn more about adding noise cancellation to a custom application, see the [`updateInputSettings()` docs](/products/daily-js/instance-methods/update-input-settings)."
          },
          "enable_breakout_rooms": {
            "type": "boolean",
            "description": "Sets whether [Daily Prebuilt](https://www.daily.co/prebuilt)\u2019s breakout rooms feature is enabled. When set to `true`, an owner in a Prebuilt call can create breakout rooms to divide participants into smaller, private groups. \n\n\u26a0\ufe0f You must be using [Daily Prebuilt](https://daily.co/blog/daily-prebuilt-video-chat) to use `enable_breakout_rooms`.\n\n\u26a0\ufe0f This property is in beta."
          },
          "enable_knocking": {
            "type": "boolean",
            "description": "Turns on a lobby experience for private rooms. A participant without a corresponding [meeting token](/products/rest-api/meeting-tokens/config) can request to be admitted to the meeting with a \"knock\", and wait for the meeting owner to admit them."
          },
          "enable_screenshare": {
            "type": "boolean",
            "default": true,
            "description": "Sets whether users in a room can screen share during a session. This property cannot be changed after a session starts. For dynamic control over permissions, use the [`updateParticipant()`](/reference/daily-js/instance-methods/update-participant#param-update-permissions) method to control user permissions."
          },
          "enable_video_processing_ui": {
            "type": "boolean",
            "default": true,
            "description": "Determines whether Daily Prebuilt displays background blur controls. When set to `true`, a participant can enable blur during a Daily Prebuilt call.\n\n\u26a0\ufe0f This flag only applies to Daily Prebuilt. It has no effect when building custom video applications with the Daily call object."
          },
          "enable_chat": {
            "type": "boolean",
            "default": false,
            "description": "This property is one of [multiple ways to add chat to Daily video calls](https://www.daily.co/blog/three-ways-to-add-chat-to-your-video-calls-with-the-daily-api/)."
          },
          "enable_shared_chat_history": {
            "type": "boolean",
            "default": true,
            "description": "When enabled, newly joined participants in Prebuilt calls will request chat history from remote peers, in order to view chat messages from before they joined."
          },
          "start_video_off": {
            "type": "boolean",
            "default": false,
            "description": "Disable the default behavior of automatically turning on a participant's camera on a direct `join()` (i.e. without `startCamera()` first)."
          },
          "start_audio_off": {
            "type": "boolean",
            "default": false,
            "description": "Disable the default behavior of automatically turning on a participant's microphone on a direct `join()` (i.e. without `startCamera()` first)."
          },
          "enable_recording": {
            "description": "Jump to [recording docs](/products/rest-api/recordings).",
            "oneOf": [
              {
                "type": "string",
                "enum": ["cloud", "cloud-audio-only", "local", "raw-tracks"]
              },
              {
                "type": "array",
                "uniqueItems": true,
                "items": {
                  "type": "string",
                  "enum": ["cloud", "cloud-audio-only", "local", "raw-tracks"]
                }
              }
            ]
          },
          "enable_raw_tracks_transcoded_audio": {
            "type": "string",
            "enum": ["aac", "wav", "wav-48k", "wav-48k-stereo", "wav-48k-mono", "wav-44k1", "wav-44k1-stereo", "wav-44k1-mono", ""],
            "description": "Enable gapless transcoded audio for `raw-tracks` recordings. When set, each participant's audio track is decoded, gaps (muted mic, idle periods, packet loss) are filled with silence, and the track is re-encoded as a continuous file. Affects audio tracks only; video tracks still record as `.webm`. Can be set on a room or domain, and a room value takes priority over the domain value.\n\nSupported values:\n\n* `aac`: AAC at 160 kbps, 48 kHz stereo, in an MP4 container.\n* `wav-48k-stereo` (aliases `wav` and `wav-48k`): 16-bit PCM WAV, 48 kHz stereo.\n* `wav-48k-mono`: 16-bit PCM WAV, 48 kHz mono.\n* `wav-44k1-stereo` (alias `wav-44k1`): 16-bit PCM WAV, 44.1 kHz stereo.\n* `wav-44k1-mono`: 16-bit PCM WAV, 44.1 kHz mono.\n\nLeave unset to keep the default Opus audio in a `.webm` container. See the [recording guide](/docs/guides/features/recording#gapless-transcoded-audio)."
          },
          "eject_at_room_exp": {
            "type": "boolean",
            "default": false,
            "description": "If there's a meeting going on at room `exp` time, end the meeting by kicking everyone out. This behavior can be overridden by setting `eject` properties of a [meeting token](/products/rest-api/meeting-tokens)."
          },
          "eject_after_elapsed": {
            "type": "integer",
            "format": "int32",
            "description": "Eject a meeting participant this many seconds after the participant joins the meeting. You can use this is a default length limit to prevent long meetings. This can be overridden by setting `eject` properties of a [meeting token](/products/rest-api/meeting-tokens)."
          },
          "enable_advanced_chat": {
            "type": "boolean",
            "description": "Property that gives end users a richer chat experience. This includes:\n\n* Emoji reactions to chat messages\n* Emoji picker in the chat input form\n* Ability to send a Giphy chat message\n\n\u26a0\ufe0f This flag only applies to Daily Prebuilt. It has no effect when building custom video applications with the Daily call object.",
            "default": false
          },
          "enable_hidden_participants": {
            "type": "boolean",
            "description": "When enabled, non-owner users join a meeting with a hidden presence, meaning they won't appear as a named participant in the meeting and have no [participant events](/reference/daily-js/events/participant-events) associated to them. Additionally, these participants can _only_ receive media tracks from owner participants.\n\nHidden participants can be tracked using the [`participantCounts()`](/products/daily-js/instance-methods/participant-counts) method. Hidden participants do _not_ have entries in the [`participants()`](/products/daily-js/instance-methods/participants) method return value.\n\nWhen used with [Daily Prebuilt](/guides/products/prebuilt), hidden participants are included in the participant count available in the UI; however, are _not_ included in the People panel and can only read chat messages.\n\nThis property should be used to support hosting large meetings. See our [guide on interactive live streaming](/guides/scaling-calls/interactive-live-streaming-rtmp-output#interactive-live-streaming-up-to-100-000-participants) for additional instruction.",
            "default": false
          },
          "enable_mesh_sfu": {
            "$ref": "#/components/schemas/enable_mesh_sfu"
          },
          "sfu_switchover": {
            "$ref": "#/components/schemas/sfu_switchover"
          },
          "enable_adaptive_simulcast": {
            "$ref": "#/components/schemas/enable_adaptive_simulcast"
          },
          "enable_multiparty_adaptive_simulcast": {
            "$ref": "#/components/schemas/enable_multiparty_adaptive_simulcast"
          },
          "enforce_unique_user_ids": {
            "$ref": "#/components/schemas/enforce_unique_user_ids"
          },
          "experimental_optimize_large_calls": {
            "type": "boolean",
            "description": "Enables Daily Prebuilt to support group calls of over 1,000 participants.\n\nWhen set to true, Daily Prebuilt will:\n- Automatically mute the local user on joining\n- Update grid view to show a maximum of 12 users in the grid at a time\n- Allow only 16 users to be unmuted at the same time. When more than 16 users are unmuted, the oldest active speaker will be automatically muted.\n\nSee our [guide on large real-time calls](/guides/scaling-calls/large-real-time-calls) for additional instruction.\n\n\u26a0\ufe0f This flag only applies to Daily Prebuilt. It has no effect when building custom video applications with the Daily call object."
          },
          "lang": {
            "type": "string",
            "description": "The default language of the [Daily prebuilt video call UI](/guides/products/prebuilt#daily-prebuilt-ui), for this room.\n\nSetting the language at the room level will override any domain-level language settings you have.\n\n`*` Norwegian `\"no\"` and Russian `\"ru\"` are only available in the new Daily Prebuilt.\n\nSee [language settings](/products/prebuilt/language) for all supported values and priority order.",
            "enum": [
              "da",
              "de",
              "en",
              "es",
              "fi",
              "fr",
              "it",
              "jp",
              "ka",
              "nl",
              "no",
              "pt",
              "pt-BR",
              "pl",
              "ru",
              "sv",
              "tr",
              "user"
            ],
            "default": "en"
          },
          "meeting_join_hook": {
            "type": "string",
            "description": "Sets a URL that will receive a webhook when a user joins a room. Default is NULL. Character limit for webhook URL is 255.\n\n\u26a0\ufe0f In place of the `meeting_join_hook`, we recommend setting up a [webhook](/products/rest-api/webhooks) and listening for the [`participant.joined`](/products/rest-api/webhooks/events/participant-joined) event."
          },
          "geo": {
            "$ref": "#/components/schemas/geo"
          },
          "rtmp_geo": {
            "$ref": "#/components/schemas/rtmp_geo"
          },
          "disable_rtmp_geo_fallback": {
            "$ref": "#/components/schemas/disable_rtmp_geo_fallback"
          },
          "recordings_bucket": {
            "$ref": "#/components/schemas/recordings_bucket"
          },
          "enable_terse_logging": {
            "$ref": "#/components/schemas/enable_terse_logging"
          },
          "auto_transcription_settings": {
            "$ref": "#/components/schemas/auto_transcription_settings"
          },
          "enable_transcription_storage": {
            "$ref": "#/components/schemas/enable_transcription_storage"
          },
          "transcription_bucket": {
            "$ref": "#/components/schemas/transcription_bucket"
          },
          "recordings_template": {
            "$ref": "#/components/schemas/recordings_template"
          },
          "transcription_template": {
            "$ref": "#/components/schemas/transcription_template"
          },
          "enable_dialout": {
            "type": "boolean",
            "default": false,
            "description": "Allow [dialout](/products/daily-js/instance-methods/start-dial-out) API from the room."
          },
          "dialout_config": {
            "type": "object",
            "description": "Allow configuring [dialout](/products/daily-js/instance-methods/start-dial-out) behaviour.",
            "properties": {
              "allow_room_start": {
                "type": "boolean",
                "description": "Setting this to true allows starting the room and initiating the dial-out even though there is no user present in the room. By default, initiating a [dial-out](/products/rest-api/rooms/dialout/start) via the REST API fails when the corresponding room is empty (without any participant).",
                "default": false
              },
              "dialout_geo": {
                "type": "string",
                "description": "The region where SFU is selected to start the room. default is taken from [`room geo`](/products/rest-api/rooms/config#geo) else from [`domain geo`](/products/rest-api/your-domain/config#geo) and if both are not defined `us-west-2` is take as default.",
                "example": "ap-south-1"
              },
              "max_idle_timeout_sec": {
                "type": "number",
                "default": 0,
                "description": "Number of seconds where dialout user can be alone in the room. dialout user can start the room and can remain in the room alone waiting for other participant for this duration, also when all the web users leave the room, room is automatically closed, this property allows dialout user to remain in room after all web users leave the room."
              }
            }
          },
          "streaming_endpoints": {
            "type": "array",
            "description": "An array of stream endpoint configuration objects, which allows configurations to be pre-defined without having to pass them into [`startLiveStreaming()`](/products/daily-js/instance-methods/start-live-streaming) at runtime. For example, an RTMP endpoint can be set up for YouTube as a `streaming_endpoints` configuration along with another configuration for HLS storage.\n\nHLS output can only be stored on a customer's S3, not in Daily's storage infrastructure. The stream configuration defines which S3 bucket to store the HLS output. (See the [S3 bucket guide](/guides/products/live-streaming-recording/storing-recordings-in-a-custom-s3-bucket) for more information.)\n\nExample:\n\n```json\n\n{\n  \"properties\": {\n    // ... add additional room properties here\n    \"streaming_endpoints\": [\n      {\n        \"name\": \"rtmp_youtube\",\n        \"type\": \"rtmp\",\n        \"rtmp_config\": {\n          \"url\": \"rtmps://exampleYouTubeServer.com:443/stream\"\n        }\n      },\n\n      {\n        \"name\": \"rtmp_ivs\",\n        \"type\": \"rtmp\",\n        \"rtmp_config\": {\n          \"url\": \"rtmps://811111111111.global-contribute.live-video.net:443/app/\"\n        }\n      },\n\n      {\n        \"name\": \"hls_akamai\",\n        \"type\": \"hls\",\n        \"hls_config\": {\n        \"save_hls_recording\": true/false,\n          \"storage\": {\n            \"bucket_name\": \"daily-hls-streams\",\n            \"bucket_region\": \"us-west-2\",\n            \"assume_role_arn\": \"arn:aws:iam::999999999999:role/DailyS3AccessRole\",\n            \"path_template\": \"testHarness/{live_streaming_id}/{instance_id}\"\n          },\n          \"variant\" : [\n              {\n                \"width\": 1920,\n                \"height\": 1080,\n                \"fps\": 30,\n                \"bitrate\": 3500,\n                \"iframe_only\": false\n              },\n              {\n                \"width\": 1280,\n                \"height\": 720,\n                \"fps\": 30,\n                \"bitrate\": 2500,\n                \"iframe_only\": false\n              },\n              {\n                \"width\": 640,\n                \"height\": 360,\n                \"fps\": 30,\n                \"bitrate\": 780,\n                \"iframe_only\": true\n              }\n          ]\n        }\n      }\n    ]\n  }\n}\n```\n\nTo reset the `streaming_endpoints` property, pass `null` instead of an array.\n\nWhen calling `startLiveStreaming()`, the pre-defined `streaming_endpoints` `name` can be used:\n\n```javascript\nawait callObject.startLiveStreaming({\n  endpoints: [{\"endpoint\":\"rtmp_youtube\"},{\"endpoint\":\"rtmp_fb\"}],\n  width: 1280,\n  height: 720,\n});\n```\nProperties:",
            "items": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string",
                  "description": "Used by the `startLiveStreaming()` API to reference which stream configuration to start.",
                  "example": "rtmp_ivs"
                },
                "type": {
                  "type": "string",
                  "description": "Whether the streaming endpoint is `rtmp` or `hls`.",
                  "example": "hls"
                },
                "hls_config['storage']['path']": {
                  "type": "string",
                  "description": "The `s3Key` path prefix for where to store the recordings. Therefore, the final final master.m3u8 path template is `<bucket_name>/<path>/<mtgSessionId>/master.m3u8`, i.e. `hls_config['storage']['bucket_name']/hls_config['storage']['path']/<mtgSessionId>/master.m3u8`.",
                  "example": "my-bucket-name/my-folder-name",
                  "deprecated": true
                },
                "hls_config['storage']['path_template']": {
                  "type": "string",
                  "description": "`path_template` is made up of a replacement string with prefixes, suffixes, or both. `path_template` without replacement string is also valid. The currently supported replacements are:\n  - `epoch_time`: The epoch time in seconds (optional)\n  - `domain_name`: Your Daily domain (optional)\n  - `room_name`: The name of the room which is getting recorded (optional)\n  - `mtg_session_id`: The ID of the meeting session which is getting recorded (optional)\n  - `instance_id`: The instance ID of the recording (optional)\n  - `live_streaming_id`: The ID of the live streaming in our DB (optional)\n\n  The restrictions for defining a recording template are as follows:\n  - The maximum size of the template is 1024 characters\n  - Each replacement parameter should be placed within a curly bracket (e.g., `{domain_name}`)\n  - Only alphanumeric characters `(0-9, A-Z, a-z)` and `.`, `/`, `-`, `_` are valid within the template\n\nExamples\n- Example domain: \"myDomain\"\n- Example room: \"myRoom\"\n- example hls bucket: \"HLS_S3_BUCKET\"\n\nExample 1:\n- Template: `my-hls-{domain_name}-{epoch_time}`\n- Resulting path of master.m3u8: `s3://HLS_S3_BUCKET/my-hls-myDomain-1675842936274/master.m3u8`\n\nExample 2:\n- Template: `{room_name}/{instance_id}/`\n- Resulting path of master.m3u8: `myRoom/d529cd2f-fbcc-4fb7-b2c0-c4995b1162b6/master.m3u8`"
                },
                "hls_config['save_hls_recording']": {
                  "type": "boolean",
                  "description": "If `true`, the live stream will be saved as a recording after streaming has ended. If `false`, the stream is available only until the streaming is live."
                },
                "hls_config['variants']": {
                  "type": "array",
                  "description": "An optional array of variants to generate for HLS. For most use cases this property can be omitted as Daily uses sensible defaults. The array defines the resolution, FPS, and bitrate for each variant. The following limitations apply: \n- There can be a maximum of one variant with 1080p resolution. All other variants must be less than or equal to 720p.\n- A maximum of four variants can be specified, other than iframe-only stream\n- We do not support iframe-only variant, at least one full-stream variant is required",
                  "items": {
                    "type": "object",
                    "properties": {
                      "width": {
                        "type": "number",
                        "description": "Output width. Min: `32`. Max: `1920`."
                      },
                      "height": {
                        "type": "number",
                        "description": "Output height. Min: `32`. Max: `1920`. For portrait mode, the height can be greater than the width."
                      },
                      "fps": {
                        "type": "number",
                        "description": "Output FPS. Min: `1`. Max: `30`."
                      },
                      "bitrate": {
                        "type": "number",
                        "description": "Bitrate in kilobits per second (kbps). Min: `100`. Max: `5000`."
                      },
                      "iframe_only": {
                        "type": "boolean",
                        "description": "Whether this variant is iframe-only. One iframe is generated for each segment. If `true`, the `fps` property is ignored."
                      }
                    }
                  }
                }
              }
            }
          },
          "permissions": {
            "$ref": "#/components/schemas/permissions"
          },
          "sip": {
            "type": "object",
            "description": "Configures SIP dial-in for the room. When set, Daily provisions a SIP endpoint and returns a `sip_uri` you can use to route inbound SIP calls into the room.",
            "required": ["display_name", "sip_mode"],
            "properties": {
              "display_name": {
                "type": "string",
                "description": "The display name shown for SIP participants when they join the room."
              },
              "sip_mode": {
                "type": "string",
                "enum": ["dial-in"],
                "description": "Must be `\"dial-in\"`."
              },
              "video": {
                "type": "boolean",
                "default": false,
                "description": "Whether to enable video for SIP dial-in participants. Defaults to `false` (audio-only)."
              },
              "num_endpoints": {
                "type": "integer",
                "default": 1,
                "description": "Number of SIP endpoints to provision for this room, allowing multiple simultaneous SIP dial-in connections."
              },
              "force_digit_only_username": {
                "type": "boolean",
                "default": false,
                "description": "If `true`, generates a numeric-only SIP username. Required for providers that only support digits in the SIP username. Incompatible with `num_endpoints > 1`."
              },
              "codecs": {
                "type": "object",
                "description": "Preferred audio and video codecs for the SIP connection.",
                "properties": {
                  "audio": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": ["OPUS", "G722", "PCMU", "PCMA"]
                    },
                    "description": "Preferred audio codecs in priority order."
                  },
                  "video": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": ["H264", "VP8"]
                    },
                    "description": "Preferred video codecs in priority order. Only relevant when `video: true`."
                  }
                }
              },
              "provider": {
                "type": "string",
                "enum": ["daily"],
                "description": "SIP provider. Currently only `\"daily\"` is supported."
              }
            }
          }
        }
      },
      "rooms-room_name-get-res": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "d61cd7b2-a273-42b4-89bd-be763fd562c1"
          },
          "name": {
            "type": "string",
            "example": "w2pp2cf4kltgFACPKXmX"
          },
          "api_created": {
            "type": "boolean",
            "example": false,
            "default": true
          },
          "privacy": {
            "type": "string",
            "example": "public"
          },
          "url": {
            "type": "string",
            "example": "https://api-demo.daily.co/w2pp2cf4kltgFACPKXmX"
          },
          "created_at": {
            "type": "string",
            "example": "2019-01-26T09:01:22.000Z"
          },
          "config": {
            "type": "object",
            "properties": {
              "nbf": {
                "type": "integer",
                "format": "int32",
                "description": "\"Not before\". This is a [unix timestamp](https://stackoverflow.com/questions/20822821/what-is-a-unix-timestamp-and-why-use-it) (seconds since the epoch.) Users cannot join a meeting in this room before this time."
              },
              "exp": {
                "type": "integer",
                "format": "int32",
                "description": "\"Expires\". This is a unix timestamp (seconds since the epoch.) Users cannot join a meeting in this room after this time.\n\nMore resources:\n- [Add advanced security to video chats with the Daily API](https://www.daily.co/blog/add-advanced-security-features-to-video-chats-with-the-daily-api/)"
              },
              "max_participants": {
                "type": "integer",
                "format": "int32",
                "description": "How many people are allowed in a room at the same time.\n\n\u26a0\ufe0f [Contact us](https://www.daily.co/contact) if you need to set the limit above 200.",
                "x-paidPlan": "paid",
                "default": 200
              },
              "enable_people_ui": {
                "type": "boolean",
                "description": "Determines if [Daily Prebuilt](/guides/products/prebuilt) displays the People UI. When set to true, a People button in the call tray reveals a People tab in the call sidebar. The tab lists all participants, and next to each name indicates audio status and an option to pin the participant. When `enable_people_ui` is set to false, the button and tab are hidden.\n\n\u26a0\ufe0f Has no effect on custom calls built on the Daily [call object](/guides/products/call-object)."
              },
              "enable_cpu_warning_notifications": {
                "type": "boolean",
                "description": "Determines if [Daily Prebuilt](/guides/products/prebuilt) displays CPU warning notifications. When set to true, snackbar notifications appear when high CPU usage is detected. When set to false, these notifications are hidden.\n\n\u26a0\ufe0f This flag only applies to Daily Prebuilt. It has no effect when building custom video applications with the Daily call object."
              },
              "enable_pip_ui": {
                "type": "boolean",
                "description": "Sets whether the room can use [Daily Prebuilt](https://www.daily.co/prebuilt)'s Picture in Picture controls. When set to `true`, an additional button will be available in Daily Prebuilt's UI to toggle the Picture in Picture feature.\n\n\u26a0\ufe0f This flag only applies to Daily Prebuilt. It has no effect when building custom video applications with the Daily call object."
              },
              "enable_emoji_reactions": {
                "type": "boolean",
                "description": "Determines if [Daily Prebuilt](https://www.daily.co/prebuilt) displays the Emoji Reactions UI. When set to `true`, a Reactions button appears in the call tray. This button allows users to select and send a reaction into the call. When set to `false`, the Reactions button is hidden and the feature is disabled.\n\nUsage: This feature is a good fit for meetings when a host or presenter would benefit from receiving nonverbal cues from the audience. It's also great to keep meetings fun.\n\n\u26a0\ufe0f This flag only applies to Daily Prebuilt. It has no effect when building custom video applications with the Daily call object."
              },
              "enable_hand_raising": {
                "type": "boolean",
                "description": "Sets whether the participants in the room can use [Daily Prebuilt](https://www.daily.co/prebuilt)'s hand raising controls. When set to `true`, an additional button will be available in Daily Prebuilt's UI to toggle a hand raise.\n\n\u26a0\ufe0f This flag only applies to Daily Prebuilt. It has no effect when building custom video applications with the Daily call object."
              },
              "enable_prejoin_ui": {
                "type": "boolean",
                "description": "Determines whether participants enter a waiting room with a camera, mic, and browser check before joining a call.\n\n\u26a0\ufe0f You must be using [Daily Prebuilt](https://daily.co/prebuilt) to use `enable_prejoin_ui`."
              },
              "enable_live_captions_ui": {
                "type": "boolean",
                "description": "Sets whether participants in a room see a closed captions button in their Daily Prebuilt call tray. When the closed caption button is clicked, closed captions are displayed locally.\n\nWhen set to `true`, a closed captions button appears in the call tray. When set to `false`, the closed captions button is hidden from the call tray.\n\nNote: Transcription must be enabled for the room or users must have permission to start transcription for this feature to be enabled. View the [transcription guide](/guides/products/transcription) for more details.\n\n\u26a0\ufe0f You must be using [Daily Prebuilt](https://daily.co/blog/daily-prebuilt-video-chat) to use `enable_live_captions_ui`."
              },
              "enable_network_ui": {
                "type": "boolean",
                "description": "Determines whether the network button, and the network panel it reveals on click, appears in this room.\n\n\u26a0\ufe0f You must be using [Daily Prebuilt](https://daily.co/prebuilt) to use `enable_network_ui`."
              },
              "enable_noise_cancellation_ui": {
                "type": "boolean",
                "description": "Determines whether Daily Prebuilt displays noise cancellation controls. When set to `true`, a participant can enable microphone noise cancellation during a Daily Prebuilt call.\n\u26a0\ufe0f This flag only applies to [Daily Prebuilt](https://daily.co/prebuilt). It has no effect when building custom video applications with the Daily call object. To learn more about adding noise cancellation to a custom application, see the [`updateInputSettings()` docs](/products/daily-js/instance-methods/update-input-settings)."
              },
              "enable_breakout_rooms": {
                "type": "boolean",
                "description": "Sets whether [Daily Prebuilt](https://www.daily.co/prebuilt)\u2019s breakout rooms feature is enabled. When set to `true`, an owner in a Prebuilt call can create breakout rooms to divide participants into smaller, private groups. \n\n\u26a0\ufe0f You must be using [Daily Prebuilt](https://daily.co/blog/daily-prebuilt-video-chat) to use `enable_breakout_rooms`.\n\n\u26a0\ufe0f This property is in beta."
              },
              "enable_knocking": {
                "type": "boolean",
                "description": "Turns on a lobby experience for private rooms. A participant without a corresponding [meeting token](/products/rest-api/meeting-tokens/config) can request to be admitted to the meeting with a \"knock\", and wait for the meeting owner to admit them."
              },
              "enable_screenshare": {
                "type": "boolean",
                "default": true,
                "description": "Sets whether users in a room can screen share during a session. This property cannot be changed after a session starts. For dynamic control over permissions, use the [`updateParticipant()`](/products/daily-js/instance-methods/update-participant#param-update-permissions) method to control user permissions."
              },
              "enable_video_processing_ui": {
                "type": "boolean",
                "default": true,
                "description": "Determines whether Daily Prebuilt displays background blur controls. When set to `true`, a participant can enable blur during a Daily Prebuilt call.\n\n\u26a0\ufe0f This flag only applies to Daily Prebuilt. It has no effect when building custom video applications with the Daily call object."
              },
              "enable_chat": {
                "type": "boolean",
                "default": false,
                "description": "This property is one of [multiple ways to add chat to Daily video calls](https://www.daily.co/blog/three-ways-to-add-chat-to-your-video-calls-with-the-daily-api/)."
              },
              "enable_shared_chat_history": {
                "type": "boolean",
                "default": true,
                "description": "When enabled, newly joined participants in Prebuilt calls will request chat history from remote peers, in order to view chat messages from before they joined."
              },
              "start_video_off": {
                "type": "boolean",
                "default": false,
                "description": "Disable the default behavior of automatically turning on a participant's camera on a direct `join()` (i.e. without `startCamera()` first)."
              },
              "start_audio_off": {
                "type": "boolean",
                "default": false,
                "description": "Disable the default behavior of automatically turning on a participant's microphone on a direct `join()` (i.e. without `startCamera()` first)."
              },
              "enable_recording": {
                "description": "Jump to [recording docs](/products/rest-api/recordings).",
                "oneOf": [
                  {
                    "type": "string",
                    "enum": ["cloud", "cloud-audio-only", "local", "raw-tracks"]
                  },
                  {
                    "type": "array",
                    "uniqueItems": true,
                    "items": {
                      "type": "string",
                      "enum": [
                        "cloud",
                        "cloud-audio-only",
                        "local",
                        "raw-tracks"
                      ]
                    }
                  }
                ]
              },
              "enable_raw_tracks_transcoded_audio": {
                "type": "string",
                "enum": ["aac", "wav", "wav-48k", "wav-48k-stereo", "wav-48k-mono", "wav-44k1", "wav-44k1-stereo", "wav-44k1-mono", ""],
                "description": "Enable gapless transcoded audio for `raw-tracks` recordings. When set, each participant's audio track is decoded, gaps (muted mic, idle periods, packet loss) are filled with silence, and the track is re-encoded as a continuous file. Affects audio tracks only; video tracks still record as `.webm`. Can be set on a room or domain, and a room value takes priority over the domain value.\n\nSupported values:\n\n* `aac`: AAC at 160 kbps, 48 kHz stereo, in an MP4 container.\n* `wav-48k-stereo` (aliases `wav` and `wav-48k`): 16-bit PCM WAV, 48 kHz stereo.\n* `wav-48k-mono`: 16-bit PCM WAV, 48 kHz mono.\n* `wav-44k1-stereo` (alias `wav-44k1`): 16-bit PCM WAV, 44.1 kHz stereo.\n* `wav-44k1-mono`: 16-bit PCM WAV, 44.1 kHz mono.\n\nLeave unset to keep the default Opus audio in a `.webm` container. See the [recording guide](/docs/guides/features/recording#gapless-transcoded-audio)."
              },
              "eject_at_room_exp": {
                "type": "boolean",
                "default": false,
                "description": "If there's a meeting going on at room `exp` time, end the meeting by kicking everyone out. This behavior can be overridden by setting `eject` properties of a [meeting token](/products/rest-api/meeting-tokens)."
              },
              "eject_after_elapsed": {
                "type": "integer",
                "format": "int32",
                "description": "Eject a meeting participant this many seconds after the participant joins the meeting. You can use this is a default length limit to prevent long meetings. This can be overridden by setting `eject` properties of a [meeting token](/products/rest-api/meeting-tokens)."
              },
              "enable_advanced_chat": {
                "type": "boolean",
                "description": "Property that gives end users a richer chat experience. This includes:\n\n* Emoji reactions to chat messages\n* Emoji picker in the chat input form\n* Ability to send a Giphy chat message\n\n\u26a0\ufe0f This flag only applies to Daily Prebuilt. It has no effect when building custom video applications with the Daily call object.",
                "default": false
              },
              "enable_hidden_participants": {
                "type": "boolean",
                "description": "When enabled, non-owner users join a meeting with a hidden presence, meaning they won't appear as a named participant in the meeting and have no [participant events](/reference/daily-js/events/participant-events) associated to them. Additionally, these participants can _only_ receive media tracks from owner participants.\n\nHidden participants can be tracked using the [`participantCounts()`](/products/daily-js/instance-methods/participant-counts) method. Hidden participants do _not_ have entries in the [`participants()`](/products/daily-js/instance-methods/participants) method return value.\n\nWhen used with [Daily Prebuilt](/guides/products/prebuilt), hidden participants are included in the participant count available in the UI; however, are _not_ included in the People panel and can only read chat messages.\n\nThis property should be used to support hosting large meetings. See our [guide on interactive live streaming](/guides/scaling-calls/interactive-live-streaming-rtmp-output#interactive-live-streaming-up-to-100-000-participants) for additional instruction.",
                "default": false
              },
              "enable_mesh_sfu": {
                "$ref": "#/components/schemas/enable_mesh_sfu"
              },
              "sfu_switchover": {
                "$ref": "#/components/schemas/sfu_switchover"
              },
              "enable_adaptive_simulcast": {
                "$ref": "#/components/schemas/enable_adaptive_simulcast"
              },
              "enable_multiparty_adaptive_simulcast": {
                "$ref": "#/components/schemas/enable_multiparty_adaptive_simulcast"
              },
              "enforce_unique_user_ids": {
                "$ref": "#/components/schemas/enforce_unique_user_ids"
              },
              "experimental_optimize_large_calls": {
                "type": "boolean",
                "description": "Enables Daily Prebuilt to support group calls of over 1,000 participants.\n\nWhen set to true, Daily Prebuilt will:\n- Automatically mute the local user on joining\n- Update grid view to show a maximum of 12 users in the grid at a time\n- Allow only 16 users to be unmuted at the same time. When more than 16 users are unmuted, the oldest active speaker will be automatically muted.\n\nSee our [guide on large real-time calls](/guides/scaling-calls/large-real-time-calls) for additional instruction.\n\n\u26a0\ufe0f This flag only applies to Daily Prebuilt. It has no effect when building custom video applications with the Daily call object."
              },
              "lang": {
                "type": "string",
                "description": "The default language of the [Daily prebuilt video call UI](/guides/products/prebuilt#daily-prebuilt-ui), for this room.\n\nSetting the language at the room level will override any domain-level language settings you have.\n\n`*` Norwegian `\"no\"` and Russian `\"ru\"` are only available in the new Daily Prebuilt.\n\nSee [language settings](/products/prebuilt/language) for all supported values and priority order.",
                "enum": [
                  "da",
                  "de",
                  "en",
                  "es",
                  "fi",
                  "fr",
                  "it",
                  "jp",
                  "ka",
                  "nl",
                  "no",
                  "pt",
                  "pt-BR",
                  "pl",
                  "ru",
                  "sv",
                  "tr",
                  "user"
                ],
                "default": "en"
              },
              "meeting_join_hook": {
                "type": "string",
                "description": "Sets a URL that will receive a webhook when a user joins a room. Default is NULL. Character limit for webhook URL is 255.\n\n\u26a0\ufe0f In place of the `meeting_join_hook`, we recommend setting up a [webhook](/products/rest-api/webhooks) and listening for the [`participant.joined`](/products/rest-api/webhooks/events/participant-joined) event."
              },
              "geo": {
                "$ref": "#/components/schemas/geo"
              },
              "rtmp_geo": {
                "$ref": "#/components/schemas/rtmp_geo"
              },
              "disable_rtmp_geo_fallback": {
                "$ref": "#/components/schemas/disable_rtmp_geo_fallback"
              },
              "recordings_bucket": {
                "$ref": "#/components/schemas/recordings_bucket"
              },
              "enable_terse_logging": {
                "$ref": "#/components/schemas/enable_terse_logging"
              },
              "auto_transcription_settings": {
                "$ref": "#/components/schemas/auto_transcription_settings"
              },
              "enable_transcription_storage": {
                "$ref": "#/components/schemas/enable_transcription_storage"
              },
              "transcription_bucket": {
                "$ref": "#/components/schemas/transcription_bucket"
              },
              "recordings_template": {
                "$ref": "#/components/schemas/recordings_template"
              },
              "transcription_template": {
                "$ref": "#/components/schemas/transcription_template"
              },
              "enable_dialout": {
                "type": "boolean",
                "default": false,
                "description": "Allow [dialout](/products/daily-js/instance-methods/start-dial-out) API from the room."
              },
              "dialout_config": {
                "type": "object",
                "description": "Allow configuring [dialout](/products/daily-js/instance-methods/start-dial-out) behaviour.",
                "properties": {
                  "allow_room_start": {
                    "type": "boolean",
                    "description": "Setting this to true allows starting the room and initiating the dial-out even though there is no user present in the room. By default, initiating a [dial-out](/products/rest-api/rooms/dialout/start) via the REST API fails when the corresponding room is empty (without any participant).",
                    "default": false
                  },
                  "dialout_geo": {
                    "type": "string",
                    "description": "The region where SFU is selected to start the room. default is taken from [`room geo`](/products/rest-api/rooms/config#geo) else from [`domain geo`](/products/rest-api/your-domain/config#geo) and if both are not defined `us-west-2` is take as default.",
                    "example": "ap-south-1"
                  },
                  "max_idle_timeout_sec": {
                    "type": "number",
                    "default": 0,
                    "description": "Number of seconds where dialout user can be alone in the room. dialout user can start the room and can remain in the room alone waiting for other participant for this duration, also when all the web users leave the room, room is automatically closed, this property allows dialout user to remain in room after all web users leave the room."
                  }
                }
              },
              "streaming_endpoints": {
                "type": "array",
                "description": "An array of stream endpoint configuration objects, which allows configurations to be pre-defined without having to pass them into [`startLiveStreaming()`](/products/daily-js/instance-methods/start-live-streaming) at runtime. For example, an RTMP endpoint can be set up for YouTube as a `streaming_endpoints` configuration along with another configuration for HLS storage.\n\nHLS output can only be stored on a customer's S3, not in Daily's storage infrastructure. The stream configuration defines which S3 bucket to store the HLS output. (See the [S3 bucket guide](/guides/products/live-streaming-recording/storing-recordings-in-a-custom-s3-bucket) for more information.)\n\nExample:\n\n```json\n\n{\n  \"properties\": {\n    // ... add additional room properties here\n    \"streaming_endpoints\": [\n      {\n        \"name\": \"rtmp_youtube\",\n        \"type\": \"rtmp\",\n        \"rtmp_config\": {\n          \"url\": \"rtmps://exampleYouTubeServer.com:443/stream\"\n        }\n      },\n\n      {\n        \"name\": \"rtmp_ivs\",\n        \"type\": \"rtmp\",\n        \"rtmp_config\": {\n          \"url\": \"rtmps://811111111111.global-contribute.live-video.net:443/app/\"\n        }\n      },\n\n      {\n        \"name\": \"hls_akamai\",\n        \"type\": \"hls\",\n        \"hls_config\": {\n        \"save_hls_recording\": true/false,\n          \"storage\": {\n            \"bucket_name\": \"daily-hls-streams\",\n            \"bucket_region\": \"us-west-2\",\n            \"assume_role_arn\": \"arn:aws:iam::999999999999:role/DailyS3AccessRole\",\n            \"path_template\": \"testHarness/{live_streaming_id}/{instance_id}\"\n          },\n          \"variant\" : [\n              {\n                \"width\": 1920,\n                \"height\": 1080,\n                \"fps\": 30,\n                \"bitrate\": 3500,\n                \"iframe_only\": false\n              },\n              {\n                \"width\": 1280,\n                \"height\": 720,\n                \"fps\": 30,\n                \"bitrate\": 2500,\n                \"iframe_only\": false\n              },\n              {\n                \"width\": 640,\n                \"height\": 360,\n                \"fps\": 30,\n                \"bitrate\": 780,\n                \"iframe_only\": true\n              }\n          ]\n        }\n      }\n    ]\n  }\n}\n```\n\nTo reset the `streaming_endpoints` property, pass `null` instead of an array.\n\nWhen calling `startLiveStreaming()`, the pre-defined `streaming_endpoints` `name` can be used:\n\n```javascript\nawait callObject.startLiveStreaming({\n  endpoints: [{\"endpoint\":\"rtmp_youtube\"},{\"endpoint\":\"rtmp_fb\"}],\n  width: 1280,\n  height: 720,\n});\n```\nProperties:",
                "items": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string",
                      "description": "Used by the `startLiveStreaming()` API to reference which stream configuration to start.",
                      "example": "rtmp_ivs"
                    },
                    "type": {
                      "type": "string",
                      "description": "Whether the streaming endpoint is `rtmp` or `hls`.",
                      "example": "hls"
                    },
                    "hls_config['storage']['path']": {
                      "type": "string",
                      "description": "The `s3Key` path prefix for where to store the recordings. Therefore, the final final master.m3u8 path template is `<bucket_name>/<path>/<mtgSessionId>/master.m3u8`, i.e. `hls_config['storage']['bucket_name']/hls_config['storage']['path']/<mtgSessionId>/master.m3u8`.",
                      "example": "my-bucket-name/my-folder-name",
                      "deprecated": true
                    },
                    "hls_config['storage']['path_template']": {
                      "type": "string",
                      "description": "`path_template` is made up of a replacement string with prefixes, suffixes, or both. `path_template` without replacement string is also valid. The currently supported replacements are:\n  - `epoch_time`: The epoch time in seconds (optional)\n  - `domain_name`: Your Daily domain (optional)\n  - `room_name`: The name of the room which is getting recorded (optional)\n  - `mtg_session_id`: The ID of the meeting session which is getting recorded (optional)\n  - `instance_id`: The instance ID of the recording (optional)\n  - `live_streaming_id`: The ID of the live streaming in our DB (optional)\n\n  The restrictions for defining a recording template are as follows:\n  - The maximum size of the template is 1024 characters\n  - Each replacement parameter should be placed within a curly bracket (e.g., `{domain_name}`)\n  - Only alphanumeric characters `(0-9, A-Z, a-z)` and `.`, `/`, `-`, `_` are valid within the template\n\nExamples\n- Example domain: \"myDomain\"\n- Example room: \"myRoom\"\n- example hls bucket: \"HLS_S3_BUCKET\"\n\nExample 1:\n- Template: `my-hls-{domain_name}-{epoch_time}`\n- Resulting path of master.m3u8: `s3://HLS_S3_BUCKET/my-hls-myDomain-1675842936274/master.m3u8`\n\nExample 2:\n- Template: `{room_name}/{instance_id}/`\n- Resulting path of master.m3u8: `myRoom/d529cd2f-fbcc-4fb7-b2c0-c4995b1162b6/master.m3u8`"
                    },
                    "hls_config['save_hls_recording']": {
                      "type": "boolean",
                      "description": "If `true`, the live stream will be saved as a recording after streaming has ended. If `false`, the stream is available only until the streaming is live."
                    },
                    "hls_config['variants']": {
                      "type": "array",
                      "description": "An optional array of variants to generate for HLS. For most use cases this property can be omitted as Daily uses sensible defaults. The array defines the resolution, FPS, and bitrate for each variant. The following limitations apply: \n- There can be a maximum of one variant with 1080p resolution. All other variants must be less than or equal to 720p.\n- A maximum of four variants can be specified, other than iframe-only stream\n- We do not support iframe-only variant, at least one full-stream variant is required",
                      "items": {
                        "type": "object",
                        "properties": {
                          "width": {
                            "type": "number",
                            "description": "Output width. Min: `32`. Max: `1920`."
                          },
                          "height": {
                            "type": "number",
                            "description": "Output height. Min: `32`. Max: `1920`. For portrait mode, the height can be greater than the width."
                          },
                          "fps": {
                            "type": "number",
                            "description": "Output FPS. Min: `1`. Max: `30`."
                          },
                          "bitrate": {
                            "type": "number",
                            "description": "Bitrate in kilobits per second (kbps). Min: `100`. Max: `5000`."
                          },
                          "iframe_only": {
                            "type": "boolean",
                            "description": "Whether this variant is iframe-only. One iframe is generated for each segment. If `true`, the `fps` property is ignored."
                          }
                        }
                      }
                    }
                  }
                }
              },
              "permissions": {
                "$ref": "#/components/schemas/permissions"
              },
              "sip_uri": {
                "type": "object",
                "readOnly": true,
                "description": "Read-only. The SIP URI(s) provisioned for this room after setting the `sip` property. Use `endpoint` (and `extra_endpoints` when `num_endpoints > 1`) to route inbound SIP calls to this room.",
                "properties": {
                  "endpoint": {
                    "type": "string",
                    "description": "The primary SIP URI for this room (e.g. `my-room.0@daily-abc123.sip.signalwire.com`)."
                  },
                  "extra_endpoints": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Additional SIP URIs when `num_endpoints > 1`."
                  }
                }
              }
            }
          }
        }
      },
      "rooms-room_name_presence-get-res": {
        "type": "object",
        "properties": {
          "total_count": {
            "type": "integer",
            "example": 192
          },
          "data": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "example": "d61cd7b2-a273-42b4-89bd-be763fd562c1"
                },
                "room": {
                  "type": "string",
                  "example": "w2pp2cf4kltgFACPKXmX"
                },
                "userId": {
                  "type": "string",
                  "example": "pbZ+ismP7dk="
                },
                "userName": {
                  "type": "string",
                  "example": "Moishe"
                },
                "mtgSessionId": {
                  "type": "string",
                  "example": "16e9701a-93e0-4933-83c9-223e7c40d552"
                },
                "joinTime": {
                  "type": "string",
                  "example": "2023-01-01T20:53:19.000Z"
                },
                "duration": {
                  "type": "integer",
                  "format": "int32",
                  "example": 2312
                }
              }
            }
          }
        }
      },
      "DailyStreamingDefaultLayoutConfig": {
        "properties": {
          "preset": {
            "title": "Default Layout",
            "enum": ["default"],
            "type": "string"
          },
          "max_cam_streams": {
            "title": "DailyStreamingDefaultLayoutConfig.max_cam_streams",
            "type": "number"
          }
        },
        "required": ["preset"],
        "additionalProperties": false,
        "title": "DailyStreamingDefaultLayoutConfig",
        "type": "object"
      },
      "DailyStreamingSingleParticipantLayoutConfig": {
        "properties": {
          "preset": {
            "title": "Single Participant Layout",
            "enum": ["single-participant"],
            "type": "string"
          },
          "session_id": {
            "title": "DailyStreamingSingleParticipantLayoutConfig.session_id",
            "type": "string"
          }
        },
        "required": ["preset", "session_id"],
        "additionalProperties": false,
        "title": "DailyStreamingSingleParticipantLayoutConfig",
        "type": "object"
      },
      "DailyStreamingActiveParticipantLayoutConfig": {
        "properties": {
          "preset": {
            "title": "Active Participant Layout",
            "enum": ["active-participant"],
            "type": "string"
          }
        },
        "required": ["preset"],
        "additionalProperties": false,
        "title": "DailyStreamingActiveParticipantLayoutConfig",
        "type": "object"
      },
      "DailyStreamingPortraitLayoutVariant": {
        "enum": ["vertical", "inset"],
        "title": "DailyStreamingPortraitLayoutVariant",
        "type": "string"
      },
      "DailyStreamingPortraitLayoutConfig": {
        "properties": {
          "preset": {
            "title": "Portrait Layout",
            "enum": ["portrait"],
            "type": "string"
          },
          "variant": {
            "$ref": "#/components/schemas/DailyStreamingPortraitLayoutVariant",
            "title": "DailyStreamingPortraitLayoutConfig.variant"
          },
          "max_cam_streams": {
            "title": "DailyStreamingPortraitLayoutConfig.max_cam_streams",
            "type": "number"
          }
        },
        "required": ["preset"],
        "additionalProperties": false,
        "title": "DailyStreamingPortraitLayoutConfig",
        "type": "object"
      },
      "DailyStreamingCustomLayoutConfig": {
        "properties": {
          "preset": {
            "title": "Custom Layout",
            "enum": ["custom"],
            "type": "string"
          },
          "composition_id": {
            "title": "DailyStreamingCustomLayoutConfig.composition_id",
            "type": "string"
          },
          "composition_params": {
            "additionalProperties": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "number"
                },
                {
                  "type": "string"
                }
              ]
            },
            "title": "DailyStreamingCustomLayoutConfig.composition_params",
            "type": "object"
          },
          "session_assets": {
            "additionalProperties": {
              "type": "string"
            },
            "title": "DailyStreamingCustomLayoutConfig.session_assets",
            "type": "object"
          }
        },
        "required": ["preset", "composition_id"],
        "additionalProperties": false,
        "title": "DailyStreamingCustomLayoutConfig",
        "type": "object"
      },
      "DailyStreamingLayoutConfig": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/DailyStreamingDefaultLayoutConfig",
            "title": "DailyStreamingLayoutConfig"
          },
          {
            "$ref": "#/components/schemas/DailyStreamingSingleParticipantLayoutConfig",
            "title": "DailyStreamingLayoutConfig"
          },
          {
            "$ref": "#/components/schemas/DailyStreamingActiveParticipantLayoutConfig",
            "title": "DailyStreamingLayoutConfig"
          },
          {
            "$ref": "#/components/schemas/DailyStreamingPortraitLayoutConfig",
            "title": "DailyStreamingLayoutConfig"
          },
          {
            "$ref": "#/components/schemas/DailyStreamingCustomLayoutConfig",
            "title": "DailyStreamingLayoutConfig"
          }
        ],
        "discriminator": {
          "propertyName": "preset"
        },
        "title": "DailyStreamingLayoutConfig"
      },
      "RecordingStreamingOptions": {
        "properties": {
          "width": {
            "description": "Property that specifies the output width of the given stream.",
            "type": "number"
          },
          "height": {
            "description": "Property that specifies the output height of the given stream.",
            "type": "number"
          },
          "fps": {
            "description": "Property that specifies the video frame rate per second.",
            "type": "number"
          },
          "videoBitrate": {
            "description": "Property that specifies the video bitrate for the output video in kilobits per second (kbps).",
            "type": "number"
          },
          "audioBitrate": {
            "description": "Property that specifies the audio bitrate for the output audio in kilobits per second (kbps).",
            "type": "number"
          },
          "minIdleTimeOut": {
            "description": "Amount of time in seconds to wait before ending a recording or live stream when the room is idle (e.g. when all users have muted video and audio). Default: 300 (seconds). Note: Once the timeout has been reached, it typically takes an additional 1-3 minutes for the recording or live stream to be shut down.",
            "type": "number"
          },
          "maxDuration": {
            "description": "Maximum duration in seconds after which recording/streaming is forcefully stopped. Default: \\`15000\\` seconds (3 hours). This is a preventive circuit breaker to prevent billing surprises in case a user starts recording/streaming and leaves the room.",
            "type": "number"
          },
          "backgroundColor": {
            "description": "Specifies the background color of the stream, formatted as \\#rrggbb or \\#aarrggbb string.",
            "type": "string"
          },
          "instanceId": {
            "type": "string",
            "description": "UUID for a streaming or recording session. Used when multiple streaming or recording sessions are running for single room."
          },
          "type": {
            "description": "The type of recording that will be started.",
            "enum": ["cloud", "cloud-audio-only", "raw-tracks"],
            "default": "cloud",
            "type": "string"
          },
          "layout": {
            "description": "An object specifying the way participants\u2019 videos are laid out in the live stream. See given layout configs for description of fields. Preset must be defined.",
            "$ref": "#/components/schemas/DailyStreamingLayoutConfig"
          },
          "dataOutputs": {
            "description": "Specifies the types of recording-associated data outputs (\"event-json\", \"transcript-webvtt\", \"chat-webvtt\") to start. Value must be an array listing the requested data outputs.",
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "additionalProperties": false,
        "title": "DailyStreamingOptions",
        "type": "object"
      },
      "DailyStreamingOptions": {
        "properties": {
          "width": {
            "description": "Property that specifies the output width of the given stream.",
            "type": "number"
          },
          "height": {
            "description": "Property that specifies the output height of the given stream.",
            "type": "number"
          },
          "fps": {
            "description": "Property that specifies the video frame rate per second.",
            "type": "number"
          },
          "videoBitrate": {
            "description": "Property that specifies the video bitrate for the output video in kilobits per second (kbps).",
            "type": "number"
          },
          "audioBitrate": {
            "description": "Property that specifies the audio bitrate for the output audio in kilobits per second (kbps).",
            "type": "number"
          },
          "minIdleTimeOut": {
            "description": "Amount of time in seconds to wait before ending a recording or live stream when the room is idle (e.g. when all users have muted video and audio). Default: 300 (seconds). Note: Once the timeout has been reached, it typically takes an additional 1-3 minutes for the recording or live stream to be shut down.",
            "type": "number"
          },
          "maxDuration": {
            "description": "Maximum duration in seconds after which recording/streaming is forcefully stopped. Default: \\`15000\\` seconds (3 hours). This is a preventive circuit breaker to prevent billing surprises in case a user starts recording/streaming and leaves the room.",
            "type": "number"
          },
          "backgroundColor": {
            "description": "Specifies the background color of the stream, formatted as \\#rrggbb or \\#aarrggbb string.",
            "type": "string"
          },
          "instanceId": {
            "type": "string",
            "description": "UUID for a streaming or recording session. Used when multiple streaming or recording sessions are running for single room."
          },
          "type": {
            "type": "string",
            "description": "specify type of recording (`cloud`, `raw-tracks`, `local`) to start. Particular recording type must be enabled for the room or domain with enable_recording property."
          },
          "layout": {
            "description": "An object specifying the way participants\u2019 videos are laid out in the live stream. See given layout configs for description of fields. Preset must be defined.",
            "$ref": "#/components/schemas/DailyStreamingLayoutConfig"
          }
        },
        "additionalProperties": false,
        "title": "DailyStreamingOptions",
        "type": "object"
      },
      "DailyStreamingEndpoint": {
        "properties": {
          "endpoint": {
            "title": "DailyStreamingEndpoint.endpoint",
            "type": "string"
          }
        },
        "required": ["endpoint"],
        "additionalProperties": false,
        "title": "DailyStreamingEndpoint",
        "type": "object"
      },
      "DailyLiveStreamingOptions": {
        "properties": {
          "width": {
            "description": "Property that specifies the output width of the given stream.",
            "type": "number"
          },
          "height": {
            "description": "Property that specifies the output height of the given stream.",
            "type": "number"
          },
          "fps": {
            "description": "Property that specifies the video frame rate per second.",
            "type": "number"
          },
          "videoBitrate": {
            "description": "Property that specifies the video bitrate for the output video in kilobits per second (kbps).",
            "type": "number"
          },
          "audioBitrate": {
            "description": "Property that specifies the audio bitrate for the output audio in kilobits per second (kbps).",
            "type": "number"
          },
          "minIdleTimeOut": {
            "description": "Amount of time in seconds to wait before ending a recording or live stream when the room is idle (e.g. when all users have muted video and audio). Default: 300 (seconds). Note: Once the timeout has been reached, it typically takes an additional 1-3 minutes for the recording or live stream to be shut down.",
            "type": "number"
          },
          "maxDuration": {
            "description": "Maximum duration in seconds after which recording/streaming is forcefully stopped. Default: \\`15000\\` seconds (3 hours). This is a preventive circuit breaker to prevent billing surprises in case a user starts recording/streaming and leaves the room.",
            "type": "number"
          },
          "backgroundColor": {
            "description": "Specifies the background color of the stream, formatted as \\#rrggbb or \\#aarrggbb string.",
            "type": "string"
          },
          "instanceId": {
            "type": "string",
            "description": "UUID for a streaming or recording session. Used when multiple streaming or recording sessions are running for single room."
          },
          "type": {
            "description": "The type of recording that will be started.",
            "enum": ["cloud", "cloud-audio-only", "raw-tracks"],
            "default": "cloud",
            "type": "string"
          },
          "layout": {
            "description": "An object specifying the way participants' videos are laid out in the live stream. See given layout configs for description of fields. Preset must be defined.",
            "$ref": "#/components/schemas/DailyStreamingLayoutConfig"
          },
          "dataOutputs": {
            "description": "Specifies the types of recording-associated data outputs (\"event-json\", \"transcript-webvtt\", \"chat-webvtt\") to start. Value must be an array listing the requested data outputs.",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "rtmpUrl": {
            "title": "DailyLiveStreamingOptions.rtmpUrl",
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ]
          },
          "endpoints": {
            "items": {
              "$ref": "#/components/schemas/DailyStreamingEndpoint",
              "title": "DailyLiveStreamingOptions.endpoints.[]"
            },
            "title": "DailyLiveStreamingOptions.endpoints",
            "type": "array"
          }
        },
        "additionalProperties": false,
        "title": "DailyLiveStreamingOptions",
        "type": "object"
      },
      "transcription-properties": {
        "properties": {
          "language": {
            "description": "See Deepgram's documentation for [`language`](https://developers.deepgram.com/docs/language)",
            "type": "string"
          },
          "model": {
            "description": "See Deepgram's documentation for [`model`](https://developers.deepgram.com/docs/model)",
            "type": "string"
          },
          "tier": {
            "description": "This field is deprecated, use `model` instead",
            "type": "string"
          },
          "profanity_filter": {
            "description": "See Deepgram's documentation for [`profanity filter`](https://developers.deepgram.com/docs/profanity-filter)",
            "type": "boolean"
          },
          "punctuate": {
            "description": "See Deepgram's documentation for [`punctuate`](https://developers.deepgram.com/docs/punctuation)",
            "type": "boolean"
          },
          "endpointing": {
            "description": "See Deepgram's documentation for [`endpointing`](https://developers.deepgram.com/docs/endpointing)",
            "oneOf": [
              {
                "type": "number"
              },
              {
                "type": "boolean"
              }
            ]
          },
          "redact": {
            "description": "See Deepgram's documentation for [`redact`](https://developers.deepgram.com/docs/redaction)",
            "oneOf": [
              {
                "type": "boolean"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              {
                "type": "array",
                "items": {
                  "type": "boolean"
                }
              }
            ]
          },
          "extra": {
            "description": "Specify any Deepgram parameters. See Deepgram's documentation for [available streaming options](https://developers.deepgram.com/docs/features-overview)",
            "type": "object"
          },
          "includeRawResponse": {
            "description": "Whether Deepgram's raw response should be included in all transcription messages",
            "type": "boolean"
          },
          "instanceId": {
            "description": "A developer provided ID of an instance, which is used for multi-instance transcription.",
            "type": "string"
          },
          "participants": {
            "description": "A list of participant IDs to be transcribed. Only the participant IDs included in this array will be processed.",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "transcription_geo": {
            "description": "The geographic region where transcription is processed. Set to `eu` to ensure transcription data stays within the European Union.",
            "type": "string",
            "enum": ["global", "eu"],
            "default": "global"
          }
        },
        "additionalProperties": false,
        "type": "object"
      },
      "dialout-properties": {
        "properties": {
          "sipUri": {
            "description": "sipUri to call. uri should start with `sip:`. Query parameters appended to the sipUri will appear as SIP Headers in the INTIVE message at the remote SIP endpoint. Headers must start with \"X-\", e.g. to append a header \"myexampleHeader\" it is appended to sipUri as \"sip:<dialout_sip_uri>?X-header-1=val-1&X-header-2=val-2\".",
            "type": "string"
          },
          "phoneNumber": {
            "description": "phone number to call. number must start with country code e.g `+1`",
            "type": "string"
          },
          "extension": {
            "description": "the extension to dial after dialed number is connected. e.g. `1234`",
            "type": "string"
          },
          "waitBeforeExtensionDialSec": {
            "description": "number of seconds to wait before dialing the extension, once dialed number is connected.",
            "type": "integer",
            "default": 0,
            "minimum": 0,
            "maximum": 60
          },
          "displayName": {
            "description": "The sipUri or The phone participant is shown with this name in the web UI.",
            "type": "string"
          },
          "userId": {
            "description": "userId to assign to the participant. default `userId` is null.",
            "type": "string"
          },
          "callerId": {
            "description": "determine the phone number used for outbound call (i.e. phone number displayed on the called phone). [purchased phone](/products/rest-api/phone-numbers/purchased-phone-numbers)",
            "type": "string"
          },
          "video": {
            "description": "Enable SIP video in the room, only available for sipUri.",
            "type": "boolean"
          },
          "videoSettings": {
            "description": "Video encoding settings. Only applicable when `video` is `true`.",
            "type": "object",
            "properties": {
              "width": {
                "description": "Video width in pixels. Default: 1280. Maximum: 1280.",
                "type": "integer",
                "default": 1280,
                "minimum": 1,
                "maximum": 1280
              },
              "height": {
                "description": "Video height in pixels. Default: 720. Maximum: 720.",
                "type": "integer",
                "default": 720,
                "minimum": 1,
                "maximum": 720
              },
              "fps": {
                "description": "Video frame rate. Default: 15. Maximum: 30.",
                "type": "integer",
                "default": 15,
                "minimum": 1,
                "maximum": 30
              },
              "videoBitrate": {
                "description": "Video bitrate in kbps. Default: 900. Maximum: 1000.",
                "type": "integer",
                "default": 900,
                "minimum": 1,
                "maximum": 1000
              }
            }
          },
          "codecs": {
            "description": "Specify the codecs to use for dial-out.",
            "type": "object",
            "properties": {
              "audio": {
                "description": "Specify the audio codecs to use for dial-out. Default codec is PCMU/PCMA. If the set codec is not supported by the remote party, the media stream will be transcoded and a transcoding charge will be applied. ['OPUS', 'G722', 'PCMU', 'PCMA']",
                "type": "array",
                "items": {
                  "type": "string",
                  "example": ["OPUS", "G722", "PCMU", "PCMA"],
                  "enum": ["OPUS", "G722", "PCMU", "PCMA"]
                }
              },
              "video": {
                "description": "Specify the video codecs to use for dial-out. Default coded is VP8. If the set codec is not supported by the remote party, the media stream will be transcoded and a transcoding charge will be applied. ['H264', 'VP8'].",
                "type": "array",
                "items": {
                  "type": "string",
                  "example": ["H264", "VP8"],
                  "enum": ["H264", "VP8"]
                }
              }
            }
          }
        },
        "additionalProperties": false,
        "type": "object"
      },
      "properties": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "room_name": {
            "type": "string",
            "description": "The room for which this token is valid. If `room_name` isn't set, the token is valid for all rooms in your domain. *You should always set `room_name` if you are using this token to control access to a meeting."
          },
          "eject_at_token_exp": {
            "type": "boolean",
            "default": false,
            "description": "Kick this user out of the meeting at the time this meeting token expires. If either this property or `eject_after_elapsed` are set for the token, the room's `eject` properties are overridden.\n\n_See an example in our [advanced security tutorial](https://www.daily.co/blog/add-advanced-security-features-to-video-chats-with-the-daily-api/)_."
          },
          "eject_after_elapsed": {
            "type": "integer",
            "format": "int32",
            "description": "Kick this user out of the meeting this many seconds after they join the meeting. If either this property or `eject_at_token_exp` are set for the token, the room's `eject` properties are overridden.\n\n_See an example in our [advanced security tutorial](https://www.daily.co/blog/add-advanced-security-features-to-video-chats-with-the-daily-api/)_."
          },
          "nbf": {
            "type": "integer",
            "format": "int32",
            "description": "\"Not before\". This is a [unix timestamp](https://stackoverflow.com/questions/20822821/what-is-a-unix-timestamp-and-why-use-it) (seconds since the epoch.) Users cannot join a meeting in with this token before this time."
          },
          "exp": {
            "type": "integer",
            "format": "int32",
            "description": "\"Expires\". This is a unix timestamp (seconds since the epoch.) Users cannot join a meeting with this token after this time.\n\nDaily strongly recommends adding an `exp` value to all meeting tokens. Learn more in our Daily blog post: [Add advanced security to video chats with the Daily API](https://www.daily.co/blog/add-advanced-security-features-to-video-chats-with-the-daily-api/)"
          },
          "is_owner": {
            "type": "boolean",
            "default": false,
            "description": "The user has [meeting owner privileges](/docs/guides/privacy-and-security/controlling-who-joins-a-meeting#meeting-owner-privileges). For example, this user can send video, audio, and screenshare, and can perform administrative actions like muting other participants."
          },
          "user_name": {
            "type": "string",
            "description": "The user's name in this meeting. The name displays in the user interface when the user is muted or has turned off the camera, and in the chat window. This username is also saved in the meeting events log (meeting events are retrievable using the [analytics](/products/rest-api/meetings) API methods.)"
          },
          "user_id": {
            "type": "string",
            "description": "The user's ID for this meeting session. During a session, this ID is retrievable in the [`participants()`](/products/daily-js/instance-methods/participants) method and [related participant events](/products/daily-js/events/participant-events). Either during or after a session concludes, this ID is retrievable using the [/meetings](/products/rest-api/meetings) REST API endpoint. You can use `user_id` to map between your user database and meeting events/attendance.\n\nFor domains configured for [HIPAA compliance](/guides/privacy-and-security/hipaa), if the `user_id` value is a [UUID](https://www.ietf.org/rfc/rfc4122.txt) (for example, `f81d4fae-7dec-11d0-a765-00a0c91e6bf6`), then the UUID will be returned for the participant in the [`/meetings`](/products/rest-api/meetings) REST API endpoint. Otherwise, the string `hipaa` will be returned in order to remove potential PHI. During a session, the provided `user_id` will always be returned through the `participants()` method and related events, regardless of the `user_id` value.\n\nThe `user_id` has a limit of 36 characters."
          },
          "enable_screenshare": {
            "type": "boolean",
            "default": true,
            "description": "Sets whether or not the user is allowed to screen share. This setting applies for the duration of the meeting. If you're looking to dynamically control whether a user can screen share during a meeting, then use the [`permissions`](/products/rest-api/meeting-tokens/config#permissions) token property."
          },
          "start_video_off": {
            "type": "boolean",
            "default": false,
            "description": "Disable the default behavior of automatically turning on a participant's camera on a direct `join()` (i.e. without `startCamera()` first)."
          },
          "start_audio_off": {
            "type": "boolean",
            "default": false,
            "description": "Disable the default behavior of automatically turning on a participant's microphone on a direct `join()` (i.e. without `startCamera()` first)."
          },
          "enable_recording": {
            "description": "Jump to [recording docs](/products/rest-api/recordings).",
            "oneOf": [
              {
                "type": "string",
                "enum": ["cloud", "cloud-audio-only", "local", "raw-tracks"]
              },
              {
                "type": "array",
                "uniqueItems": true,
                "items": {
                  "type": "string",
                  "enum": ["cloud", "cloud-audio-only", "local", "raw-tracks"]
                }
              }
            ]
          },
          "enable_prejoin_ui": {
            "type": "boolean",
            "description": "Determines whether the participant using the meeting token enters a waiting room with a camera, mic, and browser check before joining a call. If this property is also set in the room or domain's configuration, the meeting token's configuration will take priority.\n\n\u26a0\ufe0f You must be using [Daily Prebuilt](https://daily.co/prebuilt) to use `enable_prejoin_ui`."
          },
          "enable_live_captions_ui": {
            "type": "boolean",
            "description": "Sets whether the participant sees a closed captions button in their Daily Prebuilt call tray. When the closed caption button is clicked, closed captions are displayed locally.\n\nWhen set to `true`, a closed captions button appears in the call tray. When set to `false`, the closed captions button is hidden from the call tray.\n\nNote: Transcription must be enabled for the room or users must have permission to start transcription for this feature to be enabled. View the [transcription guide](/guides/products/transcription) for more details.\n\n\u26a0\ufe0f You must be using [Daily Prebuilt](https://daily.co/blog/daily-prebuilt-video-chat) to use `enable_live_captions_ui`."
          },
          "enable_recording_ui": {
            "type": "boolean",
            "description": "Determines whether the participant using the meeting token can see the Recording button in Daily Prebuilt's UI, which can be found in the video call tray. If this value is `false`, the button will not be included in the tray. If it's `true`, the Recording button will be displayed.\n\nThis option is useful when only specific call participants should have recording permissions.\n\n \u26a0\ufe0f You must be using [Daily Prebuilt](https://daily.co/prebuilt) to use `enable_recording_ui`."
          },
          "enable_terse_logging": {
            "$ref": "#/components/schemas/enable_terse_logging"
          },
          "knocking": {
            "type": "boolean",
            "default": false,
            "description": "Requires the `enable_knocking` property to be set on the room. By default, if a user joins a room with `enable_knocking` set, and with a token, they will bypass the waiting screen and join the room directly. If this property is set to `true`, the user will be required to request access, and the owner will need to accept them before they can join."
          },
          "start_cloud_recording": {
            "type": "boolean",
            "default": false,
            "x-paidPlan": "paid",
            "description": "Start cloud recording when the user joins the room. This can be used to always record and archive meetings, for example in a customer support context.\n\nNote: This requires the `enable_recording` property of the room or token to be set to `cloud`. If you want to automatically record calls with other recording modes, use `callObject.startRecording()` after `await callObject.join()` in your code."
          },
          "start_cloud_recording_opts": {
            "type": "object",
            "x-paidPlan": "paid",
            "description": "Options for use when `start_cloud_recording` is `true`. See [`startRecording`](/products/daily-js/instance-methods/start-recording) for available options.\n\n\u26a0\ufe0f Specifying too many options may cause the token size to be very large. It is recommended to use token less than 2048 characters. For complex usecases, use the daily-js API."
          },
          "auto_start_transcription": {
            "type": "boolean",
            "default": false,
            "x-paidPlan": "paid",
            "description": "Start transcription when an owner joins the room. This property can be used to always transcribe meetings once an owner joins."
          },
          "close_tab_on_exit": {
            "type": "boolean",
            "default": false,
            "description": "(For meetings that open in a separate browser tab.) When a user leaves a meeting using the button in the in-call menu bar, the browser tab closes. This can be a good way, especially on mobile, for users to be returned to a previous website flow after a call."
          },
          "redirect_on_meeting_exit": {
            "type": "string",
            "description": "(For meetings that open in a separate browser tab.) When a user leaves a meeting using the button in the in-call menu bar, the browser loads this URL. A query string that includes a parameter of the form `recent-call=<domain>/<room>` is appended to the URL. On mobile, you can redirect to a deep link to bring a user back into your app."
          },
          "lang": {
            "type": "string",
            "description": "The default language of the [Daily prebuilt video call UI](/products/prebuilt), for this room. \n\nSetting the language at the token level will override any room or domain-level language settings you have.\n\n`*` Norwegian `\"no\"` and Russian `\"ru\"` are only available in the new Daily Prebuilt.\n\nSee [language settings](/products/prebuilt/language) for all supported values and priority order.",
            "enum": [
              "da",
              "de",
              "en",
              "es",
              "fi",
              "fr",
              "it",
              "jp",
              "ka",
              "nl",
              "no",
              "pt",
              "pt-BR",
              "pl",
              "ru",
              "sv",
              "tr",
              "user"
            ],
            "default": "en"
          },
          "permissions": {
            "$ref": "#/components/schemas/permissions"
          }
        }
      },
      "domain_dialin_config_create_req": {
        "type": "object",
        "description": "the configuration object passed to the POST API that creates the dialin config.",
        "required": ["type", "phone_number"],
        "properties": {
          "type": {
            "type": "string",
            "enum": ["pin_dialin", "pinless_dialin"],
            "description": "The type of dial-in configuration to create."
          },
          "phone_number": {
            "type": "string",
            "example": "+12555599999",
            "description": "The phone number to configure for pinless_dialin or pin_dialin, in E.164 format (e.g. \"+18058700061\"). If the same number is used by any other config then the API will fail. Required for pinless_dialin, optional for pin_dialin."
          },
          "name_prefix": {
            "type": "string",
            "example": "my-identifier-prefix",
            "description": "friendly name for the configuration."
          },
          "hmac": {
            "type": "string",
            "example": "9jyatvPWQfBymCGDOYPYKF/TRZXR+08Gj4bvPF78pH0=",
            "description": "The [HMAC signature](/guides/products/dial-in-dial-out/dialin-pinless#hmac) used to verify the webhook called to \"room_creation_api\". (only for pinless_dialin type)"
          },
          "room_creation_api": {
            "type": "string",
            "example": "https://mydomain.com/api/create-room",
            "description": "The API to request when a call is received on configured phoneNumber or sip_uri. (only for pinless_dialin type). flow is described [here](/guides/products/dial-in-dial-out/dialin-pinless#quick-overview)"
          },
          "hold_music_url": {
            "type": "string",
            "example": "https://mydomain.com/hold-music.mp3",
            "description": "The URL to the hold music to play when the call is received, (only for pinless_dialin type). The hold music must be a publicly accessible URL in MP3 format. The hold music must be less than 10MB in size and less than 60 seconds in duration. In pinless_dialin, the hold music will be played twice."
          },
          "timeout_config": {
            "type": "object",
            "description": "The timeout configuration for the dialin config.",
            "properties": {
              "message": {
                "type": "string",
                "example": "No Agents are available right now, please try again later",
                "description": "If room_creation_api does not respond within the timeout period, this message will be played to the caller."
              }
            }
          },
          "ivr_greeting": {
            "type": "object",
            "description": "configuration when the call is received on phone number (only for pin_dialin).",
            "properties": {
              "message": {
                "type": "string",
                "example": "Please enter the dialin code for the meeting, it is in the meeting invite",
                "description": "The message to play when call first connects."
              }
            }
          }
        }
      },
      "domain_dialin_config_info_res": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "0cb313e1-211f-4be0-833d-8c7305b19902",
            "description": "A unique, opaque ID for this object. You can use this ID in API calls, and in paginated list operations."
          },
          "type": {
            "type": "string",
            "example": "pinless_dialin",
            "description": "describes the type of configuration. It can be pinless_dialin or pin_dialin.",
            "enum": ["pinless_dialin", "pin_dialin"]
          },
          "config": {
            "$ref": "#/components/schemas/domain_dialin_config_create_req"
          }
        }
      },
      "domain_dialin_config_update_req": {
        "type": "object",
        "description": "the configuration object passed to update an existing pinless or pin dialin.",
        "properties": {
          "phone_number": {
            "type": "string",
            "example": "+12555599999",
            "description": "The phone number to update to the existing dialin config, in E.164 format (e.g. \"+18058700061\"). If the same number is used by any other config then the API will fail."
          },
          "name_prefix": {
            "type": "string",
            "example": "my-identifier-prefix",
            "description": "Update the name_prefix of an existing config."
          },
          "hmac": {
            "type": "string",
            "example": "9jyatvPWQfBymCGDOYPYKF/TRZXR+08Gj4bvPF78pH0=",
            "description": "The [HMAC signature](/guides/products/dial-in-dial-out/dialin-pinless#hmac) used to verify the webhook called to \"room_creation_api\". (only for pinless_dialin type)."
          },
          "room_creation_api": {
            "type": "string",
            "example": "https://mydomain.com/api/create-room",
            "description": "The URL to call when a call is received on configured phoneNumber or sip_uri. (only for pinless_dialin type). flow is described [here](/guides/products/dial-in-dial-out/dialin-pinless#quick-overview)"
          },
          "hold_music_url": {
            "type": "string",
            "example": "https://mydomain.com/hold-music.mp3",
            "description": "The URL to the hold music to play when the call is received, (only for pinless_dialin type). The hold music must be a publicly accessible URL in MP3 format. The hold music must be less than 10MB in size and less than 60 seconds in duration. In pinless_dialin, the hold music will be played twice."
          },
          "timeout_config": {
            "type": "object",
            "description": "The timeout configuration for the dialin config.",
            "properties": {
              "message": {
                "type": "string",
                "example": "No Agents are available right now, please try again later",
                "description": "If room_creation_api does not respond within the timeout period, this message will be played to the caller."
              }
            }
          },
          "ivr_greeting": {
            "type": "object",
            "description": "configuration when the call is received on phone number (only for pin_dialin).",
            "properties": {
              "message": {
                "type": "string",
                "example": "Please enter the dialin code for the meeting, it is in the meeting invite",
                "description": "The message to play when call first connects."
              }
            }
          }
        }
      },
      "webhook": {
        "type": "object",
        "additionalProperties": false,
        "required": ["url"],
        "properties": {
          "uuid": {
            "type": "string",
            "description": "The unique identifier for this webhook."
          },
          "url": {
            "type": "string",
            "description": "The webhook server endpoint that was provided."
          },
          "hmac": {
            "type": "string",
            "description": "A secret that can be used to verify the signature of the webhook."
          },
          "basicAuth": {
            "type": "string",
            "description": "The basic auth credentials that will be used to POST to the webhook URL."
          },
          "retryType": {
            "type": "string",
            "description": "The retry configuration for this webhook endpoint to use. The default is circuit-breaker.",
            "enum": ["circuit-breaker", "exponential"]
          },
          "eventTypes": {
            "description": "The set of event types this webhook is subscribed to.",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "recording.ready-to-download",
                "recording.started",
                "recording.error",
                "streaming.started",
                "streaming.updated",
                "streaming.ended",
                "streaming.error",
                "meeting.started",
                "meeting.ended",
                "participant.joined",
                "participant.left",
                "waiting-participant.joined",
                "waiting-participant.left",
                "batch-processor.job-finished",
                "batch-processor.error",
                "dialout.connected",
                "dialout.error",
                "dialout.stopped",
                "dialout.warning",
                "dialout.answered",
                "dialin.ready",
                "dialin.connected",
                "dialin.error",
                "dialin.stopped",
                "dialin.warning",
                "transcript.ready-to-download",
                "transcript.started",
                "transcript.error",
                "calltransfer.triggered",
                "calltransfer.initiated",
                "calltransfer.answered",
                "calltransfer.completed"
              ]
            }
          },
          "state": {
            "description": "The current state of the webhook. \"FAILED\" | \"INACTIVE\"",
            "type": "string"
          },
          "failedCount": {
            "description": "The number of consecutive failures this webhook has made.",
            "type": "number"
          },
          "lastMomentPushed": {
            "type": "string",
            "description": "The ISO 8601 time of the last moment an event was pushed to the webhook server."
          },
          "domainId": {
            "type": "string",
            "description": "The domain ID this webhook is associated with."
          },
          "createdAt": {
            "type": "string",
            "description": "The ISO 8601 time of when this webhook was created."
          },
          "updatedAt": {
            "type": "string",
            "description": "The ISO 8601 time of when this webhook was last updated."
          }
        }
      },
      "post_webhook": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "url": {
            "type": "string",
            "description": "The webhook server endpoint that was provided."
          },
          "basicAuth": {
            "type": "string",
            "description": "The basic auth credentials that will be used to POST to the webhook URL."
          },
          "retryType": {
            "type": "string",
            "description": "The retry configuration for this webhook endpoint to use. The default is circuit-breaker.",
            "enum": ["circuit-breaker", "exponential"]
          },
          "eventTypes": {
            "description": "The set of event types this webhook is subscribed to.",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "recording.ready-to-download",
                "recording.started",
                "recording.error",
                "streaming.started",
                "streaming.updated",
                "streaming.ended",
                "streaming.error",
                "meeting.started",
                "meeting.ended",
                "participant.joined",
                "participant.left",
                "waiting-participant.joined",
                "waiting-participant.left",
                "batch-processor.job-finished",
                "batch-processor.error",
                "dialout.connected",
                "dialout.error",
                "dialout.stopped",
                "dialout.warning",
                "dialout.answered",
                "dialin.ready",
                "dialin.connected",
                "dialin.error",
                "dialin.stopped",
                "dialin.warning",
                "transcript.ready-to-download",
                "transcript.started",
                "transcript.error",
                "calltransfer.triggered",
                "calltransfer.initiated",
                "calltransfer.answered",
                "calltransfer.completed"
              ]
            }
          },
          "hmac": {
            "type": "string",
            "description": "A secret that can be used to verify the signature of the webhook. If not provided, an hmac will be provisioned for you and returned."
          }
        }
      },
      "transcript_ready_to_download": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "version": {
            "type": "string",
            "description": "The semantic version of the current message."
          },
          "type": {
            "type": "string",
            "description": "The type of event that is being provided.",
            "enum": ["transcript.ready-to-download"]
          },
          "id": {
            "type": "string",
            "description": "The unique identifier for this webhook event."
          },
          "event_ts": {
            "type": "number",
            "description": "The Unix epoch time in seconds representing when the event was generated."
          },
          "payload": {
            "type": "object",
            "description": "The payload of the object, describing the given event.",
            "additionalProperties": false,
            "properties": {
              "id": {
                "type": "string",
                "description": "The unique identifier for the transcription event."
              },
              "out_params": {
                "type": "object",
                "description": "The output parameters of the transcription event.",
                "additionalProperties": false,
                "properties": {
                  "s3": {
                    "type": "object",
                    "description": "Details for the S3 storage of the transcription output.",
                    "additionalProperties": false,
                    "properties": {
                      "key": {
                        "type": "string",
                        "description": "The S3 key for the transcription output file."
                      },
                      "bucket": {
                        "type": "string",
                        "description": "The S3 bucket where the transcription output is stored."
                      },
                      "region": {
                        "type": "string",
                        "description": "The AWS region of the S3 bucket."
                      }
                    }
                  }
                }
              },
              "room_id": {
                "type": "string",
                "description": "The ID of the room where the event occurred."
              },
              "room_name": {
                "type": "string",
                "description": "The name of the room where the event occurred."
              },
              "mtg_session_id": {
                "type": "string",
                "description": "The meeting session ID related to the event."
              },
              "duration": {
                "type": "number",
                "description": "The duration of the session in seconds."
              },
              "participant_minutes": {
                "type": "number",
                "description": "The cumulative participant minutes for the transcription session."
              },
              "status": {
                "type": "string",
                "description": "The current status of the transcription event.",
                "enum": ["t_in_progress", "t_finished", "t_failed"]
              },
              "domain_id": {
                "type": "string",
                "description": "The ID of the domain corresponding to this transcription event."
              }
            }
          }
        }
      },
      "transcript_started": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "version": {
            "type": "string",
            "description": "The semantic version of the current message."
          },
          "type": {
            "type": "string",
            "description": "The type of event that is being provided.",
            "enum": ["transcript.started"]
          },
          "id": {
            "type": "string",
            "description": "The unique identifier for this webhook event."
          },
          "event_ts": {
            "type": "number",
            "description": "The Unix epoch time in seconds representing when the event was generated."
          },
          "payload": {
            "type": "object",
            "description": "The payload of the object, describing the given event.",
            "additionalProperties": false,
            "properties": {
              "id": {
                "type": "string",
                "description": "The unique identifier for the transcription event."
              },
              "info": {
                "type": "object",
                "description": "Additional information related to the transcription event.",
                "additionalProperties": false,
                "properties": {
                  "instanceId": {
                    "type": "string",
                    "description": "The instance ID related to the event."
                  }
                }
              },
              "room_id": {
                "type": "string",
                "description": "The ID of the room where the event occurred."
              },
              "room_name": {
                "type": "string",
                "description": "The name of the room where the event occurred."
              },
              "mtg_session_id": {
                "type": "string",
                "description": "The meeting session ID related to the event."
              },
              "max_participants": {
                "type": "integer",
                "description": "The maximum number of participants allowed in the transcription session."
              },
              "duration": {
                "type": "integer",
                "description": "The duration of the session in seconds."
              },
              "participant_minutes": {
                "type": "integer",
                "description": "The cumulative participant minutes for the transcription session."
              },
              "status": {
                "type": "string",
                "description": "The current status of the transcription event.",
                "enum": ["t_in_progress", "t_completed", "t_failed"]
              },
              "out_params": {
                "type": "object",
                "description": "The output parameters of the transcription event.",
                "additionalProperties": false,
                "properties": {
                  "s3": {
                    "type": "object",
                    "description": "Details for the S3 storage of the transcription output.",
                    "additionalProperties": false,
                    "properties": {
                      "key": {
                        "type": "string",
                        "description": "The S3 key for the transcription output file."
                      },
                      "bucket": {
                        "type": "string",
                        "description": "The S3 bucket where the transcription output is stored."
                      },
                      "region": {
                        "type": "string",
                        "description": "The AWS region of the S3 bucket."
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "transcript_error": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "version": {
            "type": "string",
            "description": "The semantic version of the current message."
          },
          "type": {
            "type": "string",
            "description": "The type of event that is being provided.",
            "enum": ["transcript.error"]
          },
          "id": {
            "type": "string",
            "description": "The unique identifier for this webhook event."
          },
          "event_ts": {
            "type": "number",
            "description": "The Unix epoch time in seconds representing when the event was generated."
          },
          "payload": {
            "type": "object",
            "description": "The payload of the object, describing the given event.",
            "additionalProperties": false,
            "properties": {
              "id": {
                "type": "string",
                "description": "The unique identifier for the transcription event."
              },
              "info": {
                "type": "object",
                "description": "Additional information related to the transcription event.",
                "additionalProperties": false,
                "properties": {
                  "instanceId": {
                    "type": "string",
                    "description": "The instance ID related to the event."
                  },
                  "startTs": {
                    "type": "integer",
                    "description": "The Unix epoch time in seconds representing the start time of the transcription."
                  },
                  "endTs": {
                    "type": "integer",
                    "description": "The Unix epoch time in seconds representing the end time of the transcription."
                  }
                }
              },
              "room_id": {
                "type": "string",
                "description": "The ID of the room where the event occurred."
              },
              "room_name": {
                "type": "string",
                "description": "The name of the room where the event occurred."
              },
              "mtg_session_id": {
                "type": "string",
                "description": "The meeting session ID related to the event."
              },
              "max_participants": {
                "type": "integer",
                "description": "The maximum number of participants allowed in the transcription session."
              },
              "duration": {
                "type": "number",
                "description": "The duration of the session in seconds."
              },
              "participant_minutes": {
                "type": "number",
                "description": "The cumulative participant minutes for the transcription session."
              },
              "status": {
                "type": "string",
                "description": "The current status of the transcription event.",
                "enum": ["t_in_progress", "t_finished", "t_error"]
              },
              "out_params": {
                "type": "object",
                "description": "The output parameters of the transcription event.",
                "additionalProperties": false,
                "properties": {
                  "s3": {
                    "type": "object",
                    "description": "Details for the S3 storage of the transcription output.",
                    "additionalProperties": false,
                    "properties": {
                      "key": {
                        "type": "string",
                        "description": "The S3 key for the transcription output file."
                      },
                      "bucket": {
                        "type": "string",
                        "description": "The S3 bucket where the transcription output is stored."
                      },
                      "region": {
                        "type": "string",
                        "description": "The AWS region of the S3 bucket."
                      },
                      "externalId": {
                        "type": "string",
                        "description": "An external identifier for the S3 configuration."
                      },
                      "assumeRoleArn": {
                        "type": "string",
                        "description": "The ARN of the role assumed for S3 access."
                      }
                    }
                  }
                }
              },
              "error": {
                "type": "string",
                "description": "The error message associated with the transcription event."
              }
            }
          }
        }
      },
      "recording_ready_to_download": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "version": {
            "type": "string",
            "description": "The semantic version of the current message."
          },
          "type": {
            "type": "string",
            "description": "The type of event that is being provided.",
            "enum": ["recording.ready-to-download"]
          },
          "event_ts": {
            "type": "number",
            "description": "The Unix epoch time in seconds representing when the event was generated."
          },
          "payload": {
            "description": "The payload of the object, describing the given event.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "type": {
                "type": "string",
                "description": "The type of recording that was generated.",
                "enum": ["cloud", "cloud-audio-only", "raw-tracks"]
              },
              "recording_id": {
                "type": "string",
                "description": "An ID identifying the recording that was generated."
              },
              "room_name": {
                "type": "string",
                "description": "The name of the room where the recording was made."
              },
              "start_ts": {
                "type": "integer",
                "description": "The Unix epoch time in seconds representing when the recording started."
              },
              "status": {
                "type": "string",
                "description": "The status of the given recording.",
                "enum": ["finished"]
              },
              "max_participants": {
                "type": "integer",
                "description": "The number of participants on the call that were recorded."
              },
              "duration": {
                "type": "integer",
                "description": "The duration in seconds of the call."
              },
              "s3_key": {
                "type": "string",
                "description": "The location of the recording in the provided S3 bucket."
              },
              "tracks": {
                "type": "array",
                "description": "If the recording is a raw-tracks recording, a tracks field will be provided. If role permissions have been removed, the tracks field may be null.",
                "items": {
                  "type": "object",
                  "properties": {
                    "size": {
                      "type": "integer",
                      "example": 15620,
                      "description": "The size of the file."
                    },
                    "type": {
                      "type": "string",
                      "example": "audio",
                      "enum": ["audio", "video"],
                      "description": "The type of track file, audio or video."
                    },
                    "s3key": {
                      "type": "string",
                      "example": "mydomain/test-recording-room/11245260397-audio",
                      "description": "The S3 Key associated with this partiicular track file."
                    }
                  }
                }
              }
            }
          }
        }
      },
      "recording_started": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "version": {
            "type": "string",
            "description": "The semantic version of the current message."
          },
          "type": {
            "type": "string",
            "description": "The type of event that is being provided.",
            "enum": ["recording.started"]
          },
          "event_ts": {
            "type": "number",
            "description": "The Unix epoch time in seconds representing when the event was generated."
          },
          "payload": {
            "description": "The payload of the object, describing the given event.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "recording_id": {
                "type": "string",
                "description": "An ID identifying the recording that was generated."
              },
              "action": {
                "type": "string",
                "description": "A string describing the event that was emitted.",
                "enum": ["start-cloud-recording"]
              },
              "layout": {
                "type": "object",
                "description": "The layout used for the recording.",
                "$ref": "#/components/schemas/DailyStreamingLayoutConfig"
              },
              "started_by": {
                "type": "string",
                "description": "The participant ID of the user who started the recording."
              },
              "instance_id": {
                "type": "string",
                "description": "The recording instance ID that was passed into the start recording command."
              },
              "start_ts": {
                "type": "integer",
                "description": "The Unix epoch time in seconds representing when the recording started."
              }
            }
          }
        }
      },
      "recording_error": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "version": {
            "type": "string",
            "description": "The semantic version of the current message."
          },
          "type": {
            "type": "string",
            "description": "The type of event that is being provided.",
            "enum": ["recording.error"]
          },
          "event_ts": {
            "type": "number",
            "description": "The Unix epoch time in seconds representing when the event was generated."
          },
          "payload": {
            "description": "The payload of the object, describing the given event.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "action": {
                "type": "string",
                "description": "A string describing the event that was emitted.",
                "enum": ["clourd-recording-err"]
              },
              "error_msg": {
                "type": "string",
                "description": "The error message returned."
              },
              "instance_id": {
                "type": "string",
                "description": "The recording instance ID that was passed into the start recording command."
              },
              "room_name": {
                "type": "string",
                "description": "The name of the room where the recording was made."
              },
              "timestamp": {
                "type": "integer",
                "format": "int32",
                "description": "The Unix epoch time in seconds representing when the error was emitted."
              }
            }
          }
        }
      },
      "streaming_started": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "version": {
            "type": "string",
            "description": "The semantic version of the current message."
          },
          "type": {
            "type": "string",
            "description": "The type of event that is being provided.",
            "enum": ["streaming.started"]
          },
          "event_ts": {
            "type": "number",
            "description": "The Unix epoch time in seconds representing when the event was generated."
          },
          "payload": {
            "description": "The payload of the object, describing the given event.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "timestamp": {
                "type": "integer",
                "format": "int32",
                "description": "The Unix epoch time in seconds representing when streaming was started."
              },
              "instance_id": {
                "type": "string",
                "description": "The streaming instance ID."
              },
              "domain_id": {
                "type": "string",
                "description": "ID of the domain for which streaming was started."
              },
              "layout": {
                "type": "object",
                "description": "The layout used for streaming.",
                "$ref": "#/components/schemas/DailyStreamingLayoutConfig"
              }
            }
          }
        }
      },
      "streaming_updated": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "version": {
            "type": "string",
            "description": "The semantic version of the current message."
          },
          "type": {
            "type": "string",
            "description": "The type of event that is being provided.",
            "enum": ["streaming.updated"]
          },
          "event_ts": {
            "type": "number",
            "description": "The Unix epoch time in seconds representing when the event was generated."
          },
          "payload": {
            "description": "The payload of the object, describing the given event.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "timestamp": {
                "type": "integer",
                "format": "int32",
                "description": "The Unix epoch time in seconds representing when streaming was updated."
              },
              "instance_id": {
                "type": "string",
                "description": "The streaming instance ID."
              },
              "domain_id": {
                "type": "string",
                "description": "ID of the domain for which streaming was updated."
              },
              "layout": {
                "type": "object",
                "description": "The layout used for streaming.",
                "$ref": "#/components/schemas/DailyStreamingLayoutConfig"
              }
            }
          }
        }
      },
      "streaming_ended": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "version": {
            "type": "string",
            "description": "The semantic version of the current message."
          },
          "type": {
            "type": "string",
            "description": "The type of event that is being provided.",
            "enum": ["streaming.ended"]
          },
          "event_ts": {
            "type": "number",
            "description": "The Unix epoch time in seconds representing when the event was generated."
          },
          "payload": {
            "description": "The payload of the object, describing the given event.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "timestamp": {
                "type": "integer",
                "format": "int32",
                "description": "The Unix epoch time in seconds representing when streaming was ended."
              },
              "instance_id": {
                "type": "string",
                "description": "The streaming instance ID."
              },
              "domain_id": {
                "type": "string",
                "description": "ID of the domain for which streaming was ended."
              }
            }
          }
        }
      },
      "streaming_error": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "version": {
            "type": "string",
            "description": "The semantic version of the current message."
          },
          "type": {
            "type": "string",
            "description": "The type of event that is being provided.",
            "enum": ["streaming.error"]
          },
          "event_ts": {
            "type": "number",
            "description": "The Unix epoch time in seconds representing when the event was generated."
          },
          "payload": {
            "description": "The payload of the object, describing the given event.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "timestamp": {
                "type": "integer",
                "format": "int32",
                "description": "The Unix epoch time in seconds representing when streaming error occurred."
              },
              "instance_id": {
                "type": "string",
                "description": "The streaming instance ID."
              },
              "error_message": {
                "type": "string",
                "description": "The error message returned."
              },
              "room_name": {
                "type": "string",
                "description": "The name of the room where streaming error occurred."
              },
              "domain_id": {
                "type": "string",
                "description": "ID of the domain for which streaming error occurred."
              }
            }
          }
        }
      },
      "participant_joined": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "version": {
            "type": "string",
            "description": "The semantic version of the current message."
          },
          "type": {
            "type": "string",
            "description": "The type of event that is being provided.",
            "enum": ["participant.joined"]
          },
          "event_ts": {
            "type": "number",
            "description": "The Unix epoch time in seconds representing when the event was generated."
          },
          "payload": {
            "description": "The payload of the object, describing the given event.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "joined_at": {
                "type": "number",
                "description": "The Unix epoch time in seconds representing when the participant joined."
              },
              "session_id": {
                "type": "string",
                "description": "The user session ID, or participant id."
              },
              "room": {
                "type": "string",
                "description": "The name of the room."
              },
              "user_id": {
                "type": "string",
                "description": "The ID of the user, set by the meeting token."
              },
              "user_name": {
                "type": "string",
                "description": "The name of the user, set by the meeting token."
              },
              "owner": {
                "type": "boolean",
                "description": "A flag determining if this user is considered the owner."
              },
              "networkQualityState": {
                "type": "string",
                "description": "The quality of the user's network.",
                "enum": ["unknown", "good", "warning", "bad"]
              },
              "will_eject_at": {
                "type": "number",
                "description": "The Unix epoch time in seconds representing when the participant will be ejected."
              },
              "permissions": {
                "type": "object",
                "description": "The permissions object, that describes what the participant is permitted to do during this call.",
                "additionalProperties": false,
                "properties": {
                  "hasPresence": {
                    "type": "boolean",
                    "description": "Determines whether the participant is \"present\" or \"hidden\""
                  },
                  "canSend": {
                    "type": "array",
                    "description": "Array of strings identifying which types of media the participant can send or a boolean to grant/revoke permissions for all media types.",
                    "items": {
                      "type": "string"
                    }
                  },
                  "canReceive": {
                    "type": "object",
                    "description": "Which media the participant should be permitted to receive. \n\n[See here for `canReceive` object format](/products/daily-js/instance-methods/participants#permissionscanreceive-properties)."
                  },
                  "canAdmin": {
                    "type": "array",
                    "description": "Array of strings identifying which types of admin tasks the participant can do or a boolean to grant/revoke permissions for all types.",
                    "items": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "participant_left": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "version": {
            "type": "string",
            "description": "The semantic version of the current message."
          },
          "type": {
            "type": "string",
            "description": "The type of event that is being provided.",
            "enum": ["participant.left"]
          },
          "event_ts": {
            "type": "number",
            "description": "The Unix epoch time in seconds representing when the event was generated."
          },
          "payload": {
            "description": "The payload of the object, describing the given event.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "joined_at": {
                "type": "number",
                "description": "The Unix epoch time in seconds representing when the participant joined."
              },
              "duration": {
                "type": "number",
                "description": "The time in seconds representing how long the participant was in the call."
              },
              "session_id": {
                "type": "string",
                "description": "The user session ID, or participant id."
              },
              "room": {
                "type": "string",
                "description": "The name of the room."
              },
              "user_id": {
                "type": "string",
                "description": "The ID of the user, set by the meeting token."
              },
              "user_name": {
                "type": "string",
                "description": "The name of the user, set by the meeting token."
              },
              "owner": {
                "type": "boolean",
                "description": "A flag determining if this user is considered the owner."
              },
              "networkQualityState": {
                "type": "string",
                "description": "The quality of the user's network.",
                "enum": ["unknown", "good", "warning", "bad"]
              },
              "will_eject_at": {
                "type": "number",
                "format": "int32",
                "description": "The Unix epoch time in seconds representing when the participant will be ejected."
              },
              "permissions": {
                "type": "object",
                "description": "The permissions object, that describes what the participant is permitted to do during this call.",
                "additionalProperties": false,
                "properties": {
                  "hasPresence": {
                    "type": "boolean",
                    "description": "Determines whether the participant is \"present\" or \"hidden\""
                  },
                  "canSend": {
                    "type": "array",
                    "description": "Array of strings identifying which types of media the participant can send or a boolean to grant/revoke permissions for all media types.",
                    "items": {
                      "type": "string"
                    }
                  },
                  "canReceive": {
                    "type": "object",
                    "description": "Which media the participant should be permitted to receive. \n\n[See here for `canReceive` object format](/products/daily-js/instance-methods/participants#permissionscanreceive-properties)."
                  },
                  "canAdmin": {
                    "type": "array",
                    "description": "Array of strings identifying which types of admin tasks the participant can do or a boolean to grant/revoke permissions for all types.",
                    "items": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "waiting_participant_joined": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "version": {
            "type": "string",
            "description": "The semantic version of the current message."
          },
          "type": {
            "type": "string",
            "description": "The type of event that is being provided.",
            "enum": ["waiting-participant.joined"]
          },
          "event_ts": {
            "type": "number",
            "description": "The Unix epoch time in seconds representing when the event was generated."
          },
          "payload": {
            "description": "The payload of the object, describing the given event.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "joined_at": {
                "type": "number",
                "description": "The Unix epoch time in seconds representing when the waiting participant joined."
              },
              "session_id": {
                "type": "string",
                "description": "The user session ID, or participant id."
              },
              "room": {
                "type": "string",
                "description": "The name of the room."
              },
              "user_id": {
                "type": "string",
                "description": "The ID of the user, set by the meeting token."
              },
              "user_name": {
                "type": "string",
                "description": "The name of the user, set by the meeting token."
              },
              "owner": {
                "type": "boolean",
                "description": "A flag determining if this user is considered the owner."
              },
              "networkQualityState": {
                "type": "string",
                "description": "The quality of the user's network.",
                "enum": ["unknown", "good", "warning", "bad"]
              },
              "will_eject_at": {
                "type": "integer",
                "format": "int32",
                "description": "The Unix epoch time in seconds representing when the participant will be ejected."
              },
              "permissions": {
                "type": "object",
                "description": "The permissions object, that describes what the participant is permitted to do during this call.",
                "additionalProperties": false,
                "properties": {
                  "hasPresence": {
                    "type": "boolean",
                    "description": "Determines whether the participant is \"present\" or \"hidden\""
                  },
                  "canSend": {
                    "type": "array",
                    "description": "Array of strings identifying which types of media the participant can send or a boolean to grant/revoke permissions for all media types.",
                    "items": {
                      "type": "string"
                    }
                  },
                  "canReceive": {
                    "type": "object",
                    "description": "Which media the participant should be permitted to receive. \n\n[See here for `canReceive` object format](/products/daily-js/instance-methods/participants#permissionscanreceive-properties)."
                  },
                  "canAdmin": {
                    "type": "array",
                    "description": "Array of strings identifying which types of admin tasks the participant can do or a boolean to grant/revoke permissions for all types.",
                    "items": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "waiting_participant_left": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "version": {
            "type": "string",
            "description": "The semantic version of the current message."
          },
          "type": {
            "type": "string",
            "description": "The type of event that is being provided.",
            "enum": ["waiting-participant.left"]
          },
          "event_ts": {
            "type": "number",
            "description": "The Unix epoch time in seconds representing when the event was generated."
          },
          "payload": {
            "description": "The payload of the object, describing the given event.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "joined_at": {
                "type": "number",
                "description": "The Unix epoch time in seconds representing when the waiting participant joined."
              },
              "duration": {
                "type": "number",
                "description": "The time in seconds representing how long the participant was in the call."
              },
              "session_id": {
                "type": "string",
                "description": "The user session ID, or participant id."
              },
              "room": {
                "type": "string",
                "description": "The name of the room."
              },
              "user_id": {
                "type": "string",
                "description": "The ID of the user, set by the meeting token."
              },
              "user_name": {
                "type": "string",
                "description": "The name of the user, set by the meeting token."
              },
              "owner": {
                "type": "boolean",
                "description": "A flag determining if this user is considered the owner."
              },
              "networkQualityState": {
                "type": "string",
                "description": "The quality of the user's network.",
                "enum": ["unknown", "good", "warning", "bad"]
              },
              "will_eject_at": {
                "type": "integer",
                "format": "int32",
                "description": "The Unix epoch time in seconds representing when the participant will be ejected."
              },
              "permissions": {
                "type": "object",
                "description": "The permissions object, that describes what the participant is permitted to do during this call.",
                "additionalProperties": false,
                "properties": {
                  "hasPresence": {
                    "type": "boolean",
                    "description": "Determines whether the participant is \"present\" or \"hidden\""
                  },
                  "canSend": {
                    "type": "array",
                    "description": "Array of strings identifying which types of media the participant can send or a boolean to grant/revoke permissions for all media types.",
                    "items": {
                      "type": "string"
                    }
                  },
                  "canReceive": {
                    "type": "object",
                    "description": "Which media the participant should be permitted to receive. \n\n[See here for `canReceive` object format](/products/daily-js/instance-methods/participants#permissionscanreceive-properties)."
                  },
                  "canAdmin": {
                    "type": "array",
                    "description": "Array of strings identifying which types of admin tasks the participant can do or a boolean to grant/revoke permissions for all types.",
                    "items": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "meeting_started": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "version": {
            "type": "string",
            "description": "The semantic version of the current message."
          },
          "type": {
            "type": "string",
            "description": "The type of event that is being provided.",
            "enum": ["meeting.started"]
          },
          "event_ts": {
            "type": "number",
            "description": "The Unix epoch time in seconds representing when the event was generated."
          },
          "payload": {
            "description": "The payload of the object, describing the given event.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "start_ts": {
                "type": "number",
                "description": "The Unix epoch time in seconds representing when meeting started."
              },
              "meeting_id": {
                "type": "string",
                "description": "The meeting ID."
              },
              "room": {
                "type": "string",
                "description": "The name of the room."
              }
            }
          }
        }
      },
      "meeting_ended": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "version": {
            "type": "string",
            "description": "The semantic version of the current message."
          },
          "type": {
            "type": "string",
            "description": "The type of event that is being provided.",
            "enum": ["meeting.ended"]
          },
          "event_ts": {
            "type": "number",
            "description": "The Unix epoch time in seconds representing when the event was generated."
          },
          "payload": {
            "description": "The payload of the object, describing the given event.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "start_ts": {
                "type": "number",
                "description": "The Unix epoch time in seconds representing when the meeting started."
              },
              "end_ts": {
                "type": "number",
                "description": "The Unix epoch time in seconds representing when the meeting ended."
              },
              "meeting_id": {
                "type": "string",
                "description": "The meeting ID."
              },
              "room": {
                "type": "string",
                "description": "The name of the room."
              }
            }
          }
        }
      },
      "batch_processor_job_finished": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "version": {
            "type": "string",
            "description": "The semantic version of the current message."
          },
          "type": {
            "type": "string",
            "description": "The type of event that is being provided.",
            "enum": ["batch-processor.job-finished"]
          },
          "event_ts": {
            "type": "number",
            "format": "int32",
            "description": "The Unix epoch time in seconds representing when the event was generated."
          },
          "payload": {
            "description": "The payload of the object, describing the given event.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "id": {
                "type": "string",
                "description": "The batch processor job id."
              },
              "preset": {
                "type": "string",
                "description": "The preset given when starting the job."
              },
              "status": {
                "type": "string",
                "description": "The status of the job.",
                "enum": ["finished"]
              },
              "input": {
                "type": "object",
                "description": "These parameters define what the inputs were for this given batch processor job.",
                "additionalProperties": false,
                "properties": {
                  "sourceType": {
                    "type": "string",
                    "description": "The source type describing the input of the job.",
                    "enum": ["recordingId", "uri", "transcriptUri"]
                  },
                  "uri": {
                    "type": "string",
                    "description": "If `uri` or `transcriptUri` `sourceType`, this field represents the uri to access the content (transcript, video or audio file)."
                  },
                  "recordingId": {
                    "type": "string",
                    "description": "If `recordingId` `sourceType`, this field represents the id of the recording."
                  },
                  "language": {
                    "type": "string",
                    "description": "If `uri` `sourceType`, this field represents the BCP-47 language of the transcript."
                  }
                }
              },
              "output": {
                "type": "object",
                "description": "These parameters define the output of the batch processor job.",
                "additionalProperties": false,
                "properties": {
                  "soap": {
                    "type": "object",
                    "description": "If this job generated a SOAP output, this field will be defined.",
                    "additionalProperties": false,
                    "properties": {
                      "format": {
                        "type": "string",
                        "description": "The filetype of this SOAP note.",
                        "enum": ["JSON"]
                      },
                      "s3Config": {
                        "type": "object",
                        "description": "The S3 bucket configuration for this file.",
                        "additionalProperties": false,
                        "properties": {
                          "bucket": {
                            "type": "string",
                            "description": "The s3 bucket containing this file."
                          },
                          "key": {
                            "type": "string",
                            "description": "The s3 object location of this file."
                          },
                          "region": {
                            "type": "string",
                            "description": "The s3 bucket region."
                          }
                        }
                      }
                    }
                  },
                  "concept": {
                    "type": "object",
                    "description": "If this job generated concepts output, this field will be defined.",
                    "additionalProperties": false,
                    "properties": {
                      "format": {
                        "type": "string",
                        "description": "The filetype of these concepts.",
                        "enum": ["JSON"]
                      },
                      "s3Config": {
                        "type": "object",
                        "description": "The S3 bucket configuration for this file.",
                        "additionalProperties": false,
                        "properties": {
                          "bucket": {
                            "type": "string",
                            "description": "The s3 bucket containing this file."
                          },
                          "key": {
                            "type": "string",
                            "description": "The s3 object location of this file."
                          },
                          "region": {
                            "type": "string",
                            "description": "The s3 bucket region."
                          }
                        }
                      }
                    }
                  },
                  "summary": {
                    "type": "object",
                    "description": "If this job generated summary output, this field will be defined.",
                    "additionalProperties": false,
                    "properties": {
                      "format": {
                        "type": "string",
                        "description": "The filetype of this summary.",
                        "enum": ["txt"]
                      },
                      "s3Config": {
                        "type": "object",
                        "description": "The S3 bucket configuration for this file.",
                        "additionalProperties": false,
                        "properties": {
                          "bucket": {
                            "type": "string",
                            "description": "The s3 bucket containing this file."
                          },
                          "key": {
                            "type": "string",
                            "description": "The s3 object location of this file."
                          },
                          "region": {
                            "type": "string",
                            "description": "The s3 bucket region."
                          }
                        }
                      }
                    }
                  },
                  "transcription": {
                    "type": "array",
                    "description": "If this job generated transcriptions output, this field will be defined.",
                    "items": {
                      "type": "object",
                      "properties": {
                        "format": {
                          "type": "string",
                          "description": "The filetype of this transcription.",
                          "enum": ["txt"]
                        },
                        "s3Config": {
                          "type": "object",
                          "description": "The S3 bucket configuration for this file.",
                          "additionalProperties": false,
                          "properties": {
                            "bucket": {
                              "type": "string",
                              "description": "The s3 bucket containing this file."
                            },
                            "key": {
                              "type": "string",
                              "description": "The s3 object location of this file."
                            },
                            "region": {
                              "type": "string",
                              "description": "The s3 bucket region."
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "batch_processor_error": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "version": {
            "type": "string",
            "description": "The semantic version of the current message."
          },
          "type": {
            "type": "string",
            "description": "The type of event that is being provided.",
            "enum": ["batch-processor.job-finished"]
          },
          "event_ts": {
            "type": "number",
            "description": "The Unix epoch time in seconds representing when the event was generated."
          },
          "payload": {
            "description": "The payload of the object, describing the given event.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "id": {
                "type": "string",
                "description": "The batch processor job id."
              },
              "preset": {
                "type": "string",
                "description": "The preset given when starting the job."
              },
              "status": {
                "type": "string",
                "description": "The status of the job.",
                "enum": ["error"]
              },
              "input": {
                "type": "object",
                "description": "These parameters define what the inputs were for this given batch processor job.",
                "additionalProperties": false,
                "properties": {
                  "sourceType": {
                    "type": "string",
                    "description": "The source type describing the input of the job.",
                    "enum": ["recordingId", "uri", "transcriptUri"]
                  },
                  "uri": {
                    "type": "string",
                    "description": "If the `sourceType` is `uri` or `transcriptUri`, this field represents the uri to access the content (transcript, video or audio file)."
                  },
                  "recordingId": {
                    "type": "string",
                    "description": "If the `sourceType` is `recordingId`, this field will be present containing the recording ID provided."
                  },
                  "language": {
                    "type": "string",
                    "description": "If the `sourceType` is `uri`, this field represents the BCP-47 language of the transcript."
                  }
                }
              },
              "error": {
                "type": "string",
                "description": "A description of the error that occurred."
              }
            }
          }
        }
      },
      "calltransfer_triggered": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "version": {
            "type": "string",
            "description": "The semantic version of the current message."
          },
          "type": {
            "type": "string",
            "description": "The type of event that is being provided.",
            "enum": ["calltransfer.triggered"]
          },
          "event_ts": {
            "type": "number",
            "description": "The Unix epoch time in seconds representing when the event was generated."
          },
          "payload": {
            "description": "The payload of the object, describing the given event.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "domain_id": {
                "type": "string",
                "description": "ID of the domain corresponding to this call-transfer event."
              },
              "room": {
                "type": "string",
                "description": "The name of the room where the call-transfer event occurred."
              },
              "timestamp": {
                "type": "integer",
                "format": "int32",
                "description": "The Unix epoch time in seconds representing when this event occurred."
              },
              "session_id": {
                "type": "string",
                "description": "The session_id of sip participant which triggered the call-transfer."
              },
              "mtg_session_id": {
                "type": "string",
                "description": "The meeting session id of the room where call-transfer was triggered."
              },
              "to_endpoint": {
                "type": "string",
                "description": "the destination sip endpoint to which the call-transfer was initiated."
              },
              "from_endpoint": {
                "type": "string",
                "description": "the source sip endpoint from which the call-transfer was initiated."
              },
              "is_sip_refer": {
                "type": "boolean",
                "description": "is sip-refer used for call transfer."
              }
            }
          }
        }
      },
      "calltransfer_initiated": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "version": {
            "type": "string",
            "description": "The semantic version of the current message."
          },
          "type": {
            "type": "string",
            "description": "The type of event that is being provided.",
            "enum": ["calltransfer.initiated"]
          },
          "event_ts": {
            "type": "number",
            "description": "The Unix epoch time in seconds representing when the event was generated."
          },
          "payload": {
            "description": "The payload of the object, describing the given event.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "domain_id": {
                "type": "string",
                "description": "ID of the domain corresponding to this call-transfer event."
              },
              "room": {
                "type": "string",
                "description": "The name of the room where call-transfer event occurred."
              },
              "timestamp": {
                "type": "integer",
                "format": "int32",
                "description": "The Unix epoch time in seconds representing when this event occurred."
              },
              "session_id": {
                "type": "string",
                "description": "The session_id of sip participant which triggered the call-transfer."
              },
              "mtg_session_id": {
                "type": "string",
                "description": "The meeting session id of the room where call-transfer was triggered."
              },
              "to_endpoint": {
                "type": "string",
                "description": "the destination sip endpoint to which the call-transfer was initiated."
              },
              "from_endpoint": {
                "type": "string",
                "description": "the source sip endpoint from which the call-transfer was initiated."
              },
              "is_sip_refer": {
                "type": "boolean",
                "description": "is sip-refer used for call transfer."
              }
            }
          }
        }
      },
      "calltransfer_answered": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "version": {
            "type": "string",
            "description": "The semantic version of the current message."
          },
          "type": {
            "type": "string",
            "description": "The type of event that is being provided.",
            "enum": ["calltransfer.answered"]
          },
          "event_ts": {
            "type": "number",
            "description": "The Unix epoch time in seconds representing when the event was generated."
          },
          "payload": {
            "description": "The payload of the object, describing the given event.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "domain_id": {
                "type": "string",
                "description": "ID of the domain corresponding to this call-transfer event."
              },
              "room": {
                "type": "string",
                "description": "The name of the room where call-transfer event occurred."
              },
              "timestamp": {
                "type": "integer",
                "format": "int32",
                "description": "The Unix epoch time in seconds representing when this event occurred."
              },
              "session_id": {
                "type": "string",
                "description": "The session_id of sip participant which triggered the call-transfer."
              },
              "mtg_session_id": {
                "type": "string",
                "description": "The meeting session id of the room where call-transfer was triggered."
              },
              "to_endpoint": {
                "type": "string",
                "description": "the destination sip endpoint to which the call-transfer was initiated."
              },
              "from_endpoint": {
                "type": "string",
                "description": "the source sip endpoint from which the call-transfer was initiated."
              }
            }
          }
        }
      },
      "calltransfer_completed": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "version": {
            "type": "string",
            "description": "The semantic version of the current message."
          },
          "type": {
            "type": "string",
            "description": "The type of event that is being provided.",
            "enum": ["calltransfer.completed"]
          },
          "event_ts": {
            "type": "number",
            "description": "The Unix epoch time in seconds representing when the event was generated."
          },
          "payload": {
            "description": "The payload of the object, describing the given event.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "domain_id": {
                "type": "string",
                "description": "ID of the domain corresponding to this call-transfer event."
              },
              "room": {
                "type": "string",
                "description": "The name of the room where call-transfer event occurred."
              },
              "timestamp": {
                "type": "integer",
                "format": "int32",
                "description": "The Unix epoch time in seconds representing when this event occurred."
              },
              "session_id": {
                "type": "string",
                "description": "The session_id of sip participant which triggered the call-transfer."
              },
              "mtg_session_id": {
                "type": "string",
                "description": "The meeting session id of the room where call-transfer was triggered."
              },
              "to_endpoint": {
                "type": "string",
                "description": "the destination sip endpoint to which the call-transfer was initiated."
              },
              "from_endpoint": {
                "type": "string",
                "description": "the source sip endpoint from which the call-transfer was initiated."
              }
            }
          }
        }
      },
      "dialout_connected": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "version": {
            "type": "string",
            "description": "The semantic version of the current message."
          },
          "type": {
            "type": "string",
            "description": "The type of event that is being provided.",
            "enum": ["dialout.connected"]
          },
          "event_ts": {
            "type": "number",
            "description": "The Unix epoch time in seconds representing when the event was generated."
          },
          "payload": {
            "description": "The payload of the object, describing the given event.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "timestamp": {
                "type": "integer",
                "format": "int32",
                "description": "The Unix epoch time in seconds representing when this event occurred."
              },
              "session_id": {
                "type": "string",
                "description": "The sessionId of the dial-out session."
              },
              "user_id": {
                "type": "string",
                "description": "The userId of the dial-out session (if supplied during the API call)."
              },
              "domain_id": {
                "type": "string",
                "description": "ID of the domain for which dial-out event occurred."
              },
              "room": {
                "type": "string",
                "description": "The name of the room where dial-out event occurred."
              },
              "destination": {
                "type": "string",
                "description": "phoneNumber (E.194 format) or the sipUri (begins with sip:) being called."
              },
              "caller_id": {
                "type": "string",
                "description": "callerId used for the dial-out"
              }
            }
          }
        }
      },
      "dialout_answered": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "version": {
            "type": "string",
            "description": "The semantic version of the current message."
          },
          "type": {
            "type": "string",
            "description": "The type of event that is being provided.",
            "enum": ["dialout.answered"]
          },
          "event_ts": {
            "type": "number",
            "description": "The Unix epoch time in seconds representing when the event was generated."
          },
          "payload": {
            "description": "The payload of the object, describing the given event.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "timestamp": {
                "type": "integer",
                "format": "int32",
                "description": "The Unix epoch time in seconds representing when this event occurred."
              },
              "session_id": {
                "type": "string",
                "description": "The sessionId of the dial-out session."
              },
              "user_id": {
                "type": "string",
                "description": "The userId of the dial-out session (if supplied during the API call)."
              },
              "domain_id": {
                "type": "string",
                "description": "ID of the domain for which dial-out event occurred."
              },
              "room": {
                "type": "string",
                "description": "The name of the room where dial-out event occurred."
              },
              "destination": {
                "type": "string",
                "description": "phoneNumber (E.194 format) or the sipUri (begins with sip:) being called."
              },
              "caller_id": {
                "type": "string",
                "description": "callerId used for the dial-out"
              }
            }
          }
        }
      },
      "dialout_stopped": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "version": {
            "type": "string",
            "description": "The semantic version of the current message."
          },
          "type": {
            "type": "string",
            "description": "The type of event that is being provided.",
            "enum": ["dialout.stopped"]
          },
          "event_ts": {
            "type": "number",
            "description": "The Unix epoch time in seconds representing when the event was generated."
          },
          "payload": {
            "description": "The payload of the object, describing the given event.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "timestamp": {
                "type": "integer",
                "format": "int32",
                "description": "The Unix epoch time in seconds representing when this event occurred."
              },
              "session_id": {
                "type": "string",
                "description": "The sessionId of the dial-out session."
              },
              "user_id": {
                "type": "string",
                "description": "The userId of the dial-out session (if supplied during the API call)."
              },
              "domain_id": {
                "type": "string",
                "description": "ID of the domain for which dial-out event occurred."
              },
              "room": {
                "type": "string",
                "description": "The name of the room where dial-out event occurred."
              },
              "destination": {
                "type": "string",
                "description": "phoneNumber (E.194 format) or the sipUri (begins with sip:) being called."
              },
              "caller_id": {
                "type": "string",
                "description": "callerId used for the dial-out"
              }
            }
          }
        }
      },
      "dialout_warning": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "version": {
            "type": "string",
            "description": "The semantic version of the current message."
          },
          "type": {
            "type": "string",
            "description": "The type of event that is being provided.",
            "enum": ["dialout.warning"]
          },
          "event_ts": {
            "type": "number",
            "description": "The Unix epoch time in seconds representing when the event was generated."
          },
          "payload": {
            "description": "The payload of the object, describing the given event.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "timestamp": {
                "type": "integer",
                "format": "int32",
                "description": "The Unix epoch time in seconds representing when this event occurred."
              },
              "session_id": {
                "type": "string",
                "description": "The sessionId of the dial-out session."
              },
              "user_id": {
                "type": "string",
                "description": "The userId of the dial-out session (if supplied during the API call)."
              },
              "domain_id": {
                "type": "string",
                "description": "ID of the domain for which dial-out event occurred."
              },
              "room": {
                "type": "string",
                "description": "The name of the room where dial-out event occurred."
              },
              "destination": {
                "type": "string",
                "description": "phoneNumber (E.194 format) or the sipUri (begins with sip:) being called."
              },
              "caller_id": {
                "type": "string",
                "description": "callerId used for the dial-out"
              }
            }
          }
        }
      },
      "dialout_error": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "version": {
            "type": "string",
            "description": "The semantic version of the current message."
          },
          "type": {
            "type": "string",
            "description": "The type of event that is being provided.",
            "enum": ["dialout.error"]
          },
          "event_ts": {
            "type": "number",
            "description": "The Unix epoch time in seconds representing when the event was generated."
          },
          "payload": {
            "description": "The payload of the object, describing the given event.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "timestamp": {
                "type": "integer",
                "format": "int32",
                "description": "The Unix epoch time in seconds representing when this event occurred."
              },
              "session_id": {
                "type": "string",
                "description": "The sessionId of the dial-out session."
              },
              "user_id": {
                "type": "string",
                "description": "The userId of the dial-out session (if supplied during the API call)."
              },
              "domain_id": {
                "type": "string",
                "description": "ID of the domain for which dial-out has error."
              },
              "room": {
                "type": "string",
                "description": "The name of the room where dial-out has error."
              },
              "error_msg": {
                "type": "string",
                "description": "message describing the error"
              }
            }
          }
        }
      },
      "dialin_ready": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "version": {
            "type": "string",
            "description": "The semantic version of the current message."
          },
          "type": {
            "type": "string",
            "description": "The type of event that is being provided.",
            "enum": ["dialin.ready"]
          },
          "event_ts": {
            "type": "number",
            "description": "The Unix epoch time in seconds representing when the event was generated."
          },
          "payload": {
            "description": "The payload of the object, describing the given event.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "timestamp": {
                "type": "integer",
                "format": "int32",
                "description": "The Unix epoch time in seconds representing when this event occurred."
              },
              "domain_id": {
                "type": "string",
                "description": "ID of the domain corresponding to this dial-in event."
              },
              "room": {
                "type": "string",
                "description": "The name of the room where the dial-in event occurred."
              },
              "sip_endpoint": {
                "type": "string",
                "description": "sip endpoint associated with the room, which is ready to receive call."
              }
            }
          }
        }
      },
      "dialin_connected": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "version": {
            "type": "string",
            "description": "The semantic version of the current message."
          },
          "type": {
            "type": "string",
            "description": "The type of event that is being provided.",
            "enum": ["dialin.connected"]
          },
          "event_ts": {
            "type": "number",
            "description": "The Unix epoch time in seconds representing when the event was generated."
          },
          "payload": {
            "description": "The payload of the object, describing the given event.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "timestamp": {
                "type": "integer",
                "format": "int32",
                "description": "The Unix epoch time in seconds representing when this event occurred."
              },
              "session_id": {
                "type": "string",
                "description": "The sessionId of the dial-in session."
              },
              "sip_from": {
                "type": "string",
                "description": "sip address of the incoming call."
              },
              "domain_id": {
                "type": "string",
                "description": "ID of the domain corresponding to this dial-in event."
              },
              "room": {
                "type": "string",
                "description": "The name of the room where dial-in event occurred."
              },
              "display_name": {
                "type": "string",
                "description": "name displayed for the incoming user."
              },
              "sip_headers": {
                "type": "object",
                "description": "sip header and header values in the incoming sip invite.",
                "additionalProperties": false
              }
            }
          }
        }
      },
      "dialin_stopped": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "version": {
            "type": "string",
            "description": "The semantic version of the current message."
          },
          "type": {
            "type": "string",
            "description": "The type of event that is being provided.",
            "enum": ["dialin.stopped"]
          },
          "event_ts": {
            "type": "number",
            "description": "The Unix epoch time in seconds representing when the event was generated."
          },
          "payload": {
            "description": "The payload of the object, describing the given event.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "timestamp": {
                "type": "integer",
                "format": "int32",
                "description": "The Unix epoch time in seconds representing when this event occurred."
              },
              "session_id": {
                "type": "string",
                "description": "The sessionId of the dial-in session."
              },
              "sip_from": {
                "type": "string",
                "description": "sip address of the incoming call."
              },
              "domain_id": {
                "type": "string",
                "description": "ID of the domain corresponding to this dial-in event."
              },
              "room": {
                "type": "string",
                "description": "The name of the room where dial-in event occurred."
              },
              "display_name": {
                "type": "string",
                "description": "name displayed for the incoming user."
              },
              "sip_headers": {
                "type": "object",
                "description": "sip header and header values in the incoming sip invite.",
                "additionalProperties": false
              }
            }
          }
        }
      },
      "dialin_warning": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "version": {
            "type": "string",
            "description": "The semantic version of the current message."
          },
          "type": {
            "type": "string",
            "description": "The type of event that is being provided.",
            "enum": ["dialin.warning"]
          },
          "event_ts": {
            "type": "number",
            "description": "The Unix epoch time in seconds representing when the event was generated."
          },
          "payload": {
            "description": "The payload of the object, describing the given event.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "timestamp": {
                "type": "integer",
                "format": "int32",
                "description": "The Unix epoch time in seconds representing when this event occurred."
              },
              "session_id": {
                "type": "string",
                "description": "The sessionId of the dial-in session."
              },
              "domain_id": {
                "type": "string",
                "description": "ID of the domain corresponding to this dial-in event."
              },
              "room": {
                "type": "string",
                "description": "The name of the room where dial-in event occurred."
              },
              "error_msg": {
                "type": "string",
                "description": "string describing the warning."
              }
            }
          }
        }
      },
      "dialin_error": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "version": {
            "type": "string",
            "description": "The semantic version of the current message."
          },
          "type": {
            "type": "string",
            "description": "The type of event that is being provided.",
            "enum": ["dialin.error"]
          },
          "event_ts": {
            "type": "number",
            "description": "The Unix epoch time in seconds representing when the event was generated."
          },
          "payload": {
            "description": "The payload of the object, describing the given event.",
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "timestamp": {
                "type": "integer",
                "format": "int32",
                "description": "The Unix epoch time in seconds representing when this event occurred."
              },
              "session_id": {
                "type": "string",
                "description": "The sessionId of the dial-in session."
              },
              "domain_id": {
                "type": "string",
                "description": "ID of the domain corresponding to this dial-in event."
              },
              "room": {
                "type": "string",
                "description": "The name of the room where dial-in error occurred."
              },
              "error_msg": {
                "type": "string",
                "description": "string describing the error."
              }
            }
          }
        }
      },
      "update_webhook": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "url": {
            "type": "string",
            "description": "The webhook server endpoint that was provided."
          },
          "basicAuth": {
            "type": "string",
            "description": "The basic auth credentials that will be used to POST to the webhook URL."
          },
          "retryType": {
            "type": "string",
            "description": "The retry configuration for this webhook endpoint to use. The default is circuit-breaker.",
            "enum": ["circuit-breaker", "exponential"]
          },
          "eventTypes": {
            "description": "The set of event types this webhook is subscribed to.",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "recording.ready-to-download",
                "recording.started",
                "recording.error",
                "streaming.started",
                "streaming.updated",
                "streaming.ended",
                "streaming.error",
                "meeting.started",
                "meeting.ended",
                "participant.joined",
                "participant.left",
                "waiting-participant.joined",
                "waiting-participant.left",
                "batch-processor.job-finished",
                "batch-processor.error",
                "dialout.connected",
                "dialout.error",
                "dialout.stopped",
                "dialout.warning",
                "dialout.answered",
                "dialin.ready",
                "dialin.connected",
                "dialin.error",
                "dialin.stopped",
                "dialin.warning",
                "transcript.ready-to-download",
                "transcript.started",
                "transcript.error",
                "calltransfer.triggered",
                "calltransfer.initiated",
                "calltransfer.answered",
                "calltransfer.completed"
              ]
            }
          },
          "hmac": {
            "type": "string",
            "description": "A secret that can be used to verify the signature of the webhook."
          }
        }
      },
      "meetings_meeting-get-res": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "d61cd7b2-a273-42b4-89bd-be763fd562c1"
          },
          "room": {
            "type": "string",
            "example": "room-name"
          },
          "start_time": {
            "type": "integer",
            "example": 1672606399
          },
          "duration": {
            "type": "integer",
            "example": 2055
          },
          "ongoing": {
            "type": "boolean",
            "example": false
          },
          "max_participants": {
            "type": "integer",
            "example": 4
          }
        }
      },
      "meeting_participants-get-res": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "example": "d61cd7b2-a273-42b4-89bd-be763fd562c1"
                },
                "room": {
                  "type": "string",
                  "example": "room-name"
                },
                "start_time": {
                  "type": "integer",
                  "example": 1672606399
                },
                "duration": {
                  "type": "integer",
                  "example": 2055
                },
                "ongoing": {
                  "type": "boolean",
                  "example": false
                },
                "max_participants": {
                  "type": "integer",
                  "example": 4
                }
              }
            }
          }
        }
      }
    }
  }
}
