Publishing content to the Featured Carousel

This guide describes the data model and integration steps for publishing video and live TV content using the Engage SDK.

MovieEntity data model

The MovieEntity represents a full-length film. The following table summarizes the key fields.

Public Methods Type Requirement Description
getName() String Required The title of the movie (e.g., "Avengers: Endgame")
getDescription() String Required A summary providing context that appears on hover
getPosterImages() List<Image> Required A list of images used for the movie's poster display
getPlatformSpecificPlaybackUris() List<PlatformSpecificUri> Required Deep links for playback on specific platforms
getDurationMillis() Long Required The total duration of the movie in milliseconds
getCallToAction String Required (GTV) Text displayed to prompt user interaction (e.g., "Watch Now")
getTags List<String> Optional Keywords used for categorization (e.g., "Action/Thriller")

LiveTvProgramEntity data model

The LiveTvProgramEntity represents a program airing or scheduled to air on a specific channel.

Public Methods Type Requirement Description
getName() String Required The title of the program (e.g., "NBC CT Late News")
getDescription() String Required A summary providing context about the program
getPosterImages() List<Image> Required Images used for the program's display
getAvailabilityTimeWindows() List<DisplayTimeWindow> Required The scheduled time windows for the program
getChannelId() String Required Unique identifier for the TV channel
getChannelName() String Required Name of the TV channel
getChannelLogoImage() Image Required Logo image for the TV channel
getCallToAction() String Required (GTV) Interaction prompt text
getTags() List<String> Optional Keywords used for categorization

Builder usage examples

MovieEntity example

See MovieEntity.Builder.

MovieEntity movie = new MovieEntity.Builder()
    .setName("La hora 25")
    .setDescription("Brogan tiene 24 horas para revalorar su vida antes de ser encarcelado")
    .addPosterImage(new Image.Builder()
        .setImageUri(Uri.parse("https://www.example.com/movie_poster.png"))
        .build())
    .addPlatformSpecificPlaybackUri(new PlatformSpecificUri.Builder()
        .setUri("https://www.example.com")
        .setPlatformType(PlatformType.TYPE_TV)
        .build())
    .setDurationMillis(7200000L)
    .setCallToAction("Watch Now")
    .addTag("Action/Thriller")
    .build();

LiveTvProgramEntity example

See LiveTvProgramEntity.Builder.

LiveTvProgramEntity liveProgram = new LiveTvProgramEntity.Builder()
    .setName("3:30AM: NBC CT Late News")
    .setDescription("The latest local news, weather and investigative stories.")
    .setChannelId("https://www.example.com")
    .setChannelName("Tastemade")
    .setChannelLogoImage(new Image.Builder()
        .setImageUri(Uri.parse("https://example.com/v1/channels/logo.png"))
        .build())
    .addAvailabilityTimeWindow(new DisplayTimeWindow.Builder()
        .setStartTimestampMillis(1756713600000L)
        .setEndTimestampMillis(1756715400000L)
        .build())
    .addPosterImage(new Image.Builder()
        .setImageUri(Uri.parse("https://example.com/v1/assets/image.jpg"))
        .build())
    .setCallToAction("Watch Now")
    .addTag("News")
    .build();

API

publishRecommendationClusters() will be used to send candidate content to the Feature Carousel. Cluster type should be set as RecommendationClusterType.TYPE_PROVIDER_ROW.

Engage SDK version

Note the minimum Engage SDK version required for this integration:

engage-tv: 1.0.6