Brightcove Redundant Groups API

Operations for creating redundant groups of live jobs for failover in case one stream fails

OpenAPI Specification

brightcove-redundant-groups-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Brightcove Analytics API Reference Access Tokens Redundant Groups 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: Redundant Groups
  description: Operations for creating redundant groups of live jobs for failover in case one stream fails
paths:
  /redundantgroups:
    post:
      tags:
      - Redundant Groups
      summary: Create Redundant Group
      description: Creates a redundant group of live jobs to provide failover in case one stream fails
      operationId: CreateRedundantGroup
      parameters:
      - $ref: '#/components/parameters/ContentType'
      - $ref: '#/components/parameters/XAPIKEY'
      requestBody:
        description: Create a redundant group of multiple Live jobs
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateRedundantGroup'
        required: true
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateRedundantGroupResponse'
        '400':
          description: 'BAD_REQUEST: Invalid input value - see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
        '401':
          description: 'UNAUTHORIZED: Unauthorized - see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
        '404':
          description: 'RESOURCE_NOT_FOUND: The api could not find the resource you requested - see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
        '500':
          description: 'INTERNAL_SERVER_ERROR: see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
      deprecated: false
      security: []
      x-operation-settings:
        CollectParameters: false
        AllowDynamicQueryParameters: false
        AllowDynamicFormParameters: false
        IsMultiContentStreaming: false
    get:
      tags:
      - Redundant Groups
      summary: Get Redundant Groups
      description: Get redundant groups for the account
      operationId: GetRedundantGroups
      parameters:
      - $ref: '#/components/parameters/ContentType'
      - $ref: '#/components/parameters/XAPIKEY'
      - $ref: '#/components/parameters/start_token'
      - $ref: '#/components/parameters/sort'
      - $ref: '#/components/parameters/sort_dir'
      - $ref: '#/components/parameters/user_id'
      - $ref: '#/components/parameters/account_id'
      - $ref: '#/components/parameters/RedundantGroupState'
      - $ref: '#/components/parameters/page_size'
      - name: created_at
        in: query
        description: Filter results by Unix time of group creation (in milliseconds)
        required: false
        schema:
          type: integer
      - name: updated_at
        in: query
        description: Filter results by Unix time of group last updated (in milliseconds)
        required: false
        schema:
          type: integer
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetRedundantGroupResponse'
        '400':
          description: 'BAD_REQUEST: Invalid input value - see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
        '401':
          description: 'UNAUTHORIZED: Unauthorized - see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
        '404':
          description: 'RESOURCE_NOT_FOUND: The api could not find the resource you requested - see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
        '500':
          description: 'INTERNAL_SERVER_ERROR: see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
      deprecated: false
      security: []
      x-operation-settings:
        CollectParameters: false
        AllowDynamicQueryParameters: false
        AllowDynamicFormParameters: false
        IsMultiContentStreaming: false
  /redundantgroups/{redundant_group_id}/jobs:
    post:
      tags:
      - Redundant Groups
      summary: Add Jobs to Redundant Group
      description: Add Jobs to Redundant Group
      operationId: AddJobsRedundantGroup
      parameters:
      - $ref: '#/components/parameters/ContentType'
      - $ref: '#/components/parameters/XAPIKEY'
      - $ref: '#/components/parameters/redundant_group_id'
      requestBody:
        description: Create a redundant group of multiple Live jobs
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddJobsRedundantGroupRequest'
        required: true
      responses:
        '200':
          description: A success response will just contain the group id
        '400':
          description: 'BAD_REQUEST: Invalid input value - see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
        '401':
          description: 'UNAUTHORIZED: Unauthorized - see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
        '404':
          description: 'RESOURCE_NOT_FOUND: The api could not find the resource you requested - see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
        '500':
          description: 'INTERNAL_SERVER_ERROR: see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
      deprecated: false
      security: []
      x-operation-settings:
        CollectParameters: false
        AllowDynamicQueryParameters: false
        AllowDynamicFormParameters: false
        IsMultiContentStreaming: false
  /redundantgroups/{redundant_group_id}/jobs/{job_id}:
    delete:
      tags:
      - Redundant Groups
      summary: Remove a Job from Redundant Group
      description: Remove the specified Jobs from a Redundant Group; normally the operation will not remove the job that is currently `on_air`, but adding the `force=true` query parameter will remove it
      operationId: RemoveJobRedundantGroup
      parameters:
      - $ref: '#/components/parameters/ContentType'
      - $ref: '#/components/parameters/XAPIKEY'
      - $ref: '#/components/parameters/redundant_group_id'
      - $ref: '#/components/parameters/JobId'
      - $ref: '#/components/parameters/force'
      responses:
        '204':
          description: 204 NO_CONTENT
        '400':
          description: 'BAD_REQUEST: Invalid input value - see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
        '401':
          description: 'UNAUTHORIZED: Unauthorized - see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
        '404':
          description: 'RESOURCE_NOT_FOUND: The api could not find the resource you requested - see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
        '500':
          description: 'INTERNAL_SERVER_ERROR: see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
      deprecated: false
      security: []
      x-operation-settings:
        CollectParameters: false
        AllowDynamicQueryParameters: false
        AllowDynamicFormParameters: false
        IsMultiContentStreaming: false
  /redundantgroups/{redundant_group_id}:
    get:
      tags:
      - Redundant Groups
      summary: Get Redundant Group Status
      description: Get the current status of a redundant group
      operationId: GetStatusRedundantGroup
      parameters:
      - $ref: '#/components/parameters/ContentType'
      - $ref: '#/components/parameters/XAPIKEY'
      - $ref: '#/components/parameters/redundant_group_id'
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetStatusRedundantGroupResponse'
        '400':
          description: 'BAD_REQUEST: Invalid input value - see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
        '401':
          description: 'UNAUTHORIZED: Unauthorized - see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
        '404':
          description: 'RESOURCE_NOT_FOUND: The api could not find the resource you requested - see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
        '500':
          description: 'INTERNAL_SERVER_ERROR: see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
      deprecated: false
      security: []
      x-operation-settings:
        CollectParameters: false
        AllowDynamicQueryParameters: false
        AllowDynamicFormParameters: false
        IsMultiContentStreaming: false
    delete:
      tags:
      - Redundant Groups
      summary: Delete a redundant group
      description: Deletes a redundant group and ends the redundant stream. Note that alternatively you can put the stream in standby mode by removing all jobs from it.
      operationId: DeleteRedundantGroup
      parameters:
      - $ref: '#/components/parameters/ContentType'
      - $ref: '#/components/parameters/XAPIKEY'
      - $ref: '#/components/parameters/redundant_group_id'
      - $ref: '#/components/parameters/force'
      responses:
        '204':
          description: 204 NO_CONTENT
        '400':
          description: 'BAD_REQUEST: Invalid input value - see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
        '401':
          description: 'UNAUTHORIZED: Unauthorized - see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
        '404':
          description: 'RESOURCE_NOT_FOUND: The api could not find the resource you requested - see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
        '500':
          description: 'INTERNAL_SERVER_ERROR: see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
      deprecated: false
      security: []
      x-operation-settings:
        CollectParameters: false
        AllowDynamicQueryParameters: false
        AllowDynamicFormParameters: false
        IsMultiContentStreaming: false
  /redundantgroups/{redundant_group_id}/switch:
    put:
      tags:
      - Redundant Groups
      summary: Force Redundant Stream Failover
      description: Force failover from the `on_air` stream to a specified secondary stream; note that you can also accomplish this by stopping the encoder for the `on_air` stream.
      operationId: ForceRedundantStreamFailover
      parameters:
      - $ref: '#/components/parameters/ContentType'
      - $ref: '#/components/parameters/XAPIKEY'
      - $ref: '#/components/parameters/redundant_group_id'
      - $ref: '#/components/parameters/force'
      requestBody:
        description: Force failover to a secondary job
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ForceRedundantStreamFailover'
        required: true
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    description: ID of the redundant group
        '400':
          description: 'BAD_REQUEST: Invalid input value - see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
        '401':
          description: 'UNAUTHORIZED: Unauthorized - see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
        '404':
          description: 'RESOURCE_NOT_FOUND: The api could not find the resource you requested - see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
        '500':
          description: 'INTERNAL_SERVER_ERROR: see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
      deprecated: false
      security: []
      x-operation-settings:
        CollectParameters: false
        AllowDynamicQueryParameters: false
        AllowDynamicFormParameters: false
        IsMultiContentStreaming: false
  /redundantgroups/{redundant_group_id}/activate:
    put:
      tags:
      - Redundant Groups
      summary: Activates all SEP Jobs in the Group
      description: Activates all SEP Jobs in the Redundant Group.
      operationId: ActivateRedundantGroup
      parameters:
      - $ref: '#/components/parameters/ContentType'
      - $ref: '#/components/parameters/XAPIKEY'
      - $ref: '#/components/parameters/redundant_group_id'
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    description: ID of the redundant group
                  jobs:
                    type: array
                    description: Array of objects.
                    items:
                      type: object
                      description: Object containing either an id for a job that was activated or an error message for jobs that failed to activate.
                      properties:
                        id:
                          type: string
                          description: ID of an SEP job that was activated
                        error:
                          type: string
                          description: Error message for a job that failed to activate
                example:
                  id: 3d68bcec490849bea6970be4646f5fd9
                  jobs:
                  - id: f19fdcfaf84d4b55b603c177cbb72f8f
                  - error: Error activating Job
        '401':
          description: 'UNAUTHORIZED: Unauthorized - see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
        '404':
          description: 'RESOURCE_NOT_FOUND: The api could not find the resource you requested - see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
        '500':
          description: 'INTERNAL_SERVER_ERROR: see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
      deprecated: false
      security: []
      x-operation-settings:
        CollectParameters: false
        AllowDynamicQueryParameters: false
        AllowDynamicFormParameters: false
        IsMultiContentStreaming: false
  /redundantgroups/{redundant_group_id}/deactivate:
    put:
      tags:
      - Redundant Groups
      summary: Deactivates all SEP Jobs in the Group
      description: Deactivates all SEP Jobs in the Redundant Group.
      operationId: DeactivateRedundantGroup
      parameters:
      - $ref: '#/components/parameters/ContentType'
      - $ref: '#/components/parameters/XAPIKEY'
      - $ref: '#/components/parameters/redundant_group_id'
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    description: ID of the redundant group
                  jobs:
                    type: array
                    description: Array of objects.
                    items:
                      type: object
                      description: Object containing either an id for a job that was activated or an error message for jobs that failed to deactivate.
                      properties:
                        id:
                          type: string
                          description: ID of an SEP job that was deactivated
                        error:
                          type: string
                          description: Error message for a job that failed to deactivate
                example:
                  id: 3d68bcec490849bea6970be4646f5fd9
                  jobs:
                  - id: f19fdcfaf84d4b55b603c177cbb72f8f
                  - error: Error deactivating Job
        '401':
          description: 'UNAUTHORIZED: Unauthorized - see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
        '404':
          description: 'RESOURCE_NOT_FOUND: The api could not find the resource you requested - see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
        '500':
          description: 'INTERNAL_SERVER_ERROR: see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
      deprecated: false
      security: []
      x-operation-settings:
        CollectParameters: false
        AllowDynamicQueryParameters: false
        AllowDynamicFormParameters: false
        IsMultiContentStreaming: false
  /redundantgroups/{redundant_group_id}/cuepoint:
    post:
      tags:
      - Redundant Groups
      summary: Insert cuepoint for redundant group
      description: Manually inserts a cuepoint for a redundant Live job.
      operationId: InsertCuepointRedundantGroup
      parameters:
      - $ref: '#/components/parameters/ContentType'
      - $ref: '#/components/parameters/XAPIKEY'
      - $ref: '#/components/parameters/redundant_group_id'
      requestBody:
        description: Inserts a manual Cue-Out with a duration to the Live ingest point for the redundant group.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ManualAdCuePointInsertionbody'
        required: true
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RedundantGroupCuePointInsertionResponse'
        '400':
          description: 'BAD_REQUEST: Invalid input value - see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
        '401':
          description: 'UNAUTHORIZED: Unauthorized - see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
        '404':
          description: 'RESOURCE_NOT_FOUND: The api could not find the resource you requested - see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
        '500':
          description: 'INTERNAL_SERVER_ERROR: see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
      deprecated: false
      security: []
      x-operation-settings:
        CollectParameters: false
        AllowDynamicQueryParameters: false
        AllowDynamicFormParameters: false
        IsMultiContentStreaming: false
  /redundantgroups/{redundant_group_id}/playback-token:
    post:
      tags:
      - Redundant Groups
      summary: Create playback token for a redundant group
      description: 'Redundant groups created via the Live module in Studio (or by specifying `videocloud.video` when creating a redundant group directly through the API) automatically create a special Video Cloud video that, when used in a Brightcove player, makes use of the `ad_config_id` property to select the specific source desired (i.e. SSAI source, DVR/no DVR, BYOCDN). Redundant groups which have SSAI enabled must always provide an `ad_config_id` in the player, even if the source desired is non-SSAI (this prevents an end user from omitting the `ad_config_id` and receiving a clear stream). **This applies only to live Video Cloud videos created via the Live module or Live API - manually created Video Cloud remote assets have no such restriction.**


        The request returns a generated `playback_token`.


        This behavior is handled automatically when you publish a live video from the Live module publishing screen, but may be useful if you have a custom workflow'
      operationId: CreatePlaybackTokenRedundantGroup
      parameters:
      - $ref: '#/components/parameters/ContentType'
      - $ref: '#/components/parameters/XAPIKEY'
      - $ref: '#/components/parameters/redundant_group_id'
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RedundantGroupCreatePlaybackTokenResponse'
        '400':
          description: 'BAD_REQUEST: Invalid input value - see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
        '401':
          description: 'UNAUTHORIZED: Unauthorized - see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
        '404':
          description: 'RESOURCE_NOT_FOUND: The api could not find the resource you requested - see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
        '500':
          description: 'INTERNAL_SERVER_ERROR: see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
      deprecated: false
      security: []
      x-operation-settings:
        CollectParameters: false
        AllowDynamicQueryParameters: false
        AllowDynamicFormParameters: false
        IsMultiContentStreaming: false
components:
  schemas:
    CreateRedundantGroupResponse:
      properties:
        id:
          type: string
          description: ID of the redundant group
        processing_regions:
          type: array
          description: The processing regions defined for the group
        storage_regions:
          type: array
          description: The storage regions defined for the group
        jobs:
          type: array
          description: Array of live job ids included in the group
        state:
          type: string
          description: The current state of the group
          enum:
          - CANCELLED
          - CANCELLING
          - DELETING
          - DISCONNECTED
          - FAILED
          - FINISHED
          - FINISHING
          - PROCESSING
          - STANDBY
          - WAITING
        live_dvr_sliding_window_duration:
          type: integer
          description: Duration of live DVR sliding window in seconds
        label:
          type: string
          description: The label for the group
        status:
          type: object
          description: The properties will be processing regions and the value their current status
        ad_insertion:
          type: boolean
          description: Whether this group is SSAI enabled
        outputs:
          type: object
          description: Outputs for the group
      example:
        id: 91c268a6ec5240d79a6004f4ccf0dc6f
        account_id: a95ac581551b4478b27910e5675db1f8
        user_id: c2691d4d039040be96c190a949d754a7
        processing_regions:
        - region: us-west-2
          probability: 1
        storage_regions:
        - us-west-2
        - us-east-1
        jobs: []
        state: standby
        label: Test Redundant Group
        live_dvr_sliding_window_duration: 86400
        status:
          us-west-2: null
        outputs:
          playback_url: https://bcovlive-a.akamaihd.net/r91c268a6ec5240d79a6004f4ccf0dc6f/us-west-2/NA/playlist.m3u8
          playback_url_dvr: https://bcovlive-a.akamaihd.net/r91c268a6ec5240d79a6004f4ccf0dc6f/us-west-2/NA/playlist_dvr.m3u8
    CreateLiveJobRequestBody.videocloud:
      properties:
        account_id:
          description: The Video Cloud Account ID the video for the remote asset live stream should be created in. Only required if the account ID is not the default configured in your Live account. If set, you must also set the `videocloud.credentials` property.
          type: number
        credentials:
          description: Credentials to use for Video Cloud authentication. Only required if you set `videocloud.account_id`.
          type: string
        live_to_vod:
          type: boolean
          default: false
          description: If set to `true`, a full VOD version of the live event will be created after the event is complete. Requires that there is a Video Cloud account associated with the Live account, *and* the `videocloud.video` property is set.
        mode:
          type: string
          description: Expedite clip publishing by leveraging existing live renditions and segment boundaries
          enum:
          - instant
        video:
          $ref: '#/components/schemas/CreateLiveJobRequestBody.videocloud.video'
      required:
      - video
      title: Create_Live_Job_Request_Body.videocloud
      type: object
      description: Video Cloud customers have the option to create a video to use for the live stream. The `videocloud` object in the `job` settings is used for this purpose. If you want to define VOD clips to send to Video Cloud, use the `videocloud` object in `outputs`.
    AddJobsRedundantGroupRequest:
      title: Add Jobs to a Redundant Group Request Body
      description: A set of job ids to add to a redundant group.
      type: array
      items:
        type: object
        properties:
          job_id:
            type: string
            description: A live job id - required unless you are removing all jobs
          playlist:
            type: string
            description: Label of playlist to use as the outputs for the stream. If `playlist` is defined, `streams` **must** be *undefined*.
          streams:
            type: array
            description: List of stream labels to be used as outputs for the stream. If `streams` is defined, `playlist` **must** be *undefined*.
            items:
              type: string
              description: A stream label
        required:
        - job_id
      example:
      - job_id: 0b76bc73f92f46dc917bbe5061c0c633
      - job_id: 0ae5a4a71dc54b3181af0f98ee407c27
    Notification:
      properties:
        credentials:
          description: Credentials for the destination, if required.
          type: string
        event:
          description: Event type to send notifications for.  It’s recommended to set events on the job and not individual rendition outputs since renditions will finish simultaneously.
          type: string
          enum:
          - state_changed
          - first_segment_uploaded
          - output_finished
          - rtmp_output_state_changed
        url:
          description: Destination for the notification.
          type: string
      required:
      - url
      - event
      title: notification
      type: object
    ForceRedundantStreamFailover:
      title: Force failover request body
      type: object
      properties:
        mode:
          type: string
          enum:
          - auto
          - manual
          default: auto
          description: 'The mode for failover. `manual` means automatic failover will **not** occur. To resume automatic failover, you must submit another request with `mode: auto`'
        on_air:
          type: string
          description: The id of the job that should be used for streaming. To force failover, this must be a different job than the one that is currently `on_air`
    CreateLiveJobRequestBody.addCdns:
      properties:
        label:
          description: A label to identify the CDN.
          type: string
        prepend:
          description: CDN hostname to be prepended to addresses
          type: string
        protocol:
          description: Protocol to use for the stream delivery
          enum:
          - http
          - https
          type: string
        token_auth:
          $ref: '#/components/schemas/CreateLiveJobRequestBody.addCdns.tokenAuth'
        vendor:
          description: CDN vendor such as akamai
          type: string
      required:
      - label
      - prepend
      - protocol
      title: Create_Live_Job_Request_Body.add_cdns
      type: object
    CreateLiveJobRequestBody.videocloud.video.schedule:
      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
          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
          type: string
      required:
      - ends_at
      - starts_at
      title: Create_Live_Job_Request_Body.videocloud.video.schedule
      type: object
      description: map of scheduling properties
    CreateLiveJobRequestBody.addCdns.tokenAuth:
      description: 'Token authentication details


        **Note: If you don''t have your secret key for Akamai, or need to have a new one, contact your Customer Success Manager or Brightcove Support.**'
      properties:
        auth_type:
          description: Token authentication type - currently, the only supported value is `Akamai2.0`
          type: string
        key:
          description: Your Akamai token auth password
          type: string
        media:
          $ref: '#/components/schemas/CreateLiveJobRequestBody.addCdns.tokenAuth.media'
        token_name:
          description: Your Akamai token token name
          type: string
      required:
      - auth_type
      - key
      - token_name
      title: Create_Live_Job_Request_Body.add_cdns.token_auth
      type: object
    ManualAdCuePointInsertionbody:
      properties:
        ad_server_data:
          description: a set of any variables (key/value pairs) that should be passed to the adServer
          type: object
        cancel:
          description: When `true`, cuepoint specified by `cuepoint_id` will be canceled. If an ad break is already in progress, a crash-out will occur, returning to the main content.
          type: boolean
          default: false
        cuepoint_id:
          description: ID to use when creating cuepoint. If `cancel` is `true`, then this field is required and is the ID of cuepoint to cancel.
          type: string
        duration:
          description: An integer value to indicate the length of the ad break in seconds
          type: number
        timecode:
          description: "'When to insert the cuepoint in SMPTE HH:MM:SS:FF format from the stream start (FF = frames); if omitted, the cuepoint will be inserted immediately. Note:\n  1. If you use the timecode property, the job only only stores the most recent request for insertion\n  2. If you use the timecode property, the encoder must be sending SMPTE-formatted (HH:MM:SS:FF) timecode stored in the `tc` property via `OnFI`\n  3. Software encoders such as Wirecast and OBS do not support the sending timecode via `OnFI` packets in the RTMP stream\n  4. Elemental hardware encoders do support the sending timecode via `OnFI` packets in the RTMP stream'"
          type: string
          example:
            ad_server_data:
              subject: wildlife
            duration: 30
            timecode: 09:23:18:05
      required:
      - duration
      title: Manual_Ad_Cue_Point_InsertionBody
      type: object
    CreateLiveJobRequestBody.videocloud.video.geo:
      properties:
        countries:
          description: array of ISO 3166 list of [2-letter codes](https://www.iso.org/obp/ui/#home) (search for &quot;country codes&quot;)
          type: string
        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
      - exclud

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