Previewing Videos in the Management System
The Management System allows editors to preview videos while working with features like cue points. For videos stored in publicly accessible, unencrypted Azure Blob Storage, preview works out of the box.
Two scenarios require additional configuration:
- Custom manifest URL - when videos are served through a CDN or a custom URL rather than directly from storage
- DRM-protected videos - when videos are encrypted and require a DRM entitlement to play
Both are configured as webhooks in the Video Service's Admin Settings in the Management System. Refer to the Webhooks article for general guidance on implementing webhooks securely.
Manifest Webhook
Configure the "Manifest" webhook when your video manifest is not accessible at the storage URL - for example, when using a CDN or a custom domain.
Request
Both webhooks receive the same request payload. You can find the full JSON schema and TypeScript interfaces in the @axinom/mosaic-video-messages package.
The payload contains two top-level objects:
| Field | Type | Required | Description |
|---|---|---|---|
| video | object | Yes | Video metadata |
| management_user | object | Yes | Management user metadata |
Video
| Field | Type | Required | Description |
|---|---|---|---|
| id | string (UUID) | Yes | UUID of the video |
| title | string | Yes | Video title |
| source_location | string | Yes | Path to the folder in storage containing the source video files |
| is_archived | boolean | Yes | Whether the video is archived |
| videos_tags | string[] | Yes | Video tag values |
| video_encoding | object | Yes | Technical details about the video stream |
| source_file_name | string | No | Source file name |
| source_file_extension | string | No | Source file extension |
| source_full_file_name | string | No | Full source file name including extension |
| source_size_in_bytes | number | No | Combined size of all source video files in bytes |
Management User
| Field | Type | Required | Description |
|---|---|---|---|
| tenant_id | string | Yes | Tenant ID |
| environment_id | string | Yes | Environment ID |
| name | string | Yes | User name |
| permissions | object | Yes | Map of service name to an array of permission strings |
| subject_type | string | Yes | ManagedServiceAccount, ServiceAccount, UserAccount, ImpersonatedUserAccount, SuperUserAccount, EnvironmentAdminAccount, EndUserAccount, EndUserApplication |
| iat | number | Yes | Issued at (seconds since Unix epoch) |
| aud | string | Yes | Token audience |
| iss | string | Yes | Token issuer |
| sub | string | Yes | Subject/user identifier |
| string | No | User email |
Response
The response must include at least one manifest URL. The URL must be reachable from a player running in the Mosaic Management Portal - check your CORS settings if needed.
| Field | Type | Description |
|---|---|---|
| hls_manifest_url | string | The HLS manifest URL for video playback |
| dash_manifest_url | string | The DASH manifest URL for video playback |
Entitlement Webhook
Configure the "Entitlement" webhook when your videos are DRM-protected. The Video Service calls this webhook to obtain a DRM entitlement message that allows playback for the logged-in user.
Request
The request payload is the same as for the Manifest Webhook.
Response
Return the fields relevant to the DRM systems you support. The entitlement_message_jwt and the corresponding license service URL(s) are required for playback to work.
| Field | Type | Description |
|---|---|---|
| entitlement_message_jwt | string | JWT-encoded and signed entitlement message for use with the DRM license server |
| widevine_license_service_url | string | URL to the Widevine License Service |
| playready_license_service_url | string | URL to the PlayReady License Service |
| fairplay_license_service_url | string | URL to the FairPlay License Service |
| fairplay_streaming_certificate_url | string | URL to the Apple-issued FairPlay certificate |