openapi: 3.2.0 info: title: Istreamplanet Source Previews API version: v1.52.0 contact: email: live-control-plane-devs@wbd.com name: ChannelAPI Support url: https://warnermedia.enterprise.slack.com/archives/C0648UND8SD description: 'Operations tagged Source Previews across 2 of this provider''s published API definitions: istreamplanet-aventus-channels-openapi.json, istreamplanet-aventus-channels-openapi.yml. Each path carries the servers of the definition it was published in.' servers: - description: prod url: https://api.istreamplanet.com security: - authcode: [] m2m: [] tags: - name: Source Previews paths: /v2/{org}/sources/{source-id}/preview: put: description: 'Create Source Preview, if one does not already exist. This operation is idempotent and may be called multiple times. A response status code of 201 Created indicates the necessary Source Preview resources have been created. Once created, it may take up to 30 seconds before all resources to be running and available to provide Source Preview Streams information. A response status code of 204 NoContent indicates the requisite Source Preview resources have already been created.' operationId: put-source-preview parameters: - description: Organization name in: path name: org required: true schema: description: Organization name type: string - description: Unique source identifier in: path name: source-id required: true schema: description: Unique source identifier pattern: ^.*$ type: string responses: '201': description: Created '204': description: No Content '304': description: Not Modified '400': content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' description: Bad Request '401': content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' description: Unauthorized '403': content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' description: Forbidden '404': content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' description: Not Found '409': content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' description: Conflict '412': content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' description: Precondition Failed '422': content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' description: Unprocessable Entity '499': content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' '500': content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' description: Internal Server Error '503': content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' description: Service Unavailable summary: Create Source Preview tags: - Source Previews servers: - description: prod url: https://api.istreamplanet.com /v2/{org}/sources/{source-id}/preview/ingest-pin: delete: description: 'Remove the preferrence for primary or secondary ingest feed from the Source Preview''s transcoder. Automated source failover based on feed quality will be resumed.' operationId: source-preview-unpin-ingest parameters: - description: Organization name in: path name: org required: true schema: description: Organization name type: string - description: Unique source identifier in: path name: source-id required: true schema: description: Unique source identifier pattern: ^.*$ type: string responses: '204': description: No Content '400': content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' description: Bad Request '404': content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' description: Not Found '406': content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' description: Not Acceptable '422': content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' description: Unprocessable Entity '499': content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' '500': content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' description: Internal Server Error '501': content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' description: Not Implemented '503': content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' description: Service Unavailable summary: Unpin Ingest tags: - Source Previews put: description: 'Pin the Source Preview''s transcoder to prefer either primary or secondary ingest feeds. Note that this will disable some automated ingest failover that is based on the quality of the feeds.' operationId: source-preview-pin-ingest parameters: - description: Organization name in: path name: org required: true schema: description: Organization name type: string - description: Unique source identifier in: path name: source-id required: true schema: description: Unique source identifier pattern: ^.*$ type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/PinSourceRequest' required: true responses: '204': description: No Content '400': content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' description: Bad Request '404': content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' description: Not Found '406': content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' description: Not Acceptable '408': content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' description: Request Timeout '413': content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' description: Request Entity Too Large '422': content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' description: Unprocessable Entity '499': content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' '500': content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' description: Internal Server Error '501': content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' description: Not Implemented '503': content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' description: Service Unavailable summary: Pin Ingest tags: - Source Previews servers: - description: prod url: https://api.istreamplanet.com /v2/{org}/sources/{source-id}/preview/stream: get: description: 'Gets the information required for the Low Latency Preview Player to enable playback. ''PUT /v2/{org}/sources/{source-id}/preview'' SHOULD be called prior to ensure that the necessary Source Preview resources have been created. Otherwise, the Source Preview Stream will not be available and this API route will never succeed.' operationId: get-source-preview-stream parameters: - description: Organization name in: path name: org required: true schema: description: Organization name type: string - description: Unique source identifier in: path name: source-id required: true schema: description: Unique source identifier pattern: ^.*$ type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/GetSourcePreviewStreamResponseBody' description: OK '400': content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' description: Bad Request '404': content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' description: Not Found '406': content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' description: Not Acceptable '422': content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' description: Unprocessable Entity '499': content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' '500': content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' description: Internal Server Error '501': content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' description: Not Implemented '503': content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' description: Service Unavailable summary: Get Source Preview Stream tags: - Source Previews servers: - description: prod url: https://api.istreamplanet.com /v2/{org}/sources/{source-id}/preview/transcoder-status: get: description: Get the current status for the live transcoder powering the Source Preview. operationId: get-source-preview-transcoder-status parameters: - description: Organization name in: path name: org required: true schema: description: Organization name type: string - description: Unique source identifier in: path name: source-id required: true schema: description: Unique source identifier pattern: ^.*$ type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/GetSourcePreviewTranscoderStatusResponseBody' description: OK '400': content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' description: Bad Request '404': content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' description: Not Found '422': content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' description: Unprocessable Entity '499': content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' '500': content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' description: Internal Server Error '501': content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' description: Not Implemented '503': content: application/problem+json: schema: $ref: '#/components/schemas/ErrorModel' description: Service Unavailable summary: Get Transcoder Status tags: - Source Previews servers: - description: prod url: https://api.istreamplanet.com components: schemas: SourceStatusStreamInfo: additionalProperties: false properties: mapped: description: Indicates whether the stream is being used by the transcoder. The remaining fields are only valid if 'mapped' is true. type: boolean pid: format: int32 minimum: 0 type: integer raw_type: description: The type of the stream as reported in the PMT. enum: - MP2T_STREAM_TYPE_MPEG1_VIDEO - MP2T_STREAM_TYPE_MPEG2_VIDEO - MP2T_STREAM_TYPE_MPEG1_AUDIO - MP2T_STREAM_TYPE_MPEG2_AUDIO - MP2T_STREAM_TYPE_PES_PRIVATE_DATA - MP2T_STREAM_TYPE_ADTS_AAC - MP2T_STREAM_TYPE_METADATA - MP2T_STREAM_TYPE_AVC - MP2T_STREAM_TYPE_HEVC - MP2T_STREAM_TYPE_TEMI - MP2T_STREAM_TYPE_AC3 - MP2T_STREAM_TYPE_SCTE35 - MP2T_STREAM_TYPE_EAC3 - MP2T_STREAM_TYPE_ENCRYPTED_AC3 - MP2T_STREAM_TYPE_ENCRYPTED_EAC3 - MP2T_STREAM_TYPE_ENCRYPTED_ADTS_AAC - MP2T_STREAM_TYPE_ENCRYPTED_AVC - MP2T_STREAM_TYPE_ID3 - MP2T_STREAM_TYPE_ANC - MP2T_STREAM_TYPE_UNKNOWN type: string type: description: The type of the stream inferred by the demuxer. Includes MP2TStreamType's pseudo-types values. It is not guaranteed to be the same value reported in the PMT. E.g. MP2T_STREAM_TYPE_PES_PRIVATE_DATA plus the right descriptor might result in MP2T_STREAM_TYPE_ID3. enum: - MP2T_STREAM_TYPE_MPEG1_VIDEO - MP2T_STREAM_TYPE_MPEG2_VIDEO - MP2T_STREAM_TYPE_MPEG1_AUDIO - MP2T_STREAM_TYPE_MPEG2_AUDIO - MP2T_STREAM_TYPE_PES_PRIVATE_DATA - MP2T_STREAM_TYPE_ADTS_AAC - MP2T_STREAM_TYPE_METADATA - MP2T_STREAM_TYPE_AVC - MP2T_STREAM_TYPE_HEVC - MP2T_STREAM_TYPE_TEMI - MP2T_STREAM_TYPE_AC3 - MP2T_STREAM_TYPE_SCTE35 - MP2T_STREAM_TYPE_EAC3 - MP2T_STREAM_TYPE_ENCRYPTED_AC3 - MP2T_STREAM_TYPE_ENCRYPTED_EAC3 - MP2T_STREAM_TYPE_ENCRYPTED_ADTS_AAC - MP2T_STREAM_TYPE_ENCRYPTED_AVC - MP2T_STREAM_TYPE_ID3 - MP2T_STREAM_TYPE_ANC - MP2T_STREAM_TYPE_UNKNOWN type: string video: $ref: '#/components/schemas/VideoStreamDetails' description: Only one of ['video'] may be set. type: object PinSourceRequest: additionalProperties: false properties: $schema: description: A URL to the JSON Schema for this object. examples: - https://api.istreamplanet.com/schemas/PinSourceRequest.json format: uri readOnly: true type: string ingest_origin: description: Which ingest origin to pin the transcoder to. enum: - PRIMARY - SECONDARY type: string type: object SourceStatusPmt: additionalProperties: false properties: last_update: description: The time that the PMT was updated. format: date-time type: string pcr_pid: format: int32 minimum: 0 type: integer pid: format: int32 minimum: 0 type: integer program_number: description: The following fields correspond to fields in github.com/iStreamPlanet/go-media/mp2t.PMT format: int32 minimum: 0 type: integer streams: items: $ref: '#/components/schemas/SourceStatusStreamInfo' type: - array - 'null' type: object DynamicStateStatus: additionalProperties: false properties: dynamic_state: $ref: '#/components/schemas/DynamicState' description: The transcoder's dynamic state settings. last_update: description: The timestamp of the last update to the dynamic state. format: date-time type: string type: object ContentLightLevelInfo: additionalProperties: false properties: max_cll: description: Max content light level in nits. format: double type: number max_fall: description: Max frame (pic) average light level in nits. format: double type: number type: object SourceStatus: additionalProperties: false properties: active: description: Reports whether this is the active source - i.e. the source being transcoded. type: boolean cc_errors: description: Continuity counter error total since the transcoder pod started. format: int64 type: integer last_data_received: description: The last time data was received for this source. format: date-time type: string pinned: description: Reports whether this source was pinned to be always preferred (if available). type: boolean pmt: $ref: '#/components/schemas/SourceStatusPmt' description: The PMT for this source. quality_score: description: A measure of the source's quality if available. Zero is the perfect score. The higher the score, the worst the quality. format: double type: number unavailable_reason: description: If unset (empty string), the source is available, and could be made active if necessary. Otherwise, it contains a message indicating why the source is unavailable. E.g. 'No source AUs received'. type: string type: object IngestStatus: additionalProperties: false properties: primary_status: $ref: '#/components/schemas/SourceStatus' description: Primary source status. secondary_status: $ref: '#/components/schemas/SourceStatus' description: Secondary source status. source_loss_slate_status: $ref: '#/components/schemas/SourceStatus' description: Source-loss slate status. source_merging_active: description: Reports whether source merging is currently active i.e. that the transcoder is merging samples from primary and secondary sources to conceal errors. type: boolean source_merging_disabled: description: Reports whether source merging was disabled via API. type: boolean type: object TextOverlay: additionalProperties: false properties: background: description: The background color and opacity given in RGBA hex format. Background applies to the background of both the text and the text padding. examples: - '#A2A2A2FF' minLength: 7 type: string font_color: description: The font color to use for the text overlay. Given as an RGB hex string. examples: - '#FF0000' type: string font_height: description: The font height as a percentage of screen height. examples: - 5 exclusiveMinimum: 0 format: float type: number font_resource_id: description: The font resource id to use for the text overlay. This must reference a dynamic resource of type 'FONT'. examples: - my-font minLength: 1 type: string padding: $ref: '#/components/schemas/TextOverlayPadding' description: The padding around the text. Used for positioning and for background. text: description: The text to overlay on the video. examples: - Hello World! minLength: 1 type: string x: $ref: '#/components/schemas/Position' description: The horizontal position of the text overlay. Zero is the left side of the screen/overlay. y: $ref: '#/components/schemas/Position' description: The vertical position of the text overlay. Zero is the top of the screen/overlay. type: object Cie1931P: additionalProperties: false properties: x: format: double type: number y: format: double type: number type: object GraphicOverlay: additionalProperties: false properties: resource_id: description: The key to the dynamic resource definition in the channel's transcoder configuration. This must reference a dynamic resource of type 'GRAPHIC'. examples: - channel-logo minLength: 1 type: string x: $ref: '#/components/schemas/Position' y: $ref: '#/components/schemas/Position' type: object AudioTrackInfo: additionalProperties: false properties: bitrate: format: int32 type: integer codec_string: description: codec_string will be set to the RFC 6381 compliant string that represents the specific codec in this AudioTrackInfo. ex. 'mp4a.40.2' for AAC Low-Complexity. type: string id: format: int32 minimum: 0 type: integer name: description: Friendly name of the AudioTrack. type: string num_channels: format: int32 type: integer sample_rate: format: int32 type: integer type: object VideoStreamDetails: additionalProperties: false properties: bit_depth: format: int32 type: integer clli: $ref: '#/components/schemas/ContentLightLevelInfo' color_description: $ref: '#/components/schemas/ColorDescription' frame_height: format: int32 type: integer frame_width: format: int32 type: integer mdcv: $ref: '#/components/schemas/MasteringDisplayColorVolume' type: object ErrorModel: additionalProperties: false properties: $schema: description: A URL to the JSON Schema for this object. examples: - https://api.istreamplanet.com/schemas/ErrorModel.json format: uri readOnly: true type: string detail: description: A human-readable explanation specific to this occurrence of the problem. examples: - Property foo is required but is missing. type: string errors: description: Optional list of individual error details items: $ref: '#/components/schemas/ErrorDetail' type: - array - 'null' instance: description: A URI reference that identifies the specific occurrence of the problem. examples: - https://example.com/error-log/abc123 format: uri type: string status: description: HTTP status code examples: - 400 format: int64 type: integer title: description: A short, human-readable summary of the problem type. This value should not change between occurrences of the error. examples: - Bad Request type: string type: default: about:blank description: A URI reference to human-readable documentation for the error. examples: - https://example.com/errors/example format: uri type: string type: object TextOverlayPadding: additionalProperties: false properties: bottom: format: float type: number left: format: float type: number right: format: float type: number top: format: float type: number type: object MasteringDisplayColorVolume: additionalProperties: false properties: blue: $ref: '#/components/schemas/Cie1931P' green: $ref: '#/components/schemas/Cie1931P' max_display_mastering_luminance: format: double type: number min_display_mastering_luminance: format: double type: number red: $ref: '#/components/schemas/Cie1931P' white_point: $ref: '#/components/schemas/Cie1931P' type: object ErrorDetail: additionalProperties: false properties: location: description: Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id' type: string message: description: Error message text type: string value: description: The value at the given location type: object GetSourcePreviewStreamResponseBody: additionalProperties: false properties: $schema: description: A URL to the JSON Schema for this object. examples: - https://api.istreamplanet.com/schemas/GetSourcePreviewStreamResponseBody.json format: uri readOnly: true type: string audio_tracks: description: 'Lists of all audio and video tracks that are available. Note: the default audio and video track info will also appear here.' items: $ref: '#/components/schemas/AudioTrackInfo' type: - array - 'null' default_audio_track: $ref: '#/components/schemas/AudioTrackInfo' description: Audio and Video Track info provided so that callers have easy access to track information of default tracks in the above default_url. default_url: description: 'default_url contains the default URL that can be used to start playback. Ex: https://example.com/cluster/org/isp/ext_id/foo/play?vid_id=2&aud_id=6 The vid_id and aud_id can be changed utilizing the ones provided by the ''audio_tracks'' and ''video_tracks'' fields to see different combinations.' type: string default_video_track: $ref: '#/components/schemas/VideoTrackInfo' token: description: JWT Bearer token that shall be supplied with a 'pre-flight' to myriapod.js to send the auth token to the server. type: string video_tracks: items: $ref: '#/components/schemas/VideoTrackInfo' type: - array - 'null' type: object ColorDescription: additionalProperties: false properties: color_primaries: enum: - CP_RESERVED - CP_BT_709 - CP_BT_470_M - CP_BT_470_BG - CP_SMPTE_170_M - CP_SMPTE_240_M - CP_FILM - CP_BT_2020 - CP_SMPTE_428 - CP_SMPTE_431 - CP_SMPTE_432 type: string matrix_coeffs: enum: - MC_GBR - MC_BT_709 - MC_FCC - MC_BT_470_BG - MC_SMPTE_170_M - MC_SMPTE_240_M - MC_Y_CG_CO - MC_BT_2020_NC - MC_BT_2020_C - MC_SMPTE_2085 - MC_CHROMA_DERIVED_NC - MC_CHROMA_DERIVED_C - MC_I_CT_CP type: string transfer_characteristics: enum: - TC_RESERVED - TC_BT_709 - TC_BT_470_M - TC_BT_470_BG - TC_SMPTE_170_M - TC_SMPTE_240_M - TC_LINEAR - TC_LOG_100 - TC_LOG_316 - TC_IEC_61966_2_4 - TC_BT_1361_E - TC_IEC_61966_2_1 - TC_BT_2020_10 - TC_BT_2020_12 - TC_SMPTE_2084_PQ - TC_SMPTE_428 - TC_ARIB_STD_B67_HLG type: string type: object Position: additionalProperties: false properties: anchor: description: The position of the anchor point within the overlay, given as a percentage of the overlay size. examples: - 100 format: float type: number position: description: The position of the anchor point on the video, given as a percentage of the video. examples: - 95 format: float type: number type: object AudioMute: additionalProperties: false properties: audio_channel: enum: - ALL - FRONT_LEFT - FRONT_RIGHT - FRONT_CENTER - LOW_FREQUENCY - SIDE_LEFT - SIDE_RIGHT examples: - FRONT_LEFT type: string audio_source_id: minLength: 1 type: string type: object VideoTrackInfo: additionalProperties: false properties: bitrate: format: int32 type: integer codec_string: description: codec_string will be set to the RFC 6381 compliant string that represents the specific codec in this VideoTrackInfo. ex. 'avc1.4d401e' for H.264 and 'hvc1.2.4.L150.90' for H.265. This can be used to verify track+browser compatibility. type: string frame_rate: format: float type: number height: format: int32 type: integer id: format: int32 minimum: 0 type: integer name: description: Friendly name of the VideoTrack. type: string width: format: int32 type: integer type: object DynamicState: additionalProperties: false properties: audio_mutes: description: The complete list of muted audios. items: $ref: '#/components/schemas/AudioMute' type: - array - 'null' graphic_overlays: description: The complete list of graphic overlays. items: $ref: '#/components/schemas/GraphicOverlay' type: - array - 'null' text_overlays: description: The complete list of text overlays. items: $ref: '#/components/schemas/TextOverlay' type: - array - 'null' type: object GetSourcePreviewTranscoderStatusResponseBody: additionalProperties: false properties: $schema: description: A URL to the JSON Schema for this object. examples: - https://api.istreamplanet.com/schemas/GetSourcePreviewTranscoderStatusResponseBody.json format: uri readOnly: true type: string dynamic_state_status: $ref: '#/components/schemas/DynamicStateStatus' description: The transcoder's dynamic state settings. ingest_status: $ref: '#/components/schemas/IngestStatus' description: Ingest components's status. type: object securitySchemes: authcode: flows: authorizationCode: authorizationUrl: https://sso.wbd.com/oauth2/aus125bl6q770za4g0x8/v1/authorize scopes: null tokenUrl: https://sso.wbd.com/oauth2/aus125bl6q770za4g0x8/v1/token type: oauth2 m2m: flows: clientCredentials: scopes: null tokenUrl: https://sso.wbd.com/oauth2/aus125bl6q770za4g0x8/v1/token type: oauth2 x-refined-from: - istreamplanet-aventus-channels-openapi.json - istreamplanet-aventus-channels-openapi.yml x-cli-config: params: authorize_url: https://sso.wbd.com/oauth2/aus125bl6q770za4g0x8/v1/authorize client_id: 0oa125bj1lwLZRxjD0x8 redirect_url: http://auth.rest.sh:8484 scopes: offline_access,Groups state: non-empty token_url: https://sso.wbd.com/oauth2/aus125bl6q770za4g0x8/v1/token security: authcode