IContentPersonalizationServer
Interface for Content Personalization Server
Methods
reportNewContentEntitlement()
reportNewContentEntitlement(
entitlement
):void
Reports that the customer has a new individual content entitlement inserted into their existing content entitlement list. Only for entitlement not already contained in subscriptions. Only for entitlement inserted due to on-device customer action. Should be reported at time of insertion.
Parameters
entitlement
The new enitlement.
Returns
void
Example
const entitlements: IContentEntitlement = new ContentEntitlementBuilder()
.acquisitionTimestamp(new Date())
.contentId(
new ContentIdBuilder()
.id('content_CDF_ID')
.idNamespace(ContentIdNamespaces.NAMESPACE_CDF_ID)
.build(),
)
.entitlementType(EntitlementType.RENTAL)
.expirationTimestamp(new Date('2025-12-17T03:24:00'))
.build();
// Send the event
ContentPersonalizationServer.reportNewContentEntitlement(entitlements);
reportNewContentInteraction()
reportNewContentInteraction(
contentInteraction
):void
Reports a customer has interacted with content (Liked, disliked, watched trailer, etc..)
Parameters
contentInteraction
The content interaction that has occurred.
Returns
void
Example
const contentInteraction: IContentInteraction = new ContentInteractionBuilder()
.contentId(
new ContentIdBuilder()
.id('content_CDF_ID')
.idNamespace(ContentIdNamespaces.NAMESPACE_CDF_ID)
.build(),
)
.interactionTimestamp(new Date())
.contentInteractionType(ContentInteractionType.INGRESS)
.profileId(
new ProfileIdBuilder()
.id('myProfileId1')
.idNamespace(ProfileIdNamespaces.NAMESPACE_APP_INTERNAL)
.build(),
)
.build();
// Send the event
ContentPersonalizationServer.reportNewContentInteraction(contentInteraction);
reportNewCustomerListEntry()
reportNewCustomerListEntry(
listType
,entry
):void
Reports that the customer has inserted a new entry into a customer managed list. Only for entries inserted on-device due to customer action. Should be reported at time of insertion.
Parameters
listType
The type of customer list the entry was inserted into.
entry
The entry added the customer list.
Returns
void
Example
const customerListEntry: ICustomerListEntry = new CustomerListEntryBuilder()
.addedTimestamp(new Date())
.contentId(
new ContentIdBuilder()
.id('content_CDF_ID')
.idNamespace(ContentIdNamespaces.NAMESPACE_CDF_ID)
.build(),
)
.profileId(
new ProfileIdBuilder()
.id('myProfileId1')
.idNamespace(ProfileIdNamespaces.NAMESPACE_APP_INTERNAL)
.build(),
)
.build();
// Send the event
ContentPersonalizationServer.reportNewCustomerListEntry(
CustomerListType.WATCHLIST,
customerListEntry,
);
reportNewPlaybackEvent()
reportNewPlaybackEvent(
playbackEvent
):void
Reports updates about the customers playback behavior while they are actively in playback.
Parameters
playbackEvent
The playback event that just occurred on the device.
Returns
void
Example
const playbackEvent: IPlaybackEvent = new PlaybackEventBuilder()
.playbackPositionMs(0)
.playbackState(PlaybackState.PLAYING)
.durationMs(2000)
.eventTimestamp(new Date())
.contentId(
new ContentIdBuilder()
.id('content_CDF_ID')
.idNamespace(ContentIdNamespaces.NAMESPACE_CDF_ID)
.build(),
)
.channelDescriptor(
new ChannelDescriptorBuilder()
.majorNumber(0)
.minorNumber(1)
.identifier('channelID')
.build(),
)
.profileId(
new ProfileIdBuilder()
.id('myProfileId')
.idNamespace(ProfileIdNamespaces.NAMESPACE_APP_INTERNAL)
.build(),
)
.buildActiveEvent();
// Send the event
ContentPersonalizationServer.reportNewPlaybackEvent(playbackEvent);
reportRefreshedContentEntitlements()
reportRefreshedContentEntitlements():
void
Indicates that there have been changes to the individual content entitlement due to off-device actions and a new refreshed list of content entitlement should be fetched.
Before using this API, setContentEntitlementsHandlerForComponent needs to be called.
Returns
void
reportRefreshedCustomerList()
reportRefreshedCustomerList(
listType
):void
Indicates that there have been changes to a customer managed list due to off-device actions and a new refreshed version of the customer managed list should be fetched.
Before using this API, setCustomerListEntriesHandlerForComponent needs to be called.
Parameters
listType
The type of customer list that has changed.
Returns
void
reportRefreshedPlaybackEvents()
reportRefreshedPlaybackEvents():
void
Indicates that there are new updates about a customers playback behavior that occurred off-device that can be fetched.
Before using this API, setPlaybackEventsHandlerForComponent needs to be called.
Returns
void
reportRemovedContentEntitlement()
reportRemovedContentEntitlement(
entitlement
):void
Reports that the customer no longer has a individual content entitlement in their existing content entitlement list. Only for entitlement not contained in subscriptions. Only for entitlement that is no longer valid or expires due to due to on-device action. Should be reported at time of removal.
Parameters
entitlement
The removed enitlement.
Returns
void
Example
const entitlements: IContentEntitlement = new ContentEntitlementBuilder()
.acquisitionTimestamp(new Date('2025-03-17T03:24:00'))
.contentId(
new ContentIdBuilder()
.id('content_CDF_ID')
.idNamespace(ContentIdNamespaces.NAMESPACE_CDF_ID)
.build(),
)
.entitlementType(EntitlementType.RENTAL)
.expirationTimestamp(new Date('2025-12-17T03:24:00'))
.build();
// Send the event
ContentPersonalizationServer.reportRemovedContentEntitlement(entitlements);
reportRemovedCustomerListEntry()
reportRemovedCustomerListEntry(
listType
,entry
):void
Reports that the customer has removed an entry from a customer managed list. Only for entries removed from on-device due to customer action. Should be reported at time of removal.
Parameters
listType
The type of customer list the entry was removed from.
entry
The entry removed from the customer list.
Returns
void
Example
const customerListEntry: ICustomerListEntry = new CustomerListEntryBuilder()
.addedTimestamp(new Date('2025-03-17T03:24:00'))
.contentId(
new ContentIdBuilder()
.id('content_CDF_ID')
.idNamespace(ContentIdNamespaces.NAMESPACE_CDF_ID)
.build(),
)
.profileId(
new ProfileIdBuilder()
.id('myProfileId1')
.idNamespace(ProfileIdNamespaces.NAMESPACE_APP_INTERNAL)
.build(),
)
.build();
// Send the event
ContentPersonalizationServer.reportRemovedCustomerListEntry(
CustomerListType.WATCHLIST,
customerListEntry,
);
setContentEntitlementsHandler()
setContentEntitlementsHandler(
contentEntitlementsHandler
):void
Parameters
contentEntitlementsHandler
Returns
void
Deprecated
This method is deprecated, please use setContentEntitlementsHandlerForComponent instead.
setContentEntitlementsHandlerForComponent()
setContentEntitlementsHandlerForComponent(
contentEntitlementsHandler
,component
):void
Sets the handler for specific component that will provide content entitlement data in response to commands.
Parameters
contentEntitlementsHandler
The handler for commands relating to content entitlement.
component
IComponentInstance
The component instance for which the handler is being set.
Returns
void
Example
import {
ContentPersonalizationServer,
CustomerListType,
IContentEntitlementsHandler,
IContentEntitlementsProvider,
ICustomerListEntriesHandler,
...
} from "@amazon-devices/kepler-content-personalization";
...
// Handlers
const contentEntitlementsHandler: IContentEntitlementsHandler = {
getAllContentEntitlements: (
contentEntitlementsProvider: IContentEntitlementsProvider,
) => {
contentEntitlementsProvider.addContentEntitlementChunk(<ADD ENTITLEMENTS>);
contentEntitlementsProvider.commit();
},
};
...
// Headless service
onStart(componentInstance: IComponentInstance): Promise<void> {
ContentPersonalizationServer.setContentEntitlementsHandlerForComponent(
contentEntitlementsHandler,
componentInstance,
);
// Set other handlers here, also for `SubscriptionEntitlementServer`
...
return Promise.resolve();
}
setCustomerListEntriesHandler()
setCustomerListEntriesHandler(
customerListEntriesHandler
):void
Parameters
customerListEntriesHandler
Returns
void
Deprecated
This method is deprecated, please use setCustomerListEntriesHandlerForComponent instead.
setCustomerListEntriesHandlerForComponent()
setCustomerListEntriesHandlerForComponent(
customerListEntriesHandler
,component
):void
Sets the handler for specific component that will provide customer list entry data in response to commands.
Parameters
customerListEntriesHandler
The handler for commands relating to customer lists.
component
IComponentInstance
The component instance for which the handler is being set.
Returns
void
Example
import {
ContentPersonalizationServer,
CustomerListType,
IContentEntitlementsHandler,
IContentEntitlementsProvider,
ICustomerListEntriesHandler,
...
} from "@amazon-devices/kepler-content-personalization";
...
// Handlers
const customerListEntriesHandler: ICustomerListEntriesHandler = {
getAllCustomerListEntries: (
listType: CustomerListType,
customerListEntriesProvider: ICustomerListEntriesProvider,
) => {
customerListEntriesProvider.addCustomerListChunk(listType, <ADD LIST ENTRIES>);
customerListEntriesProvider.commit();
},
};
...
// Headless service
onStart(componentInstance: IComponentInstance): Promise<void> {
ContentPersonalizationServer.setCustomerListEntriesHandlerForComponent(
customerListEntriesHandler,
componentInstance,
);
// Set other handlers here, also for `SubscriptionEntitlementServer`
...
return Promise.resolve();
}
setPlaybackEventsHandler()
setPlaybackEventsHandler(
playbackEventsHandler
):void
Parameters
playbackEventsHandler
Returns
void
Deprecated
This method is deprecated, please use setPlaybackEventsHandlerForComponent instead.
setPlaybackEventsHandlerForComponent()
setPlaybackEventsHandlerForComponent(
playbackEventsHandler
,component
):void
Sets the handler for specific component that will provide playback event data in response to commands.
Parameters
playbackEventsHandler
The handler for commands relating to playback events.
component
IComponentInstance
The component instance for which the handler is being set.
Returns
void
Example
import {
ContentPersonalizationServer,
CustomerListType,
IContentEntitlementsHandler,
IContentEntitlementsProvider,
ICustomerListEntriesHandler,
...
} from "@amazon-devices/kepler-content-personalization";
...
// Handlers
const playbackEventsHandler: IPlaybackEventsHandler = {
getPlaybackEventsSince: (
sinceTimestamp: Date,
playbackEventsProvider: IPlaybackEventsProvider,
) => {
playbackEventsProvider.addPlaybackEventChunk(<ADD PLAYBACK EVENTS>);
playbackEventsProvider.commit();
},
};
...
// Headless service
onStart(componentInstance: IComponentInstance): Promise<void> {
ContentPersonalizationServer.setPlaybackEventsHandlerForComponent(
playbackEventsHandler,
componentInstance,
);
// Set other handlers here, also for `SubscriptionEntitlementServer`
...
return Promise.resolve();
}
Last updated: Sep 30, 2025