# IAB TCF Europe Technical Specification ## About this document The global standard [GPP](https://github.com/InteractiveAdvertisingBureau/Global-Privacy-Platform) defines a way how local standards can “plug-in” into the existing mechanics defined by GPP and the [GPP client side API](https://github.com/InteractiveAdvertisingBureau/Global-Privacy-Platform/blob/main/Core/CMP%20API%20Specification.md). This document outlines the technical specification for using the IAB Europe Transparency & Consent Framework under these GPP specifications. ## Summary
| Type | Value | Description |
| GPP Section ID | 2 | The IAB TCF Europe is registered as Section ID 2 under the GPP. |
| Client side API prefix | tcfeuv2 | The IAB TCF Europe is registered with client side API prefix "tcfeuv2" in the GPP Client Side API. |
| Field Name | GPP Field Type | Description | |
| Version | Int(6) | Version number. This value is 2. | |
| Created | Datetime | Epoch time format when TC String was last updated (must be updated any time a value is changed). Must be in UTC time and rounded on a full day. | |
| LastUpdated | Datetime | Epoch time format when TC String was last updated (must be updated any time a value is changed). Must be in UTC time and rounded on a full day. | |
| CmpId | Int(12) | Consent Management Platform ID that last updated the TC String. A unique ID will be assigned to each Consent Management Platform. | |
| CmpVersion | Int(12) | Consent Management Platform version of the CMP that last updated this TC String. Each change to a CMP should increment their internally assigned version number as a record of which version the user gave consent to and transparency was established. | |
| ConsentScreen | Int(6) | CMP Screen number at which consent was given for a user with the CMP that last updated this TC String. The number is a CMP internal designation and is CmpVersion specific. The number is used for identifying on which screen a user gave consent as a record. | |
| ConsentLanguage | String(2) | Two-letter ISO 639-1 language code in which the CMP UI was presented | |
| VendorListVersion | Int(12) | Version of the GVL used to create this TC String. Number corresponds to GVL vendorListVersion | |
| TcfPolicyVersion | Int(6) | Version of policy used within GVL. From the corresponding field in the GVL that was used for obtaining consent. A new policy version invalidates existing strings and requires CMPs to re-establish transparency and consent from users. | |
| IsServiceSpecific | Boolean | 1 true 0 false This field must always have the value of 1. When a Vendor encounters a TC String with IsServiceSpecific=0 then it is considered invalid. |
|
| UseNonStandardTexts | Boolean | Setting this to 1 signals to Vendors that a CMP has modified standard Stack descriptions and/or their translations and/or that a CMP has modified or supplemented standard Illustrations and/or their translations as allowed by the policy (Appendix A section E). A CMP that services multiple publishers sets this value to 0. | |
| SpecialFeatureOptIns | Bitfield(12) | One bit for each Special Feature:
|
|
| PurposeConsent | Bitfield(24) | One bit for each Purpose:
The Purposes are numerically identified and published in the Global Vendor List. From left to right, Purpose 1 maps to the 0th bit, purpose 24 maps to the bit at index 23. Special Purposes are a different ID space and not included in this field. |
|
| PurposesLITransparency | Bitfield(24) | One bit for each Purpose:
By default or if the user has exercised their “Right to Object” to a Purpose, the corresponding bit for that Purpose is set to 0. From left to right, Purpose 1 maps to the 0th bit, purpose 24 maps to the bit at index 23. Special Purposes are a different ID space and not included in this field. Note: With TCF v2.2 support for legitimate interest for purpose 3 to 6 has been deprecated. Bits 2 to 5 are required to be set to 0. |
|
| Specific Jurisdiction Disclosures | PurposeOneTreatment | Boolean | 0 = No special treatment. Purpose 1 was disclosed commonly as consent as expected by the Policies. 1 = Special treatment. Purpose 1 was not disclosed. CMPs can use the PublisherCC field to indicate the legal jurisdiction the publisher is under to help vendors determine whether the vendor needs consent for Purpose 1. |
| PublisherCC | String (2) | The country code of the country that determines legislation of reference. Commonly, this corresponds to the country in which the publisher’s business entity is established.
Each letter is encoded as 6 bits, a=0..z=25. ISO 3166-1 alpha-2 code
|
|
| Vendor Consent and Vendor Legitimate Interest Sections | |||
| VendorConsent | OptimizedIntRange | List of Vendor IDs that indicate Consent for these vendors. Please note that the field is composed of several fields in order to store the data in GPP string format. The client side API format is an array of int. Equivalent of the fields listed under the Vendor Consent Section as defined in the TCF v2 specification: MaxVendorId, IsRangeEncoding, BitField, NumEntries, IsARange, StartOrOnlyVendorId, EndVendorId |
|
| VendorLegitimateInterest | OptimizedIntRange | List of Vendor IDs for which Legitimate Interest is established and the user did not exercise their “Right to Object”. Please note that the field is composed of several fields in order to store the data in GPP string format. The client side API format is array of int. Equivalent of the fields listed under the Vendor Legitimate Interest Section as defined in the TCF v2 specification: MaxVendorId, IsRangeEncoding, BitField, NumEntries, IsARange, StartOrOnlyVendorId, EndVendorId |
|
| Publisher Restrictions Section | The content of this section is optional. Encodes any number of single or range restriction entries. | ||
| PubRestrictions | ArrayOfRanges | First field is always of type Int(12). The value indicates the number of records to follow. Each entry consists of three datatypes: Key: The Vendor’s declared Purpose ID that the Publisher has indicated they are overriding. Types: 0 Purpose Flatly Not Allowed by Publisher (regardless of Vendor declarations).1 Require Consent (if Vendor has declared the Purpose IDs legal basis as Legitimate Interest or flexible)2 Require Legitimate Interest (if Vendor has declared the Purpose IDs legal basis as Consent and flexible)3 UNDEFINED (not used)Ids: A list of Vendor ID(s) who the publisher has designated as restricted under the purpose id encoded as bitmask or ranges. Note: The output of the JS API for the restrictions field is not exactly the same as what is know from the __tcfapi output for the restrictions. |
|
| Field Name | GPP Field Type | Description |
| SegmentType | Int(3) | Always set to 1. |
| DisclosedVendors | OptimizedIntRange | List of Vendor IDs that were disclosed in a CMP UI to the user. Equivalent of the fields listed under Disclosed Vendors as defined in the TCF v2 specification: MaxVendorId, IsRangeEncoding, BitField, NumEntries, IsARange, StartOrOnlyVendorId, EndVendorId |
| Field Name | GPP Field Type | Description |
| SegmentType | Int(3) | Always set to 3. |
| PubPurposesConsent | Bitfield(24) | One bit for each Purpose: 1 Consent 0 No Consent |
| PubPurposesLITransparency | Bitfield(24) | One bit for each Purpose: 1 legitimate interest established 0 legitimate interest was NOT established or it was established but user exercised their “Right to Object” to the Purpose |
| NumCustomPurposes | Int(6) | The number of Custom Purposes. |
| CustomPurposesConsent | Bitfield(NumCustomPurposes) | One bit for each Purpose: 1 Consent 0 No Consent |
| CustomPurposesLITransparency | Bitfield(NumCustomPurposes) | One bit for each Purpose: 1 legitimate interest established 0 implied consent was NOT established or it was established but user exercised their “Right to Object” to the Custom Purpose |
| TCF Key Name | GPP Key Name |
| IABTCF_CmpSdkID | IABGPP_TCFEU2_CmpSdkID |
| IABTCF_CmpSdkVersion | IABGPP_TCFEU2_CmpSdkVersion |
| IABTCF_PolicyVersion | IABGPP_TCFEU2_PolicyVersion |
| IABTCF_gdprApplies | IABGPP_TCFEU2_gdprApplies |
| IABTCF_PublisherCC | IABGPP_TCFEU2_PublisherCC |
| IABTCF_PurposeOneTreatment | IABGPP_TCFEU2_PurposeOneTreatment |
| IABTCF_UseNonStandardStacks | IABGPP_TCFEU2_UseNonStandardStacks |
| IABTCF_TCString | IABGPP_2_TCString |
| IABTCF_VendorConsents | IABGPP_TCFEU2_VendorConsents |
| IABTCF_VendorLegitimateInterests | IABGPP_TCFEU2_VendorLegitimateInterests |
| IABTCF_PurposeConsents | IABGPP_TCFEU2_PurposeConsents |
| IABTCF_PurposeLegitimateInterests | IABGPP_TCFEU2_PurposeLegitimateInterests |
| IABTCF_SpecialFeaturesOptIns | IABGPP_TCFEU2_SpecialFeaturesOptIns |
| IABTCF_PublisherRestrictions{ID} | IABGPP_TCFEU2_PublisherRestrictions{ID} |
| IABTCF_PublisherConsent | IABGPP_TCFEU2_PublisherConsent |
| IABTCF_PublisherLegitimateInterests | IABGPP_TCFEU2_PublisherLegitimateInterests |
| IABTCF_PublisherCustomPurposesConsents | IABGPP_TCFEU2_PublisherCustomPurposesConsents |
| IABTCF_PublisherCustomPurposesLegitimateInterests | IABGPP_TCFEU2_PublisherCustomPurposesLegitimateInterests |