Prism is a web SDK that captures user data and generates IDs for user tracking. More info on the IDs it generates and Inbrain can be found in IDs
& Inbrain.
yarn clean
: Remove all build files and installed packagesyarn build
: Build all of the following packages, to be output in thedist/
directory:prism-sdk.global.js
&prism-sdk.global.js.map
: IIFE build and source mapprism-sdk.js
&prism-sdk.js.map
: CJS build and source mapprism-sdk.mjs
&prism-sdk.mjs.map
: ESM build and source map
yarn test
: Run unit tests
- Populate
src/utils/constants.ts
with necessary endpoints. Descripions of the outputs needed from each endpoint can be found in theEndpoints
section.
yarn
: Install packagesyarn build
: Build the Prism bundle
UKID
- Short for Unknown ID
- First party ID assigned to a user when they visit a site with the Prism SDK for the first time.
CSID
- Short for Cross-Site ID
- Third party ID assigned to a user that persists across all sites that include the Prism SDK in a given browser if third party cookies are enabled.
- A recommendation engine that inserts promotional content in a banner carousel based on the user's information.
-
cdnOrigin
- Accepts:
- Returns:
-
thirdPartyCookie
- Accepts: GET requests
- Returns: HTML file
-
carouselScript
- Accepts: GET requests
- Returns: script for carousel swiper
-
carouselStyles
- Accepts: GET requests
- Returns: CSS file for carousel styling
-
locate
- Accepts: GET requests
- Returns: JSON object with location data matching the following structure:
{ "asn": { "id": // string "name": // string }, "continent": // string "continentName": // string "country": // string "country_alpha2": // string "country_alpha3": // string "ip_address": // string "lat": // Optional string "lon": // Optional string "proxy": // null or string "states": { "cities": // array of strings "counties": // array of strings "state": // string "zipcodes": // array of strings } }
-
featureFlag
- Accepts: GET requests
- Returns: JSON object with Feature Flag values matching this structure:
[{ "enabled": // Boolean "flagId": // String "flagName": // Optional string "updatedSinceLastQuery": // Optional boolean "userId": // Optional string "userIdType": // Optional string }]
-
identity
-
Accepts: POST requests of JSON objects matching the following structure:
{ "appId": "abcdefgh-ijkl-mnop-qrst-uvwxyz012345", "ukid": "abcdefgh-ijkl-mnop-qrst-uvwxyz012345", // Required "hhid": "abcdefgh-ijkl-mnop-qrst-uvwxyz012345", "inid": "abcdefgh-ijkl-mnop-qrst-uvwxyz012345", "brand": "example", "subBrand": "store", "domain": "example.org", "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:75.0) Gecko/20100101 Firefox/75.0", "platform": "web", "ip": "127.0.0.1", "city": "MARIETTA", "state": "GA", "zips": ["30066"], "country": "US", "library": { "name": "prism", "version": "1.0" }, "cookies": { "portmeirion_id": "abcdefgh-ijkl-mnop-qrst-uvwxyz012345", "br_user_type": "Anonymous" }, "ids": { // these are examples id's and not the definitive naming convention "kruxid": "123", "mid": "abc" }, "session": { "sessionid": "000000000-00000000-00000000000-000001", "sessionDuration": 390820389423, "psmLastActiveTimestamp": "2021-03-17T20:01:45.525Z", "psmSessionStart": "2021-03-17T20:01:45.525Z", "isSessionStart": true, "previousSession": { "sessionid": "000000000-00000000-00000000000-000000", "sessionDuration": 390820389422, "psmLastActiveTimestamp": "2021-03-17T20:01:45.522Z", "psmSessionStart": "2021-03-17T20:01:45.522Z", "isSessionStart": false, } }, "contentMetadata": { "page": { "section": "asdf", "author": "asdf" }, }, "hhidVersion": 8 }
-
Returns: JSON object with optional warnings
-
-
inbrain
-
Accepts: GET requests with added query parameters
-
Returns: one of the JSON responses:
-
Missing or unsupported content type
- Unsupported media type with a 400 returned
-
Content size too small or too large
- Invalid ContentLength with a 400 returned
-
Missing request body
- Unable to read body with a 400 returned
-
Missing ukid or appid
- missing required field with a 400 returned
-
Completed successfully
- 201 returned with the following response structure:
{ "domain": // String of the domain Prism is currently loaded on "html": // URI encoded string of the HTML for the Inbrain banner, "pages": // Array of page strings to insert the Inbrain promotion on, eg ["/"] for the homepage only, "placement": // String of "target": // String of HTML target the Inbrain banner is to be inserted after }
-
-
-
idresolve
- Accepts: POST requests of JSON objects matching the following structure:
ukid: // Required string ids: { csid: // Optional string convivaid: // Optional string ecid: // Optional string kruxid: // Optional string }
- Returns: JSON object matching this structure:
{ "hhid": // optional string "inid": // optional string "segs": // optional string "hhidVersion": // optional string "resolvedUserData": { [key: string]: any }; }
- Accepts: POST requests of JSON objects matching the following structure:
-
logs
- Accepts: POST requests of JSON logging objects
- Returns: N/A
Copyright (c) Warner Media, LLC. All rights reserved. Licensed under the MIT license. See the LICENSE file for license information.