> ## Documentation Index
> Fetch the complete documentation index at: https://developer.onetrust.com/llms.txt
> Use this file to discover all available pages before exploring further.

# API Reference

## Active Methods

### Get Application JSON Data

This method returns the app data JSON response as a promise. The first parameter will be your `oneTrustTV.Settings()` configuration and the second parameter will be a boolean indicating whether or not the `shouldShowBanner()` or `isBannerShown()` values should be reset. This should always be set to `false`.

```javascript
const configs =  {
  key: '',
  languageCode: '',
  version: '',
  storageLocation: '',
  countryCodeOverride: '', //optional
  regionCodeOverride: '', //optional
  redirect: '' //optional if app is an SPA
}

const appData = oneTrustTV.Api(configs,false)
appData.then(response => console.log(response.response)).catch(e => console.log(e))
```

Sample response:

[block:image]
{
  "images": [
    {
      "image": [
        "https://files.readme.io/c7b997f-Screenshot_2024-03-29_at_2.00.48_PM.png",
        "",
        ""
      ],
      "align": "center"
    }
  ]
}
[/block]

### Get Redirect Path

This method returns the redirect path when the CMP UI is dismissed. Only applicable for multi page apps.

```javascript
oneTrustTV.GetRedirectPath()
```

### Get Root Element

This method returns the root element for the CMP UI.

```javascript
oneTrustTV.GetRootElement()
```

### Set Key Settings

This method sets the values needed for initialization but does not download any data.

```javascript
oneTrustTV.Settings({
  key: '',
  languageCode: '',
  version: '',
  storageLocation: '',
  countryCodeOverride: '', //optional
  regionCodeOverride: '', //optional
  redirect: '' //optional if app is an SPA
});
```

### Get Data Subject ID

This method returns the current data subject ID.

```javascript
oneTrustTV.anonymousDsid(cb => console.log(cb))
```

### UI Event Listeners

This method subscribes you to OneTrust UI events.

```javascript
otEventListeners = oneTrustTV.eventListener().subscribe((msg) => {
  console.log(msg)
})
otEventListers.unsubscribe()
```

When a user interacts with the CMP UI, the SDK sends an interaction event that the application can listen for.

**Example :** User selects the "Confirm My Choices" button on the OT Preference Center UI, which saves their consent choices.  An app might want to listen for the `onPreferenceCenterConfirmChoices` to show a success message to the user and navigate them to the App's home page.

#### Types of Events

| Event                                                | Description                                                                                          |
| ---------------------------------------------------- | ---------------------------------------------------------------------------------------------------- |
| `onHideBanner`                                       | Triggered when banner is closed                                                                      |
| `onShowBanner`                                       | Triggered when banner is shown                                                                       |
| `onBannerClickedRejectAll`                           | Triggered when user rejects all consent from banner                                                  |
| `onBannerClickedAcceptAll`                           | Triggered when user allows all consent from banner                                                   |
| `onShowPreferenceCenter`                             | Triggered when Preference Center is displayed                                                        |
| `onHidePreferenceCenter`                             | Triggered when Preference Center is closed                                                           |
| `onPreferenceCenterRejectAll`                        | Triggered when user rejects all consent from Preference Center                                       |
| `onPreferenceCenterAcceptAll`                        | Triggered when user allows all consent from Preference Center                                        |
| `onPreferenceCenterConfirmChoices`                   | Triggered when user clicked on save choices after updating consent values from Preference Center     |
| `onPreferenceCenterPurposeLegitimateInterestChanged` | Triggered when IAB purpose's legitimate interest value changes                                       |
| `onPreferenceCenterPurposeConsentChanged`            | Triggered when user updates consent values for a particular category on Preference Center UI         |
| `onShowVendorList`                                   | Triggered when the vendor list UI is shown                                                           |
| `onHideVendorList`                                   | Triggered when  vendor list UI is closed or when back button is tapped.                              |
| `onVendorListVendorConsentChanged`                   | Triggered when user updates consent values for a particular vendor ID on vendor list UI              |
| `onVendorListVendorLegitimateInterestChanged`        | Triggered when user updates Legitimate interests values for a particular vendor ID on vendor list UI |

### Get Purpose Consent

This method returns the consent status of a category.

```javascript
oneTrustTV.getPurposeConsentStatus('categoryID', (err, suc)=> console.log(err, suc))
```

**Examples:**

This will give you the data from all the categories at once instead of a single or specific category.

```javascript
oneTrustTV.getPurposeConsentStatus(undefined,(e,s)=>console.log(s))
```

You can query using this parameter to get the data from a specific category using a group ID.

```javascript
oneTrustTV.getPurposeConsentStatus("C0004",(e,s)=>console.log(s))
```

You can query using this parameter to get the data from multiple categories using multiple group IDs.

```javascript
oneTrustTV.getPurposeConsentStatus(["C0004","C0002"],(e,s)=>console.log(s))
```

e = error

s = success

#### Returns

* 1 = Consent is given (An end user interacts with the SDK and gives consent.)
* 0 = Consent is not given (An end user interacts and does not give consent.)
* -1 = Consent has not been collected (The SDK is not yet initialized for the end user.)

### Is Banner Shown

This method determines whether or not the banner UI has been shown.

```javascript
oneTrustTV.isBannerShown((cb)=> console.log(cb.status))
```

#### Returns

* 1 = Banner UI is/has been shown
* -1 = Banner UI has not been shown

### SDK logging

This method returns logging information based on SDK activity. Stored under `ONETRUST_LOGGER` in local storage. Logging is disabled by default.

Enables the log.

```javascript
oneTrustTV.logger("enable",(e,s)=>console.log(e,s))
```

Clears the log.

```javascript
oneTrustTV.logger("clear",(e,s)=>console.log(e,s))
```

Disables the log.

```javascript
oneTrustTV.logger('disable', (e,s) => console.log(e,s));
```

### Save consent

This method saves the user's consent to local storage and sends a consent receipt to OneTrust servers (if enabled).

```javascript
oneTrustTV.saveConsent('banner', (e,s)=> console.log(e,s))
```

#### Parameters

* Interaction Type
* Callback

| Interaction Types (String)     |
| :----------------------------- |
| Banner - Allow All             |
| Banner - Reject All            |
| Banner - Close                 |
| Preference Center - Allow All  |
| Preference Center - Reject All |
| Preference Center - Confirm    |

### Set Remote Key Codes

This method allows you to set the remote key mappings based on TV platform (LG, Samsung, etc.).

```javascript
oneTrustTV.setRemoteKeycodes({
  '214': 'left',
  '205': 'left',
  '213': 'right',
  '206': 'right',
  '212': 'down',
  '204': 'down',
  '211': 'up',
  '203': 'up',
  '195': 'ok',
  '196': 'back'
}, false); 
```

#### Parameters

* Remote keycode JSON (keycode: keyname)
* (Optional) boolean - enable/disable mouse functionality

### Multi Profile Consent

#### Rename Profile

This methods renames the current profile ID with a new one.

```javascript
oneTrustTV.renameProfile('old user id', 'new user id', cb=> console.log(cb))
```

Parameters:

* Current/Old ID
* New ID
* Callback

#### Delete Profile

This method deletes profiles if multi profiles have been set up.

```javascript
oneTrustTV.deleteProfile('null', cb => console.log(cb))
```

When null is passed in the first parameter, the first profile is deleted. You can also specify the ID of the profile to be deleted.

#### Switch Profile

```javascript
oneTrustTV.switchProfile(document.getElementById('root'), 'identifier', false, false, (closecb) => console.log(closecb))
```

| Parameter        | Description                                                                   |
| :--------------- | :---------------------------------------------------------------------------- |
| getElementById   | Reference to the div where the UI will be be shown.                           |
| New profile      | Profile name to switch to                                                     |
| Use local data   | Boolean. If `true`, new profile will use locally cached data                  |
| Data re-download | Boolean. If `true`, cached data will be cleared and data will be redownloaded |
| Callback         | Callback                                                                      |

### Programmatically Update Purpose Consent

This method allows you to update consent for a specific purpose/category.

```javascript
oneTrustTV.updatePurposeConsent('STACK42', true, cb=> console.log(cb))

oneTrustTV.updatePurposeConsent('C0002', true, cb=> console.log(cb))

oneTrustTV.updatePurposeConsent('C0004', false, cb=> console.log(cb))
```

#### Parameter

* Purpose/Category ID
* Boolean (on or off)

### Programmatically Update Legitimate Interest Consent

This method allows you to update the legitimate interest consent for a specific IAB purpose.

```javascript
oneTrustTV.updatePurposeLegitInterest('IAB2V2_2', true, cb=> console.log(cb))
oneTrustTV.updatePurposeLegitInterest('IAB2V2_4', false, cb=> console.log(cb))
```

#### Parameter

* Purpose ID
* Boolean (on or off)

<br />

## To Be Deprecated

### Get Header Configs

This method returns header configs.

```javascript
oneTrustTV.GetHeaderConfigs()
```

Sample response:

[block:image]
{
  "images": [
    {
      "image": [
        "https://files.readme.io/1b2d40d-Screenshot_2024-03-29_at_3.20.20_PM.png",
        "",
        ""
      ],
      "align": "center"
    }
  ]
}
[/block]

### Get Profile Sync Auth Token

This method returns the JWT used for cross device.

```javascript
oneTrustTV.GetSyncProfileAuth()
```

### Set Data Subject ID

This method sets the data subject ID.

```javascript
oneTrustTV.SetDataSubjectIdConfigs("test")
```

### Get Vendor Count

This method returns the number of vendors for IAB TCF purposes.

```
oneTrustTV.getVendorCount('IAB2V2_1', (cb) => console.log(cb))
oneTrustTV.getVendorCount('V2STACK42', (cb) => console.log(cb))
```

### Multi-Profile

This method checks whether the multi profile feature has been enabled in the current template.

```javascript
oneTrustTV.isMultiProfileAllowed(cb => console.log(cb))
```

### Switch User Profile

This method switches user profiles if multiple exists (multi profile only).

```javascript
oneTrustTV.switchUserProfile('identifier')
```