API Reference

postCustomConsent

Certain use cases may require your organization to change an end-user's consent profile outside the Sourcepoint first layer and privacy manager messages. The postCustomConsent command can be used to edit an end-user's consent profile by changing the opt-in status for consented vendors, categories (purposes), and legitimate interest categories (purposes).

💡

Use Case

Apply vendor-specific consent experiences to handle social media plugins. Or apply consent because an end-user accepts the website's T&Cs or a contract provided by a publisher or advertiser.


Command

window._sp_.gdpr.postCustomConsent((vendorConsents, success) => console.log(vendorConsents, success), [vendorIds], [purposeIds], [legitimateInterestPurposeIds] );
ParameterTypeDescription
vendorIdsstringList of vendor IDs that will be consented to by end-user. Comma delimited.
purposeIdsstringList of purpose IDs who use consent as a legal basis that will be consented to by end-user. Comma delimited.
legitimateInterestPurposeIdsstringList of purpose IDs who use legitimate interest as a legal basis that will be opted-into by end-user. Comma delimited.

📘

You will need to consent to both vendors and purposes. Consenting to a vendor only does not include the purposes.


Implement postCustomConsent

In order to implement the postCustomConsent command on your website property, you will need to:

  1. Implement a button or link on your website property with an element ID. The suggested element ID is "postCustomConsent".
  2. Create a function that executes the postCustomConsent command with purposes and vendors that will be consented to when triggered.
  3. Use the document.getElementbyId method to return the button or link ID and call your function for an onclick event.
<!--Create modal with a button--> <div id="myModal" class="modal"> <div class="modal-content"> <p>Give consent to X, Y, Z vendors and purposes.</p> <button id="postCustomConsent">Give consent to X Y Z</button> </div> </div>
<script> //calls function when button is clicked document.getElementById("postCustomConsent").onclick = function() {myFunction()}; //function that executes postCustomConsent command function myFunction() { window._sp_.gdpr.postCustomConsent((vendorConsents, success) => console.log(vendorConsents, "postCustomConsent was successful: " + success), [vendorIds], [purposeIds], [legitimateInterestPurposeIds] ); } </script>

Response

{ "categories": [ "abcde01e32bd4d27654ba1d5" ], "consentStatus": { "consentedAll": true, "consentedToAny": true, "granularStatus": { "defaultConsent": true, "previousOptInAll": true, "purposeConsent": "SOME", "purposeLegInt": "ALL", "vendorConsent": "SOME", "vendorLegInt": "SOME" }, "hasConsentData": true, "rejectedAny": true, "rejectedLI": true }, "consentUUID": "d6f6c2e8-4af8-4156-8f8d-1bfbf1d8c591_20", "cookies": [ { "key": "consentUUID", "maxAge": 31536000, "session": false, "shareRootDomain": false, "value": "d6f6c2e8-4af8-4156-8f8d-1bfbf1d8c591_20" } ], "customVendorsResponse": { "consentedPurposes": [ { "name": "Select basic ads", "_id": "5fd7e01e32bd4d27654ba1d5" } ], "consentedVendors": [ { "name": "Vendor name", "vendorType": "CUSTOM", "_id": "5f1b2fbeb8e05c306f2a1ed6" } ], "legIntPurposes": [ { "name": "Create a personalised content profile", "_id": "5fd7e01e32bd4d27654ba1ed" } ] }, "grants": { "vendorId": { "purposeGrants": { "purposeId": false }, "vendorGrant": false } }, "legIntCategories": [ "5fd7e01e32bd4d27654ba1ed" ], "legIntVendors": [ "5f1b2fbeb8e05c306f2a1ed6" ], "rejectedAny": true, "specialFeatures": [], "vendors": [ "5f1b2fbeb8e05c306f2a1ed6" ] } postCustomConsent was successful: true
schema: type: object description: Returned response for successful postCustomConsent request properties: categories: type: array description: Purposes consented to by end-user items: type: string description: Purpose ID consentStatus: type: object description: Consent statuses for the end-user properties: consentedAll: type: boolean description: Is end-user consented to all purposes and vendors? consentedToAny: type: boolean description: Is end-user consented to any purposes or vendors? granularStatus: type: object properties: defaultConsent: type: boolean description: previousOptInAll: type: boolean description: End-user previously opted into for all vendors and purposes. purposeConsent: type: string description: Purposes consented to by end-user. ALL | SOME | NONE purposeLegInt: type: string description: Purposes who use legitimate interest as a legal basis. ALL | SOME | NONE vendorConsent: type: string description: Vendors who was consented to by end-user. ALL | SOME | NONE vendorLegInt: type: string description: Vendors who use legitimate interest as a legal basis for a purpose and was consented to by end-user. ALL | SOME | NONE hasConsentData: type: boolean description: Does end-user have consent data? rejectedAny: type: boolean description: Did end-user reject any purposes or vendors? rejectedLI: type: boolean description: Did end-user reject any purposes that use legitimate interest as a legal basis? consentUUID: type: string description: consent UUID cookies: type: array description: Cookies create/updated items: type: object properties: key: type: string description: Name of cookie maxAge: type: number description: Cookie duration session: type: boolean description: Is the cookie a session cookie? shareRootDomain: type: boolean description: Is the cookie written to the root domain? value: type: string description: Value of the cookie customVendorsResponse: type: object description: Purposes and vendors consented to by end-user properties: consentedPurposes: type: array description: List purposes consented to by end-user items: type: object properties: name: type: string description: Name of the purpose _id: type: string description: Purpose ID consentedVendors: type: array description: Vendors consented to by the end-user items: type: object properties: name: type: string description: Name of the vendor vendorType: type: string description: Vendor type _id: type: string description: Vendor ID legIntPurposes: type: array description: Purposes who use legitimate interest as a legal basis accepted by the end-user items: type: object properties: name: type: string description: Name of the purpose _id: type: string description: Purpose ID grants: type: object description: Applicable purposes that were consented to for each vendor properties: vendorId: #value will be vendor's ID type: object properties: purposeGrants: type: object description: Applicable purposes for a vendor where consent was given/not given properties: purposeId: #value will be purpose's ID type: boolean description: Is consent given for the purpose? vendorGrant: type: boolean description: true if consent is given for all purposes for a vendor | false if consent for one or more purposes are not given to the vendor. legIntCategories: type: array description: Purpose who use legitimate interest as a legal basis and was consented to by end-user items: type: string description: Purpose ID legIntVendors: type: array description: Vendors who use legitimate interest as a legal basis for a purpose and was consented to by end-user items: type: string description: Vendor ID rejectedAny: type: boolean description: Did end-user reject any purposes or vendors? specialFeatures: type: array description: IAB special features. Not applicable to GDPR Standard items: type: string description: Special feature. Not applicable to GDPR Standard vendors: type: array description: Vendors consented to by end-user items: type: string description: Vendor ID