# Exemples

### Lecture des TC Data <a href="#read-tc-data" id="read-tc-data"></a>

{% hint style="info" %}
Avant de charger les scripts partenaires sur votre site, vous devez vérifier que l'utilisateur a donné son consentement ou ne s'est pas opposé à l'intérêt légitime.
{% endhint %}

Avec la commande `addEventListener`, vous pouvez déclarer un listener à la CMP qui sera appelé avec les TC Data lorsqu'un évènement se déclenche.\
A l'ajout d'un listener, la callback est immédiatement appelée avec les TC Data courantes ainsi qu'un listenerId que vous devez conserver si vous avez ensuite besoin de supprimer le listener.

{% tabs %}
{% tab title="Lecture des TC Data" %}

<pre class="language-javascript"><code class="lang-javascript"><strong>window.__tcfapi("addEventListener", 2, function (tcData, success) {
</strong> if (success &#x26;&#x26; tcData &#x26;&#x26; (tcData.eventStatus == "cmpuiclosed" || tcData.eventStatus == "tcloaded")) {
      if (!tcData.gdprApplies) {
                        console.log("GDPR doesn't apply to user");
      } else {
        if (tcData.vendor.consents[53] &#x26;&#x26; tcData.purpose.consents[1]) {
                                console.log("Vendor ID 53 has consent for  purpose ID 1");
             }
        if (!tcData.vendor.consents[53] || !tcData.purpose.consents[2]) {
                                console.log("Vendor ID 53 has no consent for purpose ID 2");
             }
        if (tcData.vendor.legitimateInterests[53] &#x26;&#x26; tcData.purpose.legitimateInterests[9]) {
                                console.log("User has been informed of vendor ID 53's legitimate interest for purpose ID 9 and hasn't objected to it");
             }
         if (!tcData.vendor.legitimateInterests[53] || !tcData.purpose.legitimateInterests[10]) {
                                console.log("User has objected to vendor ID 53's legitimate interest for purpose ID 10");
             }
         }
       }
});
</code></pre>

{% endtab %}
{% endtabs %}

Vous pouvez également spécifier une liste d'ID partenaires pour lesquels les TC Data sont requêtées.

{% tabs %}
{% tab title="Lecture des TC Data filtrée sur une liste d" %}

```javascript
window.__tcfapi("addEventListener", 2, function (tcData, success) {
 if (success && tcData && (tcData.eventStatus == "cmpuiclosed" || tcData.eventStatus == "tcloaded")) {
    if (!tcData.gdprApplies) {
         console.log("GDPR doesn't apply to user");
     } else {
            if (tcData.vendor.consents[53] && tcData.purpose.consents[1]) {
                console.log('Vendor ID 53 has consent for purpose ID 1');
            }
            if (tcData.vendor.consents[100] && tcData.purpose.consents[1]) {
                // This will never happen since vendor ID 100
                // is not included in the vendorIDs parameter
                console.log('Vendor ID 53 has consent for purpose ID 1');
            }
    }
  }
});
```

{% endtab %}
{% endtabs %}

### Lecture de la Global Vendor List <a href="#read-global-vendor-list" id="read-global-vendor-list"></a>

La Global Vendor List contenant les finalités et les partenaires participant au Transparency & Consent Framework peut être récupérée avec la commande `getVendorList`.

{% tabs %}
{% tab title="Lecture de la Global Vendor List" %}

```javascript
window.__tcfapi("getVendorList", 2, function (globalVendorList, success) {
 if (success) {
  console.log("vendorListVersion = " + globalVendorList.vendorListVersion);
    }
});
```

{% endtab %}
{% endtabs %}

Vous pouvez également spécifier une *vendorListVersion* pour laquelle la Global Vendor List est requêtée.

{% tabs %}
{% tab title="Lecture de la Global Vendor List pour une version spécifique" %}

```javascript
window.__tcfapi("getVendorList", 2, function (globalVendorList, success) {
        if (success) {
               console.log("globalVendorList with version 10 is retrieved");
        } else {
                console.log("Invalid vendorListVersion");
        }
}, 10);
```

{% endtab %}
{% endtabs %}

### Révoquer un consentement Utiq <a href="#add-event-listener" id="add-event-listener"></a>

Si l'utilisateur a révoqué son consentement pour Utiq en dehors de la CMP, vous pouvez mettre le statut de choix via l'API de la CMP grâce à la commande suivante :

{% tabs %}
{% tab title="Ajout d" %}

```javascript
window.__sdcmpapi("revokeUtiq", 2, function (success) {
    if (success) {
        console.log("Consent for Utiq is revoked");
    }
});
```

{% endtab %}
{% endtabs %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://cmp.docs.sirdata.net/cmp-api/exemples.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
