Set consent preferences for a user at https://consent.transcend.io or https://consent.us.transcend.io. N.B. This is not a Sombra route. Authenticate with a signed JWT that carries identifier name/value pairs (preferred) or the deprecated single encryptedIdentifier. See reference for details.
POST
/synccontent-typestringSpecify content-type: application/json for a JSON response from the Transcend API. |
application/json
partitionstring(required)The consent partition or bundle ID. You can find the partition value under Consent Management > Developer Settings. If this value is not set, please use your bundle ID. |
tokenstring(required)A JWT signed with HS384. Prefer `{ "identifiers": [{ "name": "email", "value": "<AES-KWP encrypted value>" }] }`. Encrypt each value with your Preference Store encryption key (AES-KWP, base64). At least one identifier must be unique for the partition. Lowercase emails (and otherwise normalize identifiers) on your backend before encryption — Transcend never sees decrypted values and does not validate them. Deprecated: `{ "encryptedIdentifier": "<AES-KWP encrypted value>" }`. See [Storing Consent Preferences](https://docs.transcend.io/docs/preference-store/storing-consent-preferences). |
consentobject(required) |
Request Body Examples
Set consent for a user (preferred identifiers JWT):
{
"token": "eyJhbGciOiJIUzM4NCIsInR5cCI6IkpXVCJ9.eyJpZGVudGlmaWVycyI6W3sibmFtZSI6ImVtYWlsIiwidmFsdWUiOiJGSDZOK2RlZ1ZjYjM2WDMxYXYvWnh3PT0ifV0sImlhdCI6MTY4MzY0NDk0Mn0.IRNqiXOz8oYJuWqdWfstgIjmQ9B_uJ-gvkw1mT5uUT-G9xdlPJ7zeODCCvlNIbf_",
"partition": "7b9916f1-a9f7-45bd-b6d4-4bd7decfddaa",
"consent": {
"purposes": {
"TestPurpose": false
},
"confirmed": true,
"timestamp": "2023-05-11T19:32:31.707Z"
}
}Set consent for a user (deprecated encryptedIdentifier JWT):
{
"token": "eyJhbGciOiJIUzM4NCIsInR5cCI6IkpXVCJ9.eyJlbmNyeXB0ZWRJZGVudGlmaWVyIjoiRkg2TitkZWdWY2IzNlgzMWF2L1p4dz09IiwiaWF0IjoxNjgzNjQ0OTQyfQ.IRNqiXOz8oYJuWqdWfstgIjmQ9B_uJ-gvkw1mT5uUT-G9xdlPJ7zeODCCvlNIbf_",
"partition": "7b9916f1-a9f7-45bd-b6d4-4bd7decfddaa",
"consent": {
"purposes": {
"TestPurpose": false
},
"confirmed": true,
"timestamp": "2023-05-11T19:32:31.707Z"
}
}200 (OK)
application/jsonUpserts consent preferences and returns merged results
Response Body
purposesobject(required)Consent purposes to update |
confirmedboolean(required)Was tracking consent confirmed by the user? If this is false, the consent was resolved from defaults & is not yet confirmed |
timestampstring(required)Timestamp of when consent was collected |
updatedbooleanHas the consent been updated (including no-change confirmation) since default resolution |
promptedbooleanWhether or not the UI has been shown to the end-user (undefined in older versions of airgap.js) |
uspstringUS Privacy (USP) String |
tcfstringIAB Transparency & Consent Framework (TCF) 2.0 consent metadata |
Response Body Example
Consent for user:
{
"purposes": {
"TestPurpose": false
},
"confirmed": true,
"timestamp": "2023-05-11T19:32:31.707Z"
}400 (Bad Request)
application/jsonThe token could not be verified or decoded
500 (Internal Server Error)
application/jsonA 500 error means the backend is having issues. You check our system status at status.transcend.io. Please reach out to Transcend support if you're experiencing this error.