# Utilisateurs API

## Visiteur

<mark style="color:bleu;">`GET`</mark> `https://api.commander1.com/v1.0/engage/visitors/`

Ce endpoint vous permet de **obtenir les propriétés d'un visiteur spécifique**. Lorsque vous créez le token, vous pouvez définir quelles propriétés renvoyer.

Cette API est plutôt conçue pour être appelée depuis un tag dans le navigateur de chaque utilisateur.

#### Paramètres de requête

| Nom      | Type    | Description                                                                               |
| -------- | ------- | ----------------------------------------------------------------------------------------- |
| callback | string  | (optionnel) Callback pour requête jsonp                                                   |
| token    | string  | Security token                                                                            |
| site     | integer | ID du site                                                                                |
| tcid     | string  | ID du cookie. S'il est vide (recommandé) il lira le tcid dans le cookie de l'utilisateur. |

{% tabs %}
{% tab title="200 " %}

```
{
    "user_age": 39,
    "user_privacy_categories": [
      "11",
      "12",
      "13"
    ]
}
```

{% endtab %}
{% endtabs %}

### Utilisation First-party

Si votre site utilise un domaine first-party (soit via un sous-domaine dédié soit via le chemin Commanders Act Gateway), les appels API doivent être effectués sur votre propre domaine.

Important : l'URL doit inclure /api/ dans le chemin.\
Sans ce chemin, la requête ne fonctionnera pas.

#### 1. Utilisation d'un sous-domaine dédié (exemple : tracking.mydomain.com)

La structure de l'API first-party doit suivre ce modèle :\
<https://tracking.mydomain.com/**api**/1.0/engage/visitors/>

Exemple :\
<https://tracking.mydomain.com/api/v1.0/engage/visitors/?site=5326\\&tcid=\\&token=XXXX>

#### 2. Utilisation de Commanders Act Gateway (configuration basée sur le chemin)

Si votre endpoint gateway est servi sous un chemin (par exemple : <https://www.mydomain.com/cact-proxy/),\\>
la structure de l'API first-party doit suivre ce modèle :\
<https://www.mydomain.com/cact-proxy/**api**/1.0/engage/visitors/>

Exemple :\
<https://www.mydomain.com/cact-proxy/**api**/v1.0/engage/visitors/?site=5326\\&tcid=\\&token=XXXX>

Remarque : conservez toujours le **/api/**/… structure après le sous-domaine ou le chemin gateway.

## Utilisateur

<mark style="color:bleu;">`GET`</mark> `https://api.commander1.com/engage/user/`

Ce endpoint vous permet de **obtenir les propriétés d'un utilisateur spécifique** basé sur un `user_id`. Lorsque vous créez le token, vous pouvez définir quelles propriétés renvoyer.

#### Paramètres de requête

| Nom      | Type    | Description         |
| -------- | ------- | ------------------- |
| token    | string  | Security token      |
| user\_id | string  | ID de l'utilisateur |
| site     | integer | ID du site          |

{% tabs %}
{% tab title="200 Consentement récupéré avec succès." %}

```javascript
{
    "user_age": 39,
    "user_privacy_categories": [
      "11",
      "12",
      "13"
    ]
}
```

{% endtab %}

{% tab title="404 Impossible de trouver un utilisateur correspondant à cette requête." %}

```javascript
{
    "message": "Personne non trouvée"
}
```

{% endtab %}
{% endtabs %}

### Ne pas utiliser ce endpoint côté client

Le endpoint GET User doit **ne pas** être appelé depuis le navigateur.\
Exposer le token permettrait à quiconque de le capturer et de parcourir les user IDs pour extraire toutes les données utilisateur.

Utilisez cette API **server-side only** dans un environnement backend sécurisé.

## Utilisateur

<mark style="color:orange;">`PUT`</mark> `https://api.commander1.com/engage/user/`

Insérer ou mettre à jour un utilisateur

#### Paramètres de requête

| Nom      | Type   | Description          |
| -------- | ------ | -------------------- |
| site     | string | Id du site (compte)  |
| user\_id | string | Id de l'utilisateur. |
| token    | string | Security token       |

{% tabs %}
{% tab title="200 " %}

```
{"success":true}
```

{% endtab %}
{% endtabs %}

#### Exemple de requête <a href="#example-request" id="example-request"></a>

`PUT`

<https://api.commander1.com/engage/user/?site=1234\\&user\\_id=1234\\&token=WvNIX8955cnZ7WF0f632s0Wb99Ql3rtA>

```
//Exemple de format
{
    "person": {
        "id": "10000000",
        "card": "12345678910",
        "email": "mycustomer@test.com",
        "gender": "female",
        "firstname": "Joan",
        "lastname": "Craig",
        "custom": {
            "area_number": 123
        },
    ...
    }
}
```

## SUPPRIMER utilisateur

Supprimer un utilisateur

#### URL de la ressource <a href="#resource-url" id="resource-url"></a>

<https://api.commander1.com/engage/user/>

#### Informations sur la ressource <a href="#resource-information" id="resource-information"></a>

| Formats de réponse               | JSON        |
| -------------------------------- | ----------- |
| Nécessite une authentification ? | Oui (token) |

#### Paramètres

| NOM                | EXIGENCE       | VALEURS D'EXEMPLE                | DESCRIPTION         |
| ------------------ | -------------- | -------------------------------- | ------------------- |
| site               | d+             | 1234                             | Id du site          |
| user\_id           | d+             | 1234                             | Id de l'utilisateur |
| tc\_id (optionnel) | d+             | 1234                             | Id du visiteur      |
| token              | \[a-zA-Z0-9]\* | WvNIX8955cnZ7WF0f632s0Wb99Ql3rtA | Security token      |

#### Exemple de requête <a href="#example-request" id="example-request"></a>

`DELETE`

<https://api.commander1.com/engage/user/?site=1234\\&user\\_id=1234\\&tc\\_id=1234\\&token=WvNIX8955cnZ7WF0f632s0Wb99Ql3rtA>

#### Réponse <a href="#example-request" id="example-request"></a>

```
{"success":true}
```
