--- title: "Advertising" slug: "150-core-advertising" updated: 2025-03-19T14:52:38Z published: 2025-03-19T16:03:18Z canonical: "docs.developer.comcast.com/150-core-advertising" --- > ## 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. # Advertising **Advertising Module 1.5.0 | Core SDK** ## Usage To use the Advertising module, you can import it into your project from the Firebolt SDK: ``` import { Advertising } from '@firebolt-js/sdk' ``` ## Overview A module for platform provided advertising settings and functionality. ## Methods ### advertisingId Get the IAB compliant identifier for advertising (IFA). It is recommended to use the IFA to manage advertising related activities while respecting the user's privacy settings. ``` function advertisingId( options: AdvertisingIdOptions, ): Promise ``` Parameters: | Param | Type | Required | Description | | --- | --- | --- | --- | | `options` | [`AdvertisingIdOptions`](/docs/150-core-advertising#advertisingidoptions) | false | AdvertisingId options | Promise resolution: [AdvertisingIdResult](/docs/150-core-advertising#advertisingidresult) Capabilities: | Role | Capability | | --- | --- | | uses | xrn:firebolt:capability:advertising:identifier | #### Examples Getting the advertising ID JavaScript: ``` import { Advertising } from '@firebolt-js/sdk' let advertisingId = await Advertising.advertisingId() console.log(advertisingId) ``` Value of `advertisingId`: ``` { "ifa": "01234567-89AB-CDEF-GH01-23456789ABCD", "ifa_type": "sspid", "lmt": "0" } ``` **JSON-RPC:** Request: ``` { "jsonrpc": "2.0", "id": 1, "method": "Advertising.advertisingId", "params": {} } ``` Response: ``` { "jsonrpc": "2.0", "id": 1, "result": { "ifa": "01234567-89AB-CDEF-GH01-23456789ABCD", "ifa_type": "sspid", "lmt": "0" } } ``` Getting the advertising ID with scope browse JavaScript: ``` import { Advertising } from '@firebolt-js/sdk' let advertisingId = await Advertising.advertisingId({ scope: { type: 'browse', id: 'paidPlacement' }, }) console.log(advertisingId) ``` Value of `advertisingId`: ``` { "ifa": "01234567-89AB-CDEF-GH01-23456789ABCD", "ifa_type": "sspid", "lmt": "0" } ``` **JSON-RPC:** Request: ``` { "jsonrpc": "2.0", "id": 1, "method": "Advertising.advertisingId", "params": { "options": { "scope": { "type": "browse", "id": "paidPlacement" } } } } ``` Response: ``` { "jsonrpc": "2.0", "id": 1, "result": { "ifa": "01234567-89AB-CDEF-GH01-23456789ABCD", "ifa_type": "sspid", "lmt": "0" } } ``` Getting the advertising ID with scope content JavaScript: ``` import { Advertising } from '@firebolt-js/sdk' let advertisingId = await Advertising.advertisingId({ scope: { type: 'content', id: 'metadata:linear:station:123' }, }) console.log(advertisingId) ``` Value of `advertisingId`: ``` { "ifa": "01234567-89AB-CDEF-GH01-23456789ABCD", "ifa_type": "sspid", "lmt": "0" } ``` **JSON-RPC:** Request: ``` { "jsonrpc": "2.0", "id": 1, "method": "Advertising.advertisingId", "params": { "options": { "scope": { "type": "content", "id": "metadata:linear:station:123" } } } } ``` Response: ``` { "jsonrpc": "2.0", "id": 1, "result": { "ifa": "01234567-89AB-CDEF-GH01-23456789ABCD", "ifa_type": "idfa", "lmt": "0" } } ``` --- ### appBundleId Get the App's Bundle ID ``` function appBundleId(): Promise ``` Promise resolution: Capabilities: | Role | Capability | | --- | --- | | uses | xrn:firebolt:capability:advertising:configuration | #### Examples Default Example JavaScript: ``` import { Advertising } from '@firebolt-js/sdk' let appBundleId = await Advertising.appBundleId() console.log(appBundleId) ``` Value of `appBundleId`: ``` 'app.operator' ``` **JSON-RPC:** Request: ``` { "jsonrpc": "2.0", "id": 1, "method": "Advertising.appBundleId", "params": {} } ``` Response: ``` { "jsonrpc": "2.0", "id": 1, "result": "app.operator" } ``` --- ### config Build configuration object for Ad Framework initialization ``` function config(options: AdConfigurationOptions): Promise ``` Parameters: | Param | Type | Required | Description | | --- | --- | --- | --- | | `options` | [`AdConfigurationOptions`](/docs/150-core-advertising#adconfigurationoptions) | true | Configuration options | Promise resolution: Capabilities: | Role | Capability | | --- | --- | | uses | xrn:firebolt:capability:advertising:configuration | #### Examples Initializing the Ad Framework JavaScript: ``` import { Advertising } from '@firebolt-js/sdk' let adFrameworkConfig = await Advertising.config({ environment: 'prod', authenticationEntity: 'MVPD', }) console.log(adFrameworkConfig) ``` Value of `adFrameworkConfig`: ``` { "adServerUrl": "https://demo.v.fwmrm.net/ad/p/1", "adServerUrlTemplate": "https://demo.v.fwmrm.net/ad/p/1?flag=+sltp+exvt+slcb+emcr+amcb+aeti&prof=12345:caf_allinone_profile &nw=12345&mode=live&vdur=123&caid=a110523018&asnw=372464&csid=gmott_ios_tablet_watch_live_ESPNU&ssnw=372464&vip=198.205.92.1&resp=vmap1&metr=1031&pvrn=12345&vprn=12345&vcid=1X0Ce7L3xRWlTeNhc7br8Q%3D%3D", "adNetworkId": "519178", "adProfileId": "12345:caf_allinone_profile", "adSiteSectionId": "caf_allinone_profile_section", "adOptOut": true, "privacyData": "ew0KICAicGR0IjogImdkcDp2MSIsDQogICJ1c19wcml2YWN5IjogIjEtTi0iLA0KICAibG10IjogIjEiIA0KfQ0K", "ifaValue": "01234567-89AB-CDEF-GH01-23456789ABCD", "ifa": "ewogICJ2YWx1ZSI6ICIwMTIzNDU2Ny04OUFCLUNERUYtR0gwMS0yMzQ1Njc4OUFCQ0QiLAogICJpZmFfdHlwZSI6ICJzc3BpZCIsCiAgImxtdCI6ICIwIgp9Cg==", "appName": "FutureToday", "appBundleId": "FutureToday.comcast", "distributorAppId": "1001", "deviceAdAttributes": "ewogICJib0F0dHJpYnV0ZXNGb3JSZXZTaGFyZUlkIjogIjEyMzQiCn0=", "coppa": 0, "authenticationEntity": "60f72475281cfba3852413bd53e957f6" } ``` **JSON-RPC:** Request: ``` { "jsonrpc": "2.0", "id": 1, "method": "Advertising.config", "params": { "options": { "environment": "prod", "authenticationEntity": "MVPD" } } } ``` Response: ``` { "jsonrpc": "2.0", "id": 1, "result": { "adServerUrl": "https://demo.v.fwmrm.net/ad/p/1", "adServerUrlTemplate": "https://demo.v.fwmrm.net/ad/p/1?flag=+sltp+exvt+slcb+emcr+amcb+aeti&prof=12345:caf_allinone_profile &nw=12345&mode=live&vdur=123&caid=a110523018&asnw=372464&csid=gmott_ios_tablet_watch_live_ESPNU&ssnw=372464&vip=198.205.92.1&resp=vmap1&metr=1031&pvrn=12345&vprn=12345&vcid=1X0Ce7L3xRWlTeNhc7br8Q%3D%3D", "adNetworkId": "519178", "adProfileId": "12345:caf_allinone_profile", "adSiteSectionId": "caf_allinone_profile_section", "adOptOut": true, "privacyData": "ew0KICAicGR0IjogImdkcDp2MSIsDQogICJ1c19wcml2YWN5IjogIjEtTi0iLA0KICAibG10IjogIjEiIA0KfQ0K", "ifaValue": "01234567-89AB-CDEF-GH01-23456789ABCD", "ifa": "ewogICJ2YWx1ZSI6ICIwMTIzNDU2Ny04OUFCLUNERUYtR0gwMS0yMzQ1Njc4OUFCQ0QiLAogICJpZmFfdHlwZSI6ICJzc3BpZCIsCiAgImxtdCI6ICIwIgp9Cg==", "appName": "FutureToday", "appBundleId": "FutureToday.comcast", "distributorAppId": "1001", "deviceAdAttributes": "ewogICJib0F0dHJpYnV0ZXNGb3JSZXZTaGFyZUlkIjogIjEyMzQiCn0=", "coppa": 0, "authenticationEntity": "60f72475281cfba3852413bd53e957f6" } } ``` --- ### deviceAttributes Get the device advertising device attributes ``` function deviceAttributes(): Promise ``` Promise resolution: Capabilities: | Role | Capability | | --- | --- | | uses | xrn:firebolt:capability:advertising:configuration | #### Examples Getting the device attributes JavaScript: ``` import { Advertising } from '@firebolt-js/sdk' let deviceAttributes = await Advertising.deviceAttributes() console.log(deviceAttributes) ``` Value of `deviceAttributes`: ``` { } ``` **JSON-RPC:** Request: ``` { "jsonrpc": "2.0", "id": 1, "method": "Advertising.deviceAttributes", "params": {} } ``` Response: ``` { "jsonrpc": "2.0", "id": 1, "result": {} } ``` --- ### listen To listen to a specific event pass the event name as the first parameter: ``` listen(event: string, callback: (data: any) => void): Promise ``` Parameters: | Param | Type | Required | Summary | | --- | --- | --- | --- | | `event` | `string` | Yes | The event to listen for, see [Events](/docs/150-core-advertising#events). | | *callback* | `function` | Yes | A function that will be invoked when the event occurs. | Promise resolution: | Type | Description | | --- | --- | | `number` | Listener ID to clear the callback method and stop receiving the event, e.g. `Advertising.clear(id)` | Callback parameters: | Param | Type | Required | Summary | | --- | --- | --- | --- | | `data` | `any` | Yes | The event data, which depends on which event is firing, see [Events](/docs/150-core-advertising#events). | To listen to all events from this module pass only a callback, without specifying an event name: ``` listen(callback: (event: string, data: any) => void): Promise ``` Parameters: | Param | Type | Required | Summary | | --- | --- | --- | --- | | *callback* | `function` | Yes | A function that will be invoked when the event occurs. The event data depends on which event is firing, see [Events](/docs/150-core-advertising#events). | Callback parameters: | Param | Type | Required | Summary | | --- | --- | --- | --- | | `event` | `string` | Yes | The event that has occured listen for, see [Events](/docs/150-core-advertising#events). | | `data` | `any` | Yes | The event data, which depends on which event is firing, see [Events](/docs/150-core-advertising#events). | Promise resolution: | Type | Description | | --- | --- | | `number` | Listener ID to clear the callback method and stop receiving the event, e.g. `Advertising.clear(id)` | See [Listening for events](/docs/listening-for-events/) for more information and examples. ### once To listen to a single instance of a specific event pass the event name as the first parameter: ``` once(event: string, callback: (data: any) => void): Promise ``` The `once` method will only pass the next instance of this event, and then dicard the listener you provided. Parameters: | Param | Type | Required | Summary | | --- | --- | --- | --- | | `event` | `string` | Yes | The event to listen for, see [Events](/docs/150-core-advertising#events). | | *callback* | `function` | Yes | A function that will be invoked when the event occurs. | Promise resolution: | Type | Description | | --- | --- | | `number` | Listener ID to clear the callback method and stop receiving the event, e.g. `Advertising.clear(id)` | Callback parameters: | Param | Type | Required | Summary | | --- | --- | --- | --- | | `data` | `any` | Yes | The event data, which depends on which event is firing, see [Events](/docs/150-core-advertising#events). | To listen to the next instance only of any events from this module pass only a callback, without specifying an event name: ``` once(callback: (event: string, data: any) => void): Promise ``` Parameters: | Param | Type | Required | Summary | | --- | --- | --- | --- | | *callback* | `function` | Yes | A function that will be invoked when the event occurs. The event data depends on which event is firing, see [Events](/docs/150-core-advertising#events). | Callback parameters: | Param | Type | Required | Summary | | --- | --- | --- | --- | | `event` | `string` | Yes | The event that has occured listen for, see [Events](/docs/150-core-advertising#events). | | `data` | `any` | Yes | The event data, which depends on which event is firing, see [Events](/docs/150-core-advertising#events). | Promise resolution: | Type | Description | | --- | --- | | `number` | Listener ID to clear the callback method and stop receiving the event, e.g. `Advertising.clear(id)` | See [Listening for events](/docs/listening-for-events/) for more information and examples. ### policy Get the advertising privacy and playback policy To get the value of `policy` call the method like this: ``` function policy(): Promise ``` Promise resolution: [AdPolicy](/docs/150-core-advertising#adpolicy) Capabilities: | Role | Capability | | --- | --- | | uses | xrn:firebolt:capability:advertising:policy | #### Examples Getting the advertising policy settings JavaScript: ``` import { Advertising } from '@firebolt-js/sdk' let adPolicy = await Advertising.policy() console.log(adPolicy) ``` Value of `adPolicy`: ``` { "skipRestriction": "adsUnwatched", "limitAdTracking": false } ``` **JSON-RPC:** Request: ``` { "jsonrpc": "2.0", "id": 1, "method": "Advertising.policy", "params": {} } ``` Response: ``` { "jsonrpc": "2.0", "id": 1, "result": { "skipRestriction": "adsUnwatched", "limitAdTracking": false } } ``` --- To subscribe to notifications when the value changes, call the method like this: ``` function policy(callback: (value) => AdPolicy): Promise ``` Promise resolution: ``` number ``` #### Examples Getting the advertising policy settings JavaScript: ``` import { Advertising } from '@firebolt-js/sdk' let listenerId = await policy((value) => { console.log(value) }) console.log(listenerId) ``` Value of `adPolicy`: ``` { "skipRestriction": "adsUnwatched", "limitAdTracking": false } ``` **JSON-RPC:** Request: ``` { "jsonrpc": "2.0", "id": 1, "method": "Advertising.onPolicyChanged", "params": { "listen": true } } ``` Response: ``` { "jsonrpc": "2.0", "id": 1, "result": { "skipRestriction": "adsUnwatched", "limitAdTracking": false } } ``` --- ## Events ### policyChanged See: [policy](/docs/150-core-advertising#policy) ## Private Events **View** ### policyChanged See: [policy](/docs/150-core-advertising#policy) ## Types ### AdConfigurationOptions ``` type AdConfigurationOptions = { coppa?: boolean // Whether or not the app requires US COPPA compliance. environment?: 'prod' | 'test' // Whether the app is running in a production or test mode. authenticationEntity?: string // The authentication provider, when it is separate entity than the app provider, e.g. an MVPD. } ``` --- ### AdPolicy Describes various ad playback enforcement rules that the app should follow. ``` type AdPolicy = { skipRestriction?: SkipRestriction // The advertisement skip restriction. limitAdTracking?: boolean } ``` See also: [SkipRestriction](/docs/150-core-Advertising-schemas#SkipRestriction) --- ### AdvertisingIdOptions ``` type AdvertisingIdOptions = { scope?: { type: 'browse' | 'content' // The scope type, which will determine where to show advertisement id: string // A value that identifies a specific scope within the scope type } // Provides the options to send scope type and id to select desired advertising id } ``` --- ### AdvertisingIdResult ``` type AdvertisingIdResult = { ifa: string // UUID conforming to IAB standard ifa_type: string // source of the IFA as defined by IAB lmt: '0' | '1' // boolean that if set to 1, user has requested ad tracking and measurement is disabled } ``` ---