How it works

In this section you will find the JavaScript commands allowing you to interact with the CMP on your site.

All commands can be executed through the API function __sdcmpapi, and Sirdata CMP provides a list of standard commands described in the IAB Tech Lab CMP JavaScript API.

If you are using a version compatible with the Transparency and Consent Framework (TCF) (this is the default), the commands can also be executed through the API function __tcfapi.

window.__sdcmpapi(command, version, callback, parameter);
window.__tcfapi(command, version, callback, parameter);

The version parameter is the TCF specification version (= 2).

Command

Callback

Parameter

Description

ping

function(PingReturn, success)

-

Returns information about the CMP loading status and the GDPR application mode.

revokeUtiq

function(success)

-

Remove the existing consent for the Utiq partner and the associated purpose. The associated signal and the CMP UI (in case of redisplay) are updated.

Returns true if Utiq and the associated purpose are part of the CMP configuration, and false otherwise.

getVendorList

function(GlobalVendorList, success)

vendorListVersion (int) - optionnel Global Vendor List version to fetch. If undefined, the version used by Sirdata CMP is returned. If value is LATEST, the latest available version is returned. If value is invalid, GlobalVendorList will be null and success will be false.

Returns the Global Vendor List containing the purposes and vendors participating in the Transparency & Consent Framework.

addEventListener

function(TCData, success)

-

Add a JavaScript function to call with TC Data whenever a CMP event occurs.

removeEventListener

function(success)

listenerId (int) Listener ID to remove.

Remove a listener previously added with the addEventListener command.

PingReturn

{
    gdprApplies: *Boolean*,
    cmpLoaded: *Boolean*,
    cmpStatus: *String*,
    displayStatus: *String*,
    apiVersion: '2.0',
    cmpVersion: *Integer*,
    cmpId: *Integer*,
    gvlVersion: *Integer*,
    tcfPolicyVersion: *Integer*
}

TCData

{
    tcString: [base64url-encoded] *String*,
    addtlConsent: *String*,
    tcfPolicyVersion: *Integer*,
    cmpId: *Integer*,
    cmpVersion: *Integer*,
    gdprApplies: *Boolean*,
    evenStatus: *String*,
    cmpStatus: *String*,
    isServiceSpecific: *Boolean*,
    useNonStandardStacks: *Boolean*,
    publisherCC: *String*,
    purposeOneTreatment: *Boolean*,
    outOfBand: {
        allowedVendors: {
            *vendorId*: *Boolean*,
            ?
        },
        disclosedVendors: {
            *vendorId*: *Boolean*,
            ?
        }
    },
    purpose: {
        consents: {
            *purposeId*: *Boolean*,
            ?
        },
        legitimateInterests: {
            *purposeId*: *Boolean*,
            ?
        }
    },
    vendor: {
        consents: {
            *vendorId* : *Boolean*,
            ?
        },
        legitimateInterests: {
            *vendorId* : *Boolean*,
            ?
        }
    },
    specialFeatureOptins: {
        *specialFeatureId*: *Boolean*,
        ?
    },
    publisher: {
        consents: {
            *purposeId*: *Boolean*,
            ?
        },
        legitimateInterests: {
            *purposeId*: *Boolean*,
            ?
        },
        customPurpose: {
            consents: {
                *customPurposeId*: *Boolean*,
                ?
            },
            legitimateInterests: {
                *customPurposeId*: *Boolean*,
                ?
            }
        },
        restrictions: {
            *purposeId*: {
                *vendorId* : *Integer*,
                ?
            },
            ?
        }
    }
}

GlobalVendorList

{
    gvlSpecificationVersion: *Integer*,
    vendorListVersion: *Integer*,
    tcfPolicyVersion: *Integer*,
    lastUpdated: *String*,
    purposes: {
        *purposeId*: {
            id: *Integer*,
            name: *String*,
            description: *String*,
            descriptionLegal: *String*,
        },
        ?
    },
    specialPurposes: {
        *specialPurposeId*: {
            id: *Integer*,
            name: *String*,
            description: *String*,
            descriptionLegal: *String*,
        },
        ?
    },
    features: {
        *featureId*: {
            id: *Integer*,
            name: *String*,
            description: *String*,
            descriptionLegal: *String*,
        },
        ?
    },
    specialFeatures: {
        *specialFeatureId*: {
            id: *Integer*,
            name: *String*,
            description: *String*,
            descriptionLegal: *String*,
        },
        ?
    },
    stacks: {
        *stackId*: {
            id: *Integer*,
            name: *String*,
            description: *String*,
            purposes: [
                *Integer*,
                ?
            ],
            specialFeatures: [
                *Integer*,
                ?
            ],
        },
        ?
    },
    vendors: {
        *vendorId*: {
        {
            id: *Integer*,
            name: *String*,
            purposes: [
                *Integer*,
                ?
            ],
            legIntPurposes: [
                *Integer*,
                ?
            ],
            flexiblePurposes: [
                *Integer*,
                ?
            ],
            specialPurposes: [
                *Integer*,
                ?
            ],
            features: [
                *Integer*,
                ?
            ],
            specialFeatures: [
                *Integer*,
                ?
            ],
            policyUrl: *String*,
            usesCookies: *Boolean*,
            cookieMaxAgeSeconds: *Integer*,            
            usesNonCookieAccess: *Boolean*,
            deviceStorageDisclosureUrl: *String*
        },
        ?
    }
}

Events

You will find in the table below the list of events that can be triggered by the CMP:

Event

Description

tcloaded

This event status is triggered when the CMP is loaded, a valid TC String is available and the UI is not surfaced.

cmpuishown

This event status is triggered when the UI is surfaced or re-surfaced. If there's no existing TC String for the user, the CMP creates a TC String with all legitimate interest signals set to true and all the consent signals set to false.

useractioncomplete

This event status is triggered whenever a user has confirmed or re-confirmed their choices and the updated TC String is ready to be surfaced.

cmpuiclosed

This event status is triggered when a user closes the surfaced UI by clicking on the close button (if enabled) and thus the current TC String is unmodified by the CMP.

Dernière mise à jour