SqueezeEventConfig

Summary

SqueezeEventConfig defines event-specific squeezeback configuration for individual live streaming events. It inherits defaults from the associated SqueezeBrandConfig - if a parameter is not set (0 or empty), it automatically inherits the value from the brand configuration.

Use Cases

  • Configure squeezeback for specific live events
  • Override brand defaults for special events
  • Define source URIs and DRM settings per event
  • Schedule events with specific start times
  • Control event lifecycle (SCHEDULED → ACTIVE → COMPLETED)

Model Definition

Includes all fields from SqueezeBrandConfig plus:

Field Type Description
id integer Unique event identifier (auto-generated)
brand_config_id integer Reference to parent brand config (foreign key)
event_name string Human-readable event name
description string Event description
asset_id string Unique asset identifier for streaming (used in URL)
event_stream_url string Generated streaming URL (computed, not persisted)
scheduled_start_time timestamp ISO 8601 formatted event start time with timezone
source_uri string HLS source manifest URL
source_dash_uri string DASH source manifest URL
banner_sources string Event-specific banner sources (overrides brand)
ad_tag_override jsonb JSON object for ad tag configuration overrides
windows_segs integer Number of segments in sliding window
manifest_polling integer Manifest polling interval (inherits from brand if 0)
max_concurrents integer Max concurrent streams (inherits from brand if 0)
drm_key_jwt string JWT token for DRM key retrieval
event_state string Event lifecycle state (SCHEDULED, ACTIVE, COMPLETED, CANCELLED)

Inherited Squeeze Parameters

All squeeze box parameters from SqueezeBrandConfig:

  • content_sqz_box_ratio, ad_sqz_box_ratio
  • content_box_vertical_pos, content_box_horizontal_pos
  • ad_box_vertical_pos, ad_box_horizontal_pos
  • in_animation_dur, out_animation_dur
  • content_frame, ad_frame
  • content_frame_thickness, ad_frame_thickness
  • content_frame_color, ad_frame_color

Inheritance Behavior: If any squeeze parameter is set to 0 (for numbers) or empty (for strings), the corresponding value from SqueezeBrandConfig is used instead.

REST Operations

GET /api/v1/squeeze-event-config?asset_id={assetId}

Return event configuration by asset ID. Includes computed event_stream_url.

Query Parameters:

  • asset_id (query, required): Asset identifier

Response: 200 OK

{
  "id": 42,
  "brand_config_id": 1,
  "event_name": "Super Bowl LVII",
  "description": "Championship game with squeezeback ads",
  "asset_id": "superbowl-2025",
  "event_stream_url": "https://bakery.vtg.paramount.tech/squeezeback/superbowl-2025/master.m3u8",
  "scheduled_start_time": "2025-02-09T18:30:00Z",
  "source_uri": "https://origin.example.com/superbowl/master.m3u8",
  "source_dash_uri": "https://origin.example.com/superbowl/manifest.mpd",
  "drm_key_jwt": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "event_state": "ACTIVE",
  "content_sqz_box_ratio": 0.65,
  "ad_sqz_box_ratio": 0.5,
  "max_concurrents": 500,
  "ad_tag_override": {
    "network_id": "520311",
    "profile": "GoogleDAISSAI_v01"
  }
}

GET /api/v1/squeeze-event-config?event_id={eventId}

Return event configuration by numeric event ID.

Query Parameters:

  • event_id (query, required): Event identifier

Response: 200 OK (same structure as above)

POST /api/v1/squeeze-event-config

Create new event configuration. Brand inheritance is applied automatically for unset values.

Request Body:

{
  "brand_config_id": 1,
  "event_name": "Super Bowl LVII",
  "description": "Championship game with squeezeback ads",
  "asset_id": "superbowl-2025",
  "scheduled_start_time": "2025-02-09T18:30:00Z",
  "source_uri": "https://origin.example.com/superbowl/master.m3u8",
  "source_dash_uri": "https://origin.example.com/superbowl/manifest.mpd",
  "event_state": "SCHEDULED",
  "content_sqz_box_ratio": 0.65,
  "max_concurrents": 500
}

Note: Fields not specified (like ad_sqz_box_ratio, positions, animations) will inherit from the brand config.

Response: 201 Created with created event config including event_stream_url

PUT /api/v1/squeeze-event-config/{eventId}

Update existing event configuration.

Parameters:

  • eventId (path, required): Event identifier

Request Body: Same as POST (all fields optional for update)

Response: 200 OK with updated event config

DELETE /api/v1/squeeze-event-config/{eventId}

Delete event configuration.

Parameters:

  • eventId (path, required): Event identifier

Response: 204 No Content

Event States

State Description
SCHEDULED Event configured but not yet started
ACTIVE Event currently running and accepting streams
COMPLETED Event finished successfully
CANCELLED Event cancelled before or during execution

Streaming URL

The event_stream_url field is computed dynamically based on the request context:

{scheme}://{host}/squeezeback/{asset_id}/master.m3u8

Example:

  • Development: http://localhost:8083/squeezeback/my-event/master.m3u8
  • Production: https://bakery.vtg.paramount.tech/squeezeback/my-event/master.m3u8

This URL is not persisted in the database and is generated on each GET request.

Inheritance Example

Brand Config:

{
  "brand_id": 1,
  "content_sqz_box_ratio": 0.6,
  "ad_sqz_box_ratio": 0.5,
  "content_frame": true,
  "content_frame_color": "blue@0.9"
}

Event Config (as stored):

{
  "id": 10,
  "brand_config_id": 1,
  "content_sqz_box_ratio": 0.7,
  "ad_sqz_box_ratio": 0,
  "content_frame": false,
  "content_frame_color": ""
}

Effective Event Config (after inheritance):

{
  "id": 10,
  "brand_config_id": 1,
  "content_sqz_box_ratio": 0.7,      // Event override
  "ad_sqz_box_ratio": 0.5,           // Inherited from brand
  "content_frame": false,            // Event override
  "content_frame_color": "blue@0.9"  // Inherited from brand
}

Notes

  • asset_id must be unique across all events
  • event_stream_url is read-only (computed field)
  • Setting squeeze parameters to 0 triggers brand inheritance
  • DRM JWT tokens should be generated per-event for security
  • Update event_state to control event lifecycle
  • ad_tag_override allows per-event ad targeting customization