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 API Testing Tools.\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 "country codes")
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
- exclude_countries
- restricted
title: Create_Live_Job_Request_Body.videocloud.video.geo
type: object
description: map of geo-filtering properties
RedundantGroupCreatePlaybackTokenResponse:
properties:
playback_token:
type: string
description: The playback token
example: live.6cGp7MDhWW4wXw0FKlTM_kruqzN4QO2eklBJhrXt8tBnSCKyuwwBReptfp91K5bBUdfRALYlnu-QXhb9xGEJYR9UCkmGdfwqJqKhx7gngzIg43L9ByQmEMUc"
title: Redundant Group Playback Token Response
type: object
RedundantGroupCuePointInsertionResponse:
properties:
id:
type: string
description: The redundant group id
jobs:
type: array
items:
type: object
description: Job details
properties:
id:
type: string
description: The Live job id
error:
type: string
description: An error message returned if the cuepoint insertion failed
cue_point:
type: object
description: The cuepoint details
properties:
accuracy:
type: string
description: The accuracy of the timing
enum:
- segment
- frame
duration:
type: integer
description: The duration of the break in seconds
id:
type: string
description: Cuepoint id
example:
id: 3ae7fa89943f4a96aa273fbbf175d527
jobs:
- id: 3fbbf175d5273ae7fa89943f4a96aa27
cue_point:
accuracy: segment
duration: 30
id: 3f273ae4a96aa273ae4a96aafa8994
- id: 7fa89943f3fbbf175d5273ae4a96aa27
error: error message
- id: 3ae4a96aa277fa89943f3fbbf175d527
cue_point:
accuracy: segment
duration: 30
id: 3f273ae4a96aa273ae4a96aafa8994
title: Redundant Group Cuepoint Insertion Response
type: object
CreateLiveJobRequestBody.videocloud.video:
properties:
cue_points:
description: Array of cuepoint objects
items:
$ref: '#/components/schemas/CreateLiveJobRequestBody.videocloud.video.cuePoint'
type: array
custom_fields:
description: An object whose properties are `field_name`:`value` pairs - be sure to the *internal* name of the field
type: object
example:
custom_field_1: Entry 1
custom_field_2: Entry 2
description:
description: Video short description
type: string
maxLength: 248
drm_disabled:
description: Use to disable DRM packaging for this video - applies only to DRM-enabled accounts
type: boolean
economics:
type: string
description: whether the video supports ads
enum:
- AD_SUPPORTED
- FREE
geo:
$ref: '#/components/schemas/CreateLiveJobRequestBody.videocloud.video.geo'
long_description:
description: A longer description of the video
type: string
name:
description: Title of the video clip
type: string
maxLength: 255
minLength: 1
reference_id:
description: Reference id for the clip - must be unique within the account
type: string
schedule:
$ref: '#/components/schemas/CreateLiveJobRequestBody.videocloud.video.schedule'
state:
type: string
description: Whether the video should be active or inactive
example: ACTIVE
enum:
- ACTIVE
- INACTIVE
tags:
description: Array of tags for the video - note that tags are string that may not contain a comma
type: object
required:
- name
title: Create_Live_Job_Request_Body.videocloud.video
description: '''An object containing inputs for Video Cloud video object creation - see the [CMS API Reference](https://apis.support.brightcove.com/cms/references/reference.html#operation/CreateVideo)'''
type: object
GetRedundantGroupResponse:
properties:
redundant_groups:
type: array
description: Array of redundant groups
items:
type: object
properties:
id:
type: string
description: ID of the redundant group
account_id:
type: string
description: ID of the Live account
processing_regions:
type: array
description: The processing regions defined for the group
items:
type: string
description: A processing region
storage_regions:
type: array
description: The storage regions defined for the group
items:
type: string
description: A storage region
jobs:
type: array
description: Array of live job ids included in the group
items:
type: string
description: A job id
state:
type: string
description: The current state of the group
enum:
- cancelled
- cancelling
- deleting
- disconnected
- failed
- finished
- finishing
- processing
- standby
- waiting
created_at:
type: integer
description: When the group was created in Epoch time
updated_at:
type: integer
description: When the group was last updated in Epoch time
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
properties:
playback_url:
type: string
description: URL for playback
playback_url_dvr:
type: string
description: URL for playback with DVR
example:
redundant_groups:
- 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
created_at: 1594316624287
updated_at: 1594316624287
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
CreateRedundantGroup:
title: Create Redundant Group Request Body
properties:
ad_insertion:
type: boolean
description: Set to true if this stream should be SSAI enabled
add_cdns:
description: Array of additional CDN providers to be used for manifest generation. For each CDN provided, the manifest will be prepended accordingly
items:
$ref: '#/components/schemas/CreateLiveJobRequestBody.addCdns'
type: array
drm:
type: object
description: Not yet supported
encryption:
type: object
description: Not yet supported
label:
type: string
description: A label to identify the group
live_dvr_sliding_window_duration:
default: 0
description: 'The time, in seconds, to keep in the live DVR manifest. If the stream duration is longer than the window duration, segment references will be removed first in first out. **Note: for SSAI jobs, the limit is `7200`. If you do not want to be charged for DVR usage, set this to 0 in the request body.'
maximum: 86400000
minimum: 0
type: integer
notifications:
description: '''Array of notification destination objects or strings - notifications defined here are for job-level events. A notification will be sent to the destination when selected event occurs. You can use a simple string with a url: "https://log:pass@httpbin.org/post", or you can use an object. See [Events](/live-api/guides/live-api-notifications.html#Events) for an explanation of the events reported in `state_changed` notifications.
Retry strategy: In the event of a failed request to send a notification, the default retry strategy is to retry 50 times with an exponential delay between attempts:
`max_retry_times = 50`
`delay_delta_s = 5`
`next_retry = now_s + retry_count * delay_delta_s`'''
items:
oneOf:
- $ref: '#/components/schemas/Notification'
- type: string
description: A URL to send notifications to
type: array
processing_regions:
description: '''Processing regions for the Redundant Group. This will determine which AWS regions will generate the manifests. Recommended this matches storage_regions and the regions the Live Jobs are created in.'''
type: string
items:
type: string
properties:
region:
type: string
description: An AWS region
enum:
- us-west-2
- us-east-1
- ap-southeast-2
- ap-northeast-1
- ap-southeast-1
- ap-south-1
- eu-central-1
- eu-west-1
probability:
type: integer
minimum: 0
maximum: 1
description: not used currently - should be set to 1
storage_regions:
description: '''Storage regions media chunks and playlists will be uploaded to in S3. Recommended this matches processing_regions and the regions the Live Jobs are created in.'''
type: array
items:
type: string
description: An AWS region
enum:
- us-west-2
- us-east-1
- ap-southeast-2
- ap-northeast-1
- ap-southeast-1
- ap-south-1
- eu-central-1
- eu-west-1
- ap-northeast-2
videocloud:
$ref: '#/components/schemas/CreateLiveJobRequestBody.videocloud'
required:
- label
- processing_regions
- storage_regions
example:
ad_insertion: true
processing_regions:
- us-west-2
storage_regions:
- us-west-2
- us-east-1
label: Test RG
live_dvr_sliding_window_duration: 1800
GetStatusRedundantGroupResponse:
title: Get Redundant Group Status Response
type: object
properties:
id:
type: string
description: Redundant group ID
processing_regions:
type: array
description: Processing regions for the group
items:
type: object
properties:
region:
type: string
description: an AWS region
probability:
type: number
description: Approximate percentage of playback that this region will process (from 0 to 1) - this field is not used yet
storage_regions:
type: array
description: Storage regions for the group
items:
type: string
description: AWS regions
jobs:
type: array
description: Array of objects with properties for the jobs
items:
type: object
properties:
job_id:
type: string
description: Live job id
streams:
type: array
items:
type: string
description: label for a job output
state:
type: string
description: Current state of the job
state:
type: string
description: Current state of the group
created_at:
type: number
description: Date-time the group was created in Epoch time
updated_at:
type: number
description: Date-time the group was last updated in Epoch time
ad_insertion:
type: boolean
description: Whether SSAI is enabled
outputs:
type: object
description: The output URLs
status:
type: object
description: object containing the status for processing regions
properties:
SwitchDrift:
type: number
description: time in nanoseconds of "drift" that occurred in the stream after a failover happened (auto or manual). Failovers are only segment accurate, and since the input jobs are not synced, it is possible that some content may repeated/skipped when a failover occurs and the jobs are not segmented in sync.
Ended:
type: boolean
description: When true, the stream has been ended and an `EXT-X-ENDLIST` tag has been added to the stream
OnAir:
type: string
description: The on air job id
Mode:
type: string
description: The failover mode, manual or auto
InManifest:
type: boolean
description: Whether the current status has been added to the m3u8
MediaSequence:
type: number
description: The media sequence number of the last chunk added to the stream
Healthiness:
type: number
description: A computed number used mostly internally. If it goes to 0, the group is not being updated.
Duration:
type: integer
description: Duration of the last chunk added to the stream.
DiscontinuitySequence:
type: integer
description: Discontinuty Sequence of the last chunk added to the stream
SourceChunk:
type: object
description: Source information of the last chunk added to the stream
UpdatedAt:
type: string
description: Last updated to the redundant group
ProgramDateTime:
type: string
description: The program date time of the last chunk added. to the stream;
example:
id: 481ff4cf0bf74956bc2ec6e126588080
processing_regions:
- region: us-west-2
probability: 1
storage_regions:
- us-west-2
- us-east-1
jobs:
- job_id: 0b76bc73f92f46dc917bbe5061c0c633
streams:
- hls720p
- hls540p
- hls360p
state: processing
- job_id: 0ae5a4a71dc54b3181af0f98ee407c27
streams:
- hls720p
- hls540p
- hls360p
state: processing
state: processing
created_at: 1568057414849
updated_at: 1568059153017
label: Test RG
live_dvr_sliding_window_duration: 1800
status:
us-west-2:
SwitchDrift: 0
Ended: false
OnAir: 0b76bc73f92f46dc917bbe5061c0c633
Mode: auto
InManifest: true
MediaSequence: 10
Healthiness: 0
Duration: 4
DiscontinuitySequence: 1
SourceChunk:
MediaSequence: 3639
Duration: 4
DiscontinuitySequence: 0
ProgramDateTime: '2019-09-09T19:59:36Z'
LiveJobID: 0b76bc73f92f46dc917bbe5061c0c633
UpdatedAt: '2019-09-09T19:59:46Z'
ProgramDateTime: '2019-09-09T19:59:36Z'
ad_insertion: true
outputs:
playback_url: https://playback-qa.a-live.io/r481ff4cf0bf74956bc2ec6e126588080/us-west-2/NA/playlist.m3u8
playback_url_dvr: https://playback-qa.a-live.io/r481ff4cf0bf74956bc2ec6e126588080/us-west-2/NA/playlist_dvr.m3u8
ssai_playback_urls:
26f8470f61374e608e27af9c1b3f7ff0:
playback_url: https://playback-qa.a-live.io/r481ff4cf0bf74956bc2ec6e126588080/us-west-2/NA/26f8470f61374e608e27af9c1b3f7ff0/playlist_ssaiM.m3u8
playback_url_dvr: https://playback-qa.a-live.io/r481ff4cf0bf74956bc2ec6e126588080/us-west-2/NA/26f8470f61374e608e27af9c1b3f7ff0/playlist_dvr_ssaiM.m3u8
description: House Ads - 864b84f712ae40bca1510a8052b34312
type: ads
CreateLiveJobRequestBody.videocloud.video.cuePoint:
properties:
force-stop:
description: whether video is force-stopped at the cue point
type: boolean
metadata:
description: optional metadata string (512 single-byte characters maximum)
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
- CODE
example: AD
type: string
required:
- time
- type
title: Create_Live_Job_Request_Body.videocloud.video.cue_point
type: object
CreateLiveJobRequestBody.addCdns.tokenAuth.media:
description: Object containing tokenization properties
properties:
end_time:
description: The time to end token auth, epoch time in seconds
format: int32
type: integer
start_time:
default: now
description: The time to apply token auth - "now" or epoch time in seconds
format: int32
oneOf:
- type: integer
- enum:
- now
type: string
ttl:
description: The time to live in seconds - either `end_time` or `ttl` is required
format: int32
type: integer
title: Create_Live_Job_Request_Body.add_cdns.token_auth.media
type: object
parameters:
sort:
name: sort
in: query
description: Attribute to sort jobs by (`created_at` | `modified_at`, default is `created_at`)
style: form
explode: true
schema:
type: string
enum:
- created_at
- modified_at
default: created_at
JobId:
name: job_id
in: path
description: Live job ID
required: true
style: simple
explode: false
schema:
type: string
start_token:
name: start_token
in: query
description: Next token from previous page; do not specify when fetching first page
style: form
explode: true
schema:
type: string
page_size:
name: page_size
in: query
description: Max number of items to return in one request (1-1000, default is 10)
style: form
explode: true
schema:
type: integer
minimum: 1
maximum: 1000
default: 10
redundant_group_id:
name: redundant_group_id
in: path
description: Redundant group ID
required: true
style: simple
explode: false
schema:
type: string
account_id:
name: account_id
in: query
description: Filter results by particular account, or specify ‘*’ to search all accounts. Default value is account API key belongs to
style: form
explode: true
schema:
type: string
XAPIKEY:
name: X-API-KEY
in: header
description: 'X-API-KEY: {Your_Live_API_Key}'
required: true
style: simple
explode: false
schema:
type: string
sort_dir:
name: sort_dir
in: query
description: Sort direction (default is asc):`asc` - ascending; `desc` - descending
style: form
explode: true
schema:
type: string
enum:
- asc
- desc
default: asc
ContentType:
name: Content-Type
in: header
description: 'Content-Type: application/json'
required: true
style: simple
explode: false
schema:
type: string
default: application/json
example: application/json
user_id:
name: user_id
in: query
description: Filter results by one or more user IDs
style: form
explode: true
schema:
oneOf:
- type: string
description: User id
- type: array
items:
type: string
description: User id
force:
name: force
in: query
description: "The `force` parameter serves different purposes for different requests: \n1. For [force failover requests](#operation/ForceRedundantStreamFailover): force failover for a redundant stream without going to manual mode\n2. For [remove job from redundant group requests](#operation/RemoveJobRedundantGroup): force removal of on-air job\n3. For [delete redundant group requests](#operation/DeleteRedundantGroup): force delete redundant group in processing state\n\nNote that `force` is a string, not a boolean. The value must be `true`, not `1`."
style: form
explode: true
schema:
type: string
RedundantGroupState:
name: state
in: query
description: Filter redundant grous by state
style: form
explode: true
schema:
type: string
description: Job state
enum:
- cancelled
- cancelling
- deleting
- disconnected
- failed
- finished
- finishing
- processing
- standby
- waiting
securitySchemes:
BC_OAuth2:
type: oauth2
description: Brightcove OAuth API. See the [support documentation](/oauth/index.html) or [Getting Access Tokens](/oauth/code-samples/oauth-api-sample-get-access-token.html) to learn more
flows:
clientCredentials:
tokenUrl: https://oauth.brightcove.com/v4/access_token
scopes:
video-cloud/analytics/read: Read analytics data
video-cloud/video/read: Read video data
x-bc-implicit-head: true
x-bc-implicit-options: true
x-bc-upstream: https://backend_server