For the complete documentation index, see llms.txt. This page is also available as Markdown.

Users schema

Organizations subscribed to Didomi after 18 January 2022 is utilizing API v2 by default.

Expand the accordions below to view the user schema and data dictionary.

User schema and data dictionary API v2 and v1 (Legacy) with $include_full_tree=true
{
    /**
    * Didomi user ID
    */
    "id": "string",
    /**
    * A unique user ID provided by your organization. 
    * This could be an email, a phone number, an internal client ID, etc... 
    * It is used to link Didomi users to your internal systems.
    */
    "organization_user_id": "string",
    /**
    * Type of the external user ID defined by the organization
    */
    "organization_user_id_type": "string",
    /**
    * Organization ID that owns the user
    */
    "organization_id": "string",
    /**
    * Version number of the user record 
    */
    "version": 1,
    /**
    * Creation date of the user record
    */
    "created_at": "ISO-8601",
    /**
    * Last update date of the user record
    */
    "updated_at": null,
    /**
    * External email defined by the organization. 
    * Used to link the Didomi user with a user that the organization knows in their systems as an email
    */
    "email": "user@example.com",
    /**
    * External phone number defined by the organization. 
    * Used to link the Didomi user with a user that the organization knows in their systems as a phone number
    */
    "phone": "+15551234567",
    /**
    * Free-form metadata object for the user
    */
    "metadata": {},
    /**
    * API-assigned metadata for internal system properties
    */
    "api_metadata": {
        /**
        * Indicates whether this user entity represents a merge fix user. 
        * When true, this user was created by the API to persist merged consent state for mulitple user organization user IDs, with the organization user ID as the user ID.
        */
        "merge_fix_user": true,
        /**
        * Version number of the merge fix implementation. 
        * Used to track which version of the merge fix logic created this user entity.
        */        
        "merge_fix_version": 1
    },
    /**
    * Consent status of the user
    */
    "consents": {
        /**
        * Channels for which the end-user made choices
        * Note: This is a legacy property.
        */
        "channels": [
            {
                /**
                * Unique channel ID
                */
                "id": "string",
                /**
                * Whether the end-user has enabled this channel or not 
                * Note: A null value indicates that the user has not made a specific choice for the channel
                */
                "enabled": false,
                /**
                * Free-form metadata object
                */
                "metadata": {}
            }
        ],
        /**
        * Purposes (for both CMP and Preference Management Platform)
        */
        "purposes": [
            {
                /**
                * Unique identifier for the data processing purpose
                */
                "id": "string",
                /**
                * End-user's consent choice for this purpose.
                * true: consent given (user opted in)
                * false: consent denied (user opted out)
                * undefined: not specified
                */
                "enabled": true,
                /**
                * End-user's objection status for legitimate interest processing.
                * true: no objection (legitimate interest processing allowed)
                * false: objection raised (legitimate interest processing blocked)
                * undefined: not specified (legitimate interest not applicable)
                */
                "enabled_li": null,
                /**
                * Custom metadata for organization-specific data storage
                */
                "metadata": {},
                /**
                * Indicates whether this purpose exists in the configuration tree 
                * true: exists in configuration tree
                * false: added from user consent data
                * Note: Always present when using $include_full_tree=true.
                */
                "from_tree": true,
                /**
                * Localized names for the purpose from the configuration tree. 
                * Only present if the configuration tree has name content for this purpose.
                */
                "name": {},
                /**
                * Localized descriptions explaining the purpose from the configuration tree. 
                * Only present if the configuration tree has description content for this purpose.
                */
                "description": {},
                /**
                * Preferences for which the end-user has made choices 
                */
                "values": {
                    /**
                    * Preference selection containing the end-user's choice
                    * Note: Key is the configured ID of the preference
                    */
                    "PREFERENCE_ID": {
                        /**
                        * Preference values that the end-user has made choices for
                        */
                        "value": "string",
                        /**
                        * Indicates whether this preference exists in the configuration tree 
                        * true: exists in configuration tree
                        * false: added from user consent data
                        * Note: Always present when using $include_full_tree=true.
                        */
                        "from_tree": true,
                        /**
                        * Parent preference ID that this preference belongs to. 
                        * Can be null for top-level preferences or undefined if not specified.
                        */
                        "parent_id": null,
                        /**
                        * Name of the preference in the configuration tree
                        */
                        "name": {},
                        /**
                        * Description of the preference in the configuration tree
                        */
                        "description": {}
                    }
                }
            }
        ],
        /**
        * Vendors for which the end-user has made choices 
        */
        "vendors": {
            /**
            * List of vendors where end-user has explicitly given consent for data processing
            */
            "enabled": [
                "string"
            ],
            /**
            * List of vendors where end-user has explicitly denied consent for data processing
            */
            "disabled": [
                "string"
            ],
            /**
            * List of vendors where end-user allows legitimate interest processing
            */
            "enabled_li": [
                "string"
            ],
            /**
            * List of vendors where end-user objects to legitimate interest processing
            */
            "disabled_li": [
                "string"
            ]
        },
        /**
        * TCF consent string for the end-user (if it was available or generated at the time of consent collection)
        */
        "tcfcs": "string",
        /**
        * Timestamp of when consents were last updated
        */
        "updated_at": "ISO-8601",
        /**
        * Configuration tree metadata.
        * Note: Always present when $include_full_tree=true.
        */
        "config_tree": {
            /**
            * Unique ID of the configuration tree
            */
            "id": "string",
            /**
            * Date the configuration tree was created
            */
            "created_at": "ISO-8601",
            /**
            * Update date for the configuration tree
            */
            "updated_at": "ISO-8601"
        }
    },
    /**
    * Two-letter ISO code of the user country
    */
    "country": "US",
    /**
    * Two-letter ISO country code of the last submitted consent event for the user
    */
    "last_seen_country": "US"
}
Key
Data type
Description

id

String

Didomi user ID

organization_user_id

String | null

A unique user ID provided by your organization. This could be an email, a phone number, an internal client ID, etc... It is used to link Didomi users to your internal systems.

organization_user_id_type

String | null

Type of the external user ID defined by the organization

organization_id

String

Organization ID that owns the user

version

Number

Version number of the user record

created_at

ISO 8601 Date

Creation date of the user record

updated_at

ISO 8601 Date | null

Last update date of the user record

email

String | null

External email defined by the organization. Used to link the Didomi user with a user that the organization knows in their systems as an email

phone

String | null

External phone number defined by the organization. Used to link the Didomi user with a user that the organization knows in their systems as a phone number

metadata

Object

Free-form metadata object for the user

api_metadata

Object

API-assigned metadata for internal system properties

api_metadata.merge_fix_user

Boolean

Indicates whether this user entity represents a merge fix user. When true, this user was created by the API to persist merged consent state for mulitple user organization user IDs, with the organization user ID as the user ID.

api_metadata.merge_fix_version

Number

Version number of the merge fix implementation.

Used to track which version of the merge fix logic created this user entity.

consents

Object

Consent status of the user

consents.channels

Array of Objects

Channels for which the end-user made choices

Note: This is a legacy property.

consents.channels.id

String

Unique channel ID

consents.channels.enabled

Boolean | null

Whether the end-user has enabled this channel or not

Note: A null value indicates that the user has not made a specific choice for the channel

consents.channels.metadata

Object

Free-form metadata object

consents.purposes

Array of Objects

Purposes (for both CMP and Preference Management Platform)

consents.purposes.id

String

Unique identifier for the data processing purpose

consents.purposes.enabled

Boolean | null

End-user's consent choice for this purpose.

  • true: consent given (user opted in)

  • false: consent denied (user opted out)

  • undefined: not specified

consents.purposes.enabled_li

Boolean | null

End-user's objection status for legitimate interest processing.

  • true: no objection (legitimate interest processing allowed)

  • false: objection raised (legitimate interest processing blocked)

  • undefined: not specified (legitimate interest not applicable)

consents.purposes.metadata

Object

Custom metadata for organization-specific data storage

consents.purposes.from_tree

Boolean

Indicates whether this purpose exists in the configuration tree

  • true: exists in configuration tree

  • false: added from user consent data

Note: Always present when using $include_full_tree=true.

consents.purposes.name

Object

Localized names for the purpose from the configuration tree. Only present if the configuration tree has name content for this purpose.

consents.purposes.description

Object

Localized descriptions explaining the purpose from the configuration tree. Only present if the configuration tree has description content for this purpose.

consents.purposes.values

Object

Preferences for which the end-user has made choices

consents.purposes.values.[PREFERENCE_ID]

Object

Preference selection containing the end-user's choice

Note: Key is the configured ID of the preference

consents.purposes.values.[PREFERENCE_ID].value

String

Preference values that the end-user has made choices for

consents.purposes.values.[PREFERENCE_ID].from_tree

Boolean

Indicates whether this preference exists in the configuration tree

  • true: exists in configuration tree

  • false: added from user consent data

Note: Always present when using $include_full_tree=true.

consents.purposes.values.[PREFERENCE_ID].parent_id

String | null

Parent preference ID that this preference belongs to. Can be null for top-level preferences or undefined if not specified.

consents.purposes.values.[PREFERENCE_ID].name

Object

Name of the preference in the configuration tree

consents.purposes.values.[PREFERENCE_ID].description

Object

Description of the preference in the configuration tree

consents.vendors

Object

Vendors for which the end-user has made choices

consents.vendors.enabled

Array

List of vendors where end-user has explicitly given consent for data processing

consents.vendors.disabled

Array

List of vendors where end-user has explicitly denied consent for data processing

consents.vendors.enabled_li

Array

List of vendors where end-user allows legitimate interest processing

consents.vendors.disabled_li

Array

List of vendors where end-user objects to legitimate interest processing

consents.tcfcs

String | null

TCF consent string for the end-user (if it was available or generated at the time of consent collection)

consents.updated_at

ISO 8601 Date | null

Timestamp of when consents were last updated

consents.config_tree

Object

Configuration tree metadata.

Note: Always present when $include_full_tree=true.

consents.config_tree.id

String

Unique ID of the configuration tree

consents.config_tree.created_at

ISO 8601 Date

Date the configuration tree was created

consents.config_tree.updated_at

ISO 8601 Date

Update date for the configuration tree

country

String | null

Two-letter ISO code of the user country

last_seen_country

String | null

Two-letter ISO country code of the last submitted consent event for the user

User schema and data dictionary API v2 without $include_full_tree=true
{
    /**
    * Didomi user ID
    */    
    "id": "string",
    /**
    * A unique user ID provided by your organization. 
    * This could be an email, a phone number, an internal client ID, etc... 
    * It is used to link Didomi users to your internal systems.
    */    
    "organization_user_id": "string",
    /**
    * Type of the external user ID defined by the organization
    */
    "organization_user_id_type": "string",
    /**
    * Organization ID that owns the user
    */
    "organization_id": "string",
    /**
    * Version number of the user record 
    */
    "version": 1,
    /**
    * Creation date of the user record
    */
    "created_at": "ISO-8601",
    /**
    * Last update date of the user record
    */
    "updated_at": null,
    /**
    * External email defined by the organization. 
    * Used to link the Didomi user with a user that the organization knows in their systems as an email
    */
    "email": "user@example.com",
    /**
    * External phone number defined by the organization. 
    * Used to link the Didomi user with a user that the organization knows in their systems as a phone number
    */
    "phone": "+15551234567",
    /**
    * Free-form metadata object for the user
    */
    "metadata": {},
    /**
    * API-assigned metadata for internal system properties
    */
    "api_metadata": {
        /**
        * Indicates whether this user entity represents a merge fix user. 
        * When true, this user was created by the API to persist merged consent state for mulitple user organization user IDs, with the organization user ID as the user ID.
        */
        "merge_fix_user": true,
        /**
        * Version number of the merge fix implementation. 
        * Used to track which version of the merge fix logic created this user entity.
        */     
        "merge_fix_version": 1
    },
    /**
    * Consent status of the user
    */
    "consents": {
        /**
        * Channels for which the end-user made choices
        * Note: This is a legacy property.
        */
        "channels": [
            {
                /**
                * Unique channel ID
                */
                "id": "string",
                /**
                * Whether the end-user has enabled this channel or not 
                * Note: A null value indicates that the user has not made a specific choice for the channel
                */
                "enabled": false,
                /**
                * Free-form metadata object
                */
                "metadata": {}
            }
        ],
        /**
        * Purposes (for both CMP and Preference Management Platform)
        */
        "purposes": [
            {
                /**
                * Unique identifier for the data processing purpose
                */
                "id": "string",
                /**
                * End-user's consent choice for this purpose.
                * true: consent given (user opted in)
                * false: consent denied (user opted out)
                * undefined: not specified
                */
                "enabled": true,
                /**
                * End-user's objection status for legitimate interest processing.
                * true: no objection (legitimate interest processing allowed)
                * false: objection raised (legitimate interest processing blocked)
                * undefined: not specified (legitimate interest not applicable)
                */
                "enabled_li": null,
                /**
                * Custom metadata for organization-specific data storage
                */
                "metadata": {},
                /**
                * Preferences for which the end-user has made choices 
                */
                "values": {

                    "PREFERENCE_ID": {
                        /**
                        * Preference values that the end-user has made choices for
                        */
                        "value": "string"
                    }
                }
            }
        ],
        /**
        * Vendors for which the end-user has made choices 
        */
        "vendors": {
            /**
            * List of vendors where end-user has explicitly given consent for data processing
            */
            "enabled": ["vendor_enabled_1"],
            /**
            * List of vendors where end-user has explicitly denied consent for data processing
            */
            "disabled": ["vendor_disabled_1"],
            /**
            * List of vendors where end-user allows legitimate interest processing
            */
            "enabled_li": ["vendor_li_enabled_1"],
            /**
            * List of vendors where end-user objects to legitimate interest processing
            */
            "disabled_li": ["vendor_li_disabled_1"]
        },
        /**
        * TCF consent string for the end-user (if it was available or generated at the time of consent collection)
        */
        "tcfcs": "string",
        /**
        * Timestamp of when consents were last updated
        */
        "updated_at": "ISO-8601"
    },
    /**
    * Two-letter ISO code of the user country
    */
    "country": "US",
    /**
    * Two-letter ISO country code of the last submitted consent event for the user
    */
    "last_seen_country": "US"
}
Key
Data type
Description

id

String

Didomi user ID

organization_user_id

String | null

A unique user ID provided by your organization. This could be an email, a phone number, an internal client ID, etc... It is used to link Didomi users to your internal systems.

organization_user_id_type

String | null

Type of the external user ID defined by the organization

organization_id

String

Organization ID that owns the user

version

Number

Version number of the user record. Used for optimistic locking

created_at

ISO 8601 Date

Creation date of the user record

updated_at

ISO 8601 Date | null

Last update date of the user record

email

String | null

External email defined by the organization. Used to link the Didomi user with a user that the organization knows in their systems as an email

phone

String | null

External phone number defined by the organization. Used to link the Didomi user with a user that the organization knows in their systems as a phone number

metadata

Object

Free-form metadata object for the user

api_metadata

Object

API-assigned metadata for internal system properties

api_metadata.merge_fix_user

Boolean

Indicates whether this user entity represents a merge fix user. When true, this user was created by the API to persist merged consent state for mulitple user organization user IDs, with the organization user ID as the user ID.

api_metadata.merge_fix_version

Number

Version number of the merge fix implementation.

Used to track which version of the merge fix logic created this user entity.

consents

Object

Consent status of the end-user

consents.channels

Array of Objects

Channels for which the end-user made choices

Note: This is a legacy property.

consents.channels.id

String

Unique channel ID

consents.channels.enabled

Boolean | null

Whether the end-user has enabled this channel or not

Note: A null value indicates that the user has not made a specific choice for the channel

consents.channels.metadata

Object

Free-form metadata object

consents.purposes

Array of Objects

Purposes (for both CMP and Preference Management Platform)

consents.purposes.id

String

Unique identifier for the data processing purpose

consents.purposes.enabled

Boolean | null

End-user's consent choice for this purpose.

  • true: consent given (user opted in)

  • false: consent denied (user opted out)

  • undefined: not specified

consents.purposes.enabled_li

Boolean | null

End-user's objection status for legitimate interest processing.

  • true: no objection (legitimate interest processing allowed)

  • false: objection raised (legitimate interest processing blocked)

  • undefined: not specified (legitimate interest not applicable)

consents.purposes.metadata

Object

Custom metadata for organization-specific data storage

consents.purposes.values

Object

Preferences for which the end-user has made choices

consents.purposes.values.{PREFERENCE_ID}

Object

Preference selection containing the end-user's choice

Note: Key is the configured ID of the preference

consents.purposes.values.{PREFERENCE_ID}.value

String

Preference values that the end-user has made choices for

consents.vendors

Object

Vendors for which the end-user has made choices

consents.vendors.enabled

Array

List of vendors where end-user has explicitly given consent for data processing

consents.vendors.disabled

Array

List of vendors where end-user has explicitly denied consent for data processing

consents.vendors.enabled_li

Array

List of vendors where end-user allows legitimate interest processing

consents.vendors.disabled_li

Array

List of vendors where end-user objects to legitimate interest processing

consents.tcfcs

String

TCF consent string for the end-user (if it was available or generated at the time of consent collection)

consents.updated_at

ISO 8601 Date | null

Timestamp of when consents were last updated

country

String | null

Two-letter ISO code of the user country

last_seen_country

String | null

Two-letter ISO country code of the last submitted consent event for the user

User schema and data dictionary API v1 (Legacy) without $include_full_tree=true
{
    /**
    * Didomi user ID
    */
    "id": "string",
    /**
    * A unique user ID provided by your organization. 
    * This could be an email, a phone number, an internal client ID, etc... 
    * It is used to link Didomi users to your internal systems.
    */
    "organization_user_id": "string",
    /**
    * Type of the external user ID defined by the organization
    */
    "organization_user_id_type": "string",
    /**
    * Organization ID that owns the user
    */
    "organization_id": "string",
    /**
    * Version number of the user record
    */
    "version": 1,
    /**
    * Creation date of the user record
    */
    "created_at": "ISO-8601",
    /**
    * Last update date of the user record
    */
    "updated_at": null,
    /**
    * External email defined by the organization. 
    * Used to link the Didomi user with a user that the organization knows in their systems as an email
    */
    "email": "user@example.com",
    /**
    * External phone number defined by the organization. 
    * Used to link the Didomi user with a user that the organization knows in their systems as a phone number
    */
    "phone": "+15551234567",
    /**
    * Free-form metadata object for the user
    */
    "metadata": {},
    /**
    * API-assigned metadata for internal system properties
    */
    "api_metadata": {
        /**
        * Indicates whether this user entity represents a merge fix user. 
        * When true, this user was created by the API to persist merged consent state for mulitple user organization user IDs, with the organization user ID as the user ID.
        */        
        "merge_fix_user": true,
        /**
        * Version number of the merge fix implementation. 
        * Used to track which version of the merge fix logic created this user entity.
        */
        "merge_fix_version": 1
    },
    /**
    * Consent status of the end-user
    */
    "consents": {
        /**
        * Channels for which the end-user made choices
        * Note: This is a legacy property.
        */
        "channels": [
            {
                /**
                * Unique channel ID
                */
                "id": "string",
                /**
                * Whether the end-user has enabled this channel or not 
                * Note: A null value indicates that the user has not made a specific choice for the channel
                */
                "enabled": true,
                /**
                * Free-form metadata object
                */
                "metadata": {}
            }
        ],
        /**
        * Purposes (for both CMP and Preference Management Platform)
        */
        "purposes": [
            {
                /**
                * Unique identifier for the data processing purpose
                */
                "id": "string",
                /**
                * End-user's consent choice for this purpose.
                * true: consent given (user opted in)
                * false: consent denied (user opted out)
                * undefined: not specified
                */
                "enabled": true,
                /**
                * End-user's objection status for legitimate interest processing.
                * true: no objection (legitimate interest processing allowed)
                * false: objection raised (legitimate interest processing blocked)
                * undefined: not specified (legitimate interest not applicable)
                */
                "enabled_li": null,
                /**
                * Custom metadata for organization-specific data storage
                */
                "metadata": {},
                /**
                * Communication channels enabled at the purpose level
                */
                "channels": [
                    {
                        /**
                        * Unique channel ID
                        */
                        "id": "string",
                        /**
                        * Whether the end-user has enabled this channel or not 
                        * Note: A null value indicates that the user has not made a specific choice for the channel
                        */
                        "enabled": true,
                        /**
                        * Custom metadata for the channel
                        */
                        "metadata": {}
                    }
                ],
                /**
                * Nested preference structure providing granular consent control. 
                * Each preference can have its own enabled state, metadata, and channel overrides.
                */
                "preferences": [
                    {
                        /**
                        * Unique identifier for the preference within its parent purpose
                        */
                        "id": "string",
                        /**
                        * End-user's choice for this specific preference.
                        * true: explicitly enabled 
                        * false: explicitly disabled
                        * null: no preference set (inherits from parent purpose or defaults)
                        */
                        "enabled": true,
                        /**
                        * Custom metadata for preference-specific data storage
                        */
                        "metadata": {},
                        /**
                        * Communication channels enabled at the preference level
                        */
                        "channels": [
                            {
                                /**
                                * Unique channel ID
                                */
                                "id": "string",
                                /**
                                * Whether the end-user has enabled this channel or not 
                                * Note: A null value indicates that the user has not made a specific choice for the channel
                                */
                                "enabled": true,
                                /**
                                * Custom metadata for the channel
                                */
                                "metadata": {}
                            }
                        ]
                    }
                ]
            }
        ],
        /**
        * Vendors for which the end-user has made choices 
        */
        "vendors": {
            /**
            * List of vendors where end-user has explicitly given consent for data processing
            */
            "enabled": ["vendor_enabled_1"],
            /**
            * List of vendors where end-user has explicitly denied consent for data processing
            */
            "disabled": ["vendor_disabled_1"],
            /**
            * List of vendors where end-user allows legitimate interest processing
            */
            "enabled_li": ["vendor_li_enabled_1"],
            /**
            * List of vendors where end-user objects to legitimate interest processing
            */
            "disabled_li": ["vendor_li_disabled_1"]
        },
        /**
        * TCF consent string for the end-user (if it was available or generated at the time of consent collection)
        */
        "tcfcs": "string",
        /**
        * Timestamp of when consents were last updated
        */
        "updated_at": "ISO-8601"
    },
    /**
    * Two-letter ISO code of the user country
    */
    "country": "US",
    /**
    * Two-letter ISO country code of the last submitted consent event for the user
    */
    "last_seen_country": "US"
}
Key
Data type
Description

id

String

Didomi user ID

organization_user_id

String | null

A unique user ID provided by your organization. This could be an email, a phone number, an internal client ID, etc... It is used to link Didomi users to your internal systems.

organization_user_id_type

String | null

Type of the external user ID defined by the organization

organization_id

String

Organization ID that owns the user

version

Number

Version number of the user record. Used for optimistic locking

created_at

ISO 8601 Date

Creation date of the user record

updated_at

ISO 8601 Date | null

Last update date of the user record

email

String | null

External email defined by the organization. Used to link the Didomi user with a user that the organization knows in their systems as an email

phone

String | null

External phone number defined by the organization. Used to link the Didomi user with a user that the organization knows in their systems as a phone number

metadata

Object

Free-form metadata object for the user

api_metadata

Object

API-assigned metadata for internal system properties

api_metadata.merge_fix_user

Boolean

Indicates whether this user entity represents a merge fix user. When true, this user was created by the API to persist merged consent state for mulitple user organization user IDs, with the organization user ID as the user ID.

api_metadata.merge_fix_version

Number

Version number of the merge fix implementation.

Used to track which version of the merge fix logic created this user entity.

consents

Object

Consent status of the end-user

consents.channels

Array of Objects

Channels for which the end-user made choices

Note: This is a legacy property.

consents.channels.id

String

Unique channel ID

consents.channels.enabled

Boolean | null

Whether the end-user has enabled this channel or not

Note: A null value indicates that the user has not made a specific choice for the channel

consents.channels.metadata

Object

Free-form metadata object

consents.purposes

Array of Objects

Purposes (for both CMP and Preference Management Platform)

consents.purposes.id

String

Unique identifier for the data processing purpose

consents.purposes.enabled

Boolean | null

End-user's consent choice for this purpose.

  • true: consent given (user opted in)

  • false: consent denied (user opted out)

  • undefined: not specified

consents.purposes.enabled_li

Boolean | null

End-user's objection status for legitimate interest processing.

  • true: no objection (legitimate interest processing allowed)

  • false: objection raised (legitimate interest processing blocked)

  • undefined: not specified (legitimate interest not applicable)

consents.purposes.metadata

Object

Custom metadata for organization-specific data storage

consents.purposes.channels

Array of Objects

Communication channels enabled at the purpose level

consents.purposes.channels.id

String

Unique channel ID

consents.purposes.channels.enabled

Boolean | null

Whether the end-user has enabled this channel or not

Note: A null value indicates that the user has not made a specific choice for the channel

consents.purposes.channels.metadata

Object

Custom metadata for the channel

consents.purposes.preferences

Array of Objects

Nested preference structure providing granular consent control. Each preference can have its own enabled state, metadata, and channel overrides.

consents.purposes.preferences.id

String

Unique identifier for the preference within its parent purpose

consents.purposes.preferences.enabled

Boolean | null

End-user's choice for this specific preference.

  • true: explicitly enabled

  • false: explicitly disabled

  • null: no preference set (inherits from parent purpose or defaults)

consents.purposes.preferences.metadata

Object

Custom metadata for preference-specific data storage

consents.purposes.preferences.channels

Array of Objects

Communication channels enabled at the preference level

consents.purposes.preferences.channels.id

String

Unique channel ID

consents.purposes.preferences.channels.enabled

Boolean | null

Whether the end-user has enabled this channel or not

Note: A null value indicates that the user has not made a specific choice for the channel

consents.purposes.preferences.channels.metadata

Object

Custom metadata for the channel

consents.vendors

Object

Vendors for which the end-user has made choices

consents.vendors.enabled

Array

List of vendors where end-user has explicitly given consent for data processing

consents.vendors.disabled

Array

List of vendors where end-user has explicitly denied consent for data processing

consents.vendors.enabled_li

Array

List of vendors where end-user allows legitimate interest processing

consents.vendors.disabled_li

Array

List of vendors where end-user objects to legitimate interest processing

consents.tcfcs

String

TCF consent string for the end-user (if it was available or generated at the time of consent collection)

consents.updated_at

ISO 8601 Date | null

Timestamp of when consents were last updated

country

String | null

Two-letter ISO code of the user country

last_seen_country

String | null

Two-letter ISO country code of the last submitted consent event for the user

Last updated