## URL de l'API
URL à laquelle envoyer les requêtes HTTP :
```url
https://portal.bulkgate.com/api/1.0/integration/transactional
```

> [!NOTE]
> Si la requête n'atteint pas sa destination, renvoyez-la sur le [serveur de secours](https://www.bulkgate.com/fr/documentation/administration-api-et-tokens/serveur-de-secours/) `backup1.bulkgate.com`.

```http
POST /api/1.0/integration/transactional HTTP/1.1
Host: portal.bulkgate.com
Content-Type: application/json
```

> [!CAUTION]
> Il est **strictement interdit** d'utiliser les [SMS transactionnels](https://www.bulkgate.com/fr/centre-d-aide/informations-generales/difference-messages-promotionnels-transactionnels/) à des fins promotionnelles ou marketing. Ils doivent servir uniquement à des fins de notification — sous forme de notification SMS.

> [!NOTE]
> Si vous souhaitez utiliser la route transactionnelle pour envoyer des messages de notification en masse, contactez [notre support](https://www.bulkgate.com/fr/nous-contacter/). Nous pouvons autoriser cette option pour un motif légitime.

> [!WARNING]
> Les destinataires qui se sont désinscrits recevront le message (la désinscription ne s'applique qu'aux messages promotionnels).

### Tableau des paramètres

| NOM DU PARAMÈTRE  | VALEUR | OBLIGATOIRE | VALEUR PAR DÉFAUT |
|:------------------|:-------|:-----------:|:-----------------:|
| application_id    | [Application_ID](https://www.bulkgate.com/fr/documentation/administration-api-et-tokens/administration-api/) | **Oui** | - |
| application_token | [Token d'authentification de l'application](https://www.bulkgate.com/fr/documentation/administration-api-et-tokens/tokens-d-api/) | **Oui** | - |
| tag               | Étiquette d'identification personnelle | Non | - |
| primary_channel   | Canal principal, utilisé en premier dans la cascade | Non | `sms` |
| phone_number      | Numéro de téléphone du destinataire | **Oui** | - |
| country           | Indiquez les numéros des destinataires au format international (avec l'indicatif, p. ex. `420`) ou ajoutez le [code pays](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements) (`775123456` + `CZ` = `420775123456`). Consultez l'exemple d'exigence liée au pays. Si la valeur est **`null`**, le fuseau horaire que vous avez défini est utilisé pour compléter l'information | Non | `null` |
| schedule          | Planifie la date et l'heure d'envoi sous forme de [timestamp Unix.](https://en.wikipedia.org/wiki/Unix_time) Voir les exemples ci-dessous. | Non | `null` |
| channels          | Tableau associatif d'objets de canal | **Oui** | [Objet de canal](#objet-du-canal-viber) |
| duplicates_check  | Sélectionnez **`on`** pour éviter d'envoyer des messages en double au même numéro de téléphone. Les messages au texte identique envoyés au même numéro sont supprimés si l'intervalle entre eux est inférieur à 5 minutes. Avec **`off`**, aucun doublon n'est supprimé. | Non | `false` |

### Objet du canal Viber

| NOM DU PARAMÈTRE | VALEUR | OBLIGATOIRE | VALEUR PAR DÉFAUT |
|:-----------------|:-------|:-----------:|:-----------------:|
| sender         | Nom de l'expéditeur | Non | - |
| expiration     | Délai à l'issue duquel le message expire | Non | `3600` |
| button_caption   | Texte du bouton | Non | `OK` |
| button_url       | URL du bouton | Non | `#` |
| image            | URL de l'image contenue dans le message | Non | `null` |
| image_zoom       | L'image peut-elle être agrandie ? | Non | `false` |
| text           | Texte du message. Il est possible d'ajouter au modèle des variables issues du tableau `variables` (un autre paramètre) `Hello <first_name> <last_name> ....` | **Oui** | - |
| variables      | Tableau associatif permettant d'ajouter des variables au texte, p. ex. `{"first_name": "John", "last_name": "Doe"}` | Non | `[]` |

### Objet du canal SMS
| NOM DU PARAMÈTRE | VALEUR | OBLIGATOIRE | VALEUR PAR DÉFAUT |
|:-----------------|:-------|:-----------:|:-----------------:|
| sender_id       | Identifiant d'expéditeur, voir [Type d'identifiant d'expéditeur](#type-d-identifiant-d-expediteur-sender-id) | Non | `gSystem` |
| sender_id_value | Valeur de l'expéditeur - `gOwn` (p. ex. « 420 777 777 777 »), `gText` (p. ex. « BulkGate »), `gProfile` (p. ex. « 423 »), `gMobile` ou `gPush` [(KEY)](https://www.bulkgate.com/fr/centre-d-aide/mobile-connect/installation-mobile-connect/) | Non | `''` |
| unicode         | `Yes`/`true`/`1` pour un SMS Unicode, `no`/`false`/`0` pour un SMS 7 bits | Non | `false` |
| text            | Texte du SMS (max. 612 caractères, ou 268 caractères si l'Unicode est activé), encodage UTF-8. Il est possible d'ajouter au modèle des variables issues du tableau `variables` (paramètre supplémentaire) `Hello <first_name> <last_name> ....` | **Oui** | - |
| variables       | Tableau associatif permettant d'ajouter des variables au texte, p. ex. : `{"first_name": "John", "last_name": "Doe"}` | Non | `[]` |

#### Type d'identifiant d'expéditeur `sender_id`

| VALEUR     | DESCRIPTION                                                           |
|:-----------|:----------------------------------------------------------------------|
| `gSystem`  | Numéro système |
| `gShort`   | Code court |
| `gText`    | Expéditeur texte |
| `gMobile`  | [Mobile Connect](https://www.bulkgate.com/fr/centre-d-aide/mobile-connect/installation-mobile-connect/) |
| `gPush`    | Mobile Connect push - Envoie une notification dans votre application Mobile Connect |
| `gOwn`     | Votre propre numéro (nécessite la vérification du numéro) |
| `gProfile` | [ID du profil d'expéditeur](https://www.bulkgate.com/fr/centre-d-aide/sms/profil-d-expediteur/) |
| `<int>`    | ID du profil d'expéditeur |



**Exemple de requête complète :**
```http-json
POST /api/1.0/integration/transactional HTTP/1.1
Host: portal.bulkgate.com
Content-Type: application/json

{
    "application_id": 451,
    "application_token": "NKN02TWE6NfBkfl-your-secret-token-Wf05GaqLIWLW4aBj",
    "tag": "",
    "primary_channel": "sms",
    "phone_number": "420777777777",
    "country": "cz",
    "channels": {
        "viber": {
            "sender": "BulkGate",
            "expiration": 3600,
            "text": "test <variable_1>",
            "variables": {
                "variable_1": "name"
            }
        },
        "sms": {
            "sender_id": "gSystem",
            "sender_id_value": "BulkGate",
            "unicode": false,
            "text": "test <variable_1>",
            "variables": {
                "variable_1": "name"
            }
        }
    }
}
```


## La réponse à cette commande peut être :

**En cas de succès**
```json
{
    "data": {
        "status": "accepted",
        "message_id": "omni-############",
        "part_id": [
            "omni-##############"
        ],
        "number": "420777777777",
        "channel": "sms"
    }
}
```

**En cas d'erreur :**
```json
{
    "type": "invalid_phone_number",
    "code": 400,
    "error": "Invalid phone number",
    "detail": null
}
```

```json
{
    "type": "unknown_identity",
    "code": 401,
    "error": "Unknown identity / unauthorized / empty application_id",
    "detail": null
}
```

Où :
- **type** et **error** (description de l'erreur) figurent dans le [tableau des types d'erreurs](https://www.bulkgate.com/fr/documentation/administration-api-et-tokens/types-d-erreurs-api/)
- **code** représente l'erreur HTTP
- **detail** contient des informations complémentaires sur l'erreur

Tous les types d'erreurs de Simple API et d'Advanced API sont disponibles [ici](https://www.bulkgate.com/fr/documentation/administration-api-et-tokens/types-d-erreurs-api/).
