Documentation Index

Fetch the complete documentation index at: https://docs.developer.comcast.com/llms.txt

Use this file to discover all available pages before exploring further.

Badger To Firebolt Reference

Prev Next

This document provides reference information for developers who are currently using legacy devices, our legacy API, or older versions of Firebolt®.


Feature reference

The following section provides information about feature flows across our different stacks.

User entitlements

Entitlements are handled in a similar way across all of our technology stacks. The primary difference is that our legacy stack uses the accountLink method set, while our Firebolt stack uses the Discovery module. In practice, both functions act similarly in your app.

When a user signs in to an account, you use a sign-in method to inform aggregated experiences that a user is authenticated. When a user signs out, you use the corresponding sign-out method to make sure the information is no longer used.

Additionally, you can also add an array of available entitlements with a sign-in method to inform the platform of specific programs the user has access to. If you choose not to bundle entitlements with the sign-in method, you may also use an entitlement method in the same way.

Please note that a sign-out method does not remove user entitlements. You must use the entitlement method to remove entitlements from a logged-out user.

Legacy

Scaled

EntertainmentOS

Version

$badger

Firebolt 0.8.1

Firebolt 1.7.0

Sign-In

accountLink().signIn()

Optional: accountLink().updateEntitlements()

Discovery.signIn()

Optional: Discovery.entitlements()

Discovery.signIn()

Optional: Discovery.contentAccess()

Sign-Out

accountLink().signOut()

Discovery.signOut()

Optional: Discovery.entitlements()

Discovery.signOut()

Optional: Discovery.clearContentAccess()

Entitlement

accountLink().updateEntitlements()

Discovery.entitlements()

Discovery.contentAccess()

Clearing entitlements

On scaled devices, entitlements are only cleared if you call Discovery.entitlements() with an empty array!

Deep links are handled differently on our legacy stack compared to our EntOS stack.

With Firebolt, deep links are expressed as navigation intents, which can be received from almost any action a user takes: a voice command, an EntOS tile, or even a search result.

Unlike the system used by our legacy stack, navigation intents are far more dynamic. Your app no longer needs to parse a URL, because navigation intents tell your app both what caused the intent and where to go using just a JSON object. This allows for more specific destinations (not just content, but searches and promotional pages) and works whether your app was already open or not. If it was already open, your app will not even need to reload.

All you need to do to use navigation intents is to set up listeners in your app. Once your app has fully loaded, navigation intents can be recieved by your app and used to move directly to content. More information can be found in our Content Discovery guide.


On our legacy devices and $badger apps, deep links are appmanager links expressed as a URL (uniform resource locator) as demonstrated in the example below.

appmanager:launchApplication#appId=<providedAppId>&additionalLaunchParams=%7B%22isAsset%22%3A%22true%22%2C%22launchedFrom%22%3A%22entityPage%22%2C%22param.launchpoint%22%3A%22playback%22%2C%22param.assetId%22%3A%221059877%22%7D

This deep link is sent with metadata in the media:content attribute, and opens up a specific piece of content. Replace <providedAppId> with your appId. Comcast will assign your organization an appId when your app is registered on the developer portal.

Authentication tokens

On EntertainmentOS, authentication tokens are managed through individual Authentication methods. Our scaled devices cannot use these calls, so you must call the Authentication.token() method instead to manage tokens. The table below maps the current call to the original token type.

Scaled

EntertainmentOS

Version

Firebolt 0.8.1

Firebolt 1.7.0

Platform Token

Authentication.token('platform')

Authentication.root()

Device (XACT) Token

Authentication.token('device')

Authentication.device()

Distributor (CIMA) Token

Authentication.token('distributor')

Authentication.session()


Legacy replacement calls

The following section provides replacement calls to developers transitioning X1 apps from our legacy API ($badger) to Firebolt. Unless otherwise specified, all Firebolt calls are referring to the Core SDK. Additionally, all legacy calls are prefaced with $badger..

Please note that this page does not identify Firebolt's required APIs. The required calls may be found on the Baseline Firebolt APIs page.

Authentication

Legacy API

Legacy Parameter(s)

Firebolt API

Firebolt Parameter(s)

getAppAuth().get()

N/A

This call does not exist in Firebolt.

getAppAuth().upsert()

userid

data

This call does not exist in Firebolt.

getAppAuth().delete()

N/A

This call does not exist in Firebolt.

platformAuth().getToken()

N/A

Authentication.root()

N/A

platformAuth().refreshToken()

N/A

N/A

platformAuth().getXact()

N/A

Authentication.device()

N/A

getBearerToken()

N/A

Authentication.session()

N/A

App state management

Legacy API

Legacy Parameter(s)

Firebolt API

Firebolt Parameter(s)

shutdown()

N/A

Lifecycle.close()

reason

dismissLoadingScreen()

args

Lifecycle.ready()

N/A

active()

N/A

This call does not exist in Firebolt.

config()

N/A

This call does not exist in Firebolt.

deeplink()

uri

Discovery.launch()

appId,

intent

deeplinkToCompanyPage()

companyId

Discovery.launch()

appId: "urn:firebolt:apps:main",
intent.action: "section",
intent.data.sectionName: "company:<companyId>"

dial().getDeviceId()

N/A

SecondScreen.device()

type

dial().getDeviceName()

N/A

SecondScreen.friendlyName()

N/A

dial().getPayload()

N/A

Parameters.initialization().SecondScreen.launchRequest

N/A

dial().onLaunch()

N/A

SecondScreen.listen()

event: 'launchRequest',

callback

Discovery & metrics

Legacy API

Legacy Parameter(s)

Firebolt API

Firebolt Parameter(s)

accountLink().appLaunch()

subscriptionEntitlements

Discovery.contentAccess()

availabilities,

entitlements

accountLink().compareAppSettings()

settings

This call does not exist in Firebolt.

accountLink().createLaunchPadTile()

tile

Discovery.watchNext()

title,
identifiers,
expires,
images

accountLink().deleteLaunchPadTile()

tile: empty

This call does not exist in Firebolt.

accountLink().mediaEvent()

contentId,

completed,

progress,

progressUnits

Discovery.watched()

entityId,
progress,
completed,
watchedOn,

agePolicy

accountLink().signIn()

subscriptionEntitlements

Discovery.signIn()

entitlements

accountLink().signOut()

N/A

Discovery.signOut()

N/A

accountLink().updateEntitlements()

subscriptionEntitlements

Discovery.contentAccess()

[Changing Entitlements]

availabilities,

entitlements

Discovery.clearContentAccess()

[Remove all Entitlements]

N/A

errorMetricsHandler()

message,

visible,

code,

args

Metrics.error()

type,
code,
description,

visible,

parameters,

agePolicy

launchCompletedMetricsHandler()

Replaced by dismissLoadingScreen

pageViewMetricsHandler()

page,
args

Metrics.page()

pageId,
agePolicy

appActionMetricsHandler()

[Playback Started]

action: "CONTENT_STATE_CHANGED",
evt.contentState: "STARTED"

Metrics.startContent()

entityId,

agePolicy

appActionMetricsHandler()

[Playback Stopped]

action: "CONTENT_STATE_CHANGED",
evt.contentState: "STOPPED"

Metrics.stopContent()

entityId,

agePolicy

userActionMetricsHandler()

action,
args

Metrics.action()

[User Click]

category: 'user',

type: 'click',

parameters,

agePolicy

Metrics.action()

[Other User Input]

category: 'user',

type: 'input',

parameters,

agePolicy

Metrics.action()

[Other User Event]

category: 'user',

type: '[event]',

parameters,

agePolicy

metricsHandler()

segment_name,
args

Metrics.action()

category,

type,

parameters,

agePolicy

userErrorMetricsHandler()

message,

visible,

code,

args

Metrics.error()

type,
code,
description: 'UserError',

visible,

parameters,

agePolicy

analytics.error()

visible,

message

Metrics.error()

type,
code,
description,

visible,

parameters,

agePolicy

analytics.event()

event

Metrics.action()

category,

type,

parameters,

agePolicy

analytics.pageView()

page,

args

Metrics.page()

pageId,
agePolicy

analytics.userAction()

See userActionMetricsHandler

analytics.userError()

See userErrorMetricsHandler

Events, settings, & notifications

Legacy API

Legacy Parameter(s)

Firebolt API

Firebolt Parameter(s)

userPreferences().subscribeToSettings()

[Closed Captions]

$badger.PREFERENCES.CLOSED_CAPTIONING,

callback

Accessibility.listen()

[Closed Captions]

event:'closedCaptionsSettingsChanged',

callback

userPreferences().subscribeToSettings()

[Voice Guidance]

$badger.PREFERENCES.VOICE_GUIDANCE,

callback

Accessibility.listen()

[Voice Guidance]

event:voiceGuidanceSettingsChanged',

callback

userPreferences().subscribeToSettings()

[Personalized Recommendations]

$badger.PREFERENCES.RECOMMENDATIONS_BASED_ON_HISTORY,

callback

Discovery.listen()

[Personalized Recommendations]

event:'policyChanged',

callback

userPreferences().subscribeToSettings()

[Watch History]

$badger.PREFERENCES.RECENTLY_VIEW_CONTENT,

callback

Discovery.listen()

[Watch History]

event:'policyChanged',

callback

userPreferences().subscribeToSettings()

[Watch History Sharing]

$badger.PREFERENCES.SHARE_WATCH_HISTORY_STATUS,

callback

Discovery.listen()

[Watch History Sharing]

event:'policyChanged',

callback

userPreferences().subscribeToSettings()

[Friendly Device Name]

$badger.PREFERENCES.DEVICE_FRIENDLY_NAME,

callback

Device.listen()

[Friendly Device Name]

event:'deviceNameChanged',

callback

userPreferences().subscribeToSettings()

[Power Saving Status)

$badger.PREFERENCES.POWER_SAVING,

callback

This call does not exist in Firebolt.

[Broadcast a deeplink]

N/A

Discovery.listen()

event:'navigateTo',

callback

userPreferences().closedCaptioning()

N/A

Accessibility.closedCaptionsSettings()

N/A

userPreferences().voiceGuidance()

N/A

Accessibility.voiceGuidanceSettings()

N/A

networkConnectivity()

N/A

Device.network().type

N/A

userPreferences().setting()

[Closed Captions]

$badger.PREFERENCES.CLOSED_CAPTIONING

Accessibility.closedCaptionsSettings()

N/A

userPreferences().setting()

[Voice Guidance]

$badger.PREFERENCES.VOICE_GUIDANCE

Accessibility.voiceGuidanceSettings()

N/A

userPreferences().setting()

[Personalized Recommendations]

$badger.PREFERENCES.RECOMMENDATIONS_BASED_ON_HISTORY

Discovery.policy().enableRecommendations

N/A

userPreferences().setting()

[Watch History]

$badger.PREFERENCES.RECENTLY_VIEW_CONTENT

Discovery.policy().rememberWatchedPrograms

N/A

userPreferences().setting()

[Watch History Sharing]

$badger.PREFERENCES.SHARE_WATCH_HISTORY_STATUS

Discovery.policy().shareWatchHistory

N/A

userPreferences().setting()

[Friendly Device Name]

$badger.PREFERENCES.DEVICE_FRIENDLY_NAME

Device.name()

N/A

Info

Legacy API

Firebolt API

info().zipcode

Localization.postalCode()

info().timezone

This call does not exist in Firebolt.

info().timeZone

This call does not exist in Firebolt.

info().receiverId

This call does not exist in Firebolt.

info().deviceHash

Device.uid()

info().householdId

This call does not exist in Firebolt.

info().privacySettings.lmt

Advertising.policy().limitAdTracking

info().privacySettings.us_privacy

deviceCapabilities().deviceType

Device.type()

deviceCapabilities().nativeDimensions

Device.screenResolution()

deviceCapabilities().webBrowser.browserType

Device.platform()

deviceCapabilities().settopHdrSupport

Device.hdr()

deviceCapabilities().tvHdrSupport

deviceCapabilities().settopHDCPVersion

Device.hdcp()

deviceCapabilities().tvHDCPVersion

deviceCapabilities().videoDimensions

Device.videoResolution()

Limit Ad Tracking policy

The us_privacy setting is only returned in Parameters.initialization(). A better method of keeping track of the us_privacy setting is through listening to the limitAdTracking policy. Learn more on our Limit Ad Tracking page.

User prompts

Legacy API

Legacy Parameter(s)

Firebolt API

Firebolt Parameter(s)

userPreferences().promptSignInEmail()

opts

Keyboard.email()

type: "signIn",
message

userPreferences().promptSignUpEmail()

opts

Keyboard.email()

type: "signUp",
message

verifyPin()

content_pin

This call does not exist in Firebolt.

verifyPurchasePin()

purchase_pin

This call does not exist in Firebolt.

showContentPinOverlay()

N/A

Profile.approveContentRating()

N/A

showPurchasePinOverlay()

N/A

Profile.approvePurchase()

N/A

Ad platform

Legacy API

Firebolt API

adPlatform().initObject()

Advertising.config()

adPlatform().advertisingId()

Advertising.advertisingId()

adPlatform().limitAdTracking()

Advertising.policy().limitAdTracking

adPlatform().deviceAdAttributes()

Advertising.deviceAttributes()

adPlatform().appStoreId()

Advertising.appBundleId()

Other

Legacy API

Legacy Parameter(s)

Firebolt API

Firebolt Parameter(s)

callback()

pid,

success,

json

Handled by Firebolt Transport Layer

showToast()

messageIdentifier

This call does not exist in Firebolt.