Brightcove Clear-Sources API

Clear_sources endpoints expose unencrypted sources to the preview players in the studio for customers who are using [Playback Rights](/playback-restrictions/references/index.html) to protect DRM and HLSe video content. This endpoint is also useful for customers who want to make their protected source files available to 3rd parties or internal users who have access to their API credentials. **Important Notes:** 1. Once the unprotected URL is made available, Brightcove and the client have no control over who has access to the content or how it is used. 2. There will be egress bandwidth charges made to your account when the sources are accessed.

OpenAPI Specification

brightcove-clear-sources-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Brightcove Analytics API Reference Access Tokens Clear-Sources API
  description: "Reference for the Brightcove Analytics API, used to retrieve analytics data for your accounts. To test API requests, you can use our <a href=\"/getting-started/concepts-testing-tools-brightcove-apis.html\" target=\"_blank\">API Testing Tools</a>.\n\nFor additional in-depth guides to features of the API, see the **[general documentation](/analytics/index.html)**.\n\n **Base URL**: https://analytics.api.brightcove.com"
  x-bc-access: public
  version: 1.0.0
servers:
- url: https://analytics.api.brightcove.com
  variables: {}
tags:
- name: Clear-Sources
  description: "Clear_sources endpoints expose unencrypted sources to the preview players in the studio for customers who are using [Playback Rights](/playback-restrictions/references/index.html) to protect DRM and HLSe video content. This endpoint is also useful for customers who want to make their protected source files available to 3rd parties or internal users who have access to their API credentials.\n\n  **Important Notes:**\n  \n  1. Once the unprotected URL is made available, Brightcove and the client have no control over who has access to the content or how it is used.\n  2. There will be egress bandwidth charges made to your account when the sources are accessed."
paths:
  /v1/accounts/{{account_id}}/clear_videos/{{video_id}}:
    get:
      tags:
      - Clear-Sources
      summary: Get Video with Clear Sources
      description: "Get the video object along with unencrypted clear sources, including all associated metadata.\n**Notes**\n  - Once the unprotected URL is made available, Brightcove and the client have no control over who has access to the content or how it is used.\n  - There will be egress bandwidth charges made to the customer when the sources are accessed."
      operationId: GetClearVideo
      parameters:
      - $ref: '#/components/parameters/AccountId'
      - $ref: '#/components/parameters/VideoId'
      - $ref: '#/components/parameters/ContentType'
      - $ref: '#/components/parameters/Authorization'
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Video'
        '401':
          description: 'UNAUTHORIZED: Authentication failed; check to make sure your client credentials were correct for the access token'
        '403':
          description: 'NOT_AVAILABLE: The resource you are requesting is temporarily unavailable'
        '404':
          description: 'RESOURCE_NOT_FOUND: The api could not find the resource you requested'
        '405':
          description: 'METHOD_NOT_ALLOWED: The HTTP method specified is not allowed for this endpoint'
        '429':
          description: 'TOO_MANY_REQUESTS: You are submitting too many simultaneous requests or too many requests per second'
        '500':
          description: 'UNKNOWN: Issue in Brightcove system; try again later.

            TIMEOUT: Server likely too busy; try again later.'
      deprecated: false
      security:
      - BC_OAuth2:
        - video-cloud/video/clear-sources
      x-operation-settings:
        CollectParameters: false
        AllowDynamicQueryParameters: false
        AllowDynamicFormParameters: false
        IsMultiContentStreaming: false
  /v1/accounts/{{account_id}}/videos/{{video_id}}/clear_sources:
    get:
      tags:
      - Clear-Sources
      summary: Get Video Clear Sources
      description: "Get only unencrypted clear sources for a video, without any additional metadata.\n**Notes**\n  - Once the unprotected URL is made available, Brightcove and the client have no control over who has access to the content or how it is used.\n  - There will be egress bandwidth charges made to the customer when the sources are accessed.\n  - This endpoint requires the special permission `video-cloud/video/clear-sources` which is not available in the Studio UI. To generate credentials to get clear sources, this permission must be enabled for the account, and you must use the [OAuth API](/oauth/getting-started/overview-oauth-api-v4.html)"
      operationId: GetClearVideoSources
      parameters:
      - $ref: '#/components/parameters/AccountId'
      - $ref: '#/components/parameters/VideoId'
      - $ref: '#/components/parameters/ContentType'
      - $ref: '#/components/parameters/Authorization'
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VideoSources'
        '401':
          description: 'UNAUTHORIZED: Authentication failed; check to make sure your client credentials were correct for the access token'
        '403':
          description: 'NOT_AVAILABLE: The resource you are requesting is temporarily unavailable'
        '404':
          description: 'RESOURCE_NOT_FOUND: The api could not find the resource you requested'
        '405':
          description: 'METHOD_NOT_ALLOWED: The HTTP method specified is not allowed for this endpoint'
        '429':
          description: 'TOO_MANY_REQUESTS: You are submitting too many simultaneous requests or too many requests per second'
        '500':
          description: 'UNKNOWN: Issue in Brightcove system; try again later.

            TIMEOUT: Server likely too busy; try again later.'
      deprecated: false
      security:
      - BC_OAuth2:
        - video-cloud/video/clear-sources
      x-operation-settings:
        CollectParameters: false
        AllowDynamicQueryParameters: false
        AllowDynamicFormParameters: false
        IsMultiContentStreaming: false
components:
  schemas:
    VideoImages:
      description: map of image maps - the map name is in the form `label.language` where the label is one of `poster`, `thumbnail`, `portrait`, `square`, `wide` or `ultra-wide`, and the `language` is a language identifier such as 'en', 'de', or `ko`
      example:
        thumbnail:
          src: https://cf-images.us-east-1.prod.boltdns.net/v1/jit/57838016001/ee705e97-3fb5-409c-99d8-703e9f57bd0a/main/160x90/20s629ms/match/image.jpg
          sources:
          - src: https://cf-images.us-east-1.prod.boltdns.net/v1/jit/57838016001/ee705e97-3fb5-409c-99d8-703e9f57bd0a/main/160x90/20s629ms/match/image.jpg
            height: 90
            width: 160
        poster:
          src: https://cf-images.us-east-1.prod.boltdns.net/v1/jit/57838016001/ee705e97-3fb5-409c-99d8-703e9f57bd0a/main/1280x720/20s629ms/match/image.jpg
          sources:
          - src: https://cf-images.us-east-1.prod.boltdns.net/v1/jit/57838016001/ee705e97-3fb5-409c-99d8-703e9f57bd0a/main/1280x720/20s629ms/match/image.jpg
            height: 720
            width: 1280
        portrait.es:
          src: https://cf-images.us-east-1.prod.boltdns.net/v1/static/57838016001/ee705e97-3fb5-409c-99d8-703e9f57bd0a/bac8717a-43db-4fa8-a6f0-189c80ee4c4e/800x1200/match/image.jpg
          sources:
          - src: https://cf-images.us-east-1.prod.boltdns.net/v1/static/57838016001/ee705e97-3fb5-409c-99d8-703e9f57bd0a/bac8717a-43db-4fa8-a6f0-189c80ee4c4e/800x1200/match/image.jpg
            height: 1200
            width: 800
        thumbnail.en:
          src: https://cf-images.us-east-1.prod.boltdns.net/v1/static/57838016001/ee705e97-3fb5-409c-99d8-703e9f57bd0a/0ce2da4d-ca36-469b-9024-0273d79feeeb/292x108/match/image.jpg
          sources:
          - src: https://cf-images.us-east-1.prod.boltdns.net/v1/static/57838016001/ee705e97-3fb5-409c-99d8-703e9f57bd0a/0ce2da4d-ca36-469b-9024-0273d79feeeb/292x108/match/image.jpg
            height: 108
            width: 292
        poster.en:
          src: https://cf-images.us-east-1.prod.boltdns.net/v1/static/57838016001/ee705e97-3fb5-409c-99d8-703e9f57bd0a/a7cb150d-c84a-48e0-9469-5b4ce80fba53/1920x1080/match/image.jpg
          sources:
          - src: https://cf-images.us-east-1.prod.boltdns.net/v1/static/57838016001/ee705e97-3fb5-409c-99d8-703e9f57bd0a/a7cb150d-c84a-48e0-9469-5b4ce80fba53/1920x1080/match/image.jpg
            height: 1080
            width: 1920
        square.de:
          src: https://cf-images.us-east-1.prod.boltdns.net/v1/static/57838016001/ee705e97-3fb5-409c-99d8-703e9f57bd0a/22209955-e136-4f17-914c-e19ec4c58886/570x570/match/image.jpg
          sources:
          - src: https://cf-images.us-east-1.prod.boltdns.net/v1/static/57838016001/ee705e97-3fb5-409c-99d8-703e9f57bd0a/22209955-e136-4f17-914c-e19ec4c58886/570x570/match/image.jpg
            height: 570
            width: 570
        ultra-wide.hi:
          src: https://cf-images.us-east-1.prod.boltdns.net/v1/static/57838016001/ee705e97-3fb5-409c-99d8-703e9f57bd0a/72fd489f-d978-44ba-8d04-1e33c7c36cef/3840x1646/match/image.jpg
          sources:
          - src: https://cf-images.us-east-1.prod.boltdns.net/v1/static/57838016001/ee705e97-3fb5-409c-99d8-703e9f57bd0a/72fd489f-d978-44ba-8d04-1e33c7c36cef/3840x1646/match/image.jpg
            height: 1646
            width: 3840
        wide.fr:
          src: https://cf-images.us-east-1.prod.boltdns.net/v1/static/57838016001/ee705e97-3fb5-409c-99d8-703e9f57bd0a/4405a5d5-8b9e-4c2b-be71-cf4e2c153e87/2560x1440/match/image.jpg
          sources:
          - src: https://cf-images.us-east-1.prod.boltdns.net/v1/static/57838016001/ee705e97-3fb5-409c-99d8-703e9f57bd0a/4405a5d5-8b9e-4c2b-be71-cf4e2c153e87/2560x1440/match/image.jpg
            height: 1440
            width: 2560
      readOnly: true
      title: VideoImages
      type: object
    VideoVariants:
      description: Array of video variants
      type: array
      items:
      - $ref: '#/components/schemas/VideoVariant'
      - $ref: '#/components/schemas/VideoVariant2'
      - $ref: '#/components/schemas/VideoVariant3'
    CuePoint:
      properties:
        force_stop:
          description: Whether playback should be stopped when the cuepoint is reached
          type: boolean
        metadata:
          description: optional metadata string (512 single-byte characters maximum)
          maxLength: 512
          type: string
        name:
          description: cue point name
          type: string
        time:
          description: time of the cue point in seconds
          example: 10.527
          type: number
        type:
          description: cue point type
          enum:
          - AD
          - DATA
          type: string
      required:
      - time
      - type
      title: cue_point
      type: object
    Link:
      description: map of related link properties - can only be added on update, not creation
      properties:
        text:
          description: text for the link
          maxLength: 255
          type: string
        url:
          description: URL for the link
          maxLength: 255
          type: string
      title: link
      type: object
    Geo:
      description: map of geo-filtering properties
      properties:
        countries:
          description: array of ISO 3166 list of 2-letter codes(https://www.iso.org/obp/ui/#home) (search for "country codes")
          example:
          - us
          - ca
          - fr
          items:
            type: string
          type: array
        exclude_countries:
          description: if true, country array is treated as a list of countries excluded from viewing
          type: boolean
        restricted:
          description: whether geo-restriction is enabled for this video
          type: boolean
      required:
      - countries
      - exclude_countries
      - restricted
      title: geo
      type: object
    VideoVariant3:
      description: Object containing language-specific metadata for a video
      properties:
        language:
          type: string
          description: 'The language for this variant in the language-country code format (examples: en-US, es-ES) **Note that `language` is only included when you create a variant - you must NOT include it when updating the variant**'
          example: ja-JA
        name:
          type: string
          description: The title of the video in this language
        description:
          type: string
          description: The video short description in this language
        long_description:
          type: string
          description: The video long description in this language
        custom_fields:
          type: object
          description: 'map of `fieldname: value` pairs, where values are for this language; values have a maximum length of 1024 single-byte characters. Note: be sure to use the **internal** name for the field, not the display name'
    VideoVariant:
      description: Object containing language-specific metadata for a video
      properties:
        language:
          type: string
          description: 'The language for this variant in the language-country code format (examples: en-US, es-ES) **Note that `language` is only included when you create a variant - you must NOT include it when updating the variant**'
          example: es-ES
        name:
          type: string
          description: The title of the video in this language
        description:
          type: string
          description: The video short description in this language
        long_description:
          type: string
          description: The video long description in this language
        custom_fields:
          type: object
          description: 'map of `fieldname: value` pairs, where values are for this language; values have a maximum length of 1024 single-byte characters. Note: be sure to use the **internal** name for the field, not the display name'
    User:
      description: information about who created or modified a video, if available
      properties:
        email:
          description: the user's email address in Video Cloud
          type: string
        id:
          description: Video Cloud system id of the user
          type: string
        type:
          description: "The type of the updater, either:\n  - `user` a user in Studio\n  - `api-key` a user via the APIs\n  - `internal` a Brightcove system or user"
          enum:
          - user
          - api_key
          - internal
          type: string
      readOnly: true
      title: User
      type: object
    Schedule:
      description: map of scheduling properties
      properties:
        ends_at:
          description: '''End date-time of availability in ISO-8601(https://www.ecma-international.org/ecma-262/5.1/#sec-15.9.1.15) format. Note that you can input a date-time stamp with a time zone, such as `2021-05-01T18:00:00.000+08`, but it will be converted to and stored as a UTC data-time stamp: `2021-05-01T10:00:00.000Z`'''
          example: 2020-05-20 20:41:07.689000+00:00
          nullable: true
          type: string
        starts_at:
          description: '''Start date-time of availability in ISO-8601(https://www.ecma-international.org/ecma-262/5.1/#sec-15.9.1.15) format. Note that you can input a date-time stamp with a time zone, such as `2021-05-01T18:00:00.000+08`, but it will be converted to and stored as a UTC data-time stamp: `2021-05-01T10:00:00.000Z`'''
          example: 2019-05-20 20:41:07.689000+00:00
          nullable: true
          type: string
      title: schedule
      type: object
    VideoVariant2:
      description: Object containing language-specific metadata for a video
      properties:
        language:
          type: string
          description: 'The language for this variant in the language-country code format (examples: en-US, es-ES) **Note that `language` is only included when you create a variant - you must NOT include it when updating the variant**'
          example: de-DE
        name:
          type: string
          description: The title of the video in this language
        description:
          type: string
          description: The video short description in this language
        long_description:
          type: string
          description: The video long description in this language
        custom_fields:
          type: object
          description: 'map of `fieldname: value` pairs, where values are for this language; values have a maximum length of 1024 single-byte characters. Note: be sure to use the **internal** name for the field, not the display name'
    Sharing:
      description: map of the sharing properties for the video
      properties:
        by_external_acct:
          description: whether the video was shared from another account
          example: true
          readOnly: true
          type: boolean
        by_id:
          description: id of the account that shared the video; note that this field is populated only for the shared copy, not for the original video
          example: 57838016001
          readOnly: true
          type: string
        by_reference:
          description: whether the video is shared by reference
          example: true
          readOnly: true
          type: boolean
        source_id:
          description: id of the video in its original account; note that this field is populated only for the shared copy, not for the original video
          example: 239487239487
          readOnly: true
          type: string
        to_external_acct:
          description: whether the video is shared to another account
          example: true
          readOnly: true
          type: boolean
      readOnly: true
      title: sharing
      type: object
    Transcript:
      properties:
        id:
          description: System id for the text track
          readOnly: true
          type: string
        account_id:
          description: The account id
          readOnly: true
          type: string
        default:
          description: Whether the transcript is the default - note that if there are multi-language transcripts, there can be a default per language
          readOnly: true
          type: boolean
        label:
          description: label for the track
          type: string
        sources:
          description: sources for a client to retrieve the transcription
          type: array
          items:
            type: string
            description: URLs where the transcript can be retrieved - there will an http and https URL for each transcript
        src:
          description: URL for the transcription file
          type: string
        srclang:
          description: 2-letter or 4-letter language code, such as `es` or `es-MX`
          type: string
        status:
          description: Either `draft` (unavailable to viewers) or `published`
          type: string
          enum:
          - draft
          - published
      required:
      - src
      - srclang
      title: transcription
      type: object
    Video:
      description: Object containing metadata for a video
      properties:
        video_preview:
          $ref: '#/components/schemas/VideoPreview'
        ad_keys:
          description: string representing the ad key/value pairs assigned to the video. Key/value pairs are formatted as key=value and are separated by ampersands - can only be added on update, not creation
          example: ' "adKeys": "category=sports&live=true"'
          nullable: true
          type: string
        clip_source_video_id:
          description: The ID of the source video that was clipped to produce this video or null if this video is not a clip of another video
          example: 4723947979
          readOnly: true
          type: string
        complete:
          description: 'whether the video has at least one rendition -Note: when you create a new video, the complete property is automatically set to false. As soon as one rendition exists for the video, the complete property will be automatically set to true. This does **not mean that all renditions are created and images and captions processed**. For the full status of ingestion, see [Dynamic Ingest API Notifications](/dynamic-ingest/general/notifications-dynamic-delivery-video-cloud.html)'
          example: true
          readOnly: true
          type: boolean
        created_at:
          description: when the video was created
          example: '2015-09-17T16:08:37.108Z'
          readOnly: true
          type: string
        created_by:
          $ref: '#/components/schemas/User'
        cue_points:
          description: array of cue points - can be added on creation or update
          items:
            $ref: '#/components/schemas/CuePoint'
          type: array
        custom_fields:
          additionalProperties:
            description: 'map of fieldname-value pairs; values have a maximum length of 1024 single-byte characters Note: be sure to use the internal name for the field, not the display name'
            type: string
          type: object
        delivery_type:
          description: "video delivery type:\n  - `remote`: a remote asset\n  - `dynamic_origin`: processed using the Dynamic Delivery ingest system\n  - `live_origin`: a live stream from Brightcove Live\n  - `unknown`: the delivery type could not be determined (may mean there are no playable renditions)"
          enum:
          - remote
          - dynamic_origin
          - live_origin
          - unknown
          example: dynamic_origin
          readOnly: true
          type: string
        description:
          description: video short description
          example: Herring gull on a wharf in Boston
          maxLength: 248
          type: string
        digital_master_id:
          description: asset id of the digital master
          example: 734462494001
          readOnly: true
          type: string
        drm_disabled:
          description: if true, the video is not DRM-packaged - applies to accounts that are enabled for DRM only
          example: true
          type: boolean
        duration:
          description: video duration in milliseconds
          example: 18160
          readOnly: true
          type: integer
        economics:
          default: AD_SUPPORTED
          description: whether video is `AD_SUPPORTED`
          enum:
          - AD_SUPPORTED
          - FREE
          example: AD_SUPPORTED
          type: string
        folder_id:
          description: id of the folder that contains the video
          example: 560039e5e4b0e69e4b01cacd
          readOnly: true
          type: string
        forensic_watermarking:
          description: 'Indicates whether the video has forensic watermarking


            possible values:


            - `ACTIVE` - the video was transcoded with forensic watermarking and should be used during delivery

            - `UNAVAILABLE` - the video was not transcoded with forensic watermarking support and can’t be delivered using it

            - `null` - the value is for forensic watermarking is not available for the account; in this case the field is not returned in API responses


            if the video was not ingested with forensic watermarking, this field will be set to `UNAVAILABLE` automatically; if the video was ingested or retranscoded with forensic watermarking, this field will be set to `ACTIVE` automatically'
          example: ACTIVE
          readOnly: true
          type: string
          enum:
          - ACTIVE
          - UNAVAILABLE
        geo:
          $ref: '#/components/schemas/Geo'
        has_digital_master:
          description: whether video has an archived master than can be used for retranscoding
          example: true
          readOnly: true
          type: boolean
        id:
          description: video id
          example: 734462567001
          readOnly: true
          type: string
        images:
          $ref: '#/components/schemas/VideoImages'
        labels:
          type: array
          description: Array of labels assigned to the video. See [Working with Labels](/cms/managing-videos/working-with-labels.html) for more information.
          items:
            type: string
            description: full hierarchical path for a label.
        link:
          $ref: '#/components/schemas/Link'
        long_description:
          description: video long description - can only be added on update, not creation
          example: Herring Gull near Fort Point Channel in Boston, MA, USA. 2019-04-25.
          maxLength: 5000
          type: string
        name:
          description: video title
          example: Laughing Gull
          maxLength: 255
          minLength: 1
          type: string
        offline_enabled:
          default: false
          description: whether video is enabled for offline viewing
          example: true
          type: boolean
        original_filename:
          description: the original file name for the uploaded video
          example: gull-boston.mov
          readOnly: true
          type: string
        playback_rights_id:
          type: string
          description: Associates specified EPA playback rights with video.
        projection:
          description: used for 360 videos
          enum:
          - equirectangular
          example: equirectangular
          nullable: true
          type: string
        published_at:
          description: start date-time of first activation in ISO-8601(https://www.ecma-international.org/ecma-262/5.1/#sec-15.9.1.15) format
          example: 2019-04-30 23:27:22.507000+00:00
          type: string
        reference_id:
          description: video reference-id (must be unique within the account)
          example: laughing_gull_2019_04_25
          maxLength: 150
          nullable: true
          type: string
        schedule:
          $ref: '#/components/schemas/Schedule'
        sharing:
          $ref: '#/components/schemas/Sharing'
        state:
          description: "The state of the video:\n  - ACTIVE: the video is playable\n  - INACTIVE: the video is not playable\n  - PENDING: \n  - DELETED: the video has been deleted (within the past 10 days; after that, the API won't return the video)"
          enum:
          - ACTIVE
          - INACTIVE
          - PENDING
          - DELETED
          example: ACTIVE
          type: string
        tags:
          description: array of tags - maximum characters per tag is 1000
          example:
          - birds
          - sea
          items:
            type: string
            maxLength: 128
          type: array
        text_tracks:
          description: array of text tracks - can only be added on update, not creation
          items:
            $ref: '#/components/schemas/TextTrack'
          type: array
        transcripts:
          description: array of transcription objects - can only be added on update, not creation
          items:
            $ref: '#/components/schemas/Transcript'
          type: array
        updated_at:
          description: when the video was last modified
          example: 2018-02-27 19:09:20.401000+00:00
          readOnly: true
          type: string
        updated_by:
          $ref: '#/components/schemas/User'
        variants:
          $ref: '#/components/schemas/VideoVariants'
      title: Video
      type: object
    VideoPreview:
      description: Animated thumbnail preview metadata for the video
      properties:
        start:
          description: Start time in milliseconds for the preview segment
          example: 10000
          type: integer
        sources:
          description: Array of HLS manifests for the animated preview
          items:
            $ref: '#/components/schemas/VideoPreviewSource'
          type: array
      title: VideoPreview
      type: object
    VideoSources:
      example:
      - ext_x_version: '4'
        src: https://manifest.prod.boltdns.net/manifest/v1/hls/v4/clear/57838016001/853641cb-d66b-4f08-bb02-8489b5fba897/10s/master.m3u8?fastly_token=NWJiMmIyNmNfMWM3YmVhZTA5OTc4YjM4ZjZiZjU1OTk0ZTkzZTUyMzhhNGU5Zjc5YTNkZGYwYWQyNWZkMTcyMGM1MzlmMWVmZg%3D%3D
        type: application/x-mpegURL
        uploaded_at: '2017-06-05T11:20:53.731Z'
      - ext_x_version: '5'
        src: https://manifest.prod.boltdns.net/manifest/v1/hls/v5/clear/57838016001/853641cb-d66b-4f08-bb02-8489b5fba897/10s/master.m3u8?fastly_token=NWJiMmIyNmNfNDc4YjJiNTM1YzkwYzcwNzliNmY3MDVjMzJmZjJhZjdmNjAxMzM0NWEzMTk3MzY2MGIwYWZhNzVhYjMyMzNhYg%3D%3D
        type: application/x-mpegURL
        uploaded_at: '2017-06-05T11:20:53.731Z'
      - profiles: urn:mpeg:dash:profile:isoff-live:2011
        src: https://manifest.prod.boltdns.net/manifest/v1/dash/live-baseurl/clear/57838016001/853641cb-d66b-4f08-bb02-8489b5fba897/2s/manifest.mpd?fastly_token=NWJiMmIyNmNfYjM3YTFiZjU5MmJjNzQzZjFkZTVlZmY0NTVhNmYxMzU3N2M2ODk5MmU1YjkyNDg5ZWRlNWRmMGNlODdjYjg5YQ%3D%3D
        type: application/dash+xml
        uploaded_at: '2017-06-05T11:20:53.731Z'
      - codec: H264
        container: MP4
        duration: 49690
        encoding_rate: 2129000
        height: 720
        remote: false
        size: 13242064
        src: https://bcbolt446c5271-a.akamaihd.net/media/v1/pmp4/static/clear/57838016001/853641cb-d66b-4f08-bb02-8489b5fba897/high.mp4?akamai_token=exp=1538437740~acl=/media/v1/pmp4/static/clear/57838016001/853641cb-d66b-4f08-bb02-8489b5fba897/high.mp4*~hmac=619d67d75397e01c0bb9bd88ea047ace80bd03b56261337233b5d53f2632c690
        uploaded_at: '2017-06-05T11:20:53.731Z'
        width: 1280
      - codec: H264
        container: MP4
        duration: 49690
        encoding_rate: 574000
        height: 270
        remote: false
        size: 3586929
        src: https://bcbolt446c5271-a.akamaihd.net/media/v1/pmp4/static/clear/57838016001/853641cb-d66b-4f08-bb02-8489b5fba897/mid.mp4?akamai_token=exp=1538437740~acl=/media/v1/pmp4/static/clear/57838016001/853641cb-d66b-4f08-bb02-8489b5fba897/mid.mp4*~hmac=fde050eac8c8d3bb5b6c9141639a3dc770b8b8a3a3f88f5436c803b133d940fc
        uploaded_at: '2017-06-05T11:20:53.731Z'
        width: 480
      properties:
        app_name:
          description: address for RTMP stream
          readOnly: true
          type: string
        asset_id:
          description: system id for the rendition
          readOnly: true
          type: string
        codec:
          description: the video codec for the rendition
          type: string
        container:
          description: the video container for the rendition
          type: string
        duration:
          description: duration in milliseconds
          type: integer
        encoding_rate:
          description: encoding rate in bps
          type: integer
        height:
          description: frame height in pixels
          readOnly: true
          type: integer
        remote:
          description: whether the source is a remote asset
          type: boolean
        size:
          description: file size in bytes
          type: integer
        src:
          description: URL for HTTP rendition
          readOnly: true
          type: string
        stream_name:
          description: the stream name on the CDN
          readOnly: true
          type: string
        type:
          description: the type for segmented streams
          readOnly: true
          type: string
        uploaded_at:
          description: date/time when the video was uploaded
          readOnly: true
          type: string
        width:
          description: frame width in pixels
          readOnly: true
          type: integer
      title: VideoSources
      type: object
    VideoPreviewSource:
      description: HLS manifest entry for animated preview
      properties:
        ext_x_version:
          description: HLS EXT-X-VERSION value
          example: '7'
          type: string
        src:
          description: URL to the preview HLS manifest
          example: https://manifest.prod.boltdns.net/.../preview.m3u8?...
          type: string
        type:
          description: MIME type
          example: application/x-mpegURL
          type: string
      title: VideoPreviewSource
      type: object
    TextTrack:
      properties:
        default:
          default: false
          description: whether this is the default track - should only be true for one text track
          type: boolean
        id:
          description: System id for the text track
          readOnly: true
          type: string
        kind:
          default: captions
          description: 'How the track is meant to be used: `subtitles`, `captions`, `descriptions`, `chapters`, `metadata`.'
          enum:
          - subtitles
          - captions
          - descriptions
          - chapters
          - metadata
          - transcripts
          type: string
        label:
          description: label for 

# --- truncated at 32 KB (34 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/brightcove/refs/heads/main/openapi/brightcove-clear-sources-api-openapi.yml