## URL da API
URL utilizado para enviar pedidos HTTP:
```url
https://portal.bulkgate.com/api/1.0/price-list/get
```

> [!NOTE]
> Se o pedido não chegar ao destino, repita-o no [servidor de reserva](https://www.bulkgate.com/pt/documentacao/administracao-da-api/servidor-de-reserva/) `backup1.bulkgate.com`.


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

> [!NOTE]
> A API está limitada por uma quota de **20** pedidos por minuto.

### Tabela de parâmetros

| NOME DO PARÂMETRO    | VALOR                                         | OBRIGATÓRIO | VALOR PREDEFINIDO |
|:------------------|:----------------------------------------------|:----------|:--------------|
| application_id    | [ID da aplicação](https://www.bulkgate.com/pt/documentacao/administracao-da-api/administracao-de-apis/) | **Sim**   | -             | 
| application_token | [Token da aplicação](https://www.bulkgate.com/pt/documentacao/administracao-da-api/tokens-de-api/)	     | **Sim**   | -             |
| country           | Array de códigos dos países da tabela de preços pretendida | **Sim**   | -             |
| wallet            | Nome da carteira pretendida.                  | Não        | Carteira principal |


> Ao contrário dos outros endpoints, `price-list/get` rejeita qualquer parâmetro que não conste da tabela acima com `invalid_input_parameters`. `country` tem de ser sempre um array, mesmo para um único país.

### Exemplo de pedido completo

```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"
}
```

## A resposta a este pedido pode ser:

**Em caso de sucesso:**
```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": [
            "+###############"
          ]
        }
      ]
    }
  }
}
```



### Item da tabela de preços

`data.price_list` é um objeto cujas chaves são os códigos dos países; em cada chave encontra-se um array de rotas. Um país sem tabela de preços **não** aparece de todo na resposta.

| CAMPO              | VALOR                                                                                                                                                         |
|:-------------------|:----------------------------------------------------------------------------------------------------------------------------------------------------------------|
| operator           | Nome do operador                                                                                                                                              |
| operator_code      | Código do operador                                                                                                                                            |
| type               | Tipo de remetente da rota: `gTextOwn`, `gSystem`, `gShort`, `gText`, `gOwn`, `gMobile`, `gPush` ou `gNone` quando a rota não tem nenhum                        |
| price              | Preço de uma parte da mensagem, arredondado a 4 casas decimais e convertido na moeda da carteira                                                               |
| currency           | Moeda da carteira a que pertence a tabela de preços                                                                                                           |
| gate               | Número do gateway `0`–`6`, `985` para [Mobile Connect](https://www.bulkgate.com/pt/centro-de-ajuda/mobile-connect/instalacao-do-mobile-connect/)                                                                   |
| economy            | Rota económica                                                                                                                                                |
| unicode            | A rota suporta Unicode                                                                                                                                        |
| two_way            | A rota suporta [comunicação bidirecional](https://www.bulkgate.com/pt/produtos/sms-bidirecional/). Sempre `true` para `gOwn`                                                                  |
| registration       | O ID do remetente tem de ser registado antes do envio, consulte [Registo de remetente de texto](https://www.bulkgate.com/pt/centro-de-ajuda/sms/registar-remetente-de-texto/)                       |
| registration_fee   | Taxa única pelo registo do ID do remetente. Só tem significado em conjunto com `registration`                                                                 |
| registration_delay | Quanto tempo demora o registo. Só tem significado em conjunto com `registration`                                                                              |
| monthly_fee        | Taxa mensal recorrente pelo ID do remetente registado. Só tem significado em conjunto com `registration`                                                      |
| route_quality      | Um de `HQ`, `PARTNER DIRECT`, `DIRECT`, `SIM`, `WH`, `SS7`, `PARTNER SS7`, `OFFNET DIRECT - NATIONAL`, `OFFNET DIRECT - GROUP`, `OFFNET DIRECT - INTERNATIONAL` e as respetivas variantes `PARTNER`. Uma **string vazia** quando a qualidade não é conhecida |
| route_note         | Nota sobre a rota, `null` quando não existe                                                                                                                   |
| sender_note        | Nota sobre o ID do remetente, `null` quando não existe                                                                                                        |
| default_senders    | Array dos ID de remetente predefinidos da rota                                                                                                                |


**Em caso de erro:**

```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
}
```

Em que:
 - **type** e **error** (descrição do erro) encontram-se na [tabela de tipos de erros](https://www.bulkgate.com/pt/documentacao/administracao-da-api/tipos-de-erro-api/)
 - **code** representa o código de erro HTTP
 - **detail** contém informações adicionais sobre o erro
