{
   "openapi": "3.0.3",
   "x-stoplight": {
      "id": "3z2phq4skuv6u"
   },
   "info": {
      "title": "Vonage Video",
      "x-metaTitle": "Vonage Video API for Developers | Vonage API Documentation",
      "version": "0.3.1",
      "contact": {
         "name": "Vonage DevRel",
         "url": "https://developer.vonage.com",
         "email": "devlre@vonage.com"
      },
      "description": "APIs relating to Vonage Video",
      "x-metaDescription": "Get started with the Vonage Video API, a powerful tool for automating video communications. Learn more in Vonage's API documentation."
   },
   "servers": [
      {
         "url": "https://video.api.vonage.com",
         "description": "Vonage Video"
      }
   ],
   "paths": {
      "/session/create": {
         "parameters": [],
         "post": {
            "tags": [
               "Sessions"
            ],
            "summary": "Create New Session",
            "operationId": "session-create",
            "responses": {
               "200": {
                  "$ref": "#/components/responses/New-Session"
               }
            },
            "description": "Generate a new Vonage Video session",
            "requestBody": {
               "$ref": "#/components/requestBodies/Create-Session"
            }
         }
      },
      "/v2/project/{application_id}/session/{session_id}/signal": {
         "post": {
            "tags": [
               "Signaling"
            ],
            "parameters": [
               {
                  "$ref": "#/components/parameters/application_id"
               },
               {
                  "$ref": "#/components/parameters/session_id"
               }
            ],
            "summary": "Send a signal to all participants",
            "description": "Use the Signal REST API to send signals to all participants in an active Vonage Video session or to a specific client connected to that session. Signals sent from the server have an empty from parameter in the signal received handlers on clients connected to the session. For a signal sent from a participant in the session, the from property is set the connection ID of the client that sent the signal, but in this case there is no associated connection.",
            "requestBody": {
               "$ref": "#/components/requestBodies/Signal"
            },
            "operationId": "send-signal",
            "responses": {
               "204": {
                  "description": "No Content"
               },
               "400": {
                  "description": "Invalid request",
                  "content": {
                     "application/json": {
                        "schema": {
                           "allOf": [
                              {
                                 "$ref": "#/components/schemas/Video-Error"
                              },
                              {
                                 "type": "object",
                                 "properties": {
                                    "code": {
                                       "example": 400
                                    },
                                    "message": {
                                       "example": "One of the signal properties — data, type, sessionId or connectionId — is invalid."
                                    }
                                 }
                              }
                           ]
                        }
                     }
                  }
               },
               "403": {
                  "description": "Authentication Error",
                  "content": {
                     "application/json": {
                        "schema": {
                           "allOf": [
                              {
                                 "$ref": "#/components/schemas/Video-Error"
                              },
                              {
                                 "type": "object",
                                 "properties": {
                                    "code": {
                                       "example": 403
                                    },
                                    "message": {
                                       "example": "You are not authorized to send the signal. Check your authentication credentials."
                                    }
                                 }
                              }
                           ]
                        }
                     }
                  }
               },
               "404": {
                  "description": "Missing resource",
                  "content": {
                     "application/json": {
                        "schema": {
                           "allOf": [
                              {
                                 "$ref": "#/components/schemas/Video-Error"
                              },
                              {
                                 "type": "object",
                                 "properties": {
                                    "code": {
                                       "example": 404
                                    },
                                    "message": {
                                       "example": "The client specified by the connectionId property is not connected to the session."
                                    }
                                 }
                              }
                           ]
                        }
                     }
                  }
               },
               "413": {
                  "description": "Data length exceeded",
                  "content": {
                     "application/json": {
                        "schema": {
                           "allOf": [
                              {
                                 "$ref": "#/components/schemas/Video-Error"
                              },
                              {
                                 "type": "object",
                                 "properties": {
                                    "code": {
                                       "example": 413
                                    },
                                    "message": {
                                       "example": "The type string exceeds the maximum length (128 bytes), or the data string exceeds the maximum size (8 kB)."
                                    }
                                 }
                              }
                           ]
                        }
                     }
                  }
               }
            }
         }
      },
      "/v2/project/{application_id}/session/{session_id}/connection/{connection_id}/signal": {
         "parameters": [
            {
               "$ref": "#/components/parameters/application_id"
            },
            {
               "$ref": "#/components/parameters/session_id"
            },
            {
               "name": "connection_id",
               "in": "path",
               "required": true,
               "schema": {
                  "type": "string"
               },
               "description": "Specific publisher connection ID"
            }
         ],
         "post": {
            "tags": [
               "Signaling"
            ],
            "summary": "Send signal to a specific participant",
            "description": "Send signals to a specific participant in an active Vonage Video session",
            "operationId": "post-v2-projects-application_id-session-session_id-connection-connect_id-signal",
            "requestBody": {
               "$ref": "#/components/requestBodies/Signal"
            },
            "responses": {
               "204": {
                  "description": "No Content"
               },
               "400": {
                  "description": "Invalid request",
                  "content": {
                     "application/json": {
                        "schema": {
                           "allOf": [
                              {
                                 "$ref": "#/components/schemas/Video-Error"
                              },
                              {
                                 "type": "object",
                                 "properties": {
                                    "code": {
                                       "example": 400
                                    },
                                    "message": {
                                       "example": "One of the signal properties — data, type, sessionId or connectionId — is invalid."
                                    }
                                 }
                              }
                           ]
                        }
                     }
                  }
               },
               "403": {
                  "description": "Authentication Error",
                  "content": {
                     "application/json": {
                        "schema": {
                           "allOf": [
                              {
                                 "$ref": "#/components/schemas/Video-Error"
                              },
                              {
                                 "type": "object",
                                 "properties": {
                                    "code": {
                                       "example": 403
                                    },
                                    "message": {
                                       "example": "You are not authorized to send the signal. Check your authentication credentials."
                                    }
                                 }
                              }
                           ]
                        }
                     }
                  }
               },
               "404": {
                  "description": "Missing resource",
                  "content": {
                     "application/json": {
                        "schema": {
                           "allOf": [
                              {
                                 "$ref": "#/components/schemas/Video-Error"
                              },
                              {
                                 "type": "object",
                                 "properties": {
                                    "code": {
                                       "example": 404
                                    },
                                    "message": {
                                       "example": "The client specified by the connectionId property is not connected to the session."
                                    }
                                 }
                              }
                           ]
                        }
                     }
                  }
               },
               "413": {
                  "description": "Data length exceeded",
                  "content": {
                     "application/json": {
                        "schema": {
                           "allOf": [
                              {
                                 "$ref": "#/components/schemas/Video-Error"
                              },
                              {
                                 "type": "object",
                                 "properties": {
                                    "code": {
                                       "example": 413
                                    },
                                    "message": {
                                       "example": "The type string exceeds the maximum length (128 bytes), or the data string exceeds the maximum size (8 kB)."
                                    }
                                 }
                              }
                           ]
                        }
                     }
                  }
               }
            }
         }
      },
      "/v2/project/{application_id}/session/{session_id}/connection/{connection_id}": {
         "parameters": [
            {
               "$ref": "#/components/parameters/application_id"
            },
            {
               "$ref": "#/components/parameters/session_id"
            },
            {
               "$ref": "#/components/parameters/connection_id"
            }
         ],
         "delete": {
            "tags": [
               "Moderation"
            ],
            "summary": "Force a connection to disconnect",
            "description": "Force a client to disconnect from a session",
            "operationId": "delete-v2-projects-application_id-session-session_id-connection-connection_id",
            "responses": {
               "204": {
                  "description": "No Content"
               },
               "400": {
                  "description": "Invalid request",
                  "content": {
                     "application/json": {
                        "schema": {
                           "allOf": [
                              {
                                 "$ref": "#/components/schemas/Video-Error"
                              },
                              {
                                 "type": "object",
                                 "properties": {
                                    "code": {
                                       "example": 400
                                    },
                                    "message": {
                                       "example": "One of the arguments — sessionId or connectionId — is invalid."
                                    }
                                 }
                              }
                           ]
                        }
                     }
                  }
               },
               "403": {
                  "description": "Authentication Error",
                  "content": {
                     "application/json": {
                        "schema": {
                           "allOf": [
                              {
                                 "$ref": "#/components/schemas/Video-Error"
                              },
                              {
                                 "type": "object",
                                 "properties": {
                                    "code": {
                                       "example": 403
                                    },
                                    "message": {
                                       "example": "You are not authorized to forceDisconnect, check your authentication credentials."
                                    }
                                 }
                              }
                           ]
                        }
                     }
                  }
               },
               "404": {
                  "description": "Missing resource",
                  "content": {
                     "application/json": {
                        "schema": {
                           "allOf": [
                              {
                                 "$ref": "#/components/schemas/Video-Error"
                              },
                              {
                                 "type": "object",
                                 "properties": {
                                    "code": {
                                       "example": 403
                                    },
                                    "message": {
                                       "example": "The client specified by the connectionId property is not connected to the session."
                                    }
                                 }
                              }
                           ]
                        }
                     }
                  }
               }
            }
         }
      },
      "/v2/project/{application_id}/session/{session_id}/stream/{stream_id}": {
         "parameters": [
            {
               "$ref": "#/components/parameters/application_id"
            },
            {
               "$ref": "#/components/parameters/session_id"
            },
            {
               "$ref": "#/components/parameters/stream_id"
            }
         ],
         "get": {
            "tags": [
               "Sessions"
            ],
            "summary": "Get layout information about a stream",
            "description": "Use this method to get information on an Vonage Video stream\n\nFor example, you can call this method to get information about layout classes used by an Vonage Video stream. The layout classes define how the stream is displayed in the layout of a broadcast stream.\n",
            "operationId": "get-v2-project-application_id-session-session_id-stream-stream_id",
            "responses": {
               "200": {
                  "$ref": "#/components/responses/Stream-Layout"
               },
               "400": {
                  "description": "Invalid request",
                  "content": {
                     "application/json": {
                        "schema": {
                           "allOf": [
                              {
                                 "$ref": "#/components/schemas/Video-Error"
                              },
                              {
                                 "type": "object",
                                 "properties": {
                                    "code": {
                                       "example": 400
                                    },
                                    "message": {
                                       "example": "Invalid request. This response may indicate that data in your request data is invalid JSON. Or it may indicate that you do not pass in a session ID or you passed in an invalid stream ID."
                                    }
                                 }
                              }
                           ]
                        }
                     }
                  }
               },
               "403": {
                  "description": "Authentication Error",
                  "content": {
                     "application/json": {
                        "schema": {
                           "allOf": [
                              {
                                 "$ref": "#/components/schemas/Video-Error"
                              },
                              {
                                 "type": "object",
                                 "properties": {
                                    "code": {
                                       "example": 403
                                    },
                                    "message": {
                                       "example": "You passed in an invalid Vonage JWT token."
                                    }
                                 }
                              }
                           ]
                        }
                     }
                  }
               },
               "404": {
                  "description": "Missing resource",
                  "content": {
                     "application/json": {
                        "schema": {
                           "allOf": [
                              {
                                 "$ref": "#/components/schemas/Video-Error"
                              },
                              {
                                 "type": "object",
                                 "properties": {
                                    "code": {
                                       "example": 404
                                    },
                                    "message": {
                                       "example": "The session exists but has not had any streams added to it yet."
                                    }
                                 }
                              }
                           ]
                        }
                     }
                  }
               },
               "408": {
                  "description": "Invalid stream ID",
                  "content": {
                     "application/json": {
                        "schema": {
                           "allOf": [
                              {
                                 "$ref": "#/components/schemas/Video-Error"
                              },
                              {
                                 "type": "object",
                                 "properties": {
                                    "code": {
                                       "example": 408
                                    },
                                    "message": {
                                       "example": "You passed in an invalid stream ID."
                                    }
                                 }
                              }
                           ]
                        }
                     }
                  }
               }
            }
         }
      },
      "/v2/project/{application_id}/session/{session_id}/stream": {
         "parameters": [
            {
               "$ref": "#/components/parameters/application_id"
            },
            {
               "$ref": "#/components/parameters/session_id"
            }
         ],
         "get": {
            "tags": [
               "Sessions"
            ],
            "operationId": "get-stream-layouts",
            "summary": "Get information about all connected stream layouts",
            "description": "Use this method to get information on all Vonage Video streams in a session\n\nFor example, you can call this method to get information about layout classes used by an Vonage Video stream. The layout classes define how the stream is displayed in the layout of a broadcast stream.\n",
            "responses": {
               "200": {
                  "$ref": "#/components/responses/Multi-Stream-Layout"
               },
               "400": {
                  "description": "Invalid request",
                  "content": {
                     "application/json": {
                        "schema": {
                           "allOf": [
                              {
                                 "$ref": "#/components/schemas/Video-Error"
                              },
                              {
                                 "type": "object",
                                 "properties": {
                                    "code": {
                                       "example": 400
                                    },
                                    "message": {
                                       "example": "Invalid request. This response may indicate that data in your request data is invalid JSON. Or it may indicate that you do not pass in a session ID or you passed in an invalid stream ID."
                                    }
                                 }
                              }
                           ]
                        }
                     }
                  }
               },
               "403": {
                  "description": "Authentication Error",
                  "content": {
                     "application/json": {
                        "schema": {
                           "allOf": [
                              {
                                 "$ref": "#/components/schemas/Video-Error"
                              },
                              {
                                 "type": "object",
                                 "properties": {
                                    "code": {
                                       "example": 403
                                    },
                                    "message": {
                                       "example": "You passed in an invalid Vonage JWT token."
                                    }
                                 }
                              }
                           ]
                        }
                     }
                  }
               },
               "404": {
                  "description": "Missing resource",
                  "content": {
                     "application/json": {
                        "schema": {
                           "allOf": [
                              {
                                 "$ref": "#/components/schemas/Video-Error"
                              },
                              {
                                 "type": "object",
                                 "properties": {
                                    "code": {
                                       "example": 404
                                    },
                                    "message": {
                                       "example": "The session exists but has not had any streams added to it yet."
                                    }
                                 }
                              }
                           ]
                        }
                     }
                  }
               },
               "408": {
                  "description": "Invalid stream ID",
                  "content": {
                     "application/json": {
                        "schema": {
                           "allOf": [
                              {
                                 "$ref": "#/components/schemas/Video-Error"
                              },
                              {
                                 "type": "object",
                                 "properties": {
                                    "code": {
                                       "example": 408
                                    },
                                    "message": {
                                       "example": "You passed in an invalid stream ID."
                                    }
                                 }
                              }
                           ]
                        }
                     }
                  }
               }
            }
         },
         "put": {
            "tags": [
               "Sessions"
            ],
            "summary": "Change the layout of a stream",
            "description": "Use this method to change layout classes for an Vonage Video stream. The layout classes define how the stream is displayed in the layout of a composed Vonage Video archive.",
            "operationId": "put-v2-project-application_id-session-session_id-stream",
            "requestBody": {
               "$ref": "#/components/requestBodies/Change-Stream-Layout"
            },
            "responses": {
               "200": {
                  "$ref": "#/components/responses/Blank-200"
               },
               "400": {
                  "description": "Invalid request",
                  "content": {
                     "application/json": {
                        "schema": {
                           "allOf": [
                              {
                                 "$ref": "#/components/schemas/Video-Error"
                              },
                              {
                                 "type": "object",
                                 "properties": {
                                    "code": {
                                       "example": 400
                                    },
                                    "message": {
                                       "example": "Invalid request. This response may indicate that data in your request data is invalid JSON. It may also indicate that you passed in invalid layout options."
                                    }
                                 }
                              }
                           ]
                        }
                     }
                  }
               },
               "403": {
                  "description": "Authentication Error",
                  "content": {
                     "application/json": {
                        "schema": {
                           "allOf": [
                              {
                                 "$ref": "#/components/schemas/Video-Error"
                              },
                              {
                                 "type": "object",
                                 "properties": {
                                    "code": {
                                       "example": 403
                                    },
                                    "message": {
                                       "example": "Authentication error"
                                    }
                                 }
                              }
                           ]
                        }
                     }
                  }
               }
            }
         }
      },
      "/v2/project/{application_id}/session/{session_id}/stream/{stream_id}/mute": {
         "parameters": [
            {
               "$ref": "#/components/parameters/application_id"
            },
            {
               "$ref": "#/components/parameters/session_id"
            },
            {
               "$ref": "#/components/parameters/stream_id"
            }
         ],
         "post": {
            "tags": [
               "Moderation"
            ],
            "summary": "Mute a specific stream",
            "description": "Force mute a specific publisher stream",
            "operationId": "post-v2-project-application_id-session-session_id-stream-stream_id-mute",
            "responses": {
               "200": {
                  "$ref": "#/components/responses/Blank-200"
               },
               "400": {
                  "description": "Invalid request",
                  "content": {
                     "application/json": {
                        "schema": {
                           "allOf": [
                              {
                                 "$ref": "#/components/schemas/Video-Error"
                              },
                              {
                                 "type": "object",
                                 "properties": {
                                    "code": {
                                       "example": 400
                                    },
                                    "message": {
                                       "example": "Invalid request"
                                    }
                                 }
                              }
                           ]
                        }
                     }
                  }
               },
               "403": {
                  "description": "Authentication Error",
                  "content": {
                     "application/json": {
                        "schema": {
                           "allOf": [
                              {
                                 "$ref": "#/components/schemas/Video-Error"
                              },
                              {
                                 "type": "object",
                                 "properties": {
                                    "code": {
                                       "example": 403
                                    },
                                    "message": {
                                       "example": "Authentication error"
                                    }
                                 }
                              }
                           ]
                        }
                     }
                  }
               },
               "404": {
                  "description": "Missing resource",
                  "content": {
                     "application/json": {
                        "schema": {
                           "allOf": [
                              {
                                 "$ref": "#/components/schemas/Video-Error"
                              },
                              {
                                 "type": "object",
                                 "properties": {
                                    "code": {
                                       "example": 404
                                    },
                                    "message": {
                                       "example": "Not found. The session or stream is not found"
                                    }
                                 }
                              }
                           ]
                        }
                     }
                  }
               }
            }
         }
      },
      "/v2/project/{application_id}/session/{session_id}/mute": {
         "parameters": [
            {
               "$ref": "#/components/parameters/application_id"
            },
            {
               "$ref": "#/components/parameters/session_id"
            }
         ],
         "post": {
            "tags": [
               "Moderation"
            ],
            "summary": "Mute multiple participants in a session",
            "description": "You can use the Vonage Video REST API to force all streams (except for an optional list of streams) in a session to mute published audio. You can also use this method to disable the force mute state of a session (see below).",
            "operationId": "mute-multiple-participants",
            "requestBody": {
               "$ref": "#/components/requestBodies/Mute-Multiple-Streams"
            },
            "responses": {
               "200": {
                  "$ref": "#/components/responses/Project-Details"
               },
               "400": {
                  "description": "Invalid request",
                  "content": {
                     "application/json": {
                        "schema": {
                           "allOf": [
                              {
                                 "$ref": "#/components/schemas/Video-Error"
                              },
                              {
                                 "type": "object",
                                 "properties": {
                                    "code": {
                                       "example": 400
                                    },
                                    "message": {
                                       "example": "Invalid request. This response may indicate that data in your request data is invalid JSON."
                                    }
                                 }
                              }
                           ]
                        }
                     }
                  }
               },
               "403": {
                  "description": "Authentication Error",
                  "content": {
                     "application/json": {
                        "schema": {
                           "allOf": [
                              {
                                 "$ref": "#/components/schemas/Video-Error"
                              },
                              {
                                 "type": "object",
                                 "properties": {
                                    "code": {
                                       "example": 403
                                    },
                                    "message": {
                                       "example": "Authentication error"
                                    }
                                 }
                              }
                           ]
                        }
                     }
                  }
               },
               "404": {
                  "description": "Missing resource",
                  "content": {
                     "application/json": {
                        "schema": {
                           "allOf": [
                              {
                                 "$ref": "#/components/schemas/Video-Error"
                              },
                              {
                                 "type": "object",
                                 "properties": {
                                    "code": {
                                       "example": 404
                                    },
                                    "message": {
                                       "example": "Not found. The session or stream is not found"
                                    }
                                 }
                              }
                           ]
                        }
                     }
                  }
               }
            }
         }
      },
      "/v2/project/{application_id}/session/{session_id}/connection": {
         "parameters": [
            {
               "$ref": "#/components/parameters/application_id"
            },
            {
               "$ref": "#/components/parameters/session_id"
            }
         ],
         "get": {
            "tags": [
               "Sessions"
            ],
            "operationId": "get-connections-list",
            "summary": "List all connections in a session",
            "description": "Use this method to list the connections from an Vonage Video session associated with an application.",
            "responses": {
               "200": {
                  "description": "OK",
                  "content": {
                     "application/json": {
                        "schema": {
                           "type": "object",
                           "properties": {
                              "count": {
                                 "type": "number",
                                 "description": "The total number of connections in the session.",
                                 "example": 3
                              },
                              "projectId": {
                                 "type": "string",
                                 "description": "Your Vonage Application ID.",
                                 "example": "e9f8c166-6c67-440d-994a-04fb6dfed007"
                              },
                              "sessionId": {
                                 "type": "string",
                                 "description": "The session ID.",
                                 "example": "b40ef09b-3811-4726-b508-e41a0f96c68f"
                              },
                              "items": {
                                 "type": "array",
                                 "items": {
                                    "type": "object",
                                    "description": "An array of objects defining each connection retrieved. Connections are listed from the oldest to the newest in the return set.",
                                    "minProperties": 3,
                                    "maxProperties": 3,
                                    "properties": {
                                       "connectionId": {
                                          "type": "string",
                                          "description": "The connection ID."
                                       },
                                       "connectionState": {
                                          "type": "string",
                                          "enum": [
                                             "Connecting",
                                             "Connected"
                                          ],
                                          "example": "Connected",
                                          "description": "The state of the connection."
                                       },
                                       "createdAt": {
                                          "type": "string",
                                          "description": "The timestamp for when the connection was created, expressed in milliseconds since the Unix epoch (January 1, 1970, 00:00:00 UTC).",
                                          "example": 1384221730000
                                       }
                                    }
                                 }
                              }
                           }
                        }
                     }
                  }
               },
               "400": {
                  "description": "Invalid request"
               },
               "403": {
                  "description": "Authentication error"
               },
               "404": {
                  "description": "Session not found"
               },
               "500": {
                  "description": "Video server error"
               }
            }
         }
      },
      "/v2/project/{application_id}/session/{session_id}/migrate": {
         "parameters": [
            {
               "$ref": "#/components/parameters/application_id"
            },
            {
               "$ref": "#/components/parameters/session_id"
            }
         ],
         "post": {
            "tags": [
               "Sessions"
            ],
            "operationId": "migrate-session",
            "summary": "Migrate a session to a new server",
            "description": "Use this method to migrate a Vonage Video session with all the eligible connections to a new server. Please read the <a href=\"/video/guides/server-rotation\">Server Rotation and Session Migration Documentation</a>.",
            "responses": {
               "202": {
                  "description": "Accepted",
                  "content": {
                     "application/json": {
                        "schema": {
                           "type": "object",
                           "properties": {
                              "message": {
                                 "type": "string",
                                 "description": "Descriptive message response.",
                                 "example": "Session migration initiated"
                              }
                           }
                        }
                     }
                  }
               },
               "400": {
                  "description": "Invalid request",
                  "content": {
                     "application/json": {
                        "schema": {
                           "type": "object",
                           "description": "Missing Session ID",
                           "properties": {
                              "message": {
                                 "example": "Invalid session id."
                              },
                              "description": {
                                 "example": "Invalid session id."
                              }
                           }
                        }
                     }
                  }
               },
               "403": {
                  "description": "Authentication Error",
                  "content": {
                     "application/json": {
                        "schema": {
                           "oneOf": [
                              {
                                 "allOf": [
                                    {
                                       "type": "object",
                                       "properties": {
                                          "code": {
                                             "example": 10002
                                          },
                                          "message": {
                                             "example": "Unauthorized token"
                                          }
                                       }
                                    }
                                 ]
                              },
                              {
                                 "allOf": [
                                    {
                                       "type": "object",
                                       "properties": {
                                          "message": {
                                             "example": "Id in the token does not match the id provided in the url"
                                          },
                                          "description": {
                                             "example": "Id in the token does not match the id provided in the url"
                                          }
                                       }
                                    }
                                 ]
                              }
                           ]
                        }
                     }
                  }
               },
               "404": {
                  "description": "Session not found",
                  "content": {
                     "application/json": {
                        "schema": {
                           "type": "object",
                           "properties": {
                              "message": {
                                 "example": "Not found. No clients are actively connected to the OpenTok session."
                              }
                           }
                        }
                     }
                  }
               },
               "409": {
                  "description": "Conflict",
                  "content": {
                     "application/json": {
                        "schema": {
                           "oneOf": [
                              {
                                 "allOf": [
                                    {
                                       "type": "object",
                                       "description": "Migration in progress",
                                       "properties": {
                                          "code": {
                                             "example": 15214
                                          },
                                          "message": {
                                             "example": "Migration is already in progress for the session."
                                          },
                                          "description": {
                                             "example": "Migration is already in progress for the session."
                                          }
                                       }
                                    }
                                 ]
                              },
                              {
                                 "allOf": [
                                    {
                                       "type": "object",
                                       "description": "Migration too early",
                                       "properties": {
                                          "code": {
                                             "example": 15215
                                          },
                                          "message": {
                                             "example": "Migration is not allowed shortly after session creation or a previous migration."
                                          },
                                          "description": {
                                             "example": "Migration is not allowed shortly after session creation or a previous migration."
                                          }
                                       }
                                    }
                                 ]
                              }
                           ]
                        }
                     }
                  }
               },
               "500": {
                  "description": "Internal server error"
               }
            }
         }
      },
      "/v2/project/{application_id}/archive": {
         "parameters": [
            {
               "$ref": "#/components/parameters/application_id"
            }
         ],
         "get": {
            "tags": [
               "Archives"
            ],
            "parameters": [
               {
                  "schema": {
                     "type": "integer"
                  },
                  "in": "query",
                  "name": "offset",
                  "description": "Set an offset query parameters to specify the index offset of the first archive. 0 is offset of the most recently started archive (excluding deleted archive). 1 is the offset of the archive that started prior to the most recent archive. The default value is 0."
               },
               {
                  "schema": {
                     "type": "integer"
                  },
                  "in": "query",
                  "name": "count",
                  "description": "Set a count query parameter to limit the number of archives to be returned. The default number of archives returned is 50 (or fewer, if there are fewer than 50 archives). The maximum number of archives the call will return is 1000."
               },
               {
                  "schema": {
                     "type": "string"
                  },
                  "in": "query",
                  "name": "sessionId",
                  "description": "Set a sessionId query parameter to list archives for a specific session ID. (This is useful when listing multiple archives for an automatically archived session.)"
               }
            ],
            "summary": "List all archives in an application",
            "description": "List all archives in an application",
            "operationId": "get-v2-project-application_id-archive",
            "responses": {
               "200": {
                  "$ref": "#/components/responses/Multi-Archive-Response"
               },
               "403": {
                  "description": "Authentication Error",
                  "content": {
                     "application/json": {
                        "schema": {
                           "allOf": [
                              {
                                 "$ref": "#/components/schemas/Video-Error"
                              },
                              {
                                 "type": "object",
                                 "properties": {
                                    "code": {
                                       "example": 403
                                    },
                                    "message": {
                                       "example": "Authentication error"
                                    }
                                 }
                              }
                           ]
                        }
                     }
                  }
               }
            }
         },
         "post": {
            "tags": [
               "Archives"
            ],
            "summary": "Create a new archive",
            "description": "Create a new archive from existing video session",
            "operationId": "post-v2-project-application_id-archive",
            "requestBody": {
               "$ref": "#/components/requestBodies/New-Archive"
            },
            "responses": {
               "200": {
                  "$ref": "#/components/responses/Archive-Details"
               },
               "400": {
                  "description": "Invalid request",
                  "content": {
                     "application/json": {
                        "schema": {
                           "oneOf": [
                              {
                                 "allOf": [
                                    {
                                       "$ref": "#/components/schemas/Video-Error"
                                    },
                                    {
                                       "type": "object",
                                       "description": "Missing Session ID",
                                       "properties": {
                                          "code": {
                                             "example": 400
                                          },
                                          "message": {
                                             "example": "You do not pass in a session ID or you pass in an invalid session ID."
                                          }
                                       }
                                    }
                                 ]
                              },
                              {
                                 "allOf": [
                                    {
                                       "$ref": "#/components/schemas/Video-Error"
                                    },
                                    {
                                       "type": "object",
                                       "description": "No connected clients",
                                       "properties": {
                                          "code": {
                                             "example": 400
                                          },
                                          "message": {
                                             "example": "No clients are actively connected to the Vonage Video session."
                                          }
                                       }
                                    }
                                 ]
                              },
                              {
                                 "allOf": [
                                    {
                                       "$ref": "#/components/schemas/Video-Error"
                                    },
                                    {
                                       "type": "object",
                                       "description": "Invalid resolution",
                                       "properties": {
                                          "code": {
                                             "example": 400
                                          },
                                          "message": {
                                             "example": "You specify an invalid resolution value."
                                          }
                                       }
                                    }
                                 ]
                              },
                              {
                                 "allOf": [
                                    {
                                       "$ref": "#/components/schemas/Video-Error"
                                    },
                                    {
                                       "type": "object",
                                       "description": "Invalid `outputMode` Resolution",
                                       "properties": {
                                          "code": {
                                             "example": 400
                                          },
                                          "message": {
                                             "example": "The outputMode property is set to \"individual\" and you set the resolution property and (which is not supported in individual stream archives)."
                                          }
                                       }
                                    }
                                 ]
                              },
                              {
                                 "allOf": [
                                    {
                                       "$ref": "#/components/schemas/Video-Error"
                                    },
                                    {
                                       "type": "object",
                                       "description": "Invalid `maxBitrate` value",
                                       "properties": {
                                          "code": {
                                             "example": 400
                                          },
                                          "message": {
                                             "example": "You specify an invalid maxBitrate value or you specify a maxBitrate value for an individual stream archive. maxBitrate is only supported for composed archives."
                                          }
                                       }
                                    }
                                 ]
                              }
                           ]
                        }
                     }
                  }
               },
               "403": {
                  "description": "Authentication Error",
                  "content": {
                     "application/json": {
                        "schema": {
                           "allOf": [
                              {
                                 "$ref": "#/components/schemas/Video-Error"
                              },
                              {
                                 "type": "object",
                                 "properties": {
                                    "code": {
                                       "example": 403
                                    },
                                    "message": {
                                       "example": "Authentication error"
                                    }
                                 }
                              }
                           ]
                        }
                     }
                  }
               },
               "404": {
                  "description": "Missing resource",
                  "content": {
                     "application/json": {
                        "schema": {
                           "allOf": [
                              {
                                 "$ref": "#/components/schemas/Video-Error"
                              },
                              {
                                 "type": "object",
                                 "properties": {
                                    "code": {
                                       "example": 404
                                    },
                                    "message": {
                                       "example": "The session does not exist, or the session exists but there are no clients connected to it."
                                    }
                                 }
                              }
                           ]
                        }
                     }
                  }
               },
               "409": {
                  "description": "Conflict",
                  "content": {
                     "application/json": {
                        "schema": {
                           "oneOf": [
                              {
                                 "allOf": [
                                    {
                                       "$ref": "#/components/schemas/Video-Error"
                                    },
                                    {
                                       "type": "object",
                                       "description": "Not using the Vonage Video Media Router",
                                       "properties": {
                                          "code": {
                                             "example": 409
                                          },
                                          "message": {
                                             "example": "You attempted to start an archive for a session that does not use the Vonage Video Media Router."
                                          }
                                       }
                                    }
                                 ]
                              },
                              {
                                 "allOf": [
                                    {
                                       "$ref": "#/components/schemas/Video-Error"
                                    },
                                    {
                                       "type": "object",
                                       "description": "Archive already started",
                                       "properties": {
                                          "code": {
                                             "example": 409
                                          },
                                          "message": {
                                             "example": "You attempt to start an archive for a session that is already being recorded without setting the multiArchiveTag option"
                                          }
                                       }
                                    }
                                 ]
                              },
                              {
                                 "allOf": [
                                    {
                                       "$ref": "#/components/schemas/Video-Error"
                                    },
                                    {
                                       "type": "object",
                                       "description": "Non-Unique multiArchiveTag specified",
                                       "properties": {
                                          "code": {
                                             "example": 409
                                          },
                                          "message": {
                                             "example": "You attempt to start a simultaneous archive for a session without setting a unique multiArchiveTag value."
                                          }
                                       }
                                    }
                                 ]
                              },
                              {
                                 "allOf": [
                                    {
                                       "$ref": "#/components/schemas/Video-Error"
                                    },
                                    {
                                       "type": "object",
                                       "description": "session is already composed with code 409",
                                       "properties": {
                                          "code": {
                                             "example": 15001
                                          },
                                          "message": {
                                             "example": "session is already composed with code 409"
                                          }
                                       }
                                    }
                                 ]
                              }
                           ]
                        }
                     }
                  }
               }
            }
         }
      },
      "/v2/project/{application_id}/archive/{archive_id}": {
         "parameters": [
            {
               "$ref": "#/components/parameters/application_id"
            },
            {
               "$ref": "#/components/parameters/archive_id"
            }
         ],
         "get": {
            "tags": [
               "Archives"
            ],
            "operationId": "get-archive-information",
            "summary": "Return archive information for specific archive",
            "description": "Return archive information for specific archive",
            "responses": {
               "200": {
                  "$ref": "#/components/responses/Archive-Details"
               },
               "400": {
                  "description": "Invalid request",
                  "content": {
                     "application/json": {
                        "schema": {
                           "allOf": [
                              {
                                 "$ref": "#/components/schemas/Video-Error"
                              },
                              {
                                 "type": "object",
                                 "properties": {
                                    "code": {
                                       "example": 400
                                    },
                                    "message": {
                                       "example": "You do not pass in a session ID or you pass in an invalid archive ID."
                                    }
                                 }
                              }
                           ]
                        }
                     }
                  }
               },
               "403": {
                  "description": "Authentication Error",
                  "content": {
                     "application/json": {
                        "schema": {
                           "allOf": [
                              {
                                 "$ref": "#/components/schemas/Video-Error"
                              },
                              {
                                 "type": "object",
                                 "properties": {
                                    "code": {
                                       "example": 403
                                    },
                                    "message": {
                                       "example": "You passed in an invalid JWT token."
                                    }
                                 }
                              }
                           ]
                        }
                     }
                  }
               }
            }
         },
         "delete": {
            "tags": [
               "Archives"
            ],
            "summary": "Delete an archive",
            "description": "Delete an archive object from the Video Platform",
            "operationId": "delete-v2-project-application_id-archive-archive_id",
            "responses": {
               "204": {
                  "description": "No Content"
               },
               "403": {
                  "description": "Authentication Error",
                  "content": {
                     "application/json": {
                        "schema": {
                           "allOf": [
                              {
                                 "$ref": "#/components/schemas/Video-Error"
                              },
                              {
                                 "type": "object",
                                 "properties": {
                                    "code": {
                                       "example": 403
                                    },
                                    "message": {
                                       "example": "You passed in an invalid JWT token."
                                    }
                                 }
                              }
                           ]
                        }
                     }
                  }
               },
               "409": {
                  "description": "Conflict",
                  "content": {
                     "application/json": {
                        "schema": {
                           "allOf": [
                              {
                                 "$ref": "#/components/schemas/Video-Error"
                              },
                              {
                                 "type": "object",
                                 "properties": {
                                    "code": {
                                       "example": 409
                                    },
                                    "message": {
                                       "example": "Status of the archive is not \"uploaded\", \"available\", or \"deleted\""
                                    }
                                 }
                              }
                           ]
                        }
                     }
                  }
               }
            }
         }
      },
      "/v2/project/{application_id}/archive/{archive_id}/streams": {
         "parameters": [
            {
               "$ref": "#/components/parameters/application_id"
            },
            {
               "$ref": "#/components/parameters/archive_id"
            }
         ],
         "patch": {
            "tags": [
               "Archives"
            ],
            "summary": "Add or remove a stream from an archive",
            "description": "Use this method to change the streams included in a composed archive that was started with the streamMode set to \"manual\"",
            "operationId": "patch-v2-project-application_id-archive-archive_id-streams",
            "requestBody": {
               "content": {
                  "application/json": {
                     "schema": {
                        "oneOf": [
                           {
                              "title": "Remove Stream",
                              "x-tab-id": "RemoveStream",
                              "allOf": [
                                 {
                                    "$ref": "#/components/schemas/Remove-Stream-From-Archive"
                                 }
                              ]
                           },
                           {
                              "title": "Add Stream",
                              "x-tab-id": "AddStream",
                              "allOf": [
                                 {
                                    "$ref": "#/components/schemas/Add-Stream-To-Archive"
                                 }
                              ]
                           }
                        ]
                     }
                  }
               }
            },
            "responses": {
               "204": {
                  "description": "No Content"
               },
               "400": {
                  "description": "Invalid request",
                  "content": {
                     "application/json": {
                        "schema": {
                           "allOf": [
                              {
                                 "$ref": "#/components/schemas/Video-Error"
                              },
                              {
                                 "type": "object",
                                 "properties": {
                                    "code": {
                                       "example": 400
                                    },
                                    "message": {
                                       "example": "Invalid request. This response may indicate that data provided in your request is an invalid JSON, or the request couldn't be fulfilled because the archive was started with streamMode set to \"auto\", which does not support stream manipulation."
                                    }
                                 }
                              }
                           ]
                        }
                     }
                  }
               },
               "403": {
                  "description": "Authentication Error",
                  "content": {
                     "application/json": {
                        "schema": {
                           "allOf": [
                              {
                                 "$ref": "#/components/schemas/Video-Error"
                              },
                              {
                                 "type": "object",
                                 "properties": {
                                    "code": {
                                       "example": 403
                                    },
                                    "message": {
                                       "example": "Authentication error."
                                    }
                                 }
                              }
                           ]
                        }
                     }
                  }
               },
               "404": {
                  "description": "Missing resource",
                  "content": {
                     "application/json": {
                        "schema": {
                           "allOf": [
                              {
                                 "$ref": "#/components/schemas/Video-Error"
                              },
                              {
                                 "type": "object",
                                 "properties": {
                                    "code": {
                                       "example": 404
                                    },
                                    "message": {
                                       "example": "Archive or stream not found"
                                    }
                                 }
                              }
                           ]
                        }
                     }
                  }
               }
            }
         }
      },
      "/v2/project/{application_id}/archive/{archive_id}/stop": {
         "parameters": [
            {
               "$ref": "#/components/parameters/application_id"
            },
            {
               "$ref": "#/components/parameters/archive_id"
            }
         ],
         "post": {
            "tags": [
               "Archives"
            ],
            "operationId": "stop-archive",
            "summary": "Stop an archive",
            "description": "To stop recording an archive, submit an HTTP POST request.\n\nArchives stop recording after 4 hours (14,400 seconds), or 60 seconds after the last client disconnects from the session, or 60 minutes after the last client stops publishing. However, automatic archives continue recording to multiple consecutive files of up to 4 hours in length each. For more information, see Archive duration\n\nCalling this method for automatic archives has no effect. Automatic archives continue recording to multiple consecutive files of up to 4 hours (14,400 seconds) in length each, until 60 seconds after the last client disconnects from the session, or 60 minutes after the last client stops publishing a stream to the session.\n",
            "responses": {
               "200": {
                  "$ref": "#/components/responses/Archive-Details"
               },
               "400": {
                  "description": "Invalid request",
                  "content": {
                     "application/json": {
                        "schema": {
                           "allOf": [
                              {
                                 "$ref": "#/components/schemas/Video-Error"
                              },
                              {
                                 "type": "object",
                                 "properties": {
                                    "code": {
                                       "example": 400
                                    },
                                    "message": {
                                       "example": "You did not pass a Session ID or you passed an invalid Session ID"
                                    }
                                 }
                              }
                           ]
                        }
                     }
                  }
               },
               "403": {
                  "description": "Authentication Error",
                  "content": {
                     "application/json": {
                        "schema": {
                           "allOf": [
                              {
                                 "$ref": "#/components/schemas/Video-Error"
                              },
                              {
                                 "type": "object",
                                 "properties": {
                                    "code": {
                                       "example": 403
                                    },
                                    "message": {
                                       "example": "You passed an invalid JWT token"
                                    }
                                 }
                              }
                           ]
                        }
                     }
                  }
               },
               "404": {
                  "description": "Missing resource",
                  "content": {
                     "application/json": {
                        "schema": {
                           "allOf": [
                              {
                                 "$ref": "#/components/schemas/Video-Error"
                              },
                              {
                                 "type": "object",
                                 "properties": {
                                    "code": {
                                       "example": 404
                                    },
                                    "message": {
                                       "example": "You passed an invalid archive ID"
                                    }
                                 }
                              }
                           ]
                        }
                     }
                  }
               },
               "409": {
                  "description": "Conflict",
                  "content": {
                     "application/json": {
                        "schema": {
                           "allOf": [
                              {
                                 "$ref": "#/components/schemas/Video-Error"
                              },
                              {
                                 "type": "object",
                                 "properties": {
                                    "code": {
                                       "example": 409
                                    },
                                    "message": {
                                       "example": "You attempted to stop an archive that was not being recorded"
                                    }
                                 }
                              }
                           ]
                        }
                     }
                  }
               }
            }
         }
      },
      "/v2/project/{application_id}/archive/{archive_id}/layout": {
         "parameters": [
            {
               "$ref": "#/components/parameters/application_id"
            },
            {
               "$ref": "#/components/parameters/archive_id"
            }
         ],
         "put": {
            "tags": [
               "Archives"
            ],
            "summary": "Change the layout of an archive",
            "description": "You can dynamically change the layout type of a composed archive while it is being recorded.",
            "operationId": "put-v2-project-application_id-archive-archive_id-layout",
            "requestBody": {
               "content": {
                  "application/json": {
                     "schema": {
                        "$ref": "#/components/schemas/Layout"
                     }
                  }
               }
            },
            "responses": {
               "200": {
                  "$ref": "#/components/responses/Blank-200"
               },
               "400": {
                  "description": "Invalid request",
                  "content": {
                     "application/json": {
                        "schema": {
                           "allOf": [
                              {
                                 "$ref": "#/components/schemas/Video-Error"
                              },
                              {
                                 "type": "object",
                                 "properties": {
                                    "code": {
                                       "example": 400
                                    },
                                    "message": {
                                       "example": "Invalid request. This response may indicate that data in your request data is invalid JSON. It may also indicate that you passed in invalid layout options."
                                    }
                                 }
                              }
                           ]
                        }
                     }
                  }
               },
               "403": {
                  "description": "Authentication Error",
                  "content": {
                     "application/json": {
                        "schema": {
                           "allOf": [
                              {
                                 "$ref": "#/components/schemas/Video-Error"
                              },
                              {
                                 "type": "object",
                                 "properties": {
                                    "code": {
                                       "example": 403
                                    },
                                    "message": {
                                       "example": "Authentication error."
                                    }
                                 }
                              }
                           ]
                        }
                     }
                  }
               }
            }
         }
      },
      "/v2/project/{application_id}/dial": {
         "parameters": [
            {
               "$ref": "#/components/parameters/application_id"
            }
         ],
         "post": {
            "tags": [
               "SIP"
            ],
            "summary": "Initiate an outbound SIP call",
            "operationId": "initiate-sip-call",
            "responses": {
               "200": {
                  "description": "OK",
                  "content": {
                     "application/json": {
                        "schema": {
                           "type": "object",
                           "properties": {
                              "id": {
                                 "type": "string",
                                 "description": "A unique ID for the SIP call.",
                                 "example": "b0a5a8c7-dc38-459f-a48d-a7f2008da853"
                              },
                              "connectionId": {
                                 "type": "string",
                                 "description": "The Vonage Video connection ID for the SIP call's connection in the Vonage Video session. You can use this connection ID to terminate the SIP call, using the Vonage Video REST API.",
                                 "example": "e9f8c166-6c67-440d-994a-04fb6dfed007"
                              },
                              "streamId": {
                                 "type": "string",
                                 "description": "The Vonage Video stream ID for the SIP call's stream in the Vonage Video session.",
                                 "example": "482bce73-f882-40fd-8ca5-cb74ff416036"
                              }
                           }
                        }
                     }
                  }
               },
               "400": {
                  "description": "Bad Request\nYou do not pass in a session ID or you pass in an invalid session ID."
               },
               "403": {
                  "description": "Forbidden\nThe HTTP response has a 403 status code if you pass in an invalid JSON web token.\n"
               },
               "404": {
                  "description": "Not Found\nThe HTTP response has a 404 status code if the session does not exist.\n"
               },
               "409": {
                  "description": "Conflict\nThe HTTP response has a 409 status code if you attempt to start a SIP call for a session that does not use the Vonage Video Media Router."
               }
            },
            "description": "To connect your SIP platform to an Vonage Video session, submit an HTTP POST request to the dial method. The audio from your end of the SIP call is added to the Vonage Video session as an audio-only stream. The Vonage Video Media Router mixes audio from other streams in the session and sends the mixed audio to your SIP endpoint.\n\nThe call ends when your SIP server sends a `BYE` message (to terminate the call). You can also end a call using the Vonage Video REST API method to disconnect a client from a session. The Vonage Video SIP gateway automatically ends a call after 5 minutes of inactivity (5 minutes without media received). Also, as a security measure, the Vonage Video SIP gateway closes any SIP call that lasts longer than 6 hours.\n\nThe SIP interconnect feature requires that you use an Vonage Video session that uses the Vonage Video Media Router (a session with the media mode set to routed).\n\nFor more information, including technical details and security considerations, see the Vonage Video SIP interconnect developer guide.",
            "parameters": [
               {
                  "schema": {
                     "type": "string"
                  },
                  "in": "header",
                  "name": "Content-Type",
                  "description": "application/json"
               }
            ],
            "requestBody": {
               "content": {
                  "application/json": {
                     "schema": {
                        "type": "object",
                        "minProperties": 0,
                        "properties": {
                           "sessionId": {
                              "type": "string",
                              "example": "b40ef09b-3811-4726-b508-e41a0f96c68f",
                              "description": "The Vonage Video session ID for the SIP call to join."
                           },
                           "token": {
                              "type": "string",
                              "example": "78d335fa-323d-0114-9c3d-d6f0d48968cf",
                              "description": "The Vonage Video token to be used for the participant being called. You can add token data to identify that the participant is on a SIP endpoint or for other identifying data, such as phone numbers. (The Vonage Video client libraries include properties for inspecting the connection data for a client connected to a session.) See the Token Creation developer guide."
                           },
                           "sip": {
                              "type": "object",
                              "required": [
                                 "uri"
                              ],
                              "properties": {
                                 "uri": {
                                    "type": "string",
                                    "example": "sip:user@sip.partner.com;transport=tls",
                                    "description": "The SIP URI to be used as destination of the SIP call initiated from Vonage Video to your SIP platform.\nIf the SIP ​uri​ contains a ​transport=tls​ header, the negotiation between Vonage and the SIP endpoint will be done securely. Note that this will only apply to the negotiation itself, and not to the transmission of audio. If you also audio transmission to be encrypted, set the ​secure​ property to ​true​."
                                 },
                                 "from": {
                                    "type": "string",
                                    "example": "from@example.com",
                                    "description": "The number or string that will be sent to the final SIP number as the caller. It must be a string in the form of from@example.com, where from can be a string or a number. If from is set to a number (for example, \"14155550101@example.com\"), it will show up as the incoming number on PSTN phones. If from is undefined or set to a string (for example, \"joe@example.com\"), +00000000 will show up as the incoming number on PSTN phones."
                                 },
                                 "headers": {
                                    "type": "object",
                                    "description": "This object defines custom headers to be added to the SIP ​INVITE​ request initiated from Vonage Video to your SIP platform.",
                                    "properties": {
                                       "headerKey": {
                                          "type": "string",
                                          "example": "some-value"
                                       }
                                    }
                                 },
                                 "auth": {
                                    "type": "object",
                                    "description": "This object contains the username and password to be used in the SIP INVITE​ request for HTTP digest authentication, if it is required by your SIP platform.",
                                    "properties": {
                                       "username": {
                                          "type": "string",
                                          "example": "username"
                                       },
                                       "password": {
                                          "type": "string",
                                          "example": "p@ssw0rd"
                                       }
                                    }
                                 },
                                 "secure": {
                                    "type": "boolean",
                                    "description": "A Boolean flag that indicates whether the media must be transmitted encrypted (​true​) or not (​false​, the default)",
                                    "default": false
                                 },
                                 "video": {
                                    "type": "boolean",
                                    "description": "A Boolean flag that indicates whether the SIP call will include video (​true​) or not (​false​, the default). With video included, the SIP client's video is included in the Vonage Video stream that is sent to the Vonage Video session. SIP video is limited to 480p at 800 kbps. The SIP client will receive a single composed video of the published streams in the Vonage Video session.",
                                    "default": false
                                 },
                                 "observeForceMute": {
                                    "type": "boolean",
                                    "description": "A boolean flag that indicates whether the SIP end point observes force mute moderation (true) or not (false, the default). Also, with observeForceMute set to true, the caller can press \"*6\" to unmute and mute the published audio. For the \"*6\" mute toggle to work, the SIP caller must negotiate RFC2833 DTMFs (RFC2833/RFC4733 digits). The mute toggle is not supported with SIP INFO or in-band DTMFs. A message (in English) is played to the caller when the caller mutes and unmutes, or when the SIP client is muted through a force mute action.",
                                    "default": false
                                 }
                              }
                           }
                        },
                        "required": [
                           "sessionId",
                           "token",
                           "sip"
                        ]
                     }
                  }
               },
               "description": ""
            }
         }
      },
      "/v2/projects/{application_id}/session/{session_id}/play-dtmf": {
         "parameters": [
            {
               "$ref": "#/components/parameters/application_id"
            },
            {
               "$ref": "#/components/parameters/session_id"
            }
         ],
         "post": {
            "tags": [
               "SIP"
            ],
            "summary": "Play DTMF tones into a SIP call",
            "operationId": "play-dtmf-into-session",
            "responses": {
               "200": {
                  "description": "OK"
               },
               "400": {
                  "description": "Bad Request\nOne of the properties — digits or sessionId — is invalid.",
                  "content": {
                     "application/json": {
                        "schema": {
                           "type": "object",
                           "properties": {
                              "code": {
                                 "type": "integer",
                                 "example": 400
                              },
                              "message": {
                                 "type": "string",
                                 "example": "One of the properties digits or sessionId is invalid."
                              }
                           }
                        }
                     }
                  }
               },
               "403": {
                  "description": "Forbidden\nAuthentication error. This can occur if you use an invalid JSON web token"
               },
               "404": {
                  "description": "Not Found\nThe specified session does not exist."
               }
            },
            "description": "Use the play-dtmf REST API to send DTMF digits to all participants in an active Vonage Video session.\n\nTelephony events are negotiated over SDP and transmitted as RFC4733/RFC2833 digits to the remote endpoint.",
            "parameters": [
               {
                  "schema": {
                     "type": "string"
                  },
                  "in": "header",
                  "name": "Content-Type",
                  "description": "application/json"
               }
            ],
            "requestBody": {
               "content": {
                  "application/json": {
                     "schema": {
                        "type": "object",
                        "properties": {
                           "digits": {
                              "type": "string",
                              "example": "1713",
                              "description": "The string of DTMF digits to send. This can include 0-9, '*', '#', and 'p'. A p indicates a pause of 500ms (if you need to add a delay in sending the digits)."
                           }
                        },
                        "required": [
                           "digits"
                        ]
                     }
                  }
               }
            }
         }
      },
      "/v2/projects/{application_id}/session/{session_id}/connection/{connection_id}/play-dtmf": {
         "parameters": [
            {
               "$ref": "#/components/parameters/application_id"
            },
            {
               "$ref": "#/components/parameters/session_id"
            },
            {
               "$ref": "#/components/parameters/connection_id"
            }
         ],
         "post": {
            "tags": [
               "SIP"
            ],
            "summary": "Play DMTF tones into a specific connection",
            "operationId": "play-dtmf-into-connection",
            "responses": {
               "200": {
                  "description": "OK"
               },
               "400": {
                  "description": "Bad Request\nOne of the properties — digits or sessionId — is invalid.",
                  "content": {
                     "application/json": {
                        "schema": {
                           "type": "object",
                           "properties": {
                              "code": {
                                 "type": "integer",
                                 "example": 400
                              },
                              "message": {
                                 "type": "string",
                                 "example": "One of the properties digits or sessionId is invalid."
                              }
                           }
                        }
                     }
                  }
               },
               "403": {
                  "description": "Forbidden\nAuthentication error. This can occur if you use an invalid JSON web token"
               },
               "404": {
                  "description": "Not Found\nThe specified session does not exist."
               }
            },
            "description": "Use the play-dtmf REST API to send DTMF digits to a single participant in an Vonage Video call\n\nTelephony events are negotiated over SDP and transmitted as RFC4733/RFC2833 digits to the remote endpoint.",
            "parameters": [
               {
                  "schema": {
                     "type": "string"
                  },
                  "in": "header",
                  "name": "Content-Type",
                  "description": "application/json"
               }
            ],
            "requestBody": {
               "content": {
                  "application/json": {
                     "schema": {
                        "type": "object",
                        "properties": {
                           "digits": {
                              "type": "string",
                              "example": "1713",
                              "description": "The string of DTMF digits to send. This can include 0-9, '*', '#', and 'p'. A p indicates a pause of 500ms (if you need to add a delay in sending the digits)."
                           }
                        },
                        "required": [
                           "digits"
                        ]
                     }
                  }
               }
            }
         }
      },
      "/v2/project/{application_id}/broadcast": {
         "parameters": [
            {
               "$ref": "#/components/parameters/application_id"
            }
         ],
         "get": {
            "tags": [
               "Broadcast"
            ],
            "summary": "List Live Streaming Broadcasts",
            "operationId": "get-broadcast-list",
            "description": "List Live Streaming Broadcasts",
            "responses": {
               "200": {
                  "$ref": "#/components/responses/Broadcast-List"
               },
               "403": {
                  "description": "Forbidden\nAuthentication error"
               }
            },
            "parameters": [
               {
                  "schema": {
                     "type": "integer"
                  },
                  "in": "query",
                  "name": "offset",
                  "description": " The start offset in the list of existing broadcasts"
               },
               {
                  "schema": {
                     "type": "integer"
                  },
                  "in": "query",
                  "name": "count",
                  "description": "The number of broadcasts to retrieve starting at offset. Default of 50, max of 1000"
               },
               {
                  "schema": {
                     "type": "string"
                  },
                  "in": "query",
                  "name": "sessionId",
                  "description": "Retrieve only broadcasts for a given session ID"
               }
            ]
         },
         "post": {
            "tags": [
               "Broadcast"
            ],
            "summary": "Start a Live Streaming Broadcast",
            "operationId": "start-broadcast",
            "responses": {
               "200": {
                  "$ref": "#/components/responses/Broadcast-Details"
               },
               "400": {
                  "description": "Bad Request\nThis response may indicate that data in your request data is invalid JSON. It may also indicate that you passed in invalid layout options. Or you have exceeded the limit of five simultaneous RTMP streams for an Vonage Video session. Or you specified and invalid resolution."
               },
               "403": {
                  "description": "Forbidden\nAuthentication error."
               },
               "409": {
                  "description": "Conflict\nThe broadcast has already started for the session. Or if you attempt to start a simultaneous broadcast for a session without setting a unique multiBroadcastTag value."
               }
            },
            "description": "Use this method to start a live streaming broadcast for an Vonage Video session. This broadcasts the session to an HLS (HTTP live streaming) or to RTMP streams.\n\nTo successfully start broadcasting a session, at least one client must be connected to the session.\n\nThe live streaming broadcast can target one HLS endpoint and up to five RTMP servers simultaneously for a session. You can only start live streaming for sessions that use the Vonage Video Media Router (with the media mode set to routed); you cannot use live streaming with sessions that have the media mode set to relayed. (See The Vonage Video Media Router and media modes.)\n\nFor more information about Vonage Video live streaming, see the Broadcast developer guide.",
            "parameters": [
               {
                  "schema": {
                     "type": "string"
                  },
                  "in": "header",
                  "name": "Content-Type",
                  "description": "application/json"
               }
            ],
            "requestBody": {
               "content": {
                  "application/json": {
                     "schema": {
                        "type": "object",
                        "x-examples": {
                           "Example 1": {
                              "sessionId": "<session-id>",
                              "layout": {
                                 "type": "custom",
                                 "stylesheet": "the layout stylesheet (only used with type == custom)",
                                 "screenshareType": "optional layout type to use when there is a screen-sharing stream"
                              },
                              "maxDuration": 5400,
                              "outputs": {
                                 "hls": {
                                    "dvr": false,
                                    "lowLatency": false
                                 },
                                 "rtmp": [
                                    {
                                       "id": "foo",
                                       "serverUrl": "rtmps://myfooserver/myfooapp",
                                       "streamName": "myfoostream"
                                    },
                                    {
                                       "id": "bar",
                                       "serverUrl": "rtmp://mybarserver/mybarapp",
                                       "streamName": "mybarstream"
                                    }
                                 ]
                              },
                              "resolution": "640x480",
                              "streamMode": "auto"
                           }
                        },
                        "properties": {
                           "sessionId": {
                              "type": "string",
                              "example": "2_MX40NTMyODc3Mn5-fg",
                              "description": "Set this to the session ID of the Vonage Video session you want to broadcast."
                           },
                           "layout": {
                              "type": "object",
                              "description": "Specify this to assign the initial layout type for the broadcast.\n\nIf you do not specify an initial layout type, the broadcast stream uses the Best Fit layout type. For more information, see Configuring Video Layout for the Vonage Video live streaming feature.",
                              "properties": {
                                 "type": {
                                    "type": "string",
                                    "enum": [
                                       "bestFit",
                                       "custom",
                                       "horizontalPresentation",
                                       "pip",
                                       "verticalPresentation"
                                    ],
                                    "example": "custom"
                                 },
                                 "stylesheet": {
                                    "type": "string",
                                    "example": "the layout stylesheet (only used with type == custom)",
                                    "description": "If you specify a \"custom\" layout type, set the stylesheet property of the layout object to the stylesheet. (For other layout types, do not set a stylesheet property.) "
                                 },
                                 "screenshareType": {
                                    "type": "string",
                                    "enum": [
                                       "bestFit",
                                       "custom",
                                       "horizontalPresentation",
                                       "pip",
                                       "verticalPresentation"
                                    ],
                                    "example": "horizontalPresentation",
                                    "description": "Set the screenshareType property to the layout type to use when there is a screen-sharing stream in the session. (This property is optional.) Note if you set the screenshareType property, you must set the type property to \"bestFit\" and leave the stylesheet property unset. "
                                 }
                              },
                              "required": [
                                 "type"
                              ]
                           },
                           "maxDuration": {
                              "type": "integer",
                              "example": 5400,
                              "description": "The maximum duration for the broadcast, in seconds. The broadcast will automatically stop when the maximum duration is reached. You can set the maximum duration to a value from 60 (60 seconds) to 36000 (10 hours). The default maximum duration is 4 hours (14,400 seconds)"
                           },
                           "outputs": {
                              "type": "object",
                              "anyOf": [
                                 {
                                    "required": [
                                       "hls"
                                    ]
                                 },
                                 {
                                    "required": [
                                       "rtmp"
                                    ]
                                 },
                                 {
                                    "required": [
                                       "hls",
                                       "rtmp"
                                    ]
                                 }
                              ],
                              "description": "This object defines the types of broadcast streams you want to start (both HLS and RTMP). You can include HLS, RTMP, or both as broadcast streams. If you include RTMP streaming, you can specify up to five target RTMP streams (or just one).\n\nVonage streams the session to each RTMP URL you specify. Note that Vonage Video live streaming supports RTMP and RTMPS.",
                              "properties": {
                                 "hls": {
                                    "type": "object",
                                    "properties": {
                                       "dvr": {
                                          "type": "boolean",
                                          "description": "Whether to enable DVR functionality — rewinding, pausing, and resuming — in players that support it (true), or not (false, the default). With DVR enabled, the HLS URL will include a ?DVR query string appended to the end."
                                       },
                                       "lowLatency": {
                                          "type": "boolean",
                                          "description": "Whether to enable low-latency mode for the HLSstream. Some HLS players do not support low-latency mode. This feature is incompatible with DVR mode HLS broadcasts."
                                       }
                                    }
                                 },
                                 "rtmp": {
                                    "type": "array",
                                    "items": {
                                       "type": "object",
                                       "minProperties": 1,
                                       "maxProperties": 5,
                                       "properties": {
                                          "id": {
                                             "type": "string",
                                             "example": "foo",
                                             "description": "a unique ID for the stream"
                                          },
                                          "serverUrl": {
                                             "type": "string",
                                             "example": "rtmps://myfooserver/myfooapp",
                                             "description": "the RTMP server URL"
                                          },
                                          "streamName": {
                                             "type": "string",
                                             "example": "myfoostream",
                                             "description": "the stream name, such as the YouTube Live stream name or the Facebook stream key"
                                          }
                                       },
                                       "required": [
                                          "serverUrl",
                                          "streamName"
                                       ]
                                    }
                                 }
                              }
                           },
                           "resolution": {
                              "type": "string",
                              "enum": [
                                 "640x480",
                                 "1280x720",
                                 "1920x1080",
                                 "480x640",
                                 "720x1280",
                                 "1080x1920"
                              ],
                              "example": "1920x1080"
                           },
                           "streamMode": {
                              "type": "string",
                              "enum": [
                                 "auto",
                                 "manual"
                              ],
                              "example": "manual",
                              "default": "auto"
                           },
                           "multiBroadcastTag": {
                              "type": "string",
                              "example": "foo",
                              "description": "Set this to support multiple broadcasts for the same session simultaneously. Set this to a unique string for each simultaneous broadcast of an ongoing session. See Simultaneous broadcasts."
                           },
                           "maxBitrate": {
                              "$ref": "#/components/schemas/Max-Bitrate"
                           }
                        },
                        "required": [
                           "sessionId",
                           "outputs"
                        ]
                     }
                  }
               }
            }
         }
      },
      "/v2/project/{application_id}/broadcast/{broadcast_id}": {
         "parameters": [
            {
               "$ref": "#/components/parameters/application_id"
            },
            {
               "$ref": "#/components/parameters/broadcast_id"
            }
         ],
         "get": {
            "tags": [
               "Broadcast"
            ],
            "summary": "Get Information about Broadcast",
            "operationId": "get-broadcast-details",
            "responses": {
               "200": {
                  "$ref": "#/components/responses/Broadcast-Details"
               },
               "403": {
                  "description": "Forbidden\nAuthentication error"
               }
            },
            "parameters": [],
            "description": "Use this method to get details on a broadcast that is in-progress."
         }
      },
      "/v2/project/{application_id}/broadcast/{broadcast_id}/stop": {
         "parameters": [
            {
               "$ref": "#/components/parameters/application_id"
            },
            {
               "$ref": "#/components/parameters/broadcast_id"
            }
         ],
         "post": {
            "tags": [
               "Broadcast"
            ],
            "summary": "Stop Broadcast",
            "operationId": "stop-broadcast",
            "responses": {
               "200": {
                  "$ref": "#/components/responses/Broadcast-Details"
               },
               "400": {
                  "description": "Bad Request\nInvalid request. This response may indicate that data in your request data is invalid JSON."
               },
               "403": {
                  "description": "Forbidden\nAuthentication error."
               },
               "404": {
                  "description": "Not Found\nThe broadcast (with the specified ID) was not found or it has already stopped."
               }
            },
            "description": "Use this method to stop a live broadcast of an Vonage Video session.\n\nNote that a broadcast stops automatically 60 seconds after the last client disconnects from the session. Also, there is a default maximum duration of 4 hours (14,400 seconds) for each HLS and RTMP stream (the live stream broadcast automatically stops when this duration is reached). You can change the maximum duration for the broadcast by setting the `maxDuration` property when you [start the broadcast](#start_broadcast) REST method."
         }
      },
      "/v2/project/{application_id}/broadcast/{broadcast_id}/layout": {
         "parameters": [
            {
               "name": "application_id",
               "in": "path",
               "required": true,
               "schema": {
                  "type": "string"
               },
               "description": "Vonage Application UUID"
            },
            {
               "schema": {
                  "type": "string"
               },
               "name": "broadcast_id",
               "in": "path",
               "required": true
            }
         ],
         "put": {
            "tags": [
               "Broadcast"
            ],
            "summary": "Dynamically change layout of a broadcast",
            "operationId": "change-broadcast-layout",
            "responses": {
               "200": {
                  "description": "OK"
               },
               "400": {
                  "description": "Bad Request\nInvalid request. This response may indicate that data in your request data is invalid JSON."
               },
               "403": {
                  "description": "Forbidden\nAuthentication error."
               },
               "404": {
                  "description": "Not Found\nThe broadcast (with the specified ID) was not found or it has already stopped."
               }
            },
            "description": "You can dynamically change the layout type of a live streaming broadcast.\n\nFor more information about Vonage Video live streaming broadcasts, see the Broadcast developer guide.",
            "requestBody": {
               "$ref": "#/components/requestBodies/Layout"
            }
         }
      },
      "/v2/project/{application_id}/broadcast/{broadcast_id}/streams": {
         "parameters": [
            {
               "name": "application_id",
               "in": "path",
               "required": true,
               "schema": {
                  "type": "string"
               },
               "description": "Vonage Application UUID"
            },
            {
               "schema": {
                  "type": "string"
               },
               "name": "broadcast_id",
               "in": "path",
               "required": true
            }
         ],
         "patch": {
            "tags": [
               "Broadcast"
            ],
            "summary": "Selecting streams to be included in a live streaming broadcast",
            "operationId": "select-streams-for-broadcast",
            "description": "Use this method to change the streams included in a live streaming broadcast that was started with the streamMode set to \"manual\" (see Starting a live streaming broadcast).\n\nThe broadcast composer includes added streams based on stream prioritization rules.",
            "requestBody": {
               "$ref": "#/components/requestBodies/Select-Streams"
            },
            "responses": {
               "204": {
                  "description": "No Content"
               },
               "400": {
                  "description": "Bad Request\nThis response may indicate that data provided in your request is an invalid JSON, or the request couldn't be fulfilled because the broadcast was started with streamMode set to \"auto\", which does not support stream manipulation."
               },
               "403": {
                  "description": "Forbidden"
               },
               "404": {
                  "description": "Not Found\nBroadcast or stream not found."
               }
            }
         }
      },
      "/v2/project/{application_id}/captions": {
         "parameters": [
            {
               "$ref": "#/components/parameters/application_id"
            }
         ],
         "post": {
            "tags": [
               "Live Captions"
            ],
            "summary": "Start Live Captions for a Vonage Video stream",
            "operationId": "start-live-captions",
            "description": "Use this method to start real-time Live Captions for an Vonage Video Session.\n\nThe maximum allowed duration is 4 hours, after which the audio captioning will stop without any effect on the ongoing Vonage Video Session. An event will be posted to your callback URL if provided when starting the captions.\n\nEach Vonage Video Session supports only one audio captioning session.",
            "parameters": [
               {
                  "schema": null,
                  "type": "string",
                  "in": "header",
                  "name": "Content-Type",
                  "description": "application/json"
               }
            ],
            "requestBody": {
               "$ref": "#/components/requestBodies/Start-Live-Captions"
            },
            "responses": {
               "202": {
                  "$ref": "#/components/responses/Captions-Started"
               },
               "400": {
                  "description": "Bad Request\nThis response may indicate that data provided in your request is an invalid JSON, or the request couldn't be fulfilled because the broadcast was started with streamMode set to \"auto\", which does not support stream manipulation."
               },
               "403": {
                  "description": "Forbidden"
               },
               "409": {
                  "description": "Live captions have already been started for this session"
               },
               "500": {
                  "description": "Vonage Video API Platform error"
               }
            }
         }
      },
      "/v2/project/{application_id}/captions/{captions_id}/stop": {
         "parameters": [
            {
               "$ref": "#/components/parameters/application_id"
            },
            {
               "$ref": "#/components/parameters/captions_id"
            }
         ],
         "post": {
            "tags": [
               "Live Captions"
            ],
            "summary": "Stop live captions for a session",
            "description": "Stop live captions for a session",
            "operationId": "stop-live-captions",
            "responses": {
               "202": {
                  "description": "Accepted"
               },
               "403": {
                  "description": "Forbidden"
               },
               "404": {
                  "description": "The captions ID was not found"
               },
               "500": {
                  "description": "Vonage Video API Platform error"
               }
            }
         }
      },
      "/v2/project/{application_id}/connect": {
         "parameters": [
            {
               "$ref": "#/components/parameters/application_id"
            }
         ],
         "post": {
            "tags": [
               "Audio Connector"
            ],
            "summary": "Start an audio connector connection",
            "description": "Use this method to send audio from a Vonage Video API session to a WebSocket.",
            "operationId": "start-audio-connector-connection",
            "requestBody": {
               "$ref": "#/components/requestBodies/Start-Audio-Connector"
            },
            "responses": {
               "200": {
                  "$ref": "#/components/responses/Audio-Connector-Started"
               },
               "403": {
                  "description": "Forbidden"
               },
               "409": {
                  "description": "Live captions have already been started for this session"
               },
               "500": {
                  "description": "Vonage Video API Platform error"
               }
            }
         }
      },
      "/v2/project/{application_id}/render": {
         "parameters": [
            {
               "$ref": "#/components/parameters/application_id"
            }
         ],
         "post": {
            "tags": [
               "Experience Composer"
            ],
            "summary": "Start an Experience Composer Session",
            "description": "Use this method to create an Experience Composer for an OpenTok session.",
            "operationId": "start-experience-composer-session",
            "requestBody": {
               "$ref": "#/components/requestBodies/Start-Experience-Composer"
            },
            "responses": {
               "202": {
                  "$ref": "#/components/responses/Experience-Composer-Start"
               },
               "400": {
                  "description": "Invalid request",
                  "content": {
                     "application/json": {
                        "schema": {
                           "oneOf": [
                              {
                                 "allOf": [
                                    {
                                       "$ref": "#/components/schemas/Video-Error"
                                    },
                                    {
                                       "type": "object",
                                       "description": "Invalid application URL structure.",
                                       "properties": {
                                          "code": {
                                             "example": 50001
                                          },
                                          "message": {
                                             "example": "Invalid application URL structure."
                                          }
                                       }
                                    }
                                 ]
                              },
                              {
                                 "allOf": [
                                    {
                                       "$ref": "#/components/schemas/Video-Error"
                                    },
                                    {
                                       "type": "object",
                                       "description": "Application URL is unreachable.",
                                       "properties": {
                                          "code": {
                                             "example": 50002
                                          },
                                          "message": {
                                             "example": "Application URL is unreachable."
                                          }
                                       }
                                    }
                                 ]
                              },
                              {
                                 "allOf": [
                                    {
                                       "$ref": "#/components/schemas/Video-Error"
                                    },
                                    {
                                       "type": "object",
                                       "description": "Invalid maxDuration provided.",
                                       "properties": {
                                          "code": {
                                             "example": 50005
                                          },
                                          "message": {
                                             "example": "Invalid maxDuration provided."
                                          }
                                       }
                                    }
                                 ]
                              },
                              {
                                 "allOf": [
                                    {
                                       "$ref": "#/components/schemas/Video-Error"
                                    },
                                    {
                                       "type": "object",
                                       "description": "Invalid resolution provided.",
                                       "properties": {
                                          "code": {
                                             "example": 50006
                                          },
                                          "message": {
                                             "example": "Invalid resolution provided."
                                          }
                                       }
                                    }
                                 ]
                              },
                              {
                                 "allOf": [
                                    {
                                       "$ref": "#/components/schemas/Video-Error"
                                    },
                                    {
                                       "type": "object",
                                       "description": "Invalid stream name provided.",
                                       "properties": {
                                          "code": {
                                             "example": 50007
                                          },
                                          "message": {
                                             "example": "Invalid stream name provided."
                                          }
                                       }
                                    }
                                 ]
                              },
                              {
                                 "allOf": [
                                    {
                                       "$ref": "#/components/schemas/Video-Error"
                                    },
                                    {
                                       "type": "object",
                                       "description": "Invalid sessionId provided.",
                                       "properties": {
                                          "code": {
                                             "example": 50008
                                          },
                                          "message": {
                                             "example": "Invalid sessionId provided."
                                          }
                                       }
                                    }
                                 ]
                              }
                           ]
                        }
                     }
                  }
               },
               "403": {
                  "description": "Authentication Error",
                  "content": {
                     "application/json": {
                        "schema": {
                           "oneOf": [
                              {
                                 "allOf": [
                                    {
                                       "$ref": "#/components/schemas/Video-Error"
                                    },
                                    {
                                       "type": "object",
                                       "description": "Invalid token format or signature.",
                                       "properties": {
                                          "code": {
                                             "example": 10001
                                          },
                                          "message": {
                                             "example": "Invalid token format or signature."
                                          }
                                       }
                                    }
                                 ]
                              },
                              {
                                 "allOf": [
                                    {
                                       "$ref": "#/components/schemas/Video-Error"
                                    },
                                    {
                                       "type": "object",
                                       "description": "Unauthorized token.",
                                       "properties": {
                                          "code": {
                                             "example": 10002
                                          },
                                          "message": {
                                             "example": "Unauthorized token."
                                          }
                                       }
                                    }
                                 ]
                              },
                              {
                                 "allOf": [
                                    {
                                       "$ref": "#/components/schemas/Video-Error"
                                    },
                                    {
                                       "type": "object",
                                       "description": "Invalid partner auth format.",
                                       "properties": {
                                          "code": {
                                             "example": 10003
                                          },
                                          "message": {
                                             "example": "Invalid partner auth format."
                                          }
                                       }
                                    }
                                 ]
                              },
                              {
                                 "allOf": [
                                    {
                                       "$ref": "#/components/schemas/Video-Error"
                                    },
                                    {
                                       "type": "object",
                                       "description": "Unauthorized partner auth.",
                                       "properties": {
                                          "code": {
                                             "example": 10004
                                          },
                                          "message": {
                                             "example": "Unauthorized partner auth."
                                          }
                                       }
                                    }
                                 ]
                              },
                              {
                                 "allOf": [
                                    {
                                       "$ref": "#/components/schemas/Video-Error"
                                    },
                                    {
                                       "type": "object",
                                       "description": "The token does not match the session ID.",
                                       "properties": {
                                          "code": {
                                             "example": 10007
                                          },
                                          "message": {
                                             "example": "The token does not match the session ID."
                                          }
                                       }
                                    }
                                 ]
                              },
                              {
                                 "allOf": [
                                    {
                                       "$ref": "#/components/schemas/Video-Error"
                                    },
                                    {
                                       "type": "object",
                                       "description": "Expired token.",
                                       "properties": {
                                          "code": {
                                             "example": 10012
                                          },
                                          "message": {
                                             "example": "Expired token."
                                          }
                                       }
                                    }
                                 ]
                              }
                           ]
                        }
                     }
                  }
               },
               "429": {
                  "description": "Too many requests. Please reach out to Customer Support for additional assistance.",
                  "content": {
                     "application/json": {
                        "schema": {
                           "allOf": [
                              {
                                 "$ref": "#/components/schemas/Video-Error"
                              },
                              {
                                 "type": "object",
                                 "properties": {
                                    "code": {
                                       "example": 50004
                                    },
                                    "message": {
                                       "example": "Experienced Composer API Usage Exceeded"
                                    }
                                 }
                              }
                           ]
                        }
                     }
                  }
               }
            }
         },
         "get": {
            "tags": [
               "Experience Composer"
            ],
            "parameters": [
               {
                  "schema": {
                     "type": "integer"
                  },
                  "in": "query",
                  "name": "offset",
                  "description": "Set an offset query parameters to specify the index offset of the first experience composer. 0 is offset of the most recently started archive (excluding deleted archive). 1 is the offset of the experience composer that started prior to the most recent composer. The default value is 0."
               },
               {
                  "schema": {
                     "type": "integer"
                  },
                  "in": "query",
                  "name": "count",
                  "description": "Set a count query parameter to limit the number of experience composers to be returned. The default number of archives returned is 50 (or fewer, if there are fewer than 50 archives). The default is 50 and the maximum is 1000"
               }
            ],
            "summary": "List all experience composers in an application",
            "description": "List all experience composer in an application",
            "operationId": "get-experience-composers-in-application",
            "responses": {
               "200": {
                  "$ref": "#/components/responses/Multi-Experience-Composer-Response"
               },
               "403": {
                  "description": "Authentication Error",
                  "content": {
                     "application/json": {
                        "schema": {
                           "allOf": [
                              {
                                 "$ref": "#/components/schemas/Video-Error"
                              },
                              {
                                 "type": "object",
                                 "properties": {
                                    "code": {
                                       "example": 403
                                    },
                                    "message": {
                                       "example": "Authentication error"
                                    }
                                 }
                              }
                           ]
                        }
                     }
                  }
               }
            }
         }
      },
      "/v2/project/{application_id}/render/{experience_composer_id}": {
         "parameters": [
            {
               "$ref": "#/components/parameters/application_id"
            },
            {
               "$ref": "#/components/parameters/experience_composer_id"
            }
         ],
         "get": {
            "tags": [
               "Experience Composer"
            ],
            "summary": "Get an Experience Composer Session",
            "description": "Use this method to get details on an Experience Composer.",
            "operationId": "get-experience-composer-session",
            "responses": {
               "200": {
                  "$ref": "#/components/responses/Experience-Composer"
               },
               "400": {
                  "description": "Invalid request",
                  "content": {
                     "application/json": {
                        "schema": {
                           "allOf": [
                              {
                                 "$ref": "#/components/schemas/Video-Error"
                              },
                              {
                                 "type": "object",
                                 "properties": {
                                    "code": {
                                       "example": 400
                                    },
                                    "message": {
                                       "example": "You do not pass in a session ID or you pass in an invalid experience composer ID."
                                    }
                                 }
                              }
                           ]
                        }
                     }
                  }
               },
               "403": {
                  "description": "Authentication Error",
                  "content": {
                     "application/json": {
                        "schema": {
                           "allOf": [
                              {
                                 "$ref": "#/components/schemas/Video-Error"
                              },
                              {
                                 "type": "object",
                                 "properties": {
                                    "code": {
                                       "example": 403
                                    },
                                    "message": {
                                       "example": "Authentication error"
                                    }
                                 }
                              }
                           ]
                        }
                     }
                  }
               },
               "404": {
                  "description": "Authentication Error",
                  "content": {
                     "application/json": {
                        "schema": {
                           "allOf": [
                              {
                                 "$ref": "#/components/schemas/Video-Error"
                              },
                              {
                                 "type": "object",
                                 "properties": {
                                    "code": {
                                       "example": 403
                                    },
                                    "message": {
                                       "example": "No Experience Composer matching the specified ID was found."
                                    }
                                 }
                              }
                           ]
                        }
                     }
                  }
               }
            }
         },
         "delete": {
            "tags": [
               "Experience Composer"
            ],
            "summary": "Stop an Experience Composer",
            "description": "Use this method to stop an Experience Composer of an OpenTok session.",
            "operationId": "stop-experience-composer",
            "responses": {
               "204": {
                  "description": "No Content"
               },
               "400": {
                  "description": "Invalid request.",
                  "content": {
                     "application/json": {
                        "schema": {
                           "allOf": [
                              {
                                 "$ref": "#/components/schemas/Video-Error"
                              },
                              {
                                 "type": "object",
                                 "properties": {
                                    "code": {
                                       "example": 400
                                    },
                                    "message": {
                                       "example": "Invalid request."
                                    }
                                 }
                              }
                           ]
                        }
                     }
                  }
               },
               "403": {
                  "description": "Authentication Error",
                  "content": {
                     "application/json": {
                        "schema": {
                           "allOf": [
                              {
                                 "$ref": "#/components/schemas/Video-Error"
                              },
                              {
                                 "type": "object",
                                 "properties": {
                                    "code": {
                                       "example": 403
                                    },
                                    "message": {
                                       "example": "You passed in an invalid JWT token."
                                    }
                                 }
                              }
                           ]
                        }
                     }
                  }
               },
               "404": {
                  "description": "Not Found",
                  "content": {
                     "application/json": {
                        "schema": {
                           "allOf": [
                              {
                                 "$ref": "#/components/schemas/Video-Error"
                              },
                              {
                                 "type": "object",
                                 "properties": {
                                    "code": {
                                       "example": 404
                                    },
                                    "message": {
                                       "example": "The Experience Composer (with the specified ID) was not found or it has already stopped."
                                    }
                                 }
                              }
                           ]
                        }
                     }
                  }
               }
            }
         }
      }
   },
   "components": {
      "schemas": {
         "Add-Stream-To-Archive": {
            "type": "object",
            "properties": {
               "addStream": {
                  "type": "string",
                  "description": "The Stream ID",
                  "example": "12312312-3811-4726-b508-e41a0f96c68f"
               },
               "hasAudio": {
                  "type": "boolean",
                  "description": "Whether the composed archive should include the stream's audio (true, the default) or not (false)",
                  "example": true
               },
               "hasVideo": {
                  "type": "boolean",
                  "description": "Whether the composed archive should include the stream's video (true, the default) or not (false).",
                  "example": true
               }
            },
            "required": [
               "addStream"
            ]
         },
         "ApplicationID": {
            "type": "string",
            "description": "A Vonage Application ID",
            "example": "93e36bb9-b72c-45b6-a9ea-5c37dbc49906"
         },
         "Archive-Detail": {
            "type": "object",
            "properties": {
               "createdAt": {
                  "type": "integer",
                  "description": "The timestamp for when the archive started recording, expressed in milliseconds since the Unix epoch (January 1, 1970, 00:00:00 UTC).",
                  "example": 1384221730000
               },
               "duration": {
                  "type": "integer",
                  "description": "The duration of the archive in seconds. For archives that have are being recorded (with the status property set to \"started\"), this value is set to 0.",
                  "example": 5049
               },
               "hasAudio": {
                  "$ref": "#/components/schemas/Has-Audio"
               },
               "hasVideo": {
                  "$ref": "#/components/schemas/Has-Video"
               },
               "hasTranscription": {
                  "$ref": "#/components/schemas/Has-Transcription"
               },
               "transcription": {
                  "$ref": "#/components/schemas/Transcription"
               },
               "id": {
                  "type": "string",
                  "description": "The unique archive ID.",
                  "example": "b40ef09b-3811-4726-b508-e41a0f96c68f"
               },
               "multiArchiveTag": {
                  "$ref": "#/components/schemas/MultiArchiveTag"
               },
               "name": {
                  "$ref": "#/components/schemas/Archive-Name"
               },
               "applicationId": {
                  "$ref": "#/components/schemas/ApplicationID"
               },
               "reason": {
                  "type": "string",
                  "description": "For archives with the status \"stopped\", this can be set to \"maximum duration exceeded\", \"maximum idle time exceeded\", \"session ended\", \"user initiated\". For archives with the status \"failed\", this can be set to \"failure\".",
                  "example": ""
               },
               "resolution": {
                  "$ref": "#/components/schemas/Resolution"
               },
               "sessionId": {
                  "$ref": "#/components/schemas/Session-ID"
               },
               "size": {
                  "type": "integer",
                  "description": "The size of the archive file. For archives that have not been generated, this value is set to 0.",
                  "example": 247748791
               },
               "status": {
                  "type": "string",
                  "enum": [
                     "available",
                     "expired",
                     "failed",
                     "paused",
                     "started",
                     "stopped",
                     "uploaded"
                  ],
                  "description": "The status of the archive:\n\n* \"available\" — The archive is available for download from the Vonage Video cloud.\n* \"expired\" — The archive is no longer available for download from the Vonage Video cloud.\n* \"failed\" — The archive recording failed.\n* \"paused\" — When an archive is paused, nothing is recorded. The archive is paused if any of the following conditions occur:\n    * No clients are publishing streams to the session. In this case, there is a timeout of 60 minutes, after which the archive stops and the archive status changes to \"stopped\".\n    * All clients disconnect the session. After 60 seconds the archive stops and the archive status changes to \"stopped\".\n\n    If a client resumes publishing while the archive is in the \"paused\" state, the archive recording resumes and the status changes back to \"started\".\n* \"started\" — The archive started and is in the process of being recorded.\n* \"stopped\" — The archive stopped recording.\n* \"uploaded\" — The archive is available for download from the S3 bucket you specified in your Video API account.\n",
                  "example": "available"
               },
               "streamMode": {
                  "$ref": "#/components/schemas/Stream-Mode"
               },
               "streams": {
                  "type": "array",
                  "items": {
                     "type": "object",
                     "properties": {
                        "streamId": {
                           "type": "string",
                           "description": "The stream ID of the stream included in the archive."
                        },
                        "hasAudio": {
                           "$ref": "#/components/schemas/Has-Audio"
                        },
                        "hasVideo": {
                           "$ref": "#/components/schemas/Has-Video"
                        }
                     }
                  }
               },
               "url": {
                  "type": "string",
                  "description": "The download URL of the available archive file. This is only set for an archive with the status set to \"available\"; for other archives, (including archives with the status \"uploaded\") this property is set to null. The download URL is obfuscated, and the file is only available from the URL for 10 minutes.",
                  "example": "https://tokbox.com.archive2.s3.amazonaws.com/123456/09141e29-8770-439b-b180-337d7e637545/archive.mp4"
               },
               "maxBitrate": {
                  "$ref": "#/components/schemas/Max-Bitrate"
               },
               "quantizationParameter": {
                  "$ref": "#/components/schemas/Quantization-Parameter"
               }
            },
            "dependencies": {
               "maxBitrate": {
                  "not": {
                     "required": [
                        "quantizationParameter"
                     ]
                  }
               },
               "quantizationParameter": {
                  "not": {
                     "required": [
                        "maxBitrate"
                     ]
                  }
               }
            }
         },
         "Archive-Name": {
            "type": "string",
            "description": "The name of the archive (for your own identification)",
            "example": "Foo"
         },
         "Experience-Composer": {
            "allOf": [
               {
                  "$ref": "#/components/schemas/Experience-Composer-Base"
               },
               {
                  "type": "object",
                  "properties": {
                     "reason": {
                        "type": "string",
                        "example": "Could not load URL",
                        "description": "The reason field is only available when the status is either \"stopped\" or \"failed\". If the status is stopped, the reason field will contain either \"Max Duration Exceeded\" or \"Stop Requested.\" If the status is failed, the reason will contain a more specific error message."
                     }
                  }
               }
            ]
         },
         "Experience-Composer-Base": {
            "type": "object",
            "properties": {
               "id": {
                  "type": "string",
                  "description": "The unique ID for the Experience Composer.",
                  "example": "1248e7070b81464c9789f46ad10e7764"
               },
               "sessionId": {
                  "$ref": "#/components/schemas/Session-ID"
               },
               "applicationId": {
                  "$ref": "#/components/schemas/ApplicationID"
               },
               "createdAt": {
                  "type": "number",
                  "description": "The time the Experience Composer started, expressed in milliseconds since the Unix epoch (January 1, 1970, 00:00:00 UTC).",
                  "example": 1437676551000
               },
               "callbackUrl": {
                  "type": "string",
                  "description": "The callback URL for Experience Composer events (if one was set).",
                  "example": "https://example.com/video/events"
               },
               "updatedAt": {
                  "type": "number",
                  "description": "This is the UNIX timestamp when the Experience Composer status was last updated. For this start method, this timestamp matches the createdAt timestamp.",
                  "example": 1437676551000
               },
               "name": {
                  "$ref": "#/components/schemas/Experience-Composer-Name"
               },
               "url": {
                  "$ref": "#/components/schemas/Experience-Composer-URL"
               },
               "resolution": {
                  "$ref": "#/components/schemas/Resolution"
               },
               "status": {
                  "type": "string",
                  "example": "starting",
                  "enum": [
                     "starting",
                     "started",
                     "stopped",
                     "failed"
                  ]
               },
               "streamId": {
                  "type": "string",
                  "description": "The ID of the composed stream being published.",
                  "example": "e32445b743678c98230f238"
               }
            }
         },
         "Experience-Composer-Name": {
            "type": "string",
            "example": "Composed stream for Live event #1",
            "description": "The name of the composed output stream which is published to the session.",
            "minLength": 1,
            "maxLength": 200
         },
         "Experience-Composer-URL": {
            "type": "string",
            "description": "A publicly reachable URL controlled by the customer and capable of generating the content to be rendered without user intervention.",
            "example": "https://example.com/",
            "minLength": 15,
            "maxLength": 2048
         },
         "Has-Audio": {
            "type": "boolean",
            "description": "Whether the archive will record audio (true, the default) or not (false). If you set both hasAudio and hasVideo to false, the call to this method results in an error.",
            "example": true
         },
         "Has-Video": {
            "type": "boolean",
            "description": "Whether the archive will record video (true, the default) or not (false). If you set both hasAudio and hasVideo to false, the call to this method results in an error.",
            "example": true
         },
         "Has-Transcription": {
            "type": "boolean",
            "description": "Whether the archive will have a transcription of the audio of the session (true) or not (false, the default).",
            "default": false,
            "example": false
         },
         "Transcription-Properties": {
            "type": "object",
            "properties": {
               "primaryLanguageCode": {
                  "type": "string",
                  "description": "The primary language spoken in the archive to be transcribed, in BCP-47 format, e.g. en-US, es-ES or pt-BR.",
                  "default": "en-US",
                  "example": "ja-JP",
                  "enum": [
                     "af-ZA",
                     "am-ET",
                     "ar-AE",
                     "ar-BH",
                     "ar-DZ",
                     "ar-EG",
                     "ar-IL",
                     "ar-IQ",
                     "ar-JO",
                     "ar-KW",
                     "ar-LB",
                     "ar-MA",
                     "ar-MR",
                     "ar-OM",
                     "ar-PS",
                     "ar-QA",
                     "ar-SA",
                     "ar-SY",
                     "ar-TN",
                     "ar-YE",
                     "az-AZ",
                     "bg-BG",
                     "bn-BD",
                     "bn-IN",
                     "bs-BA",
                     "ca-ES",
                     "cs-CZ",
                     "da-DK",
                     "de-AT",
                     "de-CH",
                     "de-DE",
                     "el-GR",
                     "en-AU",
                     "en-CA",
                     "en-GB",
                     "en-GH",
                     "en-HK",
                     "en-IE",
                     "en-IN",
                     "en-KE",
                     "en-NG",
                     "en-NZ",
                     "en-PH",
                     "en-PK",
                     "en-SG",
                     "en-TZ",
                     "en-US",
                     "en-ZA",
                     "es-AR",
                     "es-BO",
                     "es-CL",
                     "es-CO",
                     "es-CR",
                     "es-DO",
                     "es-EC",
                     "es-ES",
                     "es-GT",
                     "es-HN",
                     "es-MX",
                     "es-NI",
                     "es-PA",
                     "es-PE",
                     "es-PR",
                     "es-PY",
                     "es-SV",
                     "es-US",
                     "es-UY",
                     "es-VE",
                     "et-EE",
                     "eu-ES",
                     "fa-IR",
                     "fi-FI",
                     "fr-BE",
                     "fr-CA",
                     "fr-CH",
                     "fr-FR",
                     "gl-ES",
                     "gu-IN",
                     "hi-IN",
                     "hr-HR",
                     "hu-HU",
                     "hy-AM",
                     "id-ID",
                     "is-IS",
                     "it-CH",
                     "it-IT",
                     "iw-IL",
                     "ja-JP",
                     "jv-ID",
                     "ka-GE",
                     "kk-KZ",
                     "km-KH",
                     "kn-IN",
                     "ko-KR",
                     "lo-LA",
                     "lt-LT",
                     "lv-LV",
                     "mk-MK",
                     "ml-IN",
                     "mn-MN",
                     "mr-IN",
                     "ms-MY",
                     "my-MM",
                     "ne-NP",
                     "nl-BE",
                     "nl-NL",
                     "no-NO",
                     "pl-PL",
                     "pt-BR",
                     "pt-PT",
                     "ro-RO",
                     "ru-RU",
                     "rw-RW",
                     "si-LK",
                     "sk-SK",
                     "sl-SI",
                     "sq-AL",
                     "sr-RS",
                     "st-ZA",
                     "su-ID",
                     "sv-SE",
                     "sw-KE",
                     "sw-TZ",
                     "ta-IN",
                     "ta-LK",
                     "ta-MY",
                     "ta-SG",
                     "te-IN",
                     "th-TH",
                     "tr-TR",
                     "ts-ZA",
                     "uk-UA",
                     "ur-IN",
                     "ur-PK",
                     "uz-UZ",
                     "ve-ZA",
                     "vi-VN",
                     "xh-ZA",
                     "zu-ZA"
                  ]
               },
               "hasSummary": {
                  "type": "boolean",
                  "description": "Whether the transcription should include a summary of the session (true) or not (false, the default).",
                  "example": false
               }
            }
         },
         "Transcription": {
            "type": "object",
            "description": "Properties of the transcription attached to this archive",
            "required": [
               "status"
            ],
            "properties": {
               "status": {
                  "description": "Status of the transcription",
                  "type": "string",
                  "default": "requested",
                  "enum": [
                     "requested",
                     "available",
                     "failed",
                     "started",
                     "uploaded"
                  ]
               },
               "url": {
                  "description": null,
                  "type": "string"
               },
               "reason": {
                  "description": null,
                  "type": "string"
               },
               "primaryLanguageCode": {
                  "$ref": "#/components/schemas/Transcription-Properties/properties/primaryLanguageCode"
               },
               "hasSummary": {
                  "$ref": "#/components/schemas/Transcription-Properties/properties/hasSummary"
               }
            }
         },
         "Layout": {
            "type": "object",
            "properties": {
               "type": {
                  "type": "string",
                  "description": "Specify this to assign the initial layout type for the archive. This applies only to composed archives. This object has three properties: type, stylesheet, and screenshareType, which are each strings. Valid values for the layout property are \"bestFit\" (best fit), \"custom\" (custom), \"horizontalPresentation\" (horizontal presentation), \"pip\" (picture-in-picture), and \"verticalPresentation\" (vertical presentation). If you specify a \"custom\" layout type, set the stylesheet property of the layout object to the stylesheet. (For other layout types, do not set a stylesheet property.) Set the screenshareType property to the layout type to use when there is a screen-sharing stream in the session. (This property is optional.) Note if you set the screenshareType property, you must set the type property to \"bestFit\" and leave the stylesheet property unset. If you do not specify an initial layout type, the archive uses the best fit layout type.",
                  "enum": [
                     "bestFit",
                     "custom",
                     "horizontalPresentation",
                     "pip",
                     "verticalPresentation"
                  ],
                  "example": "bestFit"
               },
               "stylesheet": {
                  "type": "string",
                  "description": "Used for the `custom` layout to define the visual layout",
                  "example": "stream.instructor {position: absolute; width: 100%;  height:50%;}"
               },
               "screenshareType": {
                  "type": "string",
                  "enum": [
                     "bestFit",
                     "custom",
                     "horizontalPresentation",
                     "pip",
                     "verticalPresentation"
                  ],
                  "description": "Set the screenshareType property to the layout type to use when there is a screen-sharing stream in the session. (This property is optional.) Note if you set the screenshareType property, you must set the type property to \"bestFit\" and leave the stylesheet property unset.",
                  "example": "pip"
               }
            }
         },
         "Max-Bitrate": {
            "type": "number",
            "example": 200000,
            "minimum": 100000,
            "maximum": 6000000,
            "description": "The maximum video bitrate for the archive, in bits per second. This option is only valid for composed archives. Set the maximum video bitrate to control the size of the composed archive. This maximum bitrate applies to the video bitrate only. If the output archive has audio, those bits will be excluded from the limit."
         },
         "MultiArchiveTag": {
            "type": "string",
            "example": "my-multi-archive",
            "description": "Set this to support recording multiple archives for the same session simultaneously. Set this to a unique string for each simultaneous archive of an ongoing session. You must also set this option when manually starting an archive in a session that is automatically archived. If you do not specify a unique multiArchiveTag, you can only record one archive at a time for a given session."
         },
         "OutputMode": {
            "type": "string",
            "enum": [
               "composed",
               "individual"
            ],
            "description": "Whether all streams in the archive are recorded to a single file (\"composed\", the default) or to individual files (\"individual\")."
         },
         "Quantization-Parameter": {
            "description": "Quantization parameter (QP) is an optional video encoding value allowed for composed archives. Smaller values generate higher quality and larger archives, and larger values generate lower quality and smaller archives. QP uses variable bitrate (VBR). For more information, please read the <a href=\"/video/guides/archiving/overview\">Archiving Documentation</a>.\n",
            "type": "number",
            "minimum": 15,
            "maximum": 40
         },
         "Remove-Stream-From-Archive": {
            "type": "object",
            "properties": {
               "removeStream": {
                  "type": "string",
                  "description": "Stream ID to remove from the archive",
                  "example": "12312312-3811-4726-b508-e41a0f96c68f"
               }
            },
            "required": [
               "removeStream"
            ]
         },
         "Resolution": {
            "type": "string",
            "enum": [
               "640x480",
               "480x640",
               "1280x720",
               "720x1280",
               "1080x1920",
               "1920x1080"
            ],
            "description": "The resolution of the archive, either \"640x480\" (SD landscape, the default), \"1280x720\" (HD landscape), \"1920x1080\" (FHD landscape), \"480x640\" (SD portrait), \"720x1280\" (HD portrait), or \"1080x1920\" (FHD portrait). You may want to use a portrait aspect ratio for archives that include video streams from mobile devices (which often use the portrait aspect ratio). This property only applies to composed archives. If you set this property and set the outputMode property to \"individual\", the call to the REST method results in an error."
         },
         "Session-ID": {
            "type": "string",
            "description": "The session ID of the Vonage Video session you are working with",
            "example": "flR1ZSBPY3QgMjkgMTI6MTM6MjMgUERUIDIwMTN"
         },
         "Stream-Layout": {
            "type": "object",
            "properties": {
               "id": {
                  "type": "string",
                  "description": "The Stream ID",
                  "example": "8b732909-0a06-46a2-8ea8-074e64d43422"
               },
               "videoType": {
                  "type": "string",
                  "description": "Set to \"camera\", \"screen\", or \"custom\". A \"screen\" video uses screen sharing on the publisher as the video source; a \"custom\" video is published by a web client using an HTML VideoTrack element as the video source.",
                  "example": "camera"
               },
               "name": {
                  "type": "string",
                  "description": "The stream name (if one was set when the client published the stream).",
                  "example": ""
               },
               "layoutClassList": {
                  "type": "array",
                  "description": "An array of the layout classes for the stream.",
                  "example": [
                     "full"
                  ],
                  "items": {
                     "type": "string",
                     "example": "full"
                  }
               }
            }
         },
         "Stream-Mode": {
            "type": "string",
            "enum": [
               "auto",
               "manual"
            ],
            "description": "Whether streams included in the archive are selected automatically (\"auto\", the default) or manually (\"manual\"). When streams are selected automatically (\"auto\"), all streams in the session can be included in the archive. When streams are selected manually (\"manual\"), you specify streams to be included based on calls to this REST method. You can specify whether a stream's audio, video, or both are included in the archive. In composed archives, in both automatic and manual modes, the archive composer includes streams based on stream prioritization rules.",
            "example": "manual"
         },
         "Video-Error": {
            "description": "Error thrown in the Vonage Video API",
            "type": "object",
            "properties": {
               "code": {
                  "type": "integer",
                  "description": "HTTP response code that is returned"
               },
               "message": {
                  "type": "string",
                  "description": "Error that was exhibited"
               }
            }
         },
         "Broadcast-Detail": {
            "title": "Broadcast-Detail",
            "x-stoplight": {
               "id": "i35hgmkxy7mq4"
            },
            "type": "object",
            "x-examples": {
               "Example 1": {
                  "id": "1748b7070a81464c9759c46ad10d3734",
                  "sessionId": "2_MX4xMDBfjE0Mzc2NzY1NDgwMTJ-TjMzfn4",
                  "multiBroadcastTag": "broadcast_tag_provided",
                  "projectId": 100,
                  "createdAt": 1437676551000,
                  "updatedAt": 1437676551000,
                  "maxDuration": 5400,
                  "maxBitrate": 2000000,
                  "broadcastUrls": {
                     "hls": "hlsurl",
                     "rtmp": {
                        "foo": {
                           "serverUrl": "rtmp://myfooserver/myfooapp",
                           "streamName": "myfoostreamname"
                        },
                        "bar": {
                           "serverUrl": "rtmp://mybarserver/mybarapp",
                           "streamName": "mybarstreamname"
                        }
                     }
                  },
                  "settings": {
                     "hls": {
                        "lowLatency": false
                     }
                  },
                  "resolution": "640x480",
                  "hasAudio": true,
                  "hasVideo": true,
                  "streamMode": "manual"
               }
            },
            "properties": {
               "id": {
                  "type": "string",
                  "example": "1748b7070a81464c9759c46ad10d3734",
                  "description": "The unique ID for the broadcast"
               },
               "sessionId": {
                  "type": "string",
                  "example": "2_MX4xMDBfjE0Mzc2NzY1NDgwMTJ-TjMzfn4",
                  "description": "The Vonage Video session ID"
               },
               "multiBroadcastTag": {
                  "type": "string",
                  "example": "broadcast_tag_provided",
                  "description": "The unique tag for simultaneous broadcasts (if one was set)."
               },
               "applicationId": {
                  "$ref": "#/components/schemas/ApplicationID"
               },
               "createdAt": {
                  "type": "integer",
                  "example": 1437676551000,
                  "description": "The time the broadcast started, expressed in milliseconds since the Unix epoch (January 1, 1970, 00:00:00 UTC)"
               },
               "updatedAt": {
                  "type": "integer",
                  "example": 1437676551000,
                  "description": "For this start method, this timestamp matches the createdAt timestamp."
               },
               "maxDuration": {
                  "type": "integer",
                  "example": 5400,
                  "description": "The maximum duration for the broadcast (if one was set), in seconds."
               },
               "maxBitrate": {
                  "type": "integer",
                  "example": 2000000,
                  "description": "The maximum bitrate for the stream."
               },
               "broadcastUrls": {
                  "type": "object",
                  "description": "An object containing details about the HLS and RTMP broadcasts.",
                  "properties": {
                     "hls": {
                        "type": "string",
                        "example": "hlsurl",
                        "description": "If you specified an HLS endpoint, the object includes an hls property, which is set to the URL for the HLS broadcast. Note this HLS broadcast URL points to an index file, an .M3U8-formatted playlist that contains a list of URLs to .ts media segment files (MPEG-2 transport stream files). While the URLs of both the playlist index file and media segment files are provided as soon as the HTTP response is returned, these URLs should not be accessed until 15 – 20 seconds later, after the initiation of the HLS broadcast, due to the delay between the HLS broadcast and the live streams in the Vonage Video session. See https://developer.apple.com/library/ios/technotes/tn2288/_index.html for more information about the playlist index file and media segment files for HLS."
                     },
                     "rtmp": {
                        "type": "array",
                        "description": "If you specified RTMP stream endpoints, the object includes an rtmp property. This is an array of objects that include information on each of the RTMP streams. Each of these objects has the following properties: id (the ID you assigned to the RTMP stream), serverUrl (the server URL), streamName (the stream name), and status property (which is set to \"connecting\"). You can call the Vonage Video REST method to check for status updates for the broadcast.",
                        "items": {
                           "type": "object",
                           "properties": {
                              "id": {
                                 "type": "string",
                                 "description": "The ID you assigned to the RTMP stream\n"
                              },
                              "status": {
                                 "type": "string",
                                 "description": "The current status of the RTMP stream\n"
                              },
                              "serverUrl": {
                                 "type": "string",
                                 "description": "The Server URL"
                              },
                              "streamName": {
                                 "type": "string",
                                 "description": "The stream name"
                              }
                           }
                        }
                     }
                  }
               },
               "settings": {
                  "type": "object",
                  "properties": {
                     "hls": {
                        "type": "object",
                        "properties": {
                           "lowLatency": {
                              "type": "boolean",
                              "description": "Whether to enable low-latency mode for the HLSstream. Some HLS players do not support low-latency mode. This feature is incompatible with DVR mode HLS broadcasts. "
                           },
                           "dvr": {
                              "type": "boolean",
                              "description": "Whether to enable DVR functionality — rewinding, pausing, and resuming — in players that support it (true), or not (false, the default). With DVR enabled, the HLS URL will include a ?DVR query string appended to the end. "
                           }
                        }
                     }
                  }
               },
               "resolution": {
                  "$ref": "#/components/schemas/Resolution"
               },
               "hasAudio": {
                  "type": "boolean",
                  "description": "Whether the broadcast has audio"
               },
               "hasVideo": {
                  "type": "boolean",
                  "description": "Whether the broadcast has video"
               },
               "streamMode": {
                  "$ref": "#/components/schemas/Stream-Mode"
               },
               "status": {
                  "type": "string",
                  "description": "Current status of the broadcast"
               },
               "streams": {
                  "type": "array",
                  "description": " An array of objects corresponding to streams currently being broadcast. This is only set for a broadcast with the status set to \"started\" and the streamMode set to \"manual\"",
                  "items": {
                     "type": "object",
                     "properties": {
                        "streamId": {
                           "type": "string",
                           "description": "The stream ID of the stream included in the broadcast."
                        },
                        "hasAudio": {
                           "type": "string",
                           "description": "Whether the stream's audio is included in the broadcast."
                        },
                        "hasVideo": {
                           "type": "string",
                           "description": "Whether the stream's video is included in the broadcast."
                        }
                     }
                  }
               }
            }
         },
         "Add-Stream": {
            "title": "Add-Stream",
            "x-stoplight": {
               "id": "za2ghdcvwhwl0"
            },
            "type": "object",
            "properties": {
               "addStream": {
                  "type": "string",
                  "description": "The stream ID to add",
                  "example": "12312312-3811-4726-b508-e41a0f96c68f"
               },
               "hasAudio": {
                  "type": "boolean",
                  "default": true,
                  "description": "Whether to include the stream's audio"
               },
               "hasVideo": {
                  "type": "boolean",
                  "default": true,
                  "description": "Whether to include the stream's video"
               }
            }
         },
         "Remove-Stream": {
            "title": "Remove-Stream",
            "x-stoplight": {
               "id": "uvyo3v0wjqwlj"
            },
            "type": "object",
            "properties": {
               "removeStream": {
                  "type": "string",
                  "example": "12312312-3811-4726-b508-e41a0f96c68f",
                  "description": "ID of stream to remove"
               }
            }
         },
         "Start-Experience-Composer": {
            "type": "object",
            "properties": {
               "sessionId": {
                  "$ref": "#/components/schemas/Session-ID"
               },
               "token": {
                  "$ref": "#/components/schemas/Token"
               },
               "url": {
                  "$ref": "#/components/schemas/Experience-Composer-URL"
               },
               "maxDuration": {
                  "type": "number",
                  "description": "The maximum time allowed for the Experience Composer, in seconds. After this time, it is stopped automatically, if it is still running. The maximum value is 36000 (10 hours), the minimum value is 60 (1 minute), and the default value is 7200 (2 hours). When the Experience Composer ends, its stream is unpublished and an event is posted to the callback URL, if configured in the Application Config.",
                  "example": 1800,
                  "default": 7200,
                  "minimum": 60,
                  "maximum": 36000
               },
               "resolution": {
                  "$ref": "#/components/schemas/Resolution"
               },
               "properties": {
                  "type": "object",
                  "description": "The initial configuration of Publisher properties for the composed output stream.",
                  "properties": {
                     "name": {
                        "$ref": "#/components/schemas/Experience-Composer-Name"
                     }
                  },
                  "required": [
                     "name"
                  ]
               }
            }
         },
         "Start-Live-Captions": {
            "type": "object",
            "properties": {
               "sessionId": {
                  "type": "string",
                  "description": "The session ID of the Vonage Video session. The audio from Publishers publishing into this session will be used to generate the captions.",
                  "example": "12312312-3811-4726-b508-e41a0f96c68f"
               },
               "token": {
                  "type": "string",
                  "description": "A valid Vonage Video token with role set to Moderator.",
                  "example": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpYXQiOjE2OTkwNDMxMTEsImV4cCI6MTY5OTA2NDcxMSwianRpIjoiMW1pODlqRk9meVpRIiwiYXBwbGljYXRpb25faWQiOiIxMjMxMjMxMi0zODExLTQ3MjYtYjUwOC1lNDFhMGY5NmM2OGYiLCJzdWIiOiJ2aWRlbyIsImFjbCI6IiJ9.o3U506EejsS8D5Tob90FG1NC1cR69fh3pFOpxnyTHVFfgqI6NWuuN8lEwrS3Zb8bGxE_A9LyyUZ2y4uqLpyXRw"
               },
               "languageCode": {
                  "type": "string",
                  "description": "The BCP-47 code for a spoken language used on this call. The default value is \"en-US\".",
                  "default": "en-US",
                  "example": "en-US",
                  "enum": [
                     "af-ZA",
                     "ar-AE",
                     "ar-SA",
                     "eu-ES",
                     "ca-ES",
                     "zh-HK",
                     "zh-CN",
                     "zh-TW",
                     "hr-HR",
                     "cs-CZ",
                     "da-DK",
                     "nl-NL",
                     "en-AU",
                     "en-GB",
                     "en-IN",
                     "en-IE",
                     "en-NZ",
                     "en-AB",
                     "en-ZA",
                     "en-US",
                     "en-WL",
                     "fa-IR",
                     "fi-FI",
                     "fr-FR",
                     "fr-CA",
                     "gl-ES",
                     "de-DE",
                     "de-CH",
                     "el-GR",
                     "he-IL",
                     "hi-IN",
                     "id-ID",
                     "it-IT",
                     "ja-JP",
                     "ko-KR",
                     "lv-LV",
                     "ms-MY",
                     "no-NO",
                     "pl-PL",
                     "pt-PT",
                     "pt-BR",
                     "ro-RO",
                     "ru-RU",
                     "sr-RS",
                     "sk-SK",
                     "so-SO",
                     "es-ES",
                     "es-US",
                     "sv-SE",
                     "tl-PH",
                     "th-TH",
                     "uk-UA",
                     "vi-VN",
                     "zu-ZA"
                  ]
               },
               "maxDuration": {
                  "type": "number",
                  "description": "The maximum duration for the audio captioning, in seconds. The default value is 14,400 seconds (4 hours), the maximum duration allowed. The minimum value for maxDuration is 300 (300 seconds, or 5 minutes).",
                  "example": 1800,
                  "default": 14400,
                  "minimum": 300
               },
               "partialCaptions": {
                  "type": "boolean",
                  "description": "Whether to enable this to faster captioning at the cost of some degree of inaccuracies.",
                  "default": true,
                  "example": true
               },
               "statusCallbackUrl": {
                  "type": "string",
                  "description": "A publicly reachable URL controlled by the customer and capable of generating the content to be rendered without user intervention",
                  "minLength": 15,
                  "maxLength": 2048,
                  "example": "https://send-status-to.me"
               }
            },
            "required": [
               "sessionId",
               "token"
            ]
         },
         "Start-Audio-Connector": {
            "type": "object",
            "properties": {
               "sessionId": {
                  "type": "string",
                  "description": "The Vonage Video session ID that includes the Vonage Video streams you want to include in the WebSocket stream. The Audio Connector feature is only supported in routed sessions",
                  "example": "12312312-3811-4726-b508-e41a0f96c68f"
               },
               "token": {
                  "type": "string",
                  "description": "A valid Vonage Video token for the Audio Connector connection to the Vonage Video Session. You can add additional data to the JWT to identify that the connection is the Audio Connector endpoint or for any other identifying data.",
                  "example": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpYXQiOjE2OTkwNDMxMTEsImV4cCI6MTY5OTA2NDcxMSwianRpIjoiMW1pODlqRk9meVpRIiwiYXBwbGljYXRpb25faWQiOiIxMjMxMjMxMi0zODExLTQ3MjYtYjUwOC1lNDFhMGY5NmM2OGYiLCJzdWIiOiJ2aWRlbyIsImFjbCI6IiJ9.o3U506EejsS8D5Tob90FG1NC1cR69fh3pFOpxnyTHVFfgqI6NWuuN8lEwrS3Zb8bGxE_A9LyyUZ2y4uqLpyXRw"
               },
               "websocket": {
                  "type": "object",
                  "properties": {
                     "uri": {
                        "type": "string",
                        "description": "A publicly reachable WebSocket URI to be used for the destination of the audio stream",
                        "example": "wss://example.com/ws-endpoint"
                     },
                     "streams": {
                        "type": "array",
                        "description": "An array of stream IDs for the Vonage Video streams you want to include in the WebSocket audio. If you omit this property, all streams in the session will be included.",
                        "items": {
                           "type": "string"
                        },
                        "example": [
                           "streamId-1",
                           "streamId-2"
                        ]
                     },
                     "headers": {
                        "type": "object",
                        "description": "An object of key-value pairs of headers to be sent to your WebSocket server with each message, with a maximum length of 512 bytes.",
                        "additionalProperties": {
                           "type": "string"
                        }
                     },
                     "audioRate": {
                        "type": "number",
                        "description": "A number representing the audio sampling rate in Hz.",
                        "example": 8000,
                        "enum": [
                           8000,
                           16000
                        ]
                     },
                     "bidirectional": {
                        "type": "boolean",
                        "description": "Whether to send audio data from the WebSocket connection to a stream published in the session. For more information see the [Audio Connector documentation](video/guides/audio-connector).",
                        "default": false
                     }
                  },
                  "required": [
                     "uri"
                  ]
               }
            },
            "required": [
               "sessionId",
               "token",
               "websocket"
            ]
         },
         "Token": {
            "type": "string",
            "description": "A valid OpenTok JWT token with a Publisher role and (optionally) connection data to be associated with the output stream.",
            "example": "830c9c9d-d09e-4513-9cc8-29c90a760248"
         }
      },
      "securitySchemes": {
         "Vonage-JWT": {
            "type": "http",
            "scheme": "bearer",
            "bearerFormat": "JWT"
         }
      },
      "responses": {
         "Blank-200": {
            "description": "OK"
         },
         "New-Session": {
            "description": "Sample Response when creating a new session",
            "content": {
               "application/json": {
                  "schema": {
                     "type": "array",
                     "items": {
                        "type": "object",
                        "properties": {
                           "session_id": {
                              "type": "string"
                           },
                           "application_id": {
                              "type": "string"
                           },
                           "create_dt": {
                              "type": "string"
                           },
                           "media_server_url": {
                              "type": "string"
                           }
                        }
                     }
                  }
               }
            }
         },
         "Invalid-Credentials": {
            "description": "Invalid credentials",
            "content": {
               "application/json": {
                  "schema": {
                     "properties": {
                        "code": {
                           "type": "integer",
                           "example": 403
                        },
                        "message": {
                           "type": "string",
                           "example": "You are not authorized to send the signal. Check your authentication credentials."
                        }
                     }
                  },
                  "examples": {
                     "example-1": {
                        "value": {
                           "code": 404,
                           "message": "You are not authorized to forceDisconnect, check your authentication credentials."
                        }
                     }
                  }
               }
            }
         },
         "Multi-Archive-Response": {
            "description": "OK",
            "content": {
               "application/json": {
                  "schema": {
                     "type": "object",
                     "properties": {
                        "count": {
                           "type": "integer",
                           "description": "The total number of archives for the API key.",
                           "example": 1
                        },
                        "items": {
                           "type": "array",
                           "description": "An array of objects defining each archive retrieved. Archives are listed from the newest to the oldest in the return set.",
                           "items": {
                              "$ref": "#/components/schemas/Archive-Detail"
                           }
                        }
                     }
                  }
               }
            }
         },
         "Multi-Experience-Composer-Response": {
            "description": "OK",
            "content": {
               "application/json": {
                  "schema": {
                     "type": "object",
                     "properties": {
                        "count": {
                           "type": "integer",
                           "description": "The total number of experience composers for the Application ID key.",
                           "example": 1
                        },
                        "items": {
                           "type": "array",
                           "description": "An array of objects defining each experience composer retrieved. Experience Composers are listed from the newest to the oldest in the return set.",
                           "items": {
                              "$ref": "#/components/schemas/Experience-Composer"
                           }
                        }
                     }
                  }
               }
            }
         },
         "Multi-Stream-Layout": {
            "description": "Information about multiple streams layout config",
            "content": {
               "application/json": {
                  "schema": {
                     "type": "object",
                     "properties": {
                        "count": {
                           "type": "integer",
                           "description": "Number of items in the response",
                           "example": 1
                        },
                        "items": {
                           "type": "array",
                           "description": "Stream layouts for requested session IDs",
                           "items": {
                              "$ref": "#/components/schemas/Stream-Layout"
                           }
                        }
                     }
                  }
               }
            }
         },
         "Stream-Layout": {
            "description": "Information about a stream's layout",
            "content": {
               "application/json": {
                  "schema": {
                     "$ref": "#/components/schemas/Stream-Layout"
                  }
               }
            }
         },
         "Project-Details": {
            "description": "Project Details",
            "content": {
               "application/json": {
                  "schema": {
                     "type": "object",
                     "properties": {
                        "applicationId": {
                           "$ref": "#/components/schemas/ApplicationID"
                        },
                        "status": {
                           "type": "string",
                           "description": "Whether the project is active (\"ACTIVE\") or suspended (\"SUSPENDED\")",
                           "example": "ACTIVE"
                        },
                        "name": {
                           "type": "string",
                           "description": "The name, if you specified one when creating the project; or an empty string if you did not specify a name",
                           "example": "Joe Montana"
                        },
                        "environment": {
                           "type": "string",
                           "description": "This is set to \"standard\" or \"enterprise\", and it refers to the environment a project is running on. Enterprise package partners have access to the enterprise environment.",
                           "example": "standard"
                        },
                        "createdAt": {
                           "type": "integer",
                           "description": "The time at which the project was created (a UNIX timestamp, in milliseconds)",
                           "example": 1414642898000
                        }
                     }
                  }
               }
            }
         },
         "Archive-Details": {
            "description": "Example response",
            "content": {
               "application/json": {
                  "schema": {
                     "$ref": "#/components/schemas/Archive-Detail"
                  }
               }
            }
         },
         "Broadcast-Details": {
            "description": "Example response",
            "content": {
               "application/json": {
                  "schema": {
                     "$ref": "#/components/schemas/Broadcast-Detail"
                  }
               }
            }
         },
         "Broadcast-List": {
            "description": "Example response",
            "content": {
               "application/json": {
                  "schema": {
                     "type": "object",
                     "properties": {
                        "count": {
                           "type": "integer"
                        },
                        "items": {
                           "type": "array",
                           "items": {
                              "$ref": "#/components/schemas/Broadcast-Detail"
                           }
                        }
                     }
                  }
               }
            }
         },
         "Captions-Started": {
            "description": "ID of the Captions stream that was started",
            "content": {
               "application/json": {
                  "schema": {
                     "type": "object",
                     "properties": {
                        "captionsId": {
                           "type": "string",
                           "description": "Unique ID of the audio captioning session",
                           "example": "7c0680fc-6274-4de5-a66f-d0648e8d3ac2"
                        }
                     },
                     "required": [
                        "captionsId"
                     ]
                  }
               }
            }
         },
         "Audio-Connector-Started": {
            "description": "Information about the audio connector session that was started",
            "content": {
               "application/json": {
                  "schema": {
                     "type": "object",
                     "properties": {
                        "id": {
                           "type": "string",
                           "description": "A unique ID identifying the Audio Connector WebSocket connection.",
                           "example": "b0a5a8c7-dc38-459f-a48d-a7f2008da853"
                        },
                        "captionsId": {
                           "type": "string",
                           "description": "Unique ID of the audio captioning session",
                           "example": "7c0680fc-6274-4de5-a66f-d0648e8d3ac2"
                        }
                     },
                     "required": [
                        "id",
                        "captionsId"
                     ]
                  }
               }
            }
         },
         "Experience-Composer-Start": {
            "description": "Experience Composer information after starting",
            "content": {
               "application/json": {
                  "schema": {
                     "$ref": "#/components/schemas/Experience-Composer-Base"
                  }
               }
            }
         },
         "Experience-Composer": {
            "description": "Experience Composer information after starting",
            "content": {
               "application/json": {
                  "schema": {
                     "$ref": "#/components/schemas/Experience-Composer"
                  }
               }
            }
         }
      },
      "requestBodies": {
         "Change-Stream-Layout": {
            "content": {
               "application/json": {
                  "schema": {
                     "type": "object",
                     "properties": {
                        "items": {
                           "type": "array",
                           "description": "Array of stream IDs and their new class lists",
                           "items": {
                              "type": "object",
                              "properties": {
                                 "id": {
                                    "type": "string",
                                    "example": "8b732909-0a06-46a2-8ea8-074e64d43422"
                                 },
                                 "layoutClassList": {
                                    "type": "array",
                                    "description": "Array of class names as strings",
                                    "example": [
                                       "full"
                                    ],
                                    "items": {
                                       "type": "string"
                                    }
                                 }
                              }
                           }
                        }
                     },
                     "required": [
                        "items"
                     ]
                  }
               }
            }
         },
         "Create-Session": {
            "content": {
               "application/x-www-form-urlencoded": {
                  "schema": {
                     "type": "object",
                     "properties": {
                        "archiveMode": {
                           "type": "string",
                           "description": "Set to always to have the session archived automatically. With the archiveModeset to manual (the default), you can archive the session by calling the REST /archive POST method. If you set the archiveMode to always, you must also set the p2p.preference parameter to disabled (the default)."
                        },
                        "location": {
                           "type": "string",
                           "description": "The IP address that the Vonage Video APi will use to situate the session in its global network. If no location hint is passed in (which is recommended), the session uses a media server based on the location of the first client connecting to the session. Pass a location hint in only if you know the general geographic region (and a representative IP address) and you think the first client connecting may not be in that region. Specify an IP address that is representative of the geographical location for the session."
                        },
                        "p2p.preference": {
                           "type": "string",
                           "description": "Set to enabled if you prefer clients to attempt to send audio-video streams directly to other clients; set to disabled for sessions that use the Vonage Video Media Router. (Optional; the default setting is disabled -- the session uses the Vonage Video Media Router.)"
                        },
                        "e2ee": {
                           "type": "boolean",
                           "description": "Whether end-to-end encryption is enabled for the session (true) or not (false)"
                        }
                     }
                  },
                  "examples": {
                     "example-1": {
                        "value": "archiveMode=always"
                     }
                  }
               }
            }
         },
         "Mute-Multiple-Streams": {
            "required": true,
            "content": {
               "application/json": {
                  "schema": {
                     "type": "object",
                     "properties": {
                        "active": {
                           "type": "boolean",
                           "description": "Whether to mute streams in the session (true) and enable the mute state of the session, or to disable the mute state of the session (false). With the mute state enabled (true), all current and future streams published to the session (with the exception of streams in the excludedStreamIds array) are muted. When you call this method with the active property set to false, future streams published to the session are not muted (but any existing muted streams remain muted).",
                           "example": true
                        },
                        "excludedStreamIds": {
                           "type": "array",
                           "description": "The stream IDs for streams that should not be muted. This is an optional property. If you omit this property, all streams in the session will be muted. This property only applies when the active property is set to true. When the active property is set to false, it is ignored.\n\nThe elements in the excludedStreamIds array are stream IDs (strings) for the streams you wish to exclude from being muted.\n\nIf you do not wish to include an array of excluded streams, do not include any body content.\n",
                           "example": [
                              "excludedStream1",
                              "excludedStream2"
                           ],
                           "items": {
                              "type": "string"
                           }
                        }
                     },
                     "required": [
                        "active",
                        "excludedStreamIds"
                     ]
                  }
               }
            }
         },
         "New-Archive": {
            "required": true,
            "content": {
               "application/json": {
                  "schema": {
                     "type": "object",
                     "properties": {
                        "sessionId": {
                           "$ref": "#/components/schemas/Session-ID"
                        },
                        "hasAudio": {
                           "$ref": "#/components/schemas/Has-Audio"
                        },
                        "hasVideo": {
                           "$ref": "#/components/schemas/Has-Video"
                        },
                        "hasTranscription": {
                           "$ref": "#/components/schemas/Has-Transcription"
                        },
                        "transcriptionProperties": {
                           "$ref": "#/components/schemas/Transcription-Properties"
                        },
                        "layout": {
                           "$ref": "#/components/schemas/Layout"
                        },
                        "multiArchiveTag": {
                           "$ref": "#/components/schemas/MultiArchiveTag"
                        },
                        "name": {
                           "$ref": "#/components/schemas/Archive-Name"
                        },
                        "outputMode": {
                           "$ref": "#/components/schemas/OutputMode"
                        },
                        "resolution": {
                           "$ref": "#/components/schemas/Resolution"
                        },
                        "streamMode": {
                           "$ref": "#/components/schemas/Stream-Mode"
                        },
                        "maxBitrate": {
                           "$ref": "#/components/schemas/Max-Bitrate"
                        },
                        "quantizationParameter": {
                           "$ref": "#/components/schemas/Quantization-Parameter"
                        }
                     },
                     "required": [
                        "sessionId"
                     ]
                  }
               }
            }
         },
         "Signal": {
            "required": true,
            "content": {
               "application/json": {
                  "schema": {
                     "type": "object",
                     "properties": {
                        "type": {
                           "type": "string",
                           "description": "Type of data that is being sent to the client. This cannot exceed 128 bytes.",
                           "example": "chat"
                        },
                        "data": {
                           "type": "string",
                           "description": "Payload that is being sent to the client. This cannot exceed 8kb.",
                           "example": "Text of the chat message"
                        }
                     },
                     "required": [
                        "type",
                        "data"
                     ]
                  }
               }
            }
         },
         "Layout": {
            "content": {
               "application/json": {
                  "schema": {
                     "$ref": "#/components/schemas/Layout"
                  }
               }
            }
         },
         "Select-Streams": {
            "content": {
               "application/json": {
                  "schema": {
                     "oneOf": [
                        {
                           "$ref": "#/components/schemas/Add-Stream"
                        },
                        {
                           "$ref": "#/components/schemas/Remove-Stream"
                        }
                     ]
                  }
               }
            },
            "description": ""
         },
         "Start-Experience-Composer": {
            "content": {
               "application/json": {
                  "schema": {
                     "$ref": "#/components/schemas/Start-Experience-Composer"
                  }
               }
            }
         },
         "Start-Live-Captions": {
            "content": {
               "application/json": {
                  "schema": {
                     "$ref": "#/components/schemas/Start-Live-Captions"
                  }
               }
            }
         },
         "Start-Audio-Connector": {
            "content": {
               "application/json": {
                  "schema": {
                     "$ref": "#/components/schemas/Start-Audio-Connector"
                  }
               }
            }
         }
      },
      "parameters": {
         "application_id": {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
               "type": "string"
            },
            "description": "Vonage Application UUID"
         },
         "session_id": {
            "name": "session_id",
            "in": "path",
            "required": true,
            "schema": {
               "type": "string"
            },
            "description": "Video session ID"
         },
         "connection_id": {
            "name": "connection_id",
            "in": "path",
            "required": true,
            "schema": {
               "type": "string"
            },
            "description": "Specific publisher connection ID"
         },
         "stream_id": {
            "name": "stream_id",
            "in": "path",
            "required": true,
            "schema": {
               "type": "string"
            },
            "description": "Stream ID"
         },
         "archive_id": {
            "name": "archive_id",
            "in": "path",
            "required": true,
            "schema": {
               "type": "string"
            },
            "description": "Archive UUID to use"
         },
         "broadcast_id": {
            "name": "broadcast_id",
            "in": "path",
            "required": true,
            "schema": {
               "type": "string"
            },
            "description": "ID of the broadcast"
         },
         "captions_id": {
            "name": "captions_id",
            "in": "path",
            "required": true,
            "schema": {
               "type": "string"
            },
            "description": "ID of the connection used for captions"
         },
         "experience_composer_id": {
            "name": "experience_composer_id",
            "in": "path",
            "required": true,
            "schema": {
               "type": "string"
            },
            "description": "ID of the Experience Composer instance"
         }
      }
   },
   "security": [
      {
         "Vonage-JWT": []
      }
   ],
   "tags": [
      {
         "name": "Archives",
         "description": "APIs relating to working with archives"
      },
      {
         "name": "Moderation",
         "description": "APIs relating to moderating participants"
      },
      {
         "name": "Sessions",
         "description": "APIs relating to creating and working with Sessions"
      },
      {
         "name": "Signaling",
         "description": "APIs relating to sending and recieving Signals"
      },
      {
         "name": "SIP",
         "description": "APIs relating to working with SIP calls in a video session"
      },
      {
         "name": "Broadcast",
         "description": "APIs relating to live streaming and broadcasting"
      },
      {
         "name": "Live Captions",
         "description": "APIs relating to live captioning"
      },
      {
         "name": "Audio Connector",
         "description": "APIs relating to audio connector"
      },
      {
         "name": "Experience Composer",
         "description": "APIs relating to Experience Composer"
      }
   ]
}