Brightcove Redundant Groups API
Operations for creating redundant groups of live jobs for failover in case one stream fails
Operations for creating redundant groups of live jobs for failover in case one stream fails
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 "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
- 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