openapi: 3.0.1
servers:
  - url: https://video.twilio.com
info:
  contact:
    email: support@twilio.com
    name: Twilio Support
    url: https://support.twilio.com
  description: This is the public Twilio REST API.
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.html
  termsOfService: https://www.twilio.com/legal/tos
  title: Twilio - Video
  version: 1.55.0
  x-apisguru-categories:
    - telecom
    - messaging
  x-logo:
    url: https://static1.twilio.com/marketing/bundles/marketing/img/logos/wordmark-red.svg
  x-origin:
    - format: openapi
      url: https://raw.githubusercontent.com/twilio/twilio-oai/main/spec/json/twilio_video_v1.json
      version: "3.0"
  x-providerName: twilio.com
  x-serviceName: twilio_video_v1
tags:
  - name: VideoV1Anonymize
  - name: VideoV1Composition
  - name: VideoV1CompositionHook
  - name: VideoV1CompositionSettings
  - name: VideoV1Participant
  - name: VideoV1PublishedTrack
  - name: VideoV1Recording
  - name: VideoV1RecordingRules
  - name: VideoV1RecordingSettings
  - name: VideoV1Room
  - name: VideoV1RoomRecording
  - name: VideoV1SubscribeRules
  - name: VideoV1SubscribedTrack
paths:
  /v1/CompositionHooks:
    description: Recording composition hooks
    get:
      description: List of all Recording CompositionHook resources.
      operationId: ListCompositionHook
      parameters:
        - description: Read only CompositionHook resources with an `enabled` value that matches this parameter.
          in: query
          name: Enabled
          schema:
            type: boolean
        - description: Read only CompositionHook resources created on or after this [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) datetime with time zone.
          in: query
          name: DateCreatedAfter
          schema:
            format: date-time
            type: string
        - description: Read only CompositionHook resources created before this [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) datetime with time zone.
          in: query
          name: DateCreatedBefore
          schema:
            format: date-time
            type: string
        - description: Read only CompositionHook resources with friendly names that match this string. The match is not case sensitive and can include asterisk `*` characters as wildcard match.
          in: query
          name: FriendlyName
          schema:
            type: string
        - description: How many resources to return in each list page. The default is 50, and the maximum is 1000.
          in: query
          name: PageSize
          schema:
            maximum: 1000
            minimum: 1
            type: integer
        - description: The page index. This value is simply for client state.
          in: query
          name: Page
          schema:
            minimum: 0
            type: integer
        - description: The page token. This is provided by the API.
          in: query
          name: PageToken
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  composition_hooks:
                    items:
                      $ref: "#/components/schemas/video.v1.composition_hook"
                    type: array
                  meta:
                    properties:
                      first_page_url:
                        format: uri
                        type: string
                      key:
                        type: string
                      next_page_url:
                        format: uri
                        nullable: true
                        type: string
                      page:
                        type: integer
                      page_size:
                        type: integer
                      previous_page_url:
                        format: uri
                        nullable: true
                        type: string
                      url:
                        format: uri
                        type: string
                    type: object
                title: ListCompositionHookResponse
                type: object
          description: OK
      security:
        - accountSid_authToken: []
      tags:
        - VideoV1CompositionHook
      x-maturity:
        - GA
    post:
      description: ""
      operationId: CreateCompositionHook
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              properties:
                AudioSources:
                  description: An array of track names from the same group room to merge into the compositions created by the composition hook. Can include zero or more track names. A composition triggered by the composition hook includes all audio sources specified in `audio_sources` except those specified in `audio_sources_excluded`. The track names in this parameter can include an asterisk as a wild card character, which matches zero or more characters in a track name. For example, `student*` includes tracks named `student` as well as `studentTeam`.
                  items:
                    type: string
                  type: array
                AudioSourcesExcluded:
                  description: An array of track names to exclude. A composition triggered by the composition hook includes all audio sources specified in `audio_sources` except for those specified in `audio_sources_excluded`. The track names in this parameter can include an asterisk as a wild card character, which matches zero or more characters in a track name. For example, `student*` excludes `student` as well as `studentTeam`. This parameter can also be empty.
                  items:
                    type: string
                  type: array
                Enabled:
                  description: Whether the composition hook is active. When `true`, the composition hook will be triggered for every completed Group Room in the account. When `false`, the composition hook will never be triggered.
                  type: boolean
                Format:
                  $ref: "#/components/schemas/composition_hook_enum_format"
                  description: "The container format of the media files used by the compositions created by the composition hook. Can be: `mp4` or `webm` and the default is `webm`. If `mp4` or `webm`, `audio_sources` must have one or more tracks and/or a `video_layout` element must contain a valid `video_sources` list, otherwise an error occurs."
                  type: string
                FriendlyName:
                  description: A descriptive string that you create to describe the resource. It can be up to  100 characters long and it must be unique within the account.
                  type: string
                Resolution:
                  description: |-
                    A string that describes the columns (width) and rows (height) of the generated composed video in pixels. Defaults to `640x480`. 
                    The string's format is `{width}x{height}` where: 

                    * 16 <= `{width}` <= 1280
                    * 16 <= `{height}` <= 1280
                    * `{width}` * `{height}` <= 921,600

                    Typical values are: 

                    * HD = `1280x720`
                    * PAL = `1024x576`
                    * VGA = `640x480`
                    * CIF = `320x240`

                    Note that the `resolution` imposes an aspect ratio to the resulting composition. When the original video tracks are constrained by the aspect ratio, they are scaled to fit. See [Specifying Video Layouts](https://www.twilio.com/docs/video/api/compositions-resource#specifying-video-layouts) for more info.
                  type: string
                StatusCallback:
                  description: The URL we should call using the `status_callback_method` to send status information to your application on every composition event. If not provided, status callback events will not be dispatched.
                  format: uri
                  type: string
                StatusCallbackMethod:
                  description: "The HTTP method we should use to call `status_callback`. Can be: `POST` or `GET` and the default is `POST`."
                  enum:
                    - HEAD
                    - GET
                    - POST
                    - PATCH
                    - PUT
                    - DELETE
                  format: http-method
                  type: string
                Trim:
                  description: Whether to clip the intervals where there is no active media in the Compositions triggered by the composition hook. The default is `true`. Compositions with `trim` enabled are shorter when the Room is created and no Participant joins for a while as well as if all the Participants leave the room and join later, because those gaps will be removed. See [Specifying Video Layouts](https://www.twilio.com/docs/video/api/compositions-resource#specifying-video-layouts) for more info.
                  type: boolean
                VideoLayout:
                  description: An object that describes the video layout of the composition hook in terms of regions. See [Specifying Video Layouts](https://www.twilio.com/docs/video/api/compositions-resource#specifying-video-layouts) for more info.
              required:
                - FriendlyName
              title: CreateCompositionHookRequest
              type: object
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/video.v1.composition_hook"
          description: Created
      security:
        - accountSid_authToken: []
      tags:
        - VideoV1CompositionHook
      x-maturity:
        - GA
    servers:
      - url: https://video.twilio.com
    x-twilio:
      defaultOutputProperties:
        - sid
        - friendly_name
        - date_created
      pathType: list
  /v1/CompositionHooks/{Sid}:
    delete:
      description: Delete a Recording CompositionHook resource identified by a `CompositionHook SID`.
      operationId: DeleteCompositionHook
      parameters:
        - description: The SID of the CompositionHook resource to delete.
          in: path
          name: Sid
          required: true
          schema:
            maxLength: 34
            minLength: 34
            pattern: ^HK[0-9a-fA-F]{32}$
            type: string
      responses:
        "204":
          description: The resource was deleted successfully.
      security:
        - accountSid_authToken: []
      tags:
        - VideoV1CompositionHook
      x-maturity:
        - GA
    description: Recording composition hooks
    get:
      description: Returns a single CompositionHook resource identified by a CompositionHook SID.
      operationId: FetchCompositionHook
      parameters:
        - description: The SID of the CompositionHook resource to fetch.
          in: path
          name: Sid
          required: true
          schema:
            maxLength: 34
            minLength: 34
            pattern: ^HK[0-9a-fA-F]{32}$
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/video.v1.composition_hook"
          description: OK
      security:
        - accountSid_authToken: []
      tags:
        - VideoV1CompositionHook
      x-maturity:
        - GA
    post:
      description: ""
      operationId: UpdateCompositionHook
      parameters:
        - description: The SID of the CompositionHook resource to update.
          in: path
          name: Sid
          required: true
          schema:
            maxLength: 34
            minLength: 34
            pattern: ^HK[0-9a-fA-F]{32}$
            type: string
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              properties:
                AudioSources:
                  description: An array of track names from the same group room to merge into the compositions created by the composition hook. Can include zero or more track names. A composition triggered by the composition hook includes all audio sources specified in `audio_sources` except those specified in `audio_sources_excluded`. The track names in this parameter can include an asterisk as a wild card character, which matches zero or more characters in a track name. For example, `student*` includes tracks named `student` as well as `studentTeam`.
                  items:
                    type: string
                  type: array
                AudioSourcesExcluded:
                  description: An array of track names to exclude. A composition triggered by the composition hook includes all audio sources specified in `audio_sources` except for those specified in `audio_sources_excluded`. The track names in this parameter can include an asterisk as a wild card character, which matches zero or more characters in a track name. For example, `student*` excludes `student` as well as `studentTeam`. This parameter can also be empty.
                  items:
                    type: string
                  type: array
                Enabled:
                  description: Whether the composition hook is active. When `true`, the composition hook will be triggered for every completed Group Room in the account. When `false`, the composition hook never triggers.
                  type: boolean
                Format:
                  $ref: "#/components/schemas/composition_hook_enum_format"
                  description: "The container format of the media files used by the compositions created by the composition hook. Can be: `mp4` or `webm` and the default is `webm`. If `mp4` or `webm`, `audio_sources` must have one or more tracks and/or a `video_layout` element must contain a valid `video_sources` list, otherwise an error occurs."
                  type: string
                FriendlyName:
                  description: A descriptive string that you create to describe the resource. It can be up to  100 characters long and it must be unique within the account.
                  type: string
                Resolution:
                  description: |-
                    A string that describes the columns (width) and rows (height) of the generated composed video in pixels. Defaults to `640x480`. 
                    The string's format is `{width}x{height}` where: 

                    * 16 <= `{width}` <= 1280
                    * 16 <= `{height}` <= 1280
                    * `{width}` * `{height}` <= 921,600

                    Typical values are: 

                    * HD = `1280x720`
                    * PAL = `1024x576`
                    * VGA = `640x480`
                    * CIF = `320x240`

                    Note that the `resolution` imposes an aspect ratio to the resulting composition. When the original video tracks are constrained by the aspect ratio, they are scaled to fit. See [Specifying Video Layouts](https://www.twilio.com/docs/video/api/compositions-resource#specifying-video-layouts) for more info.
                  type: string
                StatusCallback:
                  description: The URL we should call using the `status_callback_method` to send status information to your application on every composition event. If not provided, status callback events will not be dispatched.
                  format: uri
                  type: string
                StatusCallbackMethod:
                  description: "The HTTP method we should use to call `status_callback`. Can be: `POST` or `GET` and the default is `POST`."
                  enum:
                    - HEAD
                    - GET
                    - POST
                    - PATCH
                    - PUT
                    - DELETE
                  format: http-method
                  type: string
                Trim:
                  description: Whether to clip the intervals where there is no active media in the compositions triggered by the composition hook. The default is `true`. Compositions with `trim` enabled are shorter when the Room is created and no Participant joins for a while as well as if all the Participants leave the room and join later, because those gaps will be removed. See [Specifying Video Layouts](https://www.twilio.com/docs/video/api/compositions-resource#specifying-video-layouts) for more info.
                  type: boolean
                VideoLayout:
                  description: A JSON object that describes the video layout of the composition hook in terms of regions. See [Specifying Video Layouts](https://www.twilio.com/docs/video/api/compositions-resource#specifying-video-layouts) for more info.
              required:
                - FriendlyName
              title: UpdateCompositionHookRequest
              type: object
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/video.v1.composition_hook"
          description: OK
      security:
        - accountSid_authToken: []
      tags:
        - VideoV1CompositionHook
      x-maturity:
        - GA
    servers:
      - url: https://video.twilio.com
    x-twilio:
      defaultOutputProperties:
        - sid
        - friendly_name
        - date_created
      pathType: instance
  /v1/CompositionSettings/Default:
    description: Recording composition settings
    get:
      description: ""
      operationId: FetchCompositionSettings
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/video.v1.composition_settings"
          description: OK
      security:
        - accountSid_authToken: []
      tags:
        - VideoV1CompositionSettings
      x-maturity:
        - GA
    post:
      description: ""
      operationId: CreateCompositionSettings
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              properties:
                AwsCredentialsSid:
                  description: The SID of the stored Credential resource.
                  maxLength: 34
                  minLength: 34
                  pattern: ^CR[0-9a-fA-F]{32}$
                  type: string
                AwsS3Url:
                  description: The URL of the AWS S3 bucket where the compositions should be stored. We only support DNS-compliant URLs like `https://documentation-example-twilio-bucket/compositions`, where `compositions` is the path in which you want the compositions to be stored. This URL accepts only URI-valid characters, as described in the [RFC 3986](https://tools.ietf.org/html/rfc3986#section-2).
                  format: uri
                  type: string
                AwsStorageEnabled:
                  description: Whether all compositions should be written to the `aws_s3_url`. When `false`, all compositions are stored in our cloud.
                  type: boolean
                EncryptionEnabled:
                  description: Whether all compositions should be stored in an encrypted form. The default is `false`.
                  type: boolean
                EncryptionKeySid:
                  description: The SID of the Public Key resource to use for encryption.
                  maxLength: 34
                  minLength: 34
                  pattern: ^CR[0-9a-fA-F]{32}$
                  type: string
                FriendlyName:
                  description: A descriptive string that you create to describe the resource and show to the user in the console
                  type: string
              required:
                - FriendlyName
              title: CreateCompositionSettingsRequest
              type: object
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/video.v1.composition_settings"
          description: Created
      security:
        - accountSid_authToken: []
      tags:
        - VideoV1CompositionSettings
      x-maturity:
        - GA
    servers:
      - url: https://video.twilio.com
    x-twilio:
      className: composition_settings
      defaultOutputProperties:
        - friendly_name
        - aws_storage_enabled
        - encryption_enabled
      mountName: composition_settings
      pathType: instance
  /v1/Compositions:
    description: Recording compositions
    get:
      description: List of all Recording compositions.
      operationId: ListComposition
      parameters:
        - description: "Read only Composition resources with this status. Can be: `enqueued`, `processing`, `completed`, `deleted`, or `failed`."
          in: query
          name: Status
          schema:
            $ref: "#/components/schemas/composition_enum_status"
            type: string
        - description: Read only Composition resources created on or after this [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time with time zone.
          in: query
          name: DateCreatedAfter
          schema:
            format: date-time
            type: string
        - description: Read only Composition resources created before this ISO 8601 date-time with time zone.
          in: query
          name: DateCreatedBefore
          schema:
            format: date-time
            type: string
        - description: Read only Composition resources with this Room SID.
          in: query
          name: RoomSid
          schema:
            maxLength: 34
            minLength: 34
            pattern: ^RM[0-9a-fA-F]{32}$
            type: string
        - description: How many resources to return in each list page. The default is 50, and the maximum is 1000.
          in: query
          name: PageSize
          schema:
            maximum: 1000
            minimum: 1
            type: integer
        - description: The page index. This value is simply for client state.
          in: query
          name: Page
          schema:
            minimum: 0
            type: integer
        - description: The page token. This is provided by the API.
          in: query
          name: PageToken
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  compositions:
                    items:
                      $ref: "#/components/schemas/video.v1.composition"
                    type: array
                  meta:
                    properties:
                      first_page_url:
                        format: uri
                        type: string
                      key:
                        type: string
                      next_page_url:
                        format: uri
                        nullable: true
                        type: string
                      page:
                        type: integer
                      page_size:
                        type: integer
                      previous_page_url:
                        format: uri
                        nullable: true
                        type: string
                      url:
                        format: uri
                        type: string
                    type: object
                title: ListCompositionResponse
                type: object
          description: OK
      security:
        - accountSid_authToken: []
      tags:
        - VideoV1Composition
      x-maturity:
        - GA
    post:
      description: ""
      operationId: CreateComposition
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              properties:
                AudioSources:
                  description: An array of track names from the same group room to merge into the new composition. Can include zero or more track names. The new composition includes all audio sources specified in `audio_sources` except for those specified in `audio_sources_excluded`. The track names in this parameter can include an asterisk as a wild card character, which will match zero or more characters in a track name. For example, `student*` includes `student` as well as `studentTeam`. Please, be aware that either video_layout or audio_sources have to be provided to get a valid creation request
                  items:
                    type: string
                  type: array
                AudioSourcesExcluded:
                  description: An array of track names to exclude. The new composition includes all audio sources specified in `audio_sources` except for those specified in `audio_sources_excluded`. The track names in this parameter can include an asterisk as a wild card character, which will match zero or more characters in a track name. For example, `student*` excludes `student` as well as `studentTeam`. This parameter can also be empty.
                  items:
                    type: string
                  type: array
                Format:
                  $ref: "#/components/schemas/composition_enum_format"
                  description: "The container format of the composition's media files. Can be: `mp4` or `webm` and the default is `webm`. If you specify `mp4` or `webm`, you must also specify one or more `audio_sources` and/or a `video_layout` element that contains a valid `video_sources` list, otherwise an error occurs."
                  type: string
                Resolution:
                  description: |-
                    A string that describes the columns (width) and rows (height) of the generated composed video in pixels. Defaults to `640x480`. 
                    The string's format is `{width}x{height}` where: 

                    * 16 <= `{width}` <= 1280
                    * 16 <= `{height}` <= 1280
                    * `{width}` * `{height}` <= 921,600

                    Typical values are: 

                    * HD = `1280x720`
                    * PAL = `1024x576`
                    * VGA = `640x480`
                    * CIF = `320x240`

                    Note that the `resolution` imposes an aspect ratio to the resulting composition. When the original video tracks are constrained by the aspect ratio, they are scaled to fit. See [Specifying Video Layouts](https://www.twilio.com/docs/video/api/compositions-resource#specifying-video-layouts) for more info.
                  type: string
                RoomSid:
                  description: The SID of the Group Room with the media tracks to be used as composition sources.
                  maxLength: 34
                  minLength: 34
                  pattern: ^RM[0-9a-fA-F]{32}$
                  type: string
                StatusCallback:
                  description: The URL we should call using the `status_callback_method` to send status information to your application on every composition event. If not provided, status callback events will not be dispatched.
                  format: uri
                  type: string
                StatusCallbackMethod:
                  description: "The HTTP method we should use to call `status_callback`. Can be: `POST` or `GET` and the default is `POST`."
                  enum:
                    - HEAD
                    - GET
                    - POST
                    - PATCH
                    - PUT
                    - DELETE
                  format: http-method
                  type: string
                Trim:
                  description: Whether to clip the intervals where there is no active media in the composition. The default is `true`. Compositions with `trim` enabled are shorter when the Room is created and no Participant joins for a while as well as if all the Participants leave the room and join later, because those gaps will be removed. See [Specifying Video Layouts](https://www.twilio.com/docs/video/api/compositions-resource#specifying-video-layouts) for more info.
                  type: boolean
                VideoLayout:
                  description: An object that describes the video layout of the composition in terms of regions. See [Specifying Video Layouts](https://www.twilio.com/docs/video/api/compositions-resource#specifying-video-layouts) for more info. Please, be aware that either video_layout or audio_sources have to be provided to get a valid creation request
              required:
                - RoomSid
              title: CreateCompositionRequest
              type: object
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/video.v1.composition"
          description: Created
      security:
        - accountSid_authToken: []
      tags:
        - VideoV1Composition
      x-maturity:
        - GA
    servers:
      - url: https://video.twilio.com
    x-twilio:
      defaultOutputProperties:
        - sid
        - status
        - resolution
        - format
      dependentProperties:
        media:
          mapping:
            composition_sid: sid
          resource_url: /v1/Compositions/{composition_sid}/Media
      pathType: list
  /v1/Compositions/{Sid}:
    delete:
      description: Delete a Recording Composition resource identified by a Composition SID.
      operationId: DeleteComposition
      parameters:
        - description: The SID of the Composition resource to delete.
          in: path
          name: Sid
          required: true
          schema:
            maxLength: 34
            minLength: 34
            pattern: ^CJ[0-9a-fA-F]{32}$
            type: string
      responses:
        "204":
          description: The resource was deleted successfully.
      security:
        - accountSid_authToken: []
      tags:
        - VideoV1Composition
      x-maturity:
        - GA
    description: Recording compositions
    get:
      description: Returns a single Composition resource identified by a Composition SID.
      operationId: FetchComposition
      parameters:
        - description: The SID of the Composition resource to fetch.
          in: path
          name: Sid
          required: true
          schema:
            maxLength: 34
            minLength: 34
            pattern: ^CJ[0-9a-fA-F]{32}$
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/video.v1.composition"
          description: OK
      security:
        - accountSid_authToken: []
      tags:
        - VideoV1Composition
      x-maturity:
        - GA
    servers:
      - url: https://video.twilio.com
    x-twilio:
      defaultOutputProperties:
        - sid
        - status
        - resolution
        - format
      dependentProperties:
        media:
          mapping:
            composition_sid: sid
          resource_url: /v1/Compositions/{composition_sid}/Media
      pathType: instance
  /v1/RecordingSettings/Default:
    description: Recording settings
    get:
      description: ""
      operationId: FetchRecordingSettings
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/video.v1.recording_settings"
          description: OK
      security:
        - accountSid_authToken: []
      tags:
        - VideoV1RecordingSettings
      x-maturity:
        - GA
    post:
      description: ""
      operationId: CreateRecordingSettings
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              properties:
                AwsCredentialsSid:
                  description: The SID of the stored Credential resource.
                  maxLength: 34
                  minLength: 34
                  pattern: ^CR[0-9a-fA-F]{32}$
                  type: string
                AwsS3Url:
                  description: The URL of the AWS S3 bucket where the recordings should be stored. We only support DNS-compliant URLs like `https://documentation-example-twilio-bucket/recordings`, where `recordings` is the path in which you want the recordings to be stored. This URL accepts only URI-valid characters, as described in the [RFC 3986](https://tools.ietf.org/html/rfc3986#section-2).
                  format: uri
                  type: string
                AwsStorageEnabled:
                  description: Whether all recordings should be written to the `aws_s3_url`. When `false`, all recordings are stored in our cloud.
                  type: boolean
                EncryptionEnabled:
                  description: Whether all recordings should be stored in an encrypted form. The default is `false`.
                  type: boolean
                EncryptionKeySid:
                  description: The SID of the Public Key resource to use for encryption.
                  maxLength: 34
                  minLength: 34
                  pattern: ^CR[0-9a-fA-F]{32}$
                  type: string
                FriendlyName:
                  description: A descriptive string that you create to describe the resource and be shown to users in the console
                  type: string
              required:
                - FriendlyName
              title: CreateRecordingSettingsRequest
              type: object
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/video.v1.recording_settings"
          description: Created
      security:
        - accountSid_authToken: []
      tags:
        - VideoV1RecordingSettings
      x-maturity:
        - GA
    servers:
      - url: https://video.twilio.com
    x-twilio:
      className: recording_settings
      defaultOutputProperties:
        - friendly_name
        - aws_storage_enabled
        - encryption_enabled
      mountName: recording_settings
      pathType: instance
  /v1/Recordings:
    description: Single-track, single-media recordings
    get:
      description: List of all Track recordings.
      operationId: ListRecording
      parameters:
        - description: "Read only the recordings that have this status. Can be: `processing`, `completed`, or `deleted`."
          in: query
          name: Status
          schema:
            $ref: "#/components/schemas/recording_enum_status"
            type: string
        - description: Read only the recordings that have this `source_sid`.
          in: query
          name: SourceSid
          schema:
            maxLength: 34
            minLength: 34
            pattern: ^[a-zA-Z]{2}[0-9a-fA-F]{32}$
            type: string
        - description: Read only recordings with this `grouping_sid`, which may include a `participant_sid` and/or a `room_sid`.
          in: query
          name: GroupingSid
          schema:
            items:
              maxLength: 34
              minLength: 34
              pattern: ^[a-zA-Z]{2}[0-9a-fA-F]{32}$
              type: string
            type: array
        - description: Read only recordings that started on or after this [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time with time zone.
          in: query
          name: DateCreatedAfter
          schema:
            format: date-time
            type: string
        - description: Read only recordings that started before this [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time with time zone, given as `YYYY-MM-DDThh:mm:ss+|-hh:mm` or `YYYY-MM-DDThh:mm:ssZ`.
          in: query
          name: DateCreatedBefore
          schema:
            format: date-time
            type: string
        - description: Read only recordings that have this media type. Can be either `audio` or `video`.
          in: query
          name: MediaType
          schema:
            $ref: "#/components/schemas/recording_enum_type"
            type: string
        - description: How many resources to return in each list page. The default is 50, and the maximum is 1000.
          in: query
          name: PageSize
          schema:
            maximum: 1000
            minimum: 1
            type: integer
        - description: The page index. This value is simply for client state.
          in: query
          name: Page
          schema:
            minimum: 0
            type: integer
        - description: The page token. This is provided by the API.
          in: query
          name: PageToken
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  meta:
                    properties:
                      first_page_url:
                        format: uri
                        type: string
                      key:
                        type: string
                      next_page_url:
                        format: uri
                        nullable: true
                        type: string
                      page:
                        type: integer
                      page_size:
                        type: integer
                      previous_page_url:
                        format: uri
                        nullable: true
                        type: string
                      url:
                        format: uri
                        type: string
                    type: object
                  recordings:
                    items:
                      $ref: "#/components/schemas/video.v1.recording"
                    type: array
                title: ListRecordingResponse
                type: object
          description: OK
      security:
        - accountSid_authToken: []
      tags:
        - VideoV1Recording
      x-maturity:
        - GA
    servers:
      - url: https://video.twilio.com
    x-twilio:
      defaultOutputProperties:
        - sid
        - date_created
        - status
        - type
        - duration
        - codec
      dependentProperties:
        media:
          mapping:
            recording_sid: sid
          resource_url: /v1/Recordings/{recording_sid}/Media
      pathType: list
  /v1/Recordings/{Sid}:
    delete:
      description: Delete a Recording resource identified by a Recording SID.
      operationId: DeleteRecording
      parameters:
        - description: The SID of the Recording resource to delete.
          in: path
          name: Sid
          required: true
          schema:
            maxLength: 34
            minLength: 34
            pattern: ^RT[0-9a-fA-F]{32}$
            type: string
      responses:
        "204":
          description: The resource was deleted successfully.
      security:
        - accountSid_authToken: []
      tags:
        - VideoV1Recording
      x-maturity:
        - GA
    description: Single-track, single-media recordings
    get:
      description: Returns a single Recording resource identified by a Recording SID.
      operationId: FetchRecording
      parameters:
        - description: The SID of the Recording resource to fetch.
          in: path
          name: Sid
          required: true
          schema:
            maxLength: 34
            minLength: 34
            pattern: ^RT[0-9a-fA-F]{32}$
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/video.v1.recording"
          description: OK
      security:
        - accountSid_authToken: []
      tags:
        - VideoV1Recording
      x-maturity:
        - GA
    servers:
      - url: https://video.twilio.com
    x-twilio:
      defaultOutputProperties:
        - sid
        - date_created
        - status
        - type
        - duration
        - codec
      dependentProperties:
        media:
          mapping:
            recording_sid: sid
          resource_url: /v1/Recordings/{recording_sid}/Media
      pathType: instance
  /v1/Rooms:
    description: Video rooms with one or more participants
    get:
      description: ""
      operationId: ListRoom
      parameters:
        - description: "Read only the rooms with this status. Can be: `in-progress` (default) or `completed`"
          in: query
          name: Status
          schema:
            $ref: "#/components/schemas/room_enum_room_status"
            type: string
        - description: Read only rooms with the this `unique_name`.
          in: query
          name: UniqueName
          schema:
            type: string
        - description: Read only rooms that started on or after this date, given as `YYYY-MM-DD`.
          in: query
          name: DateCreatedAfter
          schema:
            format: date-time
            type: string
        - description: Read only rooms that started before this date, given as `YYYY-MM-DD`.
          in: query
          name: DateCreatedBefore
          schema:
            format: date-time
            type: string
        - description: How many resources to return in each list page. The default is 50, and the maximum is 1000.
          in: query
          name: PageSize
          schema:
            maximum: 1000
            minimum: 1
            type: integer
        - description: The page index. This value is simply for client state.
          in: query
          name: Page
          schema:
            minimum: 0
            type: integer
        - description: The page token. This is provided by the API.
          in: query
          name: PageToken
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  meta:
                    properties:
                      first_page_url:
                        format: uri
                        type: string
                      key:
                        type: string
                      next_page_url:
                        format: uri
                        nullable: true
                        type: string
                      page:
                        type: integer
                      page_size:
                        type: integer
                      previous_page_url:
                        format: uri
                        nullable: true
                        type: string
                      url:
                        format: uri
                        type: string
                    type: object
                  rooms:
                    items:
                      $ref: "#/components/schemas/video.v1.room"
                    type: array
                title: ListRoomResponse
                type: object
          description: OK
      security:
        - accountSid_authToken: []
      tags:
        - VideoV1Room
      x-maturity:
        - GA
    post:
      description: ""
      operationId: CreateRoom
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              properties:
                AudioOnly:
                  description: When set to true, indicates that the participants in the room will only publish audio. No video tracks will be allowed. Group rooms only.
                  type: boolean
                EmptyRoomTimeout:
                  description: Configures how long (in minutes) a room will remain active after last participant leaves. Valid values range from 1 to 60 minutes (no fractions).
                  type: integer
                EnableTurn:
                  description: Deprecated, now always considered to be true.
                  type: boolean
                LargeRoom:
                  description: When set to true, indicated that this is the large room.
                  type: boolean
                MaxParticipantDuration:
                  description: The maximum number of seconds a Participant can be connected to the room. The maximum possible value is 86400 seconds (24 hours). The default is 14400 seconds (4 hours).
                  type: integer
                MaxParticipants:
                  description: The maximum number of concurrent Participants allowed in the room. Peer-to-peer rooms can have up to 10 Participants. Small Group rooms can have up to 4 Participants. Group rooms can have up to 50 Participants.
                  type: integer
                MediaRegion:
                  description: "The region for the media server in Group Rooms.  Can be: one of the [available Media Regions](https://www.twilio.com/docs/video/ip-addresses#group-rooms-media-servers). ***This feature is not available in `peer-to-peer` rooms.***"
                  type: string
                RecordParticipantsOnConnect:
                  description: Whether to start recording when Participants connect. ***This feature is not available in `peer-to-peer` rooms.***
                  type: boolean
                RecordingRules:
                  description: A collection of Recording Rules that describe how to include or exclude matching tracks for recording
                StatusCallback:
                  description: The URL we should call using the `status_callback_method` to send status information to your application on every room event. See [Status Callbacks](https://www.twilio.com/docs/video/api/status-callbacks) for more info.
                  format: uri
                  type: string
                StatusCallbackMethod:
                  description: The HTTP method we should use to call `status_callback`. Can be `POST` or `GET`.
                  enum:
                    - HEAD
                    - GET
                    - POST
                    - PATCH
                    - PUT
                    - DELETE
                  format: http-method
                  type: string
                Type:
                  $ref: "#/components/schemas/room_enum_room_type"
                  description: "The type of room. Can be: `go`, `peer-to-peer`, `group-small`, or `group`. The default value is `group`."
                  type: string
                UniqueName:
                  description: An application-defined string that uniquely identifies the resource. It can be used as a `room_sid` in place of the resource's `sid` in the URL to address the resource, assuming it does not contain any [reserved characters](https://tools.ietf.org/html/rfc3986#section-2.2) that would need to be URL encoded. This value is unique for `in-progress` rooms. SDK clients can use this name to connect to the room. REST API clients can use this name in place of the Room SID to interact with the room as long as the room is `in-progress`.
                  type: string
                UnusedRoomTimeout:
                  description: Configures how long (in minutes) a room will remain active if no one joins. Valid values range from 1 to 60 minutes (no fractions).
                  type: integer
                VideoCodecs:
                  description: "An array of the video codecs that are supported when publishing a track in the room.  Can be: `VP8` and `H264`.  ***This feature is not available in `peer-to-peer` rooms***"
                  items:
                    $ref: "#/components/schemas/room_enum_video_codec"
                    type: string
                  type: array
              title: CreateRoomRequest
              type: object
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/video.v1.room"
          description: Created
      security:
        - accountSid_authToken: []
      tags:
        - VideoV1Room
      x-maturity:
        - GA
    servers:
      - url: https://video.twilio.com
    x-twilio:
      defaultOutputProperties:
        - sid
        - unique_name
        - status
      dependentProperties:
        participants:
          mapping:
            room_sid: sid
          resource_url: /v1/Rooms/{room_sid}/Participants
        recording_rules:
          mapping:
            room_sid: sid
          resource_url: /v1/Rooms/{room_sid}/RecordingRules
        recordings:
          mapping:
            room_sid: sid
          resource_url: /v1/Rooms/{room_sid}/Recordings
      pathType: list
  /v1/Rooms/{RoomSid}/Participants:
    description: Participants in video rooms
    get:
      description: ""
      operationId: ListRoomParticipant
      parameters:
        - description: The SID of the room with the Participant resources to read.
          in: path
          name: RoomSid
          required: true
          schema:
            type: string
        - description: "Read only the participants with this status. Can be: `connected` or `disconnected`. For `in-progress` Rooms the default Status is `connected`, for `completed` Rooms only `disconnected` Participants are returned."
          in: query
          name: Status
          schema:
            $ref: "#/components/schemas/room_participant_enum_status"
            type: string
        - description: Read only the Participants with this [User](https://www.twilio.com/docs/chat/rest/user-resource) `identity` value.
          in: query
          name: Identity
          schema:
            type: string
        - description: Read only Participants that started after this date in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601#UTC) format.
          in: query
          name: DateCreatedAfter
          schema:
            format: date-time
            type: string
        - description: Read only Participants that started before this date in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601#UTC) format.
          in: query
          name: DateCreatedBefore
          schema:
            format: date-time
            type: string
        - description: How many resources to return in each list page. The default is 50, and the maximum is 1000.
          in: query
          name: PageSize
          schema:
            maximum: 1000
            minimum: 1
            type: integer
        - description: The page index. This value is simply for client state.
          in: query
          name: Page
          schema:
            minimum: 0
            type: integer
        - description: The page token. This is provided by the API.
          in: query
          name: PageToken
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  meta:
                    properties:
                      first_page_url:
                        format: uri
                        type: string
                      key:
                        type: string
                      next_page_url:
                        format: uri
                        nullable: true
                        type: string
                      page:
                        type: integer
                      page_size:
                        type: integer
                      previous_page_url:
                        format: uri
                        nullable: true
                        type: string
                      url:
                        format: uri
                        type: string
                    type: object
                  participants:
                    items:
                      $ref: "#/components/schemas/video.v1.room.room_participant"
                    type: array
                title: ListRoomParticipantResponse
                type: object
          description: OK
      security:
        - accountSid_authToken: []
      tags:
        - VideoV1Participant
      x-maturity:
        - GA
    servers:
      - url: https://video.twilio.com
    x-twilio:
      defaultOutputProperties:
        - sid
        - identity
        - status
      dependentProperties:
        anonymize:
          mapping:
            room_sid: room_sid
            sid: sid
          resource_url: /v1/Rooms/{room_sid}/Participants/{sid}/Anonymize
        published_tracks:
          mapping:
            participant_sid: sid
            room_sid: room_sid
          resource_url: /v1/Rooms/{room_sid}/Participants/{participant_sid}/PublishedTracks
        subscribe_rules:
          mapping:
            participant_sid: sid
            room_sid: room_sid
          resource_url: /v1/Rooms/{room_sid}/Participants/{participant_sid}/SubscribeRules
        subscribed_tracks:
          mapping:
            participant_sid: sid
            room_sid: room_sid
          resource_url: /v1/Rooms/{room_sid}/Participants/{participant_sid}/SubscribedTracks
      parent: /Rooms/{Sid}
      pathType: list
  /v1/Rooms/{RoomSid}/Participants/{ParticipantSid}/PublishedTracks:
    description: "TODO: Resource-level docs"
    get:
      description: Returns a list of tracks associated with a given Participant. Only `currently` Published Tracks are in the list resource.
      operationId: ListRoomParticipantPublishedTrack
      parameters:
        - description: The SID of the Room resource where the Track resources to read are published.
          in: path
          name: RoomSid
          required: true
          schema:
            type: string
        - description: The SID of the Participant resource with the published tracks to read.
          in: path
          name: ParticipantSid
          required: true
          schema:
            type: string
        - description: How many resources to return in each list page. The default is 50, and the maximum is 1000.
          in: query
          name: PageSize
          schema:
            maximum: 1000
            minimum: 1
            type: integer
        - description: The page index. This value is simply for client state.
          in: query
          name: Page
          schema:
            minimum: 0
            type: integer
        - description: The page token. This is provided by the API.
          in: query
          name: PageToken
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  meta:
                    properties:
                      first_page_url:
                        format: uri
                        type: string
                      key:
                        type: string
                      next_page_url:
                        format: uri
                        nullable: true
                        type: string
                      page:
                        type: integer
                      page_size:
                        type: integer
                      previous_page_url:
                        format: uri
                        nullable: true
                        type: string
                      url:
                        format: uri
                        type: string
                    type: object
                  published_tracks:
                    items:
                      $ref: "#/components/schemas/video.v1.room.room_participant.room_participant_published_track"
                    type: array
                title: ListRoomParticipantPublishedTrackResponse
                type: object
          description: OK
      security:
        - accountSid_authToken: []
      tags:
        - VideoV1PublishedTrack
      x-maturity:
        - GA
    servers:
      - url: https://video.twilio.com
    x-twilio:
      defaultOutputProperties:
        - sid
        - name
        - enabled
        - kind
      parent: /Rooms/{RoomSid}/Participants/{Sid}
      pathType: list
  /v1/Rooms/{RoomSid}/Participants/{ParticipantSid}/PublishedTracks/{Sid}:
    description: "TODO: Resource-level docs"
    get:
      description: Returns a single Track resource represented by TrackName or SID.
      operationId: FetchRoomParticipantPublishedTrack
      parameters:
        - description: The SID of the Room resource where the Track resource to fetch is published.
          in: path
          name: RoomSid
          required: true
          schema:
            type: string
        - description: The SID of the Participant resource with the published track to fetch.
          in: path
          name: ParticipantSid
          required: true
          schema:
            type: string
        - description: The SID of the RoomParticipantPublishedTrack resource to fetch.
          in: path
          name: Sid
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/video.v1.room.room_participant.room_participant_published_track"
          description: OK
      security:
        - accountSid_authToken: []
      tags:
        - VideoV1PublishedTrack
      x-maturity:
        - GA
    servers:
      - url: https://video.twilio.com
    x-twilio:
      defaultOutputProperties:
        - sid
        - name
        - enabled
        - kind
      parent: /Rooms/{RoomSid}/Participants/{Sid}
      pathType: instance
  /v1/Rooms/{RoomSid}/Participants/{ParticipantSid}/SubscribeRules:
    description: "TODO: Resource-level docs"
    get:
      description: Returns a list of Subscribe Rules for the Participant.
      operationId: FetchRoomParticipantSubscribeRule
      parameters:
        - description: The SID of the Room resource where the subscribe rules to fetch apply.
          in: path
          name: RoomSid
          required: true
          schema:
            type: string
        - description: The SID of the Participant resource with the subscribe rules to fetch.
          in: path
          name: ParticipantSid
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/video.v1.room.room_participant.room_participant_subscribe_rule"
          description: OK
      security:
        - accountSid_authToken: []
      tags:
        - VideoV1SubscribeRules
      x-maturity:
        - GA
    post:
      description: Update the Subscribe Rules for the Participant
      operationId: UpdateRoomParticipantSubscribeRule
      parameters:
        - description: The SID of the Room resource where the subscribe rules to update apply.
          in: path
          name: RoomSid
          required: true
          schema:
            type: string
        - description: The SID of the Participant resource to update the Subscribe Rules.
          in: path
          name: ParticipantSid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              properties:
                Rules:
                  description: A JSON-encoded array of subscribe rules. See the [Specifying Subscribe Rules](https://www.twilio.com/docs/video/api/track-subscriptions#specifying-sr) section for further information.
              title: UpdateRoomParticipantSubscribeRuleRequest
              type: object
      responses:
        "202":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/video.v1.room.room_participant.room_participant_subscribe_rule"
          description: Accepted
      security:
        - accountSid_authToken: []
      tags:
        - VideoV1SubscribeRules
      x-maturity:
        - GA
    servers:
      - url: https://video.twilio.com
    x-twilio:
      className: subscribe_rules
      defaultOutputProperties:
        - participant_sid
        - room_sid
        - rules
      parent: /Rooms/{RoomSid}/Participants/{Sid}
      pathType: list
  /v1/Rooms/{RoomSid}/Participants/{ParticipantSid}/SubscribedTracks:
    description: "TODO: Resource-level docs"
    get:
      description: Returns a list of tracks that are subscribed for the participant.
      operationId: ListRoomParticipantSubscribedTrack
      parameters:
        - description: The SID of the Room resource with the Track resources to read.
          in: path
          name: RoomSid
          required: true
          schema:
            type: string
        - description: The SID of the participant that subscribes to the Track resources to read.
          in: path
          name: ParticipantSid
          required: true
          schema:
            type: string
        - description: How many resources to return in each list page. The default is 50, and the maximum is 1000.
          in: query
          name: PageSize
          schema:
            maximum: 1000
            minimum: 1
            type: integer
        - description: The page index. This value is simply for client state.
          in: query
          name: Page
          schema:
            minimum: 0
            type: integer
        - description: The page token. This is provided by the API.
          in: query
          name: PageToken
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  meta:
                    properties:
                      first_page_url:
                        format: uri
                        type: string
                      key:
                        type: string
                      next_page_url:
                        format: uri
                        nullable: true
                        type: string
                      page:
                        type: integer
                      page_size:
                        type: integer
                      previous_page_url:
                        format: uri
                        nullable: true
                        type: string
                      url:
                        format: uri
                        type: string
                    type: object
                  subscribed_tracks:
                    items:
                      $ref: "#/components/schemas/video.v1.room.room_participant.room_participant_subscribed_track"
                    type: array
                title: ListRoomParticipantSubscribedTrackResponse
                type: object
          description: OK
      security:
        - accountSid_authToken: []
      tags:
        - VideoV1SubscribedTrack
      x-maturity:
        - GA
    servers:
      - url: https://video.twilio.com
    x-twilio:
      defaultOutputProperties:
        - sid
        - name
        - enabled
        - kind
      parent: /Rooms/{RoomSid}/Participants/{Sid}
      pathType: list
  /v1/Rooms/{RoomSid}/Participants/{ParticipantSid}/SubscribedTracks/{Sid}:
    description: "TODO: Resource-level docs"
    get:
      description: "Returns a single Track resource represented by `track_sid`.  Note: This is one resource with the Video API that requires a SID, be Track Name on the subscriber side is not guaranteed to be unique."
      operationId: FetchRoomParticipantSubscribedTrack
      parameters:
        - description: The SID of the Room where the Track resource to fetch is subscribed.
          in: path
          name: RoomSid
          required: true
          schema:
            type: string
        - description: The SID of the participant that subscribes to the Track resource to fetch.
          in: path
          name: ParticipantSid
          required: true
          schema:
            type: string
        - description: The SID of the RoomParticipantSubscribedTrack resource to fetch.
          in: path
          name: Sid
          required: true
          schema:
            maxLength: 34
            minLength: 34
            pattern: ^MT[0-9a-fA-F]{32}$
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/video.v1.room.room_participant.room_participant_subscribed_track"
          description: OK
      security:
        - accountSid_authToken: []
      tags:
        - VideoV1SubscribedTrack
      x-maturity:
        - GA
    servers:
      - url: https://video.twilio.com
    x-twilio:
      defaultOutputProperties:
        - sid
        - name
        - enabled
        - kind
      parent: /Rooms/{RoomSid}/Participants/{Sid}
      pathType: instance
  /v1/Rooms/{RoomSid}/Participants/{Sid}:
    description: Participants in video rooms
    get:
      description: ""
      operationId: FetchRoomParticipant
      parameters:
        - description: The SID of the room with the Participant resource to fetch.
          in: path
          name: RoomSid
          required: true
          schema:
            type: string
        - description: The SID of the RoomParticipant resource to fetch.
          in: path
          name: Sid
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/video.v1.room.room_participant"
          description: OK
      security:
        - accountSid_authToken: []
      tags:
        - VideoV1Participant
      x-maturity:
        - GA
    post:
      description: ""
      operationId: UpdateRoomParticipant
      parameters:
        - description: The SID of the room with the participant to update.
          in: path
          name: RoomSid
          required: true
          schema:
            type: string
        - description: The SID of the RoomParticipant resource to update.
          in: path
          name: Sid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              properties:
                Status:
                  $ref: "#/components/schemas/room_participant_enum_status"
                  description: "The new status of the resource. Can be: `connected` or `disconnected`. For `in-progress` Rooms the default Status is `connected`, for `completed` Rooms only `disconnected` Participants are returned."
                  type: string
              title: UpdateRoomParticipantRequest
              type: object
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/video.v1.room.room_participant"
          description: OK
      security:
        - accountSid_authToken: []
      tags:
        - VideoV1Participant
      x-maturity:
        - GA
    servers:
      - url: https://video.twilio.com
    x-twilio:
      defaultOutputProperties:
        - sid
        - identity
        - status
      dependentProperties:
        anonymize:
          mapping:
            room_sid: room_sid
            sid: sid
          resource_url: /v1/Rooms/{room_sid}/Participants/{sid}/Anonymize
        published_tracks:
          mapping:
            participant_sid: sid
            room_sid: room_sid
          resource_url: /v1/Rooms/{room_sid}/Participants/{participant_sid}/PublishedTracks
        subscribe_rules:
          mapping:
            participant_sid: sid
            room_sid: room_sid
          resource_url: /v1/Rooms/{room_sid}/Participants/{participant_sid}/SubscribeRules
        subscribed_tracks:
          mapping:
            participant_sid: sid
            room_sid: room_sid
          resource_url: /v1/Rooms/{room_sid}/Participants/{participant_sid}/SubscribedTracks
      parent: /Rooms/{Sid}
      pathType: instance
  /v1/Rooms/{RoomSid}/Participants/{Sid}/Anonymize:
    description: "TODO: Resource-level docs"
    post:
      description: ""
      operationId: UpdateRoomParticipantAnonymize
      parameters:
        - description: The SID of the room with the participant to update.
          in: path
          name: RoomSid
          required: true
          schema:
            type: string
        - description: The SID of the RoomParticipant resource to update.
          in: path
          name: Sid
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/video.v1.room.room_participant.room_participant_anonymize"
          description: OK
      security:
        - accountSid_authToken: []
      tags:
        - VideoV1Anonymize
      x-maturity:
        - GA
    servers:
      - url: https://video.twilio.com
    x-twilio:
      defaultOutputProperties:
        - sid
        - identity
        - status
      parent: /Rooms/{RoomSid}/Participants/{Sid}
      pathType: instance
  /v1/Rooms/{RoomSid}/RecordingRules:
    description: "TODO: Resource-level docs"
    get:
      description: Returns a list of Recording Rules for the Room.
      operationId: FetchRoomRecordingRule
      parameters:
        - description: The SID of the Room resource where the recording rules to fetch apply.
          in: path
          name: RoomSid
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/video.v1.room.room_recording_rule"
          description: OK
      security:
        - accountSid_authToken: []
      tags:
        - VideoV1RecordingRules
      x-maturity:
        - GA
    post:
      description: Update the Recording Rules for the Room
      operationId: UpdateRoomRecordingRule
      parameters:
        - description: The SID of the Room resource where the recording rules to update apply.
          in: path
          name: RoomSid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              properties:
                Rules:
                  description: A JSON-encoded array of recording rules.
              title: UpdateRoomRecordingRuleRequest
              type: object
      responses:
        "202":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/video.v1.room.room_recording_rule"
          description: Accepted
      security:
        - accountSid_authToken: []
      tags:
        - VideoV1RecordingRules
      x-maturity:
        - GA
    servers:
      - url: https://video.twilio.com
    x-twilio:
      className: recording_rules
      defaultOutputProperties:
        - room_sid
        - rules
      parent: /Rooms/{Sid}
      pathType: list
  /v1/Rooms/{RoomSid}/Recordings:
    description: Single-track, single-media room recordings
    get:
      description: ""
      operationId: ListRoomRecording
      parameters:
        - description: The SID of the room with the RoomRecording resources to read.
          in: path
          name: RoomSid
          required: true
          schema:
            maxLength: 34
            minLength: 34
            pattern: ^RM[0-9a-fA-F]{32}$
            type: string
        - description: "Read only the recordings with this status. Can be: `processing`, `completed`, or `deleted`."
          in: query
          name: Status
          schema:
            $ref: "#/components/schemas/room_recording_enum_status"
            type: string
        - description: Read only the recordings that have this `source_sid`.
          in: query
          name: SourceSid
          schema:
            maxLength: 34
            minLength: 34
            pattern: ^[a-zA-Z]{2}[0-9a-fA-F]{32}$
            type: string
        - description: Read only recordings that started on or after this [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) datetime with time zone.
          in: query
          name: DateCreatedAfter
          schema:
            format: date-time
            type: string
        - description: Read only Recordings that started before this [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) datetime with time zone.
          in: query
          name: DateCreatedBefore
          schema:
            format: date-time
            type: string
        - description: How many resources to return in each list page. The default is 50, and the maximum is 1000.
          in: query
          name: PageSize
          schema:
            maximum: 1000
            minimum: 1
            type: integer
        - description: The page index. This value is simply for client state.
          in: query
          name: Page
          schema:
            minimum: 0
            type: integer
        - description: The page token. This is provided by the API.
          in: query
          name: PageToken
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                properties:
                  meta:
                    properties:
                      first_page_url:
                        format: uri
                        type: string
                      key:
                        type: string
                      next_page_url:
                        format: uri
                        nullable: true
                        type: string
                      page:
                        type: integer
                      page_size:
                        type: integer
                      previous_page_url:
                        format: uri
                        nullable: true
                        type: string
                      url:
                        format: uri
                        type: string
                    type: object
                  recordings:
                    items:
                      $ref: "#/components/schemas/video.v1.room.room_recording"
                    type: array
                title: ListRoomRecordingResponse
                type: object
          description: OK
      security:
        - accountSid_authToken: []
      tags:
        - VideoV1RoomRecording
      x-maturity:
        - GA
    servers:
      - url: https://video.twilio.com
    x-twilio:
      className: room_recording
      defaultOutputProperties:
        - sid
        - date_created
        - status
        - type
        - duration
        - codec
      dependentProperties:
        media:
          mapping:
            room_sid: room_sid
            sid: sid
          resource_url: /v1/Rooms/{room_sid}/Recordings/{sid}/Media
      parent: /Rooms/{Sid}
      pathType: list
  /v1/Rooms/{RoomSid}/Recordings/{Sid}:
    delete:
      description: ""
      operationId: DeleteRoomRecording
      parameters:
        - description: The SID of the room with the RoomRecording resource to delete.
          in: path
          name: RoomSid
          required: true
          schema:
            maxLength: 34
            minLength: 34
            pattern: ^RM[0-9a-fA-F]{32}$
            type: string
        - description: The SID of the RoomRecording resource to delete.
          in: path
          name: Sid
          required: true
          schema:
            maxLength: 34
            minLength: 34
            pattern: ^RT[0-9a-fA-F]{32}$
            type: string
      responses:
        "204":
          description: The resource was deleted successfully.
      security:
        - accountSid_authToken: []
      tags:
        - VideoV1RoomRecording
      x-maturity:
        - GA
    description: Single-track, single-media room recordings
    get:
      description: ""
      operationId: FetchRoomRecording
      parameters:
        - description: The SID of the Room resource with the recording to fetch.
          in: path
          name: RoomSid
          required: true
          schema:
            maxLength: 34
            minLength: 34
            pattern: ^RM[0-9a-fA-F]{32}$
            type: string
        - description: The SID of the RoomRecording resource to fetch.
          in: path
          name: Sid
          required: true
          schema:
            maxLength: 34
            minLength: 34
            pattern: ^RT[0-9a-fA-F]{32}$
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/video.v1.room.room_recording"
          description: OK
      security:
        - accountSid_authToken: []
      tags:
        - VideoV1RoomRecording
      x-maturity:
        - GA
    servers:
      - url: https://video.twilio.com
    x-twilio:
      className: room_recording
      defaultOutputProperties:
        - sid
        - date_created
        - status
        - type
        - duration
        - codec
      dependentProperties:
        media:
          mapping:
            room_sid: room_sid
            sid: sid
          resource_url: /v1/Rooms/{room_sid}/Recordings/{sid}/Media
      parent: /Rooms/{Sid}
      pathType: instance
  /v1/Rooms/{Sid}:
    description: Video rooms with one or more participants
    get:
      description: ""
      operationId: FetchRoom
      parameters:
        - description: The SID of the Room resource to fetch.
          in: path
          name: Sid
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/video.v1.room"
          description: OK
      security:
        - accountSid_authToken: []
      tags:
        - VideoV1Room
      x-maturity:
        - GA
    post:
      description: ""
      operationId: UpdateRoom
      parameters:
        - description: The SID of the Room resource to update.
          in: path
          name: Sid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              properties:
                Status:
                  $ref: "#/components/schemas/room_enum_room_status"
                  description: The new status of the resource. Set to `completed` to end the room.
                  type: string
              required:
                - Status
              title: UpdateRoomRequest
              type: object
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/video.v1.room"
          description: OK
      security:
        - accountSid_authToken: []
      tags:
        - VideoV1Room
      x-maturity:
        - GA
    servers:
      - url: https://video.twilio.com
    x-twilio:
      defaultOutputProperties:
        - sid
        - unique_name
        - status
      dependentProperties:
        participants:
          mapping:
            room_sid: sid
          resource_url: /v1/Rooms/{room_sid}/Participants
        recording_rules:
          mapping:
            room_sid: sid
          resource_url: /v1/Rooms/{room_sid}/RecordingRules
        recordings:
          mapping:
            room_sid: sid
          resource_url: /v1/Rooms/{room_sid}/Recordings
      pathType: instance
components:
  schemas:
    composition_enum_format:
      enum:
        - mp4
        - webm
      type: string
    composition_enum_status:
      enum:
        - enqueued
        - processing
        - completed
        - deleted
        - failed
      type: string
    composition_hook_enum_format:
      enum:
        - mp4
        - webm
      type: string
    recording_enum_codec:
      enum:
        - VP8
        - H264
        - OPUS
        - PCMU
      type: string
    recording_enum_format:
      enum:
        - mka
        - mkv
      type: string
    recording_enum_status:
      enum:
        - processing
        - completed
        - deleted
        - failed
      type: string
    recording_enum_type:
      enum:
        - audio
        - video
        - data
      type: string
    room_enum_room_status:
      enum:
        - in-progress
        - completed
        - failed
      type: string
    room_enum_room_type:
      enum:
        - go
        - peer-to-peer
        - group
        - group-small
      type: string
    room_enum_video_codec:
      enum:
        - VP8
        - H264
      type: string
    room_participant_anonymize_enum_status:
      enum:
        - connected
        - disconnected
      type: string
    room_participant_enum_status:
      enum:
        - connected
        - disconnected
      type: string
    room_participant_published_track_enum_kind:
      enum:
        - audio
        - video
        - data
      type: string
    room_participant_subscribed_track_enum_kind:
      enum:
        - audio
        - video
        - data
      type: string
    room_recording_enum_codec:
      enum:
        - VP8
        - H264
        - OPUS
        - PCMU
      type: string
    room_recording_enum_format:
      enum:
        - mka
        - mkv
      type: string
    room_recording_enum_status:
      enum:
        - processing
        - completed
        - deleted
        - failed
      type: string
    room_recording_enum_type:
      enum:
        - audio
        - video
        - data
      type: string
    video.v1.composition:
      properties:
        account_sid:
          description: The SID of the [Account](https://www.twilio.com/docs/iam/api/account) that created the Composition resource.
          maxLength: 34
          minLength: 34
          nullable: true
          pattern: ^AC[0-9a-fA-F]{32}$
          type: string
        audio_sources:
          description: The array of track names to include in the composition. The composition includes all audio sources specified in `audio_sources` except those specified in `audio_sources_excluded`. The track names in this property can include an asterisk as a wild card character, which matches zero or more characters in a track name. For example, `student*` includes tracks named `student` as well as `studentTeam`.
          items:
            type: string
          nullable: true
          type: array
          x-twilio:
            pii:
              deleteSla: 30
              handling: standard
        audio_sources_excluded:
          description: The array of track names to exclude from the composition. The composition includes all audio sources specified in `audio_sources` except for those specified in `audio_sources_excluded`. The track names in this property can include an asterisk as a wild card character, which matches zero or more characters in a track name. For example, `student*` excludes `student` as well as `studentTeam`. This parameter can also be empty.
          items:
            type: string
          nullable: true
          type: array
          x-twilio:
            pii:
              deleteSla: 30
              handling: standard
        bitrate:
          description: The average bit rate of the composition's media.
          nullable: true
          type: integer
        date_completed:
          description: The date and time in GMT when the composition's media processing task finished, specified in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.
          format: date-time
          nullable: true
          type: string
        date_created:
          description: The date and time in GMT when the resource was created specified in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.
          format: date-time
          nullable: true
          type: string
        date_deleted:
          description: The date and time in GMT when the composition generated media was deleted, specified in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.
          format: date-time
          nullable: true
          type: string
        duration:
          description: The duration of the composition's media file in seconds.
          nullable: true
          type: integer
        format:
          $ref: "#/components/schemas/composition_enum_format"
          description: The container format of the composition's media files as specified in the POST request that created the Composition resource. See [POST Parameters](https://www.twilio.com/docs/video/api/compositions-resource#http-post-parameters) for more information.
          nullable: true
          type: string
        links:
          description: The URL of the media file associated with the composition.
          format: uri-map
          nullable: true
          type: object
        media_external_location:
          description: The URL of the media file associated with the composition when stored externally. See [External S3 Compositions](/docs/video/api/external-s3-compositions) for more details.
          format: uri
          nullable: true
          type: string
        resolution:
          description: The dimensions of the video image in pixels expressed as columns (width) and rows (height). The string's format is `{width}x{height}`, such as `640x480`.
          nullable: true
          type: string
        room_sid:
          description: The SID of the Group Room that generated the audio and video tracks used in the composition. All media sources included in a composition must belong to the same Group Room.
          maxLength: 34
          minLength: 34
          nullable: true
          pattern: ^RM[0-9a-fA-F]{32}$
          type: string
        sid:
          description: The unique string that we created to identify the Composition resource.
          maxLength: 34
          minLength: 34
          nullable: true
          pattern: ^CJ[0-9a-fA-F]{32}$
          type: string
        size:
          description: The size of the composed media file in bytes.
          format: int64
          nullable: true
          type: integer
        status:
          $ref: "#/components/schemas/composition_enum_status"
          description: "The status of the composition. Can be: `enqueued`, `processing`, `completed`, `deleted` or `failed`. `enqueued` is the initial state and indicates that the composition request has been received and is scheduled for processing; `processing` indicates the composition is being processed; `completed` indicates the composition has been completed and is available for download; `deleted` means the composition media has been deleted from the system, but its metadata is still available for 30 days; `failed` indicates the composition failed to execute the media processing task."
          nullable: true
          type: string
        status_callback:
          description: The URL called using the `status_callback_method` to send status information on every composition event.
          format: uri
          nullable: true
          type: string
        status_callback_method:
          description: "The HTTP method used to call `status_callback`. Can be: `POST` or `GET`, defaults to `POST`."
          enum:
            - HEAD
            - GET
            - POST
            - PATCH
            - PUT
            - DELETE
          format: http-method
          nullable: true
          type: string
        trim:
          description: Whether to remove intervals with no media, as specified in the POST request that created the composition. Compositions with `trim` enabled are shorter when the Room is created and no Participant joins for a while as well as if all the Participants leave the room and join later, because those gaps will be removed. See [Specifying Video Layouts](https://www.twilio.com/docs/video/api/compositions-resource#specifying-video-layouts) for more info.
          nullable: true
          type: boolean
        url:
          description: The absolute URL of the resource.
          format: uri
          nullable: true
          type: string
        video_layout:
          description: An object that describes the video layout of the composition in terms of regions. See [Specifying Video Layouts](https://www.twilio.com/docs/video/api/compositions-resource#specifying-video-layouts) for more info.
          nullable: true
          x-twilio:
            pii:
              deleteSla: 30
              handling: standard
      type: object
    video.v1.composition_hook:
      properties:
        account_sid:
          description: The SID of the [Account](https://www.twilio.com/docs/iam/api/account) that created the CompositionHook resource.
          maxLength: 34
          minLength: 34
          nullable: true
          pattern: ^AC[0-9a-fA-F]{32}$
          type: string
        audio_sources:
          description: The array of track names to include in the compositions created by the composition hook. A composition triggered by the composition hook includes all audio sources specified in `audio_sources` except those specified in `audio_sources_excluded`. The track names in this property can include an asterisk as a wild card character, which matches zero or more characters in a track name. For example, `student*` includes tracks named `student` as well as `studentTeam`. Please, be aware that either video_layout or audio_sources have to be provided to get a valid creation request
          items:
            type: string
          nullable: true
          type: array
          x-twilio:
            pii:
              deleteSla: 30
              handling: standard
        audio_sources_excluded:
          description: The array of track names to exclude from the compositions created by the composition hook. A composition triggered by the composition hook includes all audio sources specified in `audio_sources` except for those specified in `audio_sources_excluded`. The track names in this property can include an asterisk as a wild card character, which matches zero or more characters in a track name. For example, `student*` excludes `student` as well as `studentTeam`. This parameter can also be empty.
          items:
            type: string
          nullable: true
          type: array
          x-twilio:
            pii:
              deleteSla: 30
              handling: standard
        date_created:
          description: The date and time in GMT when the resource was created specified in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.
          format: date-time
          nullable: true
          type: string
        date_updated:
          description: The date and time in GMT when the resource was last updated specified in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.
          format: date-time
          nullable: true
          type: string
        enabled:
          description: Whether the CompositionHook is active. When `true`, the CompositionHook is triggered for every completed Group Room on the account. When `false`, the CompositionHook is never triggered.
          nullable: true
          type: boolean
        format:
          $ref: "#/components/schemas/composition_hook_enum_format"
          description: The container format of the media files used by the compositions created by the composition hook. If `mp4` or `webm`, `audio_sources` must have one or more tracks and/or a `video_layout` element must contain a valid `video_sources` list, otherwise an error occurs.
          nullable: true
          type: string
        friendly_name:
          description: The string that you assigned to describe the resource. Can be up to 100 characters long and must be unique within the account.
          nullable: true
          type: string
        resolution:
          description: The dimensions of the video image in pixels expressed as columns (width) and rows (height). The string's format is `{width}x{height}`, such as `640x480`.
          nullable: true
          type: string
        sid:
          description: The unique string that we created to identify the CompositionHook resource.
          maxLength: 34
          minLength: 34
          nullable: true
          pattern: ^HK[0-9a-fA-F]{32}$
          type: string
        status_callback:
          description: The URL we call using the `status_callback_method` to send status information to your application.
          format: uri
          nullable: true
          type: string
        status_callback_method:
          description: The HTTP method we should use to call `status_callback`. Can be `POST` or `GET` and defaults to `POST`.
          enum:
            - HEAD
            - GET
            - POST
            - PATCH
            - PUT
            - DELETE
          format: http-method
          nullable: true
          type: string
        trim:
          description: Whether intervals with no media are clipped, as specified in the POST request that created the CompositionHook resource. Compositions with `trim` enabled are shorter when the Room is created and no Participant joins for a while as well as if all the Participants leave the room and join later, because those gaps will be removed. See [Specifying Video Layouts](https://www.twilio.com/docs/video/api/compositions-resource#specifying-video-layouts) for more info.
          nullable: true
          type: boolean
        url:
          description: The absolute URL of the resource.
          format: uri
          nullable: true
          type: string
        video_layout:
          description: A JSON object that describes the video layout of the composition in terms of regions as specified in the HTTP POST request that created the CompositionHook resource. See [POST Parameters](https://www.twilio.com/docs/video/api/compositions-resource#http-post-parameters) for more information. Please, be aware that either video_layout or audio_sources have to be provided to get a valid creation request
          nullable: true
          x-twilio:
            pii:
              deleteSla: 30
              handling: standard
      type: object
    video.v1.composition_settings:
      properties:
        account_sid:
          description: The SID of the [Account](https://www.twilio.com/docs/iam/api/account) that created the CompositionSettings resource.
          maxLength: 34
          minLength: 34
          nullable: true
          pattern: ^AC[0-9a-fA-F]{32}$
          type: string
        aws_credentials_sid:
          description: The SID of the stored Credential resource.
          maxLength: 34
          minLength: 34
          nullable: true
          pattern: ^CR[0-9a-fA-F]{32}$
          type: string
        aws_s3_url:
          description: The URL of the AWS S3 bucket where the compositions are stored. We only support DNS-compliant URLs like `https://documentation-example-twilio-bucket/compositions`, where `compositions` is the path in which you want the compositions to be stored. This URL accepts only URI-valid characters, as described in the [RFC 3986](https://tools.ietf.org/html/rfc3986#section-2).
          format: uri
          nullable: true
          type: string
        aws_storage_enabled:
          description: Whether all compositions are written to the `aws_s3_url`. When `false`, all compositions are stored in our cloud.
          nullable: true
          type: boolean
        encryption_enabled:
          description: Whether all compositions are stored in an encrypted form. The default is `false`.
          nullable: true
          type: boolean
        encryption_key_sid:
          description: The SID of the Public Key resource used for encryption.
          maxLength: 34
          minLength: 34
          nullable: true
          pattern: ^CR[0-9a-fA-F]{32}$
          type: string
        friendly_name:
          description: The string that you assigned to describe the resource and that will be shown in the console
          nullable: true
          type: string
        url:
          description: The absolute URL of the resource.
          format: uri
          nullable: true
          type: string
      type: object
    video.v1.recording:
      properties:
        account_sid:
          description: The SID of the [Account](https://www.twilio.com/docs/iam/api/account) that created the Recording resource.
          maxLength: 34
          minLength: 34
          nullable: true
          pattern: ^AC[0-9a-fA-F]{32}$
          type: string
        codec:
          $ref: "#/components/schemas/recording_enum_codec"
          description: "The codec used to encode the track. Can be: `VP8`, `H264`, `OPUS`, and `PCMU`."
          nullable: true
          type: string
        container_format:
          $ref: "#/components/schemas/recording_enum_format"
          description: "The file format for the recording. Can be: `mka` or `mkv`. Video Room recordings are captured in [Matroska container format](https://matroska.org/), `mka` is for audio files and `mkv` for video files."
          nullable: true
          type: string
        date_created:
          description: The date and time in GMT when the resource was created specified in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.
          format: date-time
          nullable: true
          type: string
        duration:
          description: The duration of the recording in seconds rounded to the nearest second. Sub-second tracks have a `Duration` property of 1 second
          nullable: true
          type: integer
        grouping_sids:
          description: A list of SIDs related to the recording. Includes the `room_sid` and `participant_sid`.
          nullable: true
        links:
          description: The URLs of related resources.
          format: uri-map
          nullable: true
          type: object
        media_external_location:
          description: The URL of the media file associated with the recording when stored externally. See [External S3 Recordings](/docs/video/api/external-s3-recordings) for more details.
          format: uri
          nullable: true
          type: string
        offset:
          description: The time in milliseconds elapsed between an arbitrary point in time, common to all group rooms, and the moment when the source room of this track started. This information provides a synchronization mechanism for recordings belonging to the same room.
          format: int64
          nullable: true
          type: integer
        sid:
          description: The unique string that we created to identify the Recording resource.
          maxLength: 34
          minLength: 34
          nullable: true
          pattern: ^RT[0-9a-fA-F]{32}$
          type: string
        size:
          description: The size of the recorded track, in bytes.
          format: int64
          nullable: true
          type: integer
        source_sid:
          description: The SID of the recording source. For a Room Recording, this value is a `track_sid`.
          maxLength: 34
          minLength: 34
          nullable: true
          pattern: ^[a-zA-Z]{2}[0-9a-fA-F]{32}$
          type: string
        status:
          $ref: "#/components/schemas/recording_enum_status"
          description: "The status of the recording. Can be: `processing`, `completed`, or `deleted`. `processing` indicates the recording is still being captured; `completed` indicates the recording has been captured and is now available for download. `deleted` means the recording media has been deleted from the system, but its metadata is still available."
          nullable: true
          type: string
        status_callback:
          description: The URL called using the `status_callback_method` to send status information on every recording event.
          format: uri
          nullable: true
          type: string
        status_callback_method:
          description: "The HTTP method used to call `status_callback`. Can be: `POST` or `GET`, defaults to `POST`."
          enum:
            - HEAD
            - GET
            - POST
            - PATCH
            - PUT
            - DELETE
          format: http-method
          nullable: true
          type: string
        track_name:
          description: The name that was given to the source track of the recording. If no name is given, the `source_sid` is used.
          nullable: true
          type: string
          x-twilio:
            pii:
              deleteSla: 30
              handling: standard
        type:
          $ref: "#/components/schemas/recording_enum_type"
          description: "The recording's media type. Can be: `audio` or `video`."
          nullable: true
          type: string
        url:
          description: The absolute URL of the resource.
          format: uri
          nullable: true
          type: string
      type: object
    video.v1.recording_settings:
      properties:
        account_sid:
          description: The SID of the [Account](https://www.twilio.com/docs/iam/api/account) that created the RecordingSettings resource.
          maxLength: 34
          minLength: 34
          nullable: true
          pattern: ^AC[0-9a-fA-F]{32}$
          type: string
        aws_credentials_sid:
          description: The SID of the stored Credential resource.
          maxLength: 34
          minLength: 34
          nullable: true
          pattern: ^CR[0-9a-fA-F]{32}$
          type: string
        aws_s3_url:
          description: The URL of the AWS S3 bucket where the recordings are stored. We only support DNS-compliant URLs like `https://documentation-example-twilio-bucket/recordings`, where `recordings` is the path in which you want the recordings to be stored. This URL accepts only URI-valid characters, as described in the [RFC 3986](https://tools.ietf.org/html/rfc3986#section-2).
          format: uri
          nullable: true
          type: string
        aws_storage_enabled:
          description: Whether all recordings are written to the `aws_s3_url`. When `false`, all recordings are stored in our cloud.
          nullable: true
          type: boolean
        encryption_enabled:
          description: Whether all recordings are stored in an encrypted form. The default is `false`.
          nullable: true
          type: boolean
        encryption_key_sid:
          description: The SID of the Public Key resource used for encryption.
          maxLength: 34
          minLength: 34
          nullable: true
          pattern: ^CR[0-9a-fA-F]{32}$
          type: string
        friendly_name:
          description: The string that you assigned to describe the resource and show the user in the console
          nullable: true
          type: string
        url:
          description: The absolute URL of the resource.
          format: uri
          nullable: true
          type: string
      type: object
    video.v1.room:
      properties:
        account_sid:
          description: The SID of the [Account](https://www.twilio.com/docs/iam/api/account) that created the Room resource.
          maxLength: 34
          minLength: 34
          nullable: true
          pattern: ^AC[0-9a-fA-F]{32}$
          type: string
        audio_only:
          description: When set to true, indicates that the participants in the room will only publish audio. No video tracks will be allowed. Group rooms only.
          nullable: true
          type: boolean
        date_created:
          description: The date and time in GMT when the resource was created specified in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.
          format: date-time
          nullable: true
          type: string
        date_updated:
          description: The date and time in GMT when the resource was last updated specified in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.
          format: date-time
          nullable: true
          type: string
        duration:
          description: The duration of the room in seconds.
          nullable: true
          type: integer
        empty_room_timeout:
          description: Specifies how long (in minutes) a room will remain active after last participant leaves. Can be configured when creating a room via REST API. For Ad-Hoc rooms this value cannot be changed.
          nullable: true
          type: integer
        enable_turn:
          description: Deprecated, now always considered to be true.
          nullable: true
          type: boolean
        end_time:
          description: The UTC end time of the room in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601#UTC) format.
          format: date-time
          nullable: true
          type: string
        large_room:
          description: Indicates if this is a large room.
          nullable: true
          type: boolean
        links:
          description: The URLs of related resources.
          format: uri-map
          nullable: true
          type: object
        max_concurrent_published_tracks:
          description: The maximum number of published audio, video, and data tracks all participants combined are allowed to publish in the room at the same time. Check [Programmable Video Limits](https://www.twilio.com/docs/video/programmable-video-limits) for more details. If it is set to 0 it means unconstrained.
          nullable: true
          type: integer
        max_participant_duration:
          description: The maximum number of seconds a Participant can be connected to the room. The maximum possible value is 86400 seconds (24 hours). The default is 14400 seconds (4 hours).
          nullable: true
          type: integer
        max_participants:
          description: "The maximum number of concurrent Participants allowed in the room. "
          nullable: true
          type: integer
        media_region:
          description: "The region for the media server in Group Rooms.  Can be: one of the [available Media Regions](https://www.twilio.com/docs/video/ip-addresses#media-servers). ***This feature is not available in `peer-to-peer` rooms.***"
          nullable: true
          type: string
        record_participants_on_connect:
          description: Whether to start recording when Participants connect. ***This feature is not available in `peer-to-peer` rooms.***
          nullable: true
          type: boolean
        sid:
          description: The unique string that we created to identify the Room resource.
          maxLength: 34
          minLength: 34
          nullable: true
          pattern: ^RM[0-9a-fA-F]{32}$
          type: string
        status:
          $ref: "#/components/schemas/room_enum_room_status"
          description: "The status of the room. Can be: `in-progress`, `failed`, or `completed`."
          nullable: true
          type: string
        status_callback:
          description: The URL we call using the `status_callback_method` to send status information to your application on every room event. See [Status Callbacks](https://www.twilio.com/docs/video/api/status-callbacks) for more info.
          format: uri
          nullable: true
          type: string
        status_callback_method:
          description: The HTTP method we use to call `status_callback`. Can be `POST` or `GET` and defaults to `POST`.
          enum:
            - HEAD
            - GET
            - POST
            - PATCH
            - PUT
            - DELETE
          format: http-method
          nullable: true
          type: string
        type:
          $ref: "#/components/schemas/room_enum_room_type"
          description: "The type of room. Can be: `go`, `peer-to-peer`, `group-small`, or `group`. The default value is `group`."
          nullable: true
          type: string
        unique_name:
          description: An application-defined string that uniquely identifies the resource. It can be used as a `room_sid` in place of the resource's `sid` in the URL to address the resource, assuming it does not contain any [reserved characters](https://tools.ietf.org/html/rfc3986#section-2.2) that would need to be URL encoded. This value is unique for `in-progress` rooms. SDK clients can use this name to connect to the room. REST API clients can use this name in place of the Room SID to interact with the room as long as the room is `in-progress`.
          nullable: true
          type: string
        unused_room_timeout:
          description: Specifies how long (in minutes) a room will remain active if no one joins. Can be configured when creating a room via REST API. For Ad-Hoc rooms this value cannot be changed.
          nullable: true
          type: integer
        url:
          description: The absolute URL of the resource.
          format: uri
          nullable: true
          type: string
        video_codecs:
          description: "An array of the video codecs that are supported when publishing a track in the room.  Can be: `VP8` and `H264`.  ***This feature is not available in `peer-to-peer` rooms***"
          items:
            $ref: "#/components/schemas/room_enum_video_codec"
            type: string
          nullable: true
          type: array
      type: object
    video.v1.room.room_participant:
      properties:
        account_sid:
          description: The SID of the [Account](https://www.twilio.com/docs/iam/api/account) that created the RoomParticipant resource.
          maxLength: 34
          minLength: 34
          nullable: true
          pattern: ^AC[0-9a-fA-F]{32}$
          type: string
        date_created:
          description: The date and time in GMT when the resource was created specified in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.
          format: date-time
          nullable: true
          type: string
        date_updated:
          description: The date and time in GMT when the resource was last updated specified in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.
          format: date-time
          nullable: true
          type: string
        duration:
          description: The duration in seconds that the participant was `connected`. Populated only after the participant is `disconnected`.
          nullable: true
          type: integer
        end_time:
          description: The time when the participant disconnected from the room in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601#UTC) format.
          format: date-time
          nullable: true
          type: string
        identity:
          description: "The application-defined string that uniquely identifies the resource's User within a Room. If a client joins with an existing Identity, the existing client is disconnected. See [access tokens](https://www.twilio.com/docs/video/tutorials/user-identity-access-tokens) and [limits](https://www.twilio.com/docs/video/programmable-video-limits) for more info. "
          nullable: true
          type: string
        links:
          description: The URLs of related resources.
          format: uri-map
          nullable: true
          type: object
        room_sid:
          description: The SID of the participant's room.
          maxLength: 34
          minLength: 34
          nullable: true
          pattern: ^RM[0-9a-fA-F]{32}$
          type: string
        sid:
          description: The unique string that we created to identify the RoomParticipant resource.
          maxLength: 34
          minLength: 34
          nullable: true
          pattern: ^PA[0-9a-fA-F]{32}$
          type: string
        start_time:
          description: The time of participant connected to the room in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601#UTC) format.
          format: date-time
          nullable: true
          type: string
        status:
          $ref: "#/components/schemas/room_participant_enum_status"
          description: "The status of the Participant. Can be: `connected` or `disconnected`."
          nullable: true
          type: string
        url:
          description: The absolute URL of the resource.
          format: uri
          nullable: true
          type: string
      type: object
    video.v1.room.room_participant.room_participant_anonymize:
      properties:
        account_sid:
          description: The SID of the [Account](https://www.twilio.com/docs/iam/api/account) that created the RoomParticipant resource.
          maxLength: 34
          minLength: 34
          nullable: true
          pattern: ^AC[0-9a-fA-F]{32}$
          type: string
        date_created:
          description: The date and time in GMT when the resource was created specified in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.
          format: date-time
          nullable: true
          type: string
        date_updated:
          description: The date and time in GMT when the resource was last updated specified in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.
          format: date-time
          nullable: true
          type: string
        duration:
          description: The duration in seconds that the participant was `connected`. Populated only after the participant is `disconnected`.
          nullable: true
          type: integer
        end_time:
          description: The time when the participant disconnected from the room in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601#UTC) format.
          format: date-time
          nullable: true
          type: string
        identity:
          description: The SID of the participant.
          maxLength: 34
          minLength: 34
          nullable: true
          pattern: ^PA[0-9a-fA-F]{32}$
          type: string
        room_sid:
          description: The SID of the participant's room.
          maxLength: 34
          minLength: 34
          nullable: true
          pattern: ^RM[0-9a-fA-F]{32}$
          type: string
        sid:
          description: The unique string that we created to identify the RoomParticipant resource.
          maxLength: 34
          minLength: 34
          nullable: true
          pattern: ^PA[0-9a-fA-F]{32}$
          type: string
        start_time:
          description: The time of participant connected to the room in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601#UTC) format.
          format: date-time
          nullable: true
          type: string
        status:
          $ref: "#/components/schemas/room_participant_anonymize_enum_status"
          description: "The status of the Participant. Can be: `connected` or `disconnected`."
          nullable: true
          type: string
        url:
          description: The absolute URL of the resource.
          format: uri
          nullable: true
          type: string
      type: object
    video.v1.room.room_participant.room_participant_published_track:
      properties:
        date_created:
          description: The date and time in GMT when the resource was created specified in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.
          format: date-time
          nullable: true
          type: string
        date_updated:
          description: The date and time in GMT when the resource was last updated specified in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.
          format: date-time
          nullable: true
          type: string
        enabled:
          description: Whether the track is enabled.
          nullable: true
          type: boolean
        kind:
          $ref: "#/components/schemas/room_participant_published_track_enum_kind"
          description: "The track type. Can be: `audio`, `video` or `data`."
          nullable: true
          type: string
        name:
          description: The track name. Must be no more than 128 characters, and be unique among the participant's published tracks.
          nullable: true
          type: string
        participant_sid:
          description: The SID of the Participant resource with the published track.
          maxLength: 34
          minLength: 34
          nullable: true
          pattern: ^PA[0-9a-fA-F]{32}$
          type: string
        room_sid:
          description: The SID of the Room resource where the track is published.
          maxLength: 34
          minLength: 34
          nullable: true
          pattern: ^RM[0-9a-fA-F]{32}$
          type: string
        sid:
          description: The unique string that we created to identify the RoomParticipantPublishedTrack resource.
          maxLength: 34
          minLength: 34
          nullable: true
          pattern: ^MT[0-9a-fA-F]{32}$
          type: string
        url:
          description: The absolute URL of the resource.
          format: uri
          nullable: true
          type: string
      type: object
    video.v1.room.room_participant.room_participant_subscribe_rule:
      properties:
        date_created:
          description: The date and time in GMT when the resource was created specified in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.
          format: date-time
          nullable: true
          type: string
        date_updated:
          description: The date and time in GMT when the resource was last updated specified in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.
          format: date-time
          nullable: true
          type: string
        participant_sid:
          description: The SID of the Participant resource for the Subscribe Rules.
          maxLength: 34
          minLength: 34
          nullable: true
          pattern: ^PA[0-9a-fA-F]{32}$
          type: string
        room_sid:
          description: The SID of the Room resource for the Subscribe Rules
          maxLength: 34
          minLength: 34
          nullable: true
          pattern: ^RM[0-9a-fA-F]{32}$
          type: string
        rules:
          description: A collection of Subscribe Rules that describe how to include or exclude matching tracks. See the [Specifying Subscribe Rules](https://www.twilio.com/docs/video/api/track-subscriptions#specifying-sr) section for further information.
          items:
            format: subscribe-rule
            properties:
              all:
                type: boolean
              kind:
                type: string
              priority:
                type: string
              publisher:
                type: string
              track:
                type: string
              type:
                type: string
            type: object
          nullable: true
          type: array
      type: object
    video.v1.room.room_participant.room_participant_subscribed_track:
      properties:
        date_created:
          description: The date and time in GMT when the resource was created specified in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.
          format: date-time
          nullable: true
          type: string
        date_updated:
          description: The date and time in GMT when the resource was last updated specified in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.
          format: date-time
          nullable: true
          type: string
        enabled:
          description: Whether the track is enabled.
          nullable: true
          type: boolean
        kind:
          $ref: "#/components/schemas/room_participant_subscribed_track_enum_kind"
          description: "The track type. Can be: `audio`, `video` or `data`."
          nullable: true
          type: string
        name:
          description: The track name. Must have no more than 128 characters and be unique among the participant's published tracks.
          nullable: true
          type: string
        participant_sid:
          description: The SID of the participant that subscribes to the track.
          maxLength: 34
          minLength: 34
          nullable: true
          pattern: ^PA[0-9a-fA-F]{32}$
          type: string
        publisher_sid:
          description: The SID of the participant that publishes the track.
          maxLength: 34
          minLength: 34
          nullable: true
          pattern: ^PA[0-9a-fA-F]{32}$
          type: string
        room_sid:
          description: The SID of the room where the track is published.
          maxLength: 34
          minLength: 34
          nullable: true
          pattern: ^RM[0-9a-fA-F]{32}$
          type: string
        sid:
          description: The unique string that we created to identify the RoomParticipantSubscribedTrack resource.
          maxLength: 34
          minLength: 34
          nullable: true
          pattern: ^MT[0-9a-fA-F]{32}$
          type: string
        url:
          description: The absolute URL of the resource.
          format: uri
          nullable: true
          type: string
      type: object
    video.v1.room.room_recording:
      properties:
        account_sid:
          description: The SID of the [Account](https://www.twilio.com/docs/iam/api/account) that created the RoomRecording resource.
          maxLength: 34
          minLength: 34
          nullable: true
          pattern: ^AC[0-9a-fA-F]{32}$
          type: string
        codec:
          $ref: "#/components/schemas/room_recording_enum_codec"
          description: "The codec used for the recording. Can be: `VP8` or `H264`."
          nullable: true
          type: string
        container_format:
          $ref: "#/components/schemas/room_recording_enum_format"
          description: "The file format for the recording. Can be: `mka` or `mkv`. Video Room recordings are captured in [Matroska container format](https://matroska.org/), `mka` is for audio files and `mkv` for video files."
          nullable: true
          type: string
        date_created:
          description: The date and time in GMT when the resource was created specified in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.
          format: date-time
          nullable: true
          type: string
        duration:
          description: The duration of the recording rounded to the nearest second. Sub-second duration tracks have a `duration` of 1 second
          nullable: true
          type: integer
        grouping_sids:
          description: A list of SIDs related to the Recording. Includes the `room_sid` and `participant_sid`.
          nullable: true
        links:
          description: The URLs of related resources.
          format: uri-map
          nullable: true
          type: object
        media_external_location:
          description: The URL of the media file associated with the recording when stored externally. See [External S3 Recordings](/docs/video/api/external-s3-recordings) for more details.
          format: uri
          nullable: true
          type: string
        offset:
          description: The time in milliseconds elapsed between an arbitrary point in time, common to all group rooms, and the moment when the source room of this track started. This information provides a synchronization mechanism for recordings belonging to the same room.
          format: int64
          nullable: true
          type: integer
        room_sid:
          description: The SID of the Room resource the recording is associated with.
          maxLength: 34
          minLength: 34
          nullable: true
          pattern: ^RM[0-9a-fA-F]{32}$
          type: string
        sid:
          description: The unique string that we created to identify the RoomRecording resource.
          maxLength: 34
          minLength: 34
          nullable: true
          pattern: ^RT[0-9a-fA-F]{32}$
          type: string
        size:
          description: The size of the recorded track in bytes.
          format: int64
          nullable: true
          type: integer
        source_sid:
          description: The SID of the recording source. For a Room Recording, this value is a `track_sid`.
          maxLength: 34
          minLength: 34
          nullable: true
          pattern: ^[a-zA-Z]{2}[0-9a-fA-F]{32}$
          type: string
        status:
          $ref: "#/components/schemas/room_recording_enum_status"
          description: "The status of the recording. Can be: `processing`, `completed`, or `deleted`. `processing` indicates the Recording is still being captured. `completed` indicates the Recording has been captured and is now available for download. `deleted` means the recording media has been deleted from the system, but its metadata is still available for historical purposes."
          nullable: true
          type: string
        track_name:
          description: The name that was given to the source track of the recording. If no name is given, the `source_sid` is used.
          nullable: true
          type: string
        type:
          $ref: "#/components/schemas/room_recording_enum_type"
          description: "The recording's media type. Can be: `audio` or `video`."
          nullable: true
          type: string
        url:
          description: The absolute URL of the resource.
          format: uri
          nullable: true
          type: string
      type: object
    video.v1.room.room_recording_rule:
      properties:
        date_created:
          description: The date and time in GMT when the resource was created specified in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.
          format: date-time
          nullable: true
          type: string
        date_updated:
          description: The date and time in GMT when the resource was last updated specified in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.
          format: date-time
          nullable: true
          type: string
        room_sid:
          description: The SID of the Room resource for the Recording Rules
          maxLength: 34
          minLength: 34
          nullable: true
          pattern: ^RM[0-9a-fA-F]{32}$
          type: string
        rules:
          description: A collection of Recording Rules that describe how to include or exclude matching tracks for recording
          items:
            format: recording-rule
            properties:
              all:
                type: boolean
              kind:
                type: string
              publisher:
                type: string
              track:
                type: string
              type:
                type: string
            type: object
          nullable: true
          type: array
      type: object
  securitySchemes:
    accountSid_authToken:
      scheme: basic
      type: http
x-maturity:
  - description: This product is Generally Available.
    name: GA
