Cvent Event Cloud Video API

Videos can be added to Cvent events with renditions at various resolutions, audio files, reactions tracks, and text tracks. Attendee viewership is tracked to get insight into durations, devices used and venue where the video is watched. Use these APIs to view and manage videos, related text tracks, and audio files. Use these APIs also to get insight into video viewership.

OpenAPI Specification

cvent-event-cloud-video-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Cvent REST APIs — Event Cloud Video API
  description: "Event Cloud scope of the Cvent REST APIs. This document is a TAG-SCOPED SUBSET of the OpenAPI specification Cvent publishes at https://github.com/cvent/rest-sdks/blob/main/cvent-public-spec/openapi.yaml (the source of truth for Cvent's official TypeScript/.NET/Java SDKs). Venue-sourcing, RFP, housing-supplier and travel-supplier tags were removed because they belong to Cvent Hospitality Cloud; every path, operation, parameter, schema and security requirement below is verbatim from Cvent's published spec.\n\n# Introduction\nThe Cvent API Platform is built around REST. We aim to provide intuitive endpoints that can be easily\ndiscovered to help leverage the Cvent platform for your event needs. The RESTful APIs outlined here\nuse JSON-encoded request and response format, along with HTTP codes, to convey processing status of\nrequests received. The Cvent resources are protected using OAuth2.\n\n# Getting Started\n\nIf you're new to the Cvent API Platform, start by reading our\n[Developer Quickstart](https://developers.cvent.com/docs/rest-api/tutorials/developer-quickstart) guide. This will\ngive you an overview of how to authenticate and make requests using our APIs.\n\n## Authentication\n\nThe Cvent REST API uses [OAuth2](https://oauth.net/2/) to authorize requests to the platform. The client\ncredentials authorization flow is supported.\n\n<a name=\"oauth2-auth-code-planner-admin\"></a>\n\nAuthorization code flow is only supported for planner users with the administrator role in Cvent. Developer users\ncannot use authorization code flow.\n\n<!-- ReDoc-Inject: <security-definitions> -->\n\nHere's an example of using client credential flow to authorize. You'll supply your application's id and secret to\nmake a [Token](#operation/oauth2Token) request.\n\n```bash\ncurl --location --request POST '{hostName}/{version}/oauth2/token' \\\n--header 'Content-Type: application/x-www-form-urlencoded' \\\n--header 'Authorization: Basic {api_credentials}' \\\n--data-urlencode 'grant_type=client_credentials' \\\n--data-urlencode 'client_id={client_id}'\n```\n\n| Key               | Description                                          | Value                                                                                                        |\n| :---------------- | :--------------------------------------------------- | :----------------------------------------------------------------------------------------------------------- |\n| {hostName}        | https://api-platform.cvent.com                       | Location if your account is in the North American datacenter.                                                |\n|                   | https://api-platform-eur.cvent.com                   | Location if your account is in the European data center.                                                     |\n| {version}         | ea                                                   | The version of the API you're using. Only `ea` is currently supported.                                       |\n| {api_credentials} | {client_id}:{client_secret} in base64 encoded format | Supply your client id & client credentials in a base 64 encoded format.                                      |\n| {client_id}       | Retrieved from your application                      | Your application's client id.                                                                                |\n| {client_secret}   | Retrieved from your application                      | Your application's client secret.                                                                            |\n\nOn a successful call, you'll receive the following response:\n\n```json\n{\n  \"access_token\": \"{accessToken}\",\n  \"expires_in\": 3600,\n  \"token_type\": \"Bearer\"\n}\n```\n\nThis bearer token is valid for 3600 seconds (60 minutes) and must be used in subsequent calls.\n\n## Endpoints\n\nEndpoints start with `hostName` and `version`.\n\nThe `hostname` will depend on the region that your Cvent account is hosted in. Please see the table\nbelow to identify which hostname you should be using.\n\n| Region        |\tHostname                           |\n|:--------------|:-----------------------------------|\n| North America\t| https://api-platform.cvent.com     |\n| Europe        | https://api-platform-eur.cvent.com |\n\nThe current `version` of the Cvent API is `ea`.\n\n## Rate Limits\n\nCvent APIs enforce rate limits to ensure platform stability. Your limits depend on your tier: Free,\nStandard, or Premium.\n\n<br />\n\n### Usage Tiers\n\n| Tier     | Daily Calls | Calls per Second | Max Burst |\n| -------- | ----------- | ---------------- | --------- |\n| Free     | 1,000       | 2                | 1         |\n| Standard | 15,000      | 10               | 10        |\n| Premium  | 500,000     | 25               | 25        |\n\n- **Daily calls** define how many requests you can make in a 24-hour period. Quota\n  resets at 12 midnight (+0 GMT).\n- **Calls per second** define how many requests you can make in a 1-second window.\n- **Max Burst** defines how many requests you can make at once.\n\nIf you are unsure what usage tier applies to your account, you can check via\n[Get Current Usage Tier](#operation/getUsageTier).\n\nPlease note that these limits may change as the Cvent API Platform evolves.\n\n<br />\n\n### Handling Rate Limits\n\nSometimes, you may exceed your rate limits. When this happens, the API will return a `429 Too Many Requests`. See\n[handling rate limits](https://developers.cvent.com/docs/rest-api/guides/handling-rate-limits) for best practices on how to handle this.\n\n## Pagination\n\nSome APIs use pagination to manage records. Each page of records has a token associated to identify it.\n\nIf an API uses pagination, you’ll find up to three tokens in the response:\n- **currentToken**: Describes the token of the current page.\n- **nextToken**: Provides a token for the next page of records, if one exists.\n- **previousToken**: Provides a token for the previous page of records, if one exists. Not all APIs will return\n  this token.\n\nYou specify which page of records to view via the `token` parameter in your API call. To navigate through pages,\ntake the `nextToken` or `previousToken` value and pass it to your next call’s `token` parameter to get the\nrespective page of records. For example, if you made this request:\n\n```bash\ncurl -X GET {hostname}/{version}/contacts?limit=100 \\\n-H 'Accept: application/json' \\\n-H 'Authorization: Bearer {accessToken}'\n```\n\nThe response contains a paging array where you'll find the token information.\n\n```json\n{\n  \"paging\": {\n    \"currentToken\": \"90c5f062-76ad-4ea4-aa53-00eb698d9262\",\n    \"nextToken\": \"3b2359a7-4583-40ed-8afd-67e5f15373d3\",\n    \"limit\": 100,\n    \"totalCount\": 102,\n    \"_links\": {...}\n  },\n  \"data\": [...]\n}\n```\n\nTake the `nextToken` and use it in the `token` parameter on your subsequent call.\n\n```bash\ncurl -X GET {hostname}/{version}/contacts?limit=100&token=3b2359a7-4583-40ed-8afd-67e5f15373d3 \\\n-H 'Accept: application/json' \\\n-H 'Authorization: Bearer {accessToken}'\n```\n\nWhen the response doesn’t contain a `nextToken` field, you’ve reached the last page. Occasionally, you might\nencounter an empty page at the end of results. This typically happens when the results were evenly divisible.\nEnsure your client code handles the possibility of receiving an empty data array when using the `nextToken`.\n\n## Filtering\n\nUse filters to narrow down results. The filter follows the pattern\n`filter='field' comparisonType 'value'`. The value can be enclosed with single\nquotes (') or double quotes (\").\n\n```bash\nGET {hostName}/{version}/contacts?filter=lastName eq 'Smith'\n````\n\nTo correctly pass a single quote in the filter's value, use double quotes around\nthe string.\n\n```bash\nGET {hostName}/{version}/contacts?filter=lastName eq \"O'Keenan\"\n```\n\nTo correctly pass a double quote in the filter's value, use double quotes around\nthe string and add an escape character `\\` to each quote that is part of the\nstring.\n\n```bash\nGET {hostName}/{version}/events?filter=eventName eq \"\\\"Yearly\\\" Conference\"\n```\n\n## Versioning\n\nChange is inevitable in API development. Planning for it is crucial. We track\nboth backward-compatible and backward-incompatible changes.\n\n<br />\n\n### Backward Compatible Changes\n\nBackward compatible changes will be made often and are intended to avoid\nany adverse impact on our customers. It is highly advisable that when reading\nJSON payloads from Cvent, you are able to handle \"unknown\" attributes that\ncan be added over time. We consider the following changes backward-compatible:\n\n- Adding new resources\n- Adding new optional request parameters to existing operations\n- Adding new attributes to requests or responses\n- Changing the length or format (not type) of resource identifiers. For example, an ID can change from\n  \"1234/1234\" to \"1234::1234\".\n- Increasing the length of string fields\n\n<br />\n\n### Backward Incompatible Changes\n\nBackward-incompatible changes are made infrequently, however, they can be\ndisruptive to consumers. Due to this, our APIs are versioned to avoid\ndisruptions to customers. We leverage a URI-based versioning scheme,\nwhich means that a version value is included in the Cvent API URL.\nWhen breaking changes occur, a new version of the API is made available\nwhile the existing version is deprecated but remains available for a\nlimited period of time. We consider the following backward-incompatible changes:\n\n- Adding a new required parameter (query string param or payload attribute)\n- Deleting API resources\n- Deleting any attribute from API responses\n- Changing the data type on any parameter or attribute\n\n## Standards\nAs you begin working with our APIs, it's essential to be aware of standards around\ncountry codes, time formats, and other important details that ensure smooth integration.\nLearn more about our [API Standards](https://developers.cvent.com/docs/rest-api/reference/api-standards)\n"
  contact:
    name: Cvent Development Platform
    url: https://developers.cvent.com/
  version: ea
servers:
- url: https://api-platform.cvent.com/ea
- url: https://api-platform-eur.cvent.com/ea
tags:
- name: Video
  description: Videos can be added to Cvent events with renditions at various resolutions, audio files, reactions tracks, and text tracks. Attendee viewership is tracked to get insight into durations, devices used and venue where the video is watched. Use these APIs to view and manage videos, related text tracks, and audio files. Use these APIs also to get insight into video viewership.
paths:
  /videos:
    get:
      tags:
      - Video
      security:
      - OAuth2.authorizationCode:
        - event/videos:read
      - OAuth2.clientCredentials:
        - event/videos:read
      summary: List Videos
      description: Gets a paginated list of videos associated with your account or event.
      operationId: listVideos
      parameters:
      - $ref: '#/components/parameters/after'
      - $ref: '#/components/parameters/before'
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/token'
      - name: filter
        in: query
        required: false
        description: 'Use filter query parameters to limit results

          to data that matches your criteria. See

          [Filters](https://developers.cvent.com/docs/rest-api/reference/filters) for details.


          Supported fields and operators are listed below:


          | Field        | Operators  | Notes                            |

          |--------------|------------|----------------------------------|

          | id           | `eq`, `ne` |                                  |

          | events       | `eq`, `ne` |                                  |

          | sessions     | `eq`, `ne` |                                  |

          | exhibitors   | `eq`, `ne` |                                  |

          | speakers     | `eq`, `ne` |                                  |

          | source.id    | `eq`, `ne` |                                  |

          | status       | `eq`, `ne` |                                  |

          | tags         | `eq`, `ne` |                                  |

          | recording.id | `eq`, `ne` |                                  |

          | event.id     | `eq`, `ne` | deprecated, use `events` instead |


          The following logical operators are supported for combining filters:

          * and

          * or

          '
        schema:
          type: string
          example: events eq '04ca6ae2-0dc3-487b-953e-86d6abbdf7d3' and source.id ne 'sampleWebcastSystemId'
      - name: deleted
        in: query
        required: false
        description: True means only videos marked as deleted will be queried. False means only non-deleted videos will be queried.
        schema:
          type: boolean
          default: false
          example: true
      responses:
        '200':
          description: Successfully retrieved a paginated list of videos.
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/videos-paginated-response'
        '400':
          $ref: '#/components/responses/BadRequest1'
        '401':
          $ref: '#/components/responses/Unauthorized1'
        '403':
          $ref: '#/components/responses/Forbidden1'
        '429':
          $ref: '#/components/responses/TooManyRequests1'
      deprecated: false
  /videos/views:
    get:
      tags:
      - Video
      security:
      - OAuth2.authorizationCode:
        - event/video-views:read
      - OAuth2.clientCredentials:
        - event/video-views:read
      summary: List Video Views
      description: Gets a paginated list of video views
      operationId: getVideoViews
      parameters:
      - $ref: '#/components/parameters/after'
      - $ref: '#/components/parameters/before'
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/token'
      - name: filter
        in: query
        required: false
        description: 'Use filter query parameters to limit results

          to data that matches your criteria. See

          [Filters](https://developers.cvent.com/docs/rest-api/reference/filters) for details.


          Supported fields and operators are listed below:


          | Field                  | Operators | Notes      |

          |------------------------|-----------|------------|

          | contact.id             | `eq`      |            |

          | solution               | `eq`      |            |

          | device.type            | `eq`      | deprecated |

          | device.operatingSystem | `eq`      | deprecated |

          | video.id               | `eq`      |            |

          | type                   | `eq`      |            |


          The filter query supports maximum three fields in a filter expression.


          The following logical operators are supported for combining filters:

          * and

          '
        schema:
          type: string
          example: contact.id eq '123e4567-e89b-12d3-a456-426614174000' and solution eq 'EVENTS_PLUS'
      responses:
        '200':
          description: Successfully retrieved paginated list of videos watched.
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/video-views-paginated-response'
        '400':
          $ref: '#/components/responses/BadRequest1'
        '401':
          $ref: '#/components/responses/Unauthorized1'
        '403':
          $ref: '#/components/responses/Forbidden1'
        '429':
          $ref: '#/components/responses/TooManyRequests1'
      deprecated: false
      externalDocs:
        description: More about OAuth2 authorization code support for administrators
        url: '#oauth2-auth-code-planner-admin'
  /videos/{videoId}/audio-tracks:
    parameters:
    - $ref: '#/components/parameters/videoId1'
    get:
      tags:
      - Video
      security:
      - OAuth2.authorizationCode:
        - event/videos:read
      - OAuth2.clientCredentials:
        - event/videos:read
      summary: List Audio Tracks
      description: Gets a list of audio tracks for a specific video ID.
      operationId: listAudioTracks
      responses:
        '200':
          description: Successfully retrieved a list of audio tracks.
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/audio-tracks-response'
        '401':
          $ref: '#/components/responses/Unauthorized1'
        '403':
          $ref: '#/components/responses/Forbidden1'
        '404':
          $ref: '#/components/responses/NotFound1'
        '429':
          $ref: '#/components/responses/TooManyRequests1'
      deprecated: false
  /videos/{videoId}/renditions:
    parameters:
    - $ref: '#/components/parameters/videoId1'
    get:
      tags:
      - Video
      security:
      - OAuth2.authorizationCode:
        - event/videos:read
      - OAuth2.clientCredentials:
        - event/videos:read
      summary: List Video Renditions
      description: Gets a list of video renditions for a specific video ID.
      operationId: listVideoRenditions
      responses:
        '200':
          description: Successfully retrieved a list of renditions.
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/video-renditions-response'
        '400':
          $ref: '#/components/responses/BadRequest1'
        '401':
          $ref: '#/components/responses/Unauthorized1'
        '403':
          $ref: '#/components/responses/Forbidden1'
        '404':
          $ref: '#/components/responses/NotFound1'
        '429':
          $ref: '#/components/responses/TooManyRequests1'
      deprecated: false
  /videos/{videoId}/text-tracks:
    parameters:
    - $ref: '#/components/parameters/videoId1'
    post:
      tags:
      - Video
      security:
      - OAuth2.authorizationCode:
        - event/videos:write
      - OAuth2.clientCredentials:
        - event/videos:write
      operationId: createTextTrack
      summary: Create Text Track
      description: Creates a new text track (VTT) object for a specific video. This endpoint does not directly handle the upload of VTT files but instead returns a location URL that you use to perform the upload.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/video-text-track'
        required: true
      responses:
        '201':
          description: Text track was successfully created for the video.
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/existing-video-text-track'
        '400':
          $ref: '#/components/responses/BadRequest1'
        '401':
          $ref: '#/components/responses/Unauthorized1'
        '403':
          $ref: '#/components/responses/Forbidden1'
        '404':
          $ref: '#/components/responses/NotFound1'
        '429':
          $ref: '#/components/responses/TooManyRequests1'
      deprecated: false
    get:
      tags:
      - Video
      security:
      - OAuth2.authorizationCode:
        - event/videos:read
      - OAuth2.clientCredentials:
        - event/videos:read
      summary: List Text Tracks
      description: Gets a list of video text tracks for a specific video ID.
      operationId: listVideoTextTracks
      responses:
        '200':
          description: Successfully retrieved a list of text tracks.
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/video-text-tracks-response'
        '401':
          $ref: '#/components/responses/Unauthorized1'
        '403':
          $ref: '#/components/responses/Forbidden1'
        '404':
          $ref: '#/components/responses/NotFound1'
        '429':
          $ref: '#/components/responses/TooManyRequests1'
      deprecated: false
  /videos/{videoId}/text-tracks/{textTrackId}:
    parameters:
    - $ref: '#/components/parameters/videoId1'
    - $ref: '#/components/parameters/textTrackId'
    put:
      tags:
      - Video
      security:
      - OAuth2.authorizationCode:
        - event/videos:write
      - OAuth2.clientCredentials:
        - event/videos:write
      summary: Update Text Track
      description: 'Updates a specific video text track by ID. This is done by setting the status to Updating within the body of this call,

        which will prompt the service to return a signed upload link in the returned entity.

        '
      operationId: updateTextTrack
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/existing-video-text-track'
        required: true
      responses:
        '200':
          description: Successfully updated a video text track.
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/existing-video-text-track'
        '400':
          $ref: '#/components/responses/BadRequest1'
        '401':
          $ref: '#/components/responses/Unauthorized1'
        '403':
          $ref: '#/components/responses/Forbidden1'
        '404':
          $ref: '#/components/responses/NotFound1'
        '429':
          $ref: '#/components/responses/TooManyRequests1'
      deprecated: false
components:
  schemas:
    AssetLocation:
      title: Asset Location
      description: A URL associated with the asset.
      required:
      - href
      type: object
      properties:
        href:
          type: string
          description: A pre-signed URL with an expiration of 2 hours to the asset's location.
          example: https://ap-southeast-2.example.com/sign2-bucket-hchq3nwuo8ns/sign-demo.json?X-Exa-Date=20170125T044127Z&X-Exa-Expires=60&X-Exa-Signature=24db05
          readOnly: true
    ThumbnailStatus:
      title: ThumbnailStatus
      enum:
      - Started
      - Uploaded
      - Processing
      - Available
      - Rejected
      type: string
      description: Denotes the status of a thumbnail. Started indicates the request to upload in the API was submitted, and the URL you'll upload a thumbnail to was returned. Uploaded indicates that the upload was completed. Processing indicates that a virus scan is in progress. Available indicates the thumbnail passed the scan and is ready for use. Rejected indicates there was a problem processing the thumbnail.
      example: Started
    UUIDProperty:
      title: UUID Property
      description: A string that has to be a format matching the industry standard uuid
      type: string
      format: uuid
      example: 04ca6ae2-0dc3-487b-953e-86d6abbdf7d3
    VideoTextTrackStatus:
      title: VideoTextTrackStatus
      enum:
      - Started
      - Uploaded
      - Processing
      - Available
      - Rejected
      - Updating
      - Translating
      - Transcribing
      - Error
      type: string
      description: Denotes the status of a video text track (VTT). Started indicates a request to upload in the API, and the URL to upload to was returned. Uploaded indicates that the upload was completed. Available indicates the VTT is available for use. Rejected indicates a failed virus scan. Error indicates there was a problem processing the VTT.
      example: Started
    AudioTrackStatus:
      title: AudioTrackStatus
      enum:
      - Started
      - Uploaded
      - Scanning
      - Scanned
      - Syncing
      - Rejected
      - Error
      - Available
      type: string
      description: Denotes the status of an audio track. Started indicates the request to upload in the API was submitted, and the URL you'll upload an audio track to was returned. Uploaded indicates that the upload was completed. Scanning indicates a virus scan is happening in a quarantine location; Scanned indicates a successful virus scan. Syncing indicates a complete virus scan, and now transcoding has begun. Rejected indicates a failed virus scan. Error indicates there was a problem processing the audio track. Available indicates the audio track is available for use.
      example: Started
    VideoType:
      title: VideoType
      enum:
      - mpg2
      - mov
      - mp2
      - mp4
      - mpe
      - mpeg
      - mpg
      - mpv
      - qt
      - webm
      - hls
      type: string
      description: This is used to denote type of a video
      example: mp4
    VideoStatus:
      title: VideoStatus
      enum:
      - Started
      - Uploaded
      - Scanning
      - Scanned
      - Syncing
      - Rejected
      - Error
      - Available
      - Upcoming
      - ReSyncing
      type: string
      description: Denotes the status of a video. Started indicates the request to upload in the API was submitted, and the URL to upload to was returned. Uploaded indicates that the upload was completed. Scanning indicates a virus scan is happening in a quarantine location; Scanned indicates a successful virus scan. Syncing indicates a complete virus scan, and now transcoding has begun. Rejected indicates a failed virus scan. Error indicates there was a problem processing the video. Available indicates the video is available for use.
      example: Started
    video-views-paginated-response:
      title: VideoViewsPaginatedResponse
      description: Paginated list of video views.
      type: object
      properties:
        paging:
          $ref: '#/components/schemas/Paging'
        data:
          type: array
          items:
            $ref: '#/components/schemas/VideoView'
          description: List of unique video views.
    Audit:
      title: Audit
      description: Audit information
      type: object
      properties:
        created:
          type: string
          format: date-time
          description: The ISO 8601 zoned date time when this record was created.
          readOnly: true
          example: '2017-01-02T02:00:00Z'
        createdBy:
          type: string
          description: The identifier of the user that created this record.
          readOnly: true
          example: hporter
        lastModified:
          type: string
          format: date-time
          description: The ISO 8601 zoned date time when this record was updated.
          readOnly: true
          example: '2019-02-12T03:00:00Z'
        lastModifiedBy:
          type: string
          description: The identifier of the user that last updated this record.
          readOnly: true
          example: hporter
    Solution:
      title: Solution
      description: The solution where the video exists. Attendee Hub and Events+ represent two different solutions where the video can be found.
      type: string
      enum:
      - ATTENDEE_HUB
      - EVENTS_PLUS
      example: EVENTS_PLUS
    Video1:
      title: Video
      type: object
      description: The details of a video
      properties:
        id:
          type: string
          format: uuid
          description: The unique ID of the video.
          example: 456e4567-e89b-12d3-a456-426614174000
    existing-video-text-track:
      title: ExistingVideoTextTrack
      description: An existing video text track.
      type: object
      required:
      - id
      - status
      allOf:
      - $ref: '#/components/schemas/video-text-track'
      properties:
        id:
          title: Video text track ID
          type: string
          format: uuid
          example: 04ca6ae2-0dc3-487b-953e-86d6abbdf7d3
          description: The identifier of a video text track.
          readOnly: true
        url:
          $ref: '#/components/schemas/AssetLocation'
        errorMessage:
          description: A message indicating the error processing the text track, if any.
          type: string
          example: Input file was empty
    VideoRenditionType:
      title: VideoRenditionType
      enum:
      - Hls
      - HlsMaster
      - Mp4
      - Poster
      - Mp4Preview
      - Mp3
      - Audio
      type: string
      description: Denotes the type of rendition.
      example: Hls
    video-text-track:
      title: VideoTextTrack
      description: Video text track
      type: object
      required:
      - language
      - kind
      allOf:
      - $ref: '#/components/schemas/Audit'
      properties:
        video:
          $ref: '#/components/schemas/VideoAssetID'
        label:
          type: string
          description: Name of the text track.
          maxLength: 300
          example: English
        language:
          type: string
          description: IETF language tag for the text track.
          maxLength: 35
          example: en-US
        kind:
          $ref: '#/components/schemas/VideoTextTrackKind'
        published:
          description: True means that this text track has been published for your client.
          type: boolean
          default: true
        default:
          description: True indicates this is the default text track. Each kind of text track can have a separate default assigned.
          type: boolean
          default: false
        status:
          $ref: '#/components/schemas/VideoTextTrackStatus'
        autoGenerated:
          description: True indicates this text track was generated via machine transcription of the audio.
          type: boolean
          default: false
    PaginationLinks:
      title: PaginationLinks
      type: object
      description: Represents pagination links for navigating between pages of data.
      properties:
        next:
          $ref: '#/components/schemas/Link'
        self:
          $ref: '#/components/schemas/Link'
        prev:
          $ref: '#/components/schemas/Link'
    video-thumbnail:
      title: VideoThumbnail
      description: Video thumbnail
      type: object
      properties:
        url:
          $ref: '#/components/schemas/Link'
        size:
          type: integer
          description: File size in bytes for the thumbnail
          example: 4098675830
        height:
          type: integer
          description: frame height in pixels
          example: 400
        width:
          type: integer
          description: frame width in pixels
          example: 300
        type:
          $ref: '#/components/schemas/ThumbnailType'
        status:
          $ref: '#/components/schemas/ThumbnailStatus'
    VideoRendition:
      title: VideoRendition
      description: Video rendition
      type: object
      allOf:
      - $ref: '#/components/schemas/Audit'
      properties:
        video:
          $ref: '#/components/schemas/VideoAssetID'
        type:
          $ref: '#/components/schemas/VideoRenditionType'
        location:
          title: Link
          required:
          - href
          type: object
          properties:
            href:
              type: string
              description: A pre-signed URL with an expiration of 2 hours that provides the location.
              example: https://example.com/M8/7f378243-2c62-49fa-82e9-90e5498d30c3?Policy=eyJTdGF0ZW1lbnUysx5cE4-KWfUQ__&Key-Pair-Id=K6XDZ8UJY4Q0X
          description: Location where the rendition is stored.
        width:
          type: integer
          description: The video's frame width in pixels.
          example: 300
        height:
          type: integer
          description: The video's frame height in pixels.
          example: 400
    VideoErrorCode:
      title: VideoErrorCode
      description: This is used to denote the error codes for a video entity.
      enum:
      - 600
      - 601
      - 602
      - 603
      - 604
      - 605
      - 606
      - 607
      - 608
      type: integer
      example: 601
    VideoBase:
      title: VideoBase
      description: Base model for a Video.
      type: object
      required:
      - title
      allOf:
      - $ref: '#/components/schemas/Audit'
      properties:
        title:
          type: string
          description: The title of the video
          maxLength: 500
          example: Cvent 2020 Keynote
        description:
          type: string
          description: Description of the video
          example: The video recording of the Cvent 2020 keynote by James Gordon
        filename:
          type: string
     

# --- truncated at 32 KB (90 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/cvent-event-cloud/refs/heads/main/openapi/cvent-event-cloud-video-api-openapi.yml