## URL de l'API
URL utilisée pour envoyer les requêtes HTTP :
```url
https://portal.bulkgate.com/api/1.0/price-list/get
```

> [!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/price-list/get HTTP/1.1
Host: portal.bulkgate.com
Content-Type: application/json
```

> [!NOTE]
> L'API est limitée à **20** requêtes par minute.

### Tableau des paramètres

| NOM DU PARAMÈTRE    | VALEUR                                         | OBLIGATOIRE | VALEUR PAR DÉFAUT |
|:------------------|:----------------------------------------------|:----------|:--------------|
| application_id    | [ID de l'application](https://www.bulkgate.com/fr/documentation/administration-api-et-tokens/administration-api/) | **Oui**   | -             | 
| application_token | [Token de l'application](https://www.bulkgate.com/fr/documentation/administration-api-et-tokens/tokens-d-api/)	     | **Oui**   | -             |
| country           | Tableau des codes pays des tarifs souhaités   | **Oui**   | -             |
| wallet            | Nom du portefeuille de votre choix.           | Non        | Portefeuille principal |


> Contrairement aux autres endpoints, `price-list/get` refuse tout paramètre absent du tableau ci-dessus avec `invalid_input_parameters`. `country` doit toujours être un tableau, même pour un seul pays.

### Exemple de requête complète

```http-json
POST /api/1.0/price-list/get HTTP/1.1
Host: portal.bulkgate.com
Content-Type: application/json

{
	"application_id": 451,
	"application_token": "NKN02TWE6NfBkfl-your-secret-token-Wf05GaqLIWLW4aBj",
	"country": ["sk", "cz"],
	"wallet": "bg1905014138000023"
}
```

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

**En cas de succès :**
```json
{
  "data": {
    "price_list": {
      "sk": [
        {
          "operator": "4ka",
          "operator_code": "23103",
          "type": "gSystem",
          "price": 0.03,
          "currency": "EUR",
          "gate": 0,
          "economy": false,
          "unicode": true,
          "two_way": true,
          "registration": false,
          "registration_fee": 0,
          "registration_delay": 0,
          "monthly_fee": 0,
          "route_quality": "HQ",
          "route_note": null,
          "sender_note": null,
          "default_senders": [
            "+##############"
          ]
        },
        {
          "operator": "O2",
          "operator_code": "23106",
          "type": "gSystem",
          "price": 0.03,
          "currency": "EUR",
          "gate": 0,
          "economy": false,
          "unicode": true,
          "two_way": true,
          "registration": false,
          "registration_fee": 0,
          "registration_delay": 0,
          "monthly_fee": 0,
          "route_quality": "HQ",
          "route_note": null,
          "sender_note": null,
          "default_senders": [
            "+###############"
          ]
        }
      ]
    }
  }
}
```



### Élément des tarifs

`data.price_list` est un objet dont les clés sont les codes pays ; sous chaque clé se trouve un tableau de routes. Un pays qui n'a pas de tarifs n'est **pas du tout** présent dans la réponse.

| CHAMP              | VALEUR                                                                                                                                                         |
|:-------------------|:----------------------------------------------------------------------------------------------------------------------------------------------------------------|
| operator           | Nom de l'opérateur                                                                                                                                                |
| operator_code      | Code de l'opérateur                                                                                                                                                |
| type               | Type d'expéditeur de la route : `gTextOwn`, `gSystem`, `gShort`, `gText`, `gOwn`, `gMobile`, `gPush`, ou `gNone` lorsque la route n'en a pas                          |
| price              | Prix d'une partie de message, arrondi à 4 décimales et converti dans la devise du portefeuille                                                             |
| currency           | Devise du portefeuille auquel appartiennent les tarifs                                                                                                              |
| gate               | Numéro de passerelle `0`–`6`, `985` pour [Mobile Connect](https://www.bulkgate.com/fr/centre-d-aide/mobile-connect/installation-mobile-connect/)                                                                       |
| economy            | Route économique                                                                                                                                                 |
| unicode            | La route prend en charge l'Unicode                                                                                                                                    |
| two_way            | La route prend en charge la [communication bidirectionnelle](https://www.bulkgate.com/fr/produits/sms-bidirectionnel/). Toujours `true` pour `gOwn`                                                                 |
| registration       | L'identifiant d'expéditeur doit être enregistré avant l'envoi, voir [Enregistrement d'un expéditeur texte](https://www.bulkgate.com/fr/centre-d-aide/sms/enregistrer-un-expediteur-texte/)                                  |
| registration_fee   | Frais uniques d'enregistrement de l'identifiant d'expéditeur. N'a de sens qu'avec `registration`                                                                        |
| registration_delay | Durée de l'enregistrement. N'a de sens qu'avec `registration`                                                                                  |
| monthly_fee        | Frais mensuels récurrents pour l'identifiant d'expéditeur enregistré. N'a de sens qu'avec `registration`                                                               |
| route_quality      | L'une des valeurs `HQ`, `PARTNER DIRECT`, `DIRECT`, `SIM`, `WH`, `SS7`, `PARTNER SS7`, `OFFNET DIRECT - NATIONAL`, `OFFNET DIRECT - GROUP`, `OFFNET DIRECT - INTERNATIONAL` et leurs variantes `PARTNER`. Une **chaîne vide** lorsque la qualité n'est pas connue |
| route_note         | Remarque sur la route, `null` s'il n'y en a pas                                                                                                               |
| sender_note        | Remarque sur l'identifiant d'expéditeur, `null` s'il n'y en a pas                                                                                                           |
| default_senders    | Tableau des identifiants d'expéditeur par défaut de la route                                                                                                                  |


**En cas d'erreur :**

```json
{
    "type": "invalid_wallet",
    "code": 400,
    "error": "Invalid wallet",
    "detail": null
}
```

```json
{
    "type": "the_quota_of_send_per_minute_has_been_exceeded",
    "code": 400,
    "error": "The quota of send per minute has been exceeded",
    "detail": null
}
```

```json
{
    "type": "invalid_input_parameters",
    "code": 400,
    "error": "Invalid input parameters",
    "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** est une information complémentaire sur l'erreur
