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