# API E-mail

import { Badge } from '@astrojs/starlight/components';

<Aside type="caution" title="/createEmailMessage est obsolète">
Les nouvelles intégrations doivent utiliser l'[API de Messagerie v2](/fr/developer/api-reference/messaging-api-v2/) — passez `platforms: ["EMAIL"]` et un bloc [`email_payload`](/fr/developer/api-reference/messaging-api-v2/email-payload-reference/) à `Notify`. Consultez le [guide de migration](/fr/developer/api-reference/messaging-api-v2/migration-from-v1/#from-createemailmessage).
</Aside>

## createEmailMessage <Badge text="Obsolète" variant="caution" size="small" />

Crée un message e-mail.

`POST` `https://api.pushwoosh.com/json/1.3/createEmailMessage`

### Paramètres du corps de la requête

| Nom | Type <div style="width:80px"></div> | Requis | Description |
|------|--------|:--------:|-------------|
| auth | `string` | Oui | [Jeton d'accès API](/fr/developer/api-reference/api-identifiers/#api-access-token) depuis le Panneau de Contrôle Pushwoosh. |
| application | `string` | Oui | [Code d'application Pushwoosh](/fr/developer/api-reference/api-identifiers/#application-code) |
| notifications | `array` | Oui | Tableau JSON contenant les détails du message e-mail. Voir le tableau **Paramètres des Notifications** ci-dessous. |

#### Paramètres des notifications

| Nom  | Type <div style="width:50px"></div> | Requis | Description |
|------|------|:--------:|-------------|
| send_date | `string` | Oui | Définit quand envoyer l'e-mail. Format : `YYYY-MM-DD HH:mm` ou `"now"`. |
| preset | `string` | Oui | [Code de préréglage d'e-mail](/fr/developer/api-reference/api-identifiers/#email-content-code). Copiez depuis la barre d'URL de l'**Éditeur de Contenu d'E-mail** dans le Panneau de Contrôle Pushwoosh. |
| subject | `string` ou `object` | Non | Ligne d'objet de l'e-mail. L'e-mail sera toujours dans la langue du contenu. Si `subject` ne contient pas de langue correspondante pour `content`, l'objet sera vide. |
| content | `string` ou `object` | Non | Le contenu du corps de l'e-mail. Peut être une chaîne pour du contenu HTML simple ou un objet pour des versions localisées. |
| attachments | `array` | Non | Les pièces jointes de l'e-mail. Seules deux pièces jointes sont disponibles. Chaque pièce jointe ne doit pas dépasser 1 Mo (encodée en base64). |
| list_unsubscribe | `string` | Non | Permet de définir une URL personnalisée pour l'en-tête "Link-Unsubscribe". |
| campaign | `string` | Non | [Code de campagne](/fr/developer/api-reference/api-identifiers/#campaign-code) pour associer l'e-mail à une campagne spécifique. |
| ignore_user_timezone | `boolean` | Non | Si `true`, envoie l'e-mail immédiatement, en ignorant les fuseaux horaires de l'utilisateur. |
| timezone | `string` | Non | Envoie l'e-mail en fonction du fuseau horaire de l'utilisateur. Exemple : `"America/New_York"`. |
| filter | `string` | Non | Envoie l'e-mail aux utilisateurs correspondant à une [condition de filtre spécifique](/fr/developer/api-reference/api-identifiers/#segment--filter-name). |
| devices | `array` | Non | Liste d'adresses e-mail (max 1000) pour envoyer des e-mails ciblés. Si utilisé, le message n'est envoyé qu'à ces adresses. Ignoré si le Groupe d'Applications est utilisé. |
| use_auto_registration | `boolean` | Non | Si `true`, enregistre automatiquement les e-mails du paramètre `devices`. |
| users | `array` | Non | Si défini, le message e-mail ne sera livré qu'aux [ID utilisateur](/fr/developer/api-reference/api-identifiers/#user-id)s spécifiés (enregistrés via l'appel /registerEmail). Pas plus de 1000 ID utilisateur dans un tableau. Si le paramètre "devices" est spécifié, le paramètre "users" sera ignoré. |
| dynamic_content_placeholders | `object` | Non | Espaces réservés pour le contenu dynamique au lieu des valeurs de tag de l'appareil. |
| conditions | `array` | Non | Conditions de segmentation utilisant des tags. Exemple : `[["Country", "EQ", "BR"]]`. |
| from | `object` | Non | Spécifiez un nom d'expéditeur et un e-mail personnalisés, remplaçant les valeurs par défaut dans les propriétés de l'application. |
| reply-to | `object` | Non | Spécifiez un e-mail de réponse personnalisé, remplaçant la valeur par défaut dans les propriétés de l'application. |
| bcc | `array` | Non | CCI (Copie Carbone Invisible) : tableau d'adresses e-mail qui reçoivent une copie de l'e-mail sans que les autres destinataires ne les voient. |
| email_type | `string` | Non | Spécifiez le type d'e-mail : `"marketing"` ou `"transactional"`. Si omis, les utilisateurs avec `PW_ControlGroup: true` ne recevront pas le message. |
| email_category | `string` | Requis lorsque `email_type` est `"marketing"`. | Spécifiez l'un des noms de catégorie configurés dans le [centre de préférences d'abonnement](/fr/product/messaging-channels/emails/email-preferences/) (par ex. Newsletter, Promotionnel, Mises à jour du produit). |
| transactionId | `string` | Non | Identifiant de message unique pour éviter le renvoi en cas de problèmes réseau. Stocké du côté de Pushwoosh pendant 5 minutes. |
| capping\_days | `integer` | Non | Le nombre de jours (max 30) pour appliquer le plafonnement de fréquence par appareil. **Note :** Assurez-vous que le [Plafonnement de fréquence global](/fr/product/messaging-channels/global-frequency-capping/) est configuré dans le Panneau de Contrôle. |
| capping\_count | `integer` | Non | Le nombre maximum d'e-mails pouvant être envoyés depuis une application spécifique à un appareil particulier pendant une période de `capping_days`. Si le message créé dépasse la limite `capping_count` pour un appareil, il ne sera pas envoyé à cet appareil. |
| capping\_exclude | `boolean` | Non | Si défini sur `true`, cet e-mail ne sera pas comptabilisé pour le plafonnement des futurs e-mails. |
| capping\_avoid | `boolean` | Non | Si défini sur `true`, le plafonnement ne sera pas appliqué à cet e-mail spécifique. |
| send\_rate | `integer` | Non | Limite le nombre de messages pouvant être envoyés par seconde à tous les utilisateurs. Aide à prévenir la surcharge du backend lors d'envois à volume élevé. |
| send\_rate\_avoid | `boolean` | Non | Si défini sur true, la limite de régulation ne sera pas appliquée à cet e-mail spécifique. |
### Exemple de requête
```json
{
  "request": {
    "auth": "API_ACCESS_TOKEN",         // requis. Jeton d'accès API depuis le Panneau de Contrôle Pushwoosh
    "application": "APPLICATION_CODE",  // requis. Code d'application Pushwoosh.
    "notifications": [{
      "send_date": "now",               // requis. YYYY-MM-DD HH:mm  OU 'now'
      "preset": "ERXXX-32XXX",          // requis. Copiez le code de préréglage d'e-mail depuis la barre d'URL de
                                        //           la page de l'éditeur de contenu d'e-mail dans le Panneau de Contrôle Pushwoosh.
      "subject": {                      // optionnel. Ligne d'objet du message e-mail.
        "de": "subject de",
        "en": "subject en"
      },
      "content": {                      // optionnel. Contenu du corps de l'e-mail.
        "de": "<html><body>de Hello, moto</body></html>",
        "default": "<html><body>default Hello, moto</body></html>"
      },
      "attachments": [{                 // optionnel. Pièces jointes de l'e-mail
        "name": "image.png",            //           "name" - nom du fichier
        "content": "iVBANA...AFTkuQmwC" //           "content" - contenu encodé en base64 du fichier
      }, {
        "name": "file.pdf",
        "content": "JVBERi...AFTarEGC"
      }],
      "list_unsubscribe": "URL",        // optionnel. Permet de définir une URL personnalisée pour l'en-tête "Link-Unsubscribe"
      "campaign": "CAMPAIGN_CODE",      // optionnel. Pour assigner ce message e-mail à une campagne particulière,
                                        //           ajoutez un code de campagne ici.
      "ignore_user_timezone": true,     // optionnel.
      "timezone": "America/New_York",   // optionnel. Spécifiez pour envoyer le message selon
                                        //           le fuseau horaire défini sur l'appareil de l'utilisateur.
      "filter": "FILTER_NAME",          // optionnel. Envoyer le message à des utilisateurs spécifiques remplissant les conditions du filtre.
      "devices": [                      // optionnel. Spécifiez les adresses e-mail pour envoyer des messages e-mail ciblés.
        "email_address1",               //           Pas plus de 1000 adresses dans un tableau.
        "email_address2"                //           Si défini, le message ne sera envoyé qu'aux adresses de
      ],                                //           la liste. Ignoré si le Groupe d'Applications est utilisé.
      "use_auto_registration": true,    // optionnel. Enregistre automatiquement les e-mails spécifiés dans le paramètre "devices"
      "users": [                        // optionnel. Si défini, le message e-mail ne sera livré qu'aux
        "userId1",                      //           ID utilisateur spécifiés (enregistrés via l'appel /registerEmail).
        "userId2"                       //           Pas plus de 1000 ID utilisateur dans un tableau.
      ],                                //           Si le paramètre "devices" est spécifié,
                                        //           le paramètre "users" sera ignoré.
      "dynamic_content_placeholders": { // optionnel. Espaces réservés pour le contenu dynamique au lieu des valeurs de tag de l'appareil.
        "firstname": "John",
        "firstname_en": "John"
      },
      "conditions": [                   // optionnel. Conditions de segmentation, voir la remarque ci-dessous.
        ["Country", "EQ", "BR"],
        ["Language", "EQ", "pt"]
      ],
      "from": {                         // optionnel. Spécifiez un nom d'expéditeur et une adresse e-mail d'expéditeur
        "name": "alias from",           //           pour remplacer le "Nom de l'expéditeur" et l'"E-mail de l'expéditeur" par défaut
        "email": "from-email@email.com" //           configurés dans les propriétés de l'application.
      },
      "reply-to": {                     // optionnel. Spécifiez une adresse e-mail pour remplacer
        "name": "alias reply to ",      //           le "Répondre à" par défaut configuré dans les propriétés de l'application.
        "email": "reply-to@email.com"
      },
      "bcc": [                          // optionnel. CCI : tableau d'adresses e-mail qui reçoivent une copie sans que les autres destinataires ne les voient.
        "bcc1@example.com",
        "bcc2@example.com"
      ],
      "email_type": "marketing",        // optionnel. "marketing" ou "transactional".
                                        // Si omis, les utilisateurs avec PW_ControlGroup: true ne recevront pas le message.
      "email_category": "category name",// requis lorsque email_type est "marketing". Nom de la catégorie.
      "transactionId": "unique UUID",   // optionnel. Identifiant de message unique pour éviter le renvoi
                                        //           en cas de problèmes réseau. Stocké du côté
                                        //           de Pushwoosh pendant 5 minutes.
      // Paramètres de plafonnement de fréquence. Assurez-vous que le plafonnement de fréquence global est configuré dans le Panneau de Contrôle.
      // Le plafonnement de fréquence ne s'applique pas aux messages transactionnels.
      // Dans tous les autres cas, y compris si "email_type" est omis, le plafonnement de fréquence s'applique.
      "capping_days": 30,               // optionnel. Nombre de jours pour le plafonnement de fréquence (max 30 jours)
      "capping_count": 10,              // optionnel. Le nombre maximum d'e-mails pouvant être envoyés depuis une
                                        //           application spécifique à un appareil particulier pendant une période de 'capping_days'.
                                        //           Si le message créé dépasse la limite
                                        //           'capping_count' pour un appareil, il ne sera
                                        //           pas envoyé à cet appareil.
      "capping_exclude": true,          // optionnel. Si défini sur true, cet e-mail ne sera pas
                                        //           comptabilisé pour le plafonnement des futurs e-mails.
      "capping_avoid": true,            // optionnel. Si défini sur true, le plafonnement ne sera pas appliqué à
                                        //           cet e-mail spécifique.
      "send_rate": 100,                 // optionnel. Limite de régulation.
                                        //           Limite le nombre de messages pouvant être envoyés par seconde à tous les utilisateurs.
                                        //           Aide à prévenir la surcharge du backend lors d'envois à volume élevé.
      "send_rate_avoid": true,          // optionnel. Si défini sur true, la limite de régulation ne sera pas appliquée à
                                        //           cet e-mail spécifique.
    }]
  }
}
```

### Exemples de réponses
<Tabs>
<TabItem label="200">
```json
{
  "status_code": 200,
  "status_message": "OK",
  "response": null
}
```
</TabItem>

<TabItem label="403">
```json
{
  "status_code": 403,
  "status_message": "Les restrictions du jeton interdisent cette opération",
  "response": null
}
```
</TabItem>
</Tabs>

### Conditions de tag

Chaque condition de tag est un tableau comme `[tagName, operator, operand]` où

* tagName : nom d'un tag
* operator : "EQ" | "IN" | "NOTEQ" | "NOTIN" | "LTE" | "GTE" | "BETWEEN"
* operand : chaîne | entier | tableau | date

#### Description de l'opérande

* EQ : la valeur du tag est égale à l'opérande ;
* IN : la valeur du tag croise l'opérande (l'opérande doit toujours être un tableau) ;
* NOTEQ : la valeur du tag n'est pas égale à un opérande ;
* NOTIN : la valeur du tag ne croise pas l'opérande (l'opérande doit toujours être un tableau) ;
* GTE : la valeur du tag est supérieure ou égale à l'opérande ;
* LTE : la valeur du tag est inférieure ou égale à l'opérande ;
* BETWEEN : la valeur du tag est supérieure ou égale à la valeur minimale de l'opérande mais inférieure ou égale à la valeur maximale de l'opérande (l'opérande doit toujours être un tableau).

#### Tags de type chaîne

Opérateurs valides : EQ, IN, NOTEQ, NOTIN\
Opérandes valides :

* EQ, NOTEQ : l'opérande doit être une chaîne ;
* IN, NOTIN : l'opérande doit être un tableau de chaînes comme `["valeur 1", "valeur 2", "valeur N"]` ;

#### Tags de type entier

Opérateurs valides : EQ, IN, NOTEQ, NOTIN, BETWEEN, GTE, LTE\
Opérandes valides :

* EQ, NOTEQ, GTE, LTE : l'opérande doit être un entier ;
* IN, NOTIN : l'opérande doit être un tableau d'entiers comme `[valeur 1, valeur 2, valeur N]` ;
* BETWEEN : l'opérande doit être un tableau d'entiers comme `[valeur_min, valeur_max]`.

#### Tags de type date

Opérateurs valides : EQ, IN, NOTEQ, NOTIN, BETWEEN, GTE, LTE\
Opérandes valides :

* `"YYYY-MM-DD 00:00"` (chaîne)
* timestamp unix `1234567890` (entier)
* `"Il y a N jours"` (chaîne) pour les opérateurs EQ, BETWEEN, GTE, LTE

#### Tags de type booléen

Opérateurs valides : EQ\
Opérandes valides : `0, 1, true, false`

#### Tags de type liste

Opérateurs valides : IN\
Opérandes valides : l'opérande doit être un tableau de chaînes comme `["valeur 1", "valeur 2", "valeur N"]`.

<Aside type="danger">
N'oubliez pas que les paramètres “filter” et “conditions” ne doivent pas être utilisés ensemble.\
De plus, ils **seront tous les deux ignorés** si le paramètre "devices" est utilisé dans la même requête.
</Aside>

<Aside type="note">
**Tags de Pays et de Langue**

La valeur du tag de langue est un code de deux lettres en minuscules selon [ISO-639-1](https://en.wikipedia.org/wiki/List\_of\_ISO\_639-1\_codes)\
La valeur du tag de pays est un code de deux lettres en MAJUSCULES selon [ISO\_3166-2](https://en.wikipedia.org/wiki/ISO\_3166-2)\
Par exemple, pour envoyer une notification push aux abonnés lusophones au Brésil, vous devrez spécifier la condition suivante : `"conditions": [["Country", "EQ", "BR"],["Language", "EQ", "pt"]]`
</Aside>

## registerEmail

Enregistre une adresse e-mail pour l'application.

`POST` `https://api.pushwoosh.com/json/1.3/registerEmail`

#### En-têtes de la requête

| Nom | Requis | Valeur | Description |
|---------------|----------|---------------|------------------------------------------------------------|
| Authorization | Oui | Jeton `XXXX` | [Jeton d'API d'Appareil](/fr/developer/api-reference/api-access-token/#device-api-token) pour accéder à l'API d'Appareil. Remplacez `XXXX` par votre jeton d'API d'Appareil réel. |


#### Corps de la requête

| Nom | Type | Description |
| --------------------------------------------- | ------- | --------------------------------------------------------------------------------------------------- |
| application\* | string | [Code d'application Pushwoosh](/fr/developer/api-reference/api-identifiers/#application-code) |
| email\* | string | Adresse e-mail. |
| language | string | Locale de langue de l'appareil. Doit être un code de deux lettres en minuscules selon la norme ISO-639-1. |
| userId | string | [ID utilisateur](/fr/developer/api-reference/api-identifiers/#user-id) à associer à l'adresse e-mail. |
| tz\_offset | integer | Décalage de fuseau horaire en secondes. |
| tags | object | Valeurs de tag à assigner à l'appareil enregistré. |

<Tabs>
<TabItem label="200">
```json
{
  "status_code": 200,
  "status_message": "OK",
  "response": null
}
```
</TabItem>
<TabItem label="210">
```json
{
  "status_code": 210,
  "status_message": "cet hwid (e-mail) est sur liste noire",
  "response": null
}
```
</TabItem>
<TabItem label="400">
```json
{
  "status_code": 400,
  "status_message": "Argument requis manquant : email",
  "response": null
}
```
</TabItem>
<TabItem label="403">
```json
{
  "status_code": 403,
  "status_message": "Les restrictions du jeton interdisent cette opération",
  "response": null
}
```
</TabItem>
<TabItem label="500">
```json
{
  "status_code": 500,
  "status_message": "Erreur interne du serveur",
  "response": null
}
```
</TabItem>
</Tabs>

```json title="Exemple"
{
  "request": {
    "application": "APPLICATION_CODE",   // requis. Code d'application Pushwoosh.
    "email":"email@domain.com",          // requis. Adresse e-mail à enregistrer.
    "language": "en",                    // optionnel. Locale de langue.
    "userId": "userId",                  // optionnel. ID utilisateur à associer à l'adresse e-mail.
    "tz_offset": 3600,                   // optionnel. Décalage de fuseau horaire en secondes.
    "tags": {                            // optionnel. Valeurs de tag à définir pour l'appareil enregistré.
       "StringTag": "valeur chaîne",
       "IntegerTag": 42,
       "ListTag": ["chaîne1","chaîne2"], // définit la liste de valeurs pour les Tags de type Liste
       "DateTag": "2024-10-02 22:11",    // notez que l'heure doit être en UTC
       "BooleanTag": true                // les valeurs valides sont : true, false
    }
  }
}
```

#### Codes de réponse

L'API publique renvoie le résultat dans `status_code`. Utilisez le tableau ci-dessous pour décider si un appel échoué doit être retenté.

| `status_code` | Signification | Réessayer ? |
| ------------- | ------- | ------ |
| `200` | Succès — l'adresse e-mail est enregistrée. | Non — terminé. |
| `210` | Erreur d'argument/validation — la requête a été comprise mais rejetée (adresse sur liste noire, e-mail invalide ou jetable, mauvaise plateforme pour le plan du compte). Voir les [messages d'erreur 210](#210-error-messages) ci-dessous. | **Non** — la même requête renvoie le même `210`. Enregistrez l'adresse et ignorez-la. |
| `400` | Requête malformée — JSON invalide ou champ requis manquant. | Non — corrigez la requête, ne la répétez pas. |
| `403` | Interdit — jeton d'API d'Appareil invalide ou restreint. | Non — corrigez l'autorisation. |
| `500` | Erreur interne du serveur — problème d'infrastructure temporaire ou délai d'attente. | **Oui**, avec un backoff exponentiel — le seul cas transitoire. |

<Aside type="tip">
Ne réessayez que les réponses `500`, en utilisant un backoff exponentiel — c'est le seul cas transitoire. Un `210`, `400` ou `403` est final : le serveur a compris votre requête et l'a rejetée, donc la répéter sans modification renverra le même résultat. Enregistrez plutôt l'adresse (pour `210`) ou corrigez la requête/le jeton (pour `400`/`403`).
</Aside>

#### Messages d'erreur 210

Une réponse `210` contient la raison spécifique dans `status_message`.

| `status_message` | Signification |
| ---------------- | ------- |
| `this hwid (email) is blacklisted` | L'adresse est sur la liste de suppression après un rebond permanent (hard bounce) et ne sera pas réenregistrée. |
| `hwid (email) is invalid` / `has invalid semantic` | L'adresse échoue à la validation. |
| `hwid (email) is empty` | Aucune adresse n'a été fournie. |
| `hwid (email) has invalid count of parts` | `@` manquant ou en trop. |
| `hwid (email) has invalid local part` | La partie avant `@` est invalide. |
| `hwid (email) has invalid domain part` | La partie du domaine est invalide. |
| `hwid (email) has disposable domain` | L'adresse utilise un domaine d'e-mail jetable/temporaire (par ex. 10minutemail). |
| `hwid is not valid` | Le `hwid` lui-même est malformé. |
| `only email platform allowed for Email Only subscription` | Le compte est sur un plan E-mail Uniquement et ne peut pas enregistrer d'appareils non-e-mail. |

<Aside type="note">
Seuls les **rebonds permanents (hard bounces)** ajoutent une adresse à la liste noire. Les rebonds temporaires (soft bounces) et les plaintes pour spam ne bloquent **pas** `registerEmail` — seul `this hwid (email) is blacklisted` reflète la suppression.
</Aside>

## deleteEmail

Supprime une adresse e-mail de votre base d'utilisateurs.

`POST` `https://api.pushwoosh.com/json/1.3/deleteEmail`

#### En-têtes de la requête

| Nom | Requis | Valeur | Description |
|---------------|----------|---------------|------------------------------------------------------------|
| Authorization | Oui | Jeton `XXXX` | [Jeton d'API d'Appareil](/fr/developer/api-reference/api-access-token/#device-api-token) pour accéder à l'API d'Appareil. Remplacez `XXXX` par votre jeton d'API d'Appareil réel. |


#### Corps de la requête

| Nom | Type | Description |
| ----------- | ------ | --------------------------------------------- |
| application | string | [Code d'application Pushwoosh](/fr/developer/api-reference/api-identifiers/#application-code) |
| email | string | Adresse e-mail utilisée dans la requête [`/registerEmail`](/fr/developer/api-reference/email-api/#registeremail). |

<Tabs>
<TabItem label="200">
```json
{
  "status_code": 200,
  "status_message": "OK",
  "response": null
}
```
</TabItem>
</Tabs>

```json title="Exemple"
{
  "request": {
    "application": "APPLICATION_CODE",  // requis. Code d'application Pushwoosh
    "email": "email@domain.com"         // requis. E-mail à supprimer des abonnés de l'application.
  }
}
```

## setEmailTags

Définit les valeurs de tag pour l'adresse e-mail.

`POST` `https://api.pushwoosh.com/json/1.3/setEmailTags`

#### En-têtes de la requête

| Nom | Requis | Valeur | Description |
|---------------|----------|---------------|------------------------------------------------------------|
| Authorization | Oui | Jeton `XXXX` | [Jeton d'API d'Appareil](/fr/developer/api-reference/api-access-token/#device-api-token) pour accéder à l'API d'Appareil. Remplacez `XXXX` par votre jeton d'API d'Appareil réel. |

#### Corps de la requête

| Nom | Type | Description |
| ----------- | ------ | ------------------------------------------------------------- |
| application | string | [Code d'application Pushwoosh](/fr/developer/api-reference/api-identifiers/#application-code) |
| email | string | Adresse e-mail. |
| tags | object | Objet JSON de tags à définir, envoyez 'null' pour supprimer la valeur. |
| userId | string | [ID utilisateur](/fr/developer/api-reference/api-identifiers/#user-id) associé à l'adresse e-mail. |

<Tabs>
<TabItem label="200">
```json
{
  "status_code": 200,
  "status_message": "OK",
  "response": {
    "skipped": []
  }
}
```
</TabItem>
</Tabs>

```json title="Exemple"
{
  "request": {
    "email": "email@domain.com",                  // requis. Adresse e-mail pour laquelle définir les tags.
    "application": "APPLICATION_CODE",            // requis. Code d'application Pushwoosh.
    "tags": {
      "StringTag": "valeur chaîne",
      "IntegerTag": 42,
      "ListTag": ["chaîne1", "chaîne2"],
      "DateTag": "2024-10-02 22:11",              // heure en UTC
      "BooleanTag": true                          // les valeurs valides sont : true, false
    },
    "userId": "userId"                            // optionnel. ID utilisateur associé à l'adresse e-mail.
  }
}
```

<Aside type="note">
Pour les autres types d'appareils, un 200 OK sera retourné, bien que les tags ne soient pas sauvegardés.
</Aside>

<Aside type="caution">
Veuillez éviter de définir plus de 50 valeurs de tag dans une seule requête `/setEmailTags`.
</Aside>

## registerEmailUser

Associe un [ID utilisateur](/fr/developer/api-reference/api-identifiers/#user-id) externe à une adresse e-mail spécifiée.

`POST` `https://api.pushwoosh.com/json/1.3/registerEmailUser`



<Aside type="note">
Veuillez noter que cette méthode **n'enregistre pas une adresse e-mail** dans votre base d'utilisateurs ; elle doit être utilisée uniquement pour assigner des ID utilisateur à des adresses e-mail qui ont déjà été enregistrées par la requête `/registerEmail`.
</Aside>

Peut être utilisé dans l'appel API `/createEmailMessage` (le paramètre 'users').

#### En-têtes de la requête

| Nom | Requis | Valeur | Description |
|---------------|----------|---------------|------------------------------------------------------------|
| Authorization | Oui | Jeton `XXXX` | [Jeton d'API d'Appareil](/fr/developer/api-reference/api-access-token/#device-api-token) pour accéder à l'API d'Appareil. Remplacez `XXXX` par votre jeton d'API d'Appareil réel. |


#### Corps de la requête

| Nom | Type | Description |
| --------------------------------------------- | ------- | ---------------------------------------------- |
| application\* | string | [Code d'application Pushwoosh](/fr/developer/api-reference/api-identifiers/#application-code) |
| email\* | string | Adresse e-mail. |
| userId\* | string | [ID utilisateur](/fr/developer/api-reference/api-identifiers/#user-id) à associer à l'adresse e-mail. |
| tz\_offset | integer | Décalage de fuseau horaire en secondes. |

<Tabs>
<TabItem label="200">
```json
{
  "status_code": 200,
  "status_message": "OK",
  "response": null
}
```
</TabItem>

<TabItem label="400">
```json
{
  "status_code": 400,
  "status_message": "Le format de la requête n'est pas valide."
}
```
</TabItem>

<TabItem label="403">
```json
{
  "status_code": 403,
  "status_message": "Interdit."
}
```
</TabItem>
</Tabs>

```json title="Exemple"
{
  "request": {
    "application": "APPLICATION_CODE", // requis. Code d'application Pushwoosh.
    "email": "email@domain.com",       // requis. Adresse e-mail de l'utilisateur.
    "userId": "userId",                // requis. ID utilisateur à associer à l'adresse e-mail.
    "tz_offset": 3600                  // optionnel. Décalage de fuseau horaire en secondes.
  }
}
```

<Aside type="note">
Pour récupérer des données sur les rebonds temporaires, les rebonds permanents et les plaintes pour spam, y compris la date, l'adresse e-mail et la raison de chaque rebond, utilisez la méthode [BouncedEmails](/fr/developer/api-reference/statistics-api/message-statistics-api/#bouncedemails).
</Aside>