## URL da API
URL utilizado para enviar pedidos HTTP:
```url
https://portal.bulkgate.com/api/1.0/integration/promotional
```

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

### 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 de autenticação da aplicação](https://www.bulkgate.com/pt/documentacao/administracao-da-api/tokens-de-api/) |  **Sim**  |                 -                 |
| tag               | Etiqueta de identificação pessoal                             |    Não     |                 -                 |
| messages          | Array de mensagens                                       |  **Sim**  | [Objeto de mensagem](#objeto-de-mensagem) |


### Objeto de mensagem

| NOME DO PARÂMETRO  | VALOR                                                                                                                                                                                                                                                                                                                                                                 | OBRIGATÓRIO |              VALOR PREDEFINIDO              |
|:----------------|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:---------:|:---------------------------------------:|
| primary_channel | O canal principal a utilizar em primeiro lugar na cascata                                                                                                                                                                                                                                                                                                                   |    Não     |                  `sms`                  |
| phone_number    | Número de telefone do destinatário                                                                                                                                                                                                                                                                                                                                         |  **Sim**  |                    -                    |
| country         | Indique os números dos destinatários em formato internacional (com prefixo, p. ex. `420`) ou adicione o [código do país](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements) (`777777777` + `CZ` = `420777777777`). Consulte o exemplo de pedido com o país. Se o valor for **`null`**, será utilizado o fuso horário que definiu para completar a informação |    Não     |                 `null`                  |
| schedule        | Agende a data e a hora de envio em [unix timestamp](https://en.wikipedia.org/wiki/Unix_time). Consulte os exemplos abaixo                                                                                                                                                                                                                                                     |    Não     |                 `null`                  |
| channels        | Array associativo de objetos de canal                                                                                                                                                                                                                                                                                                                                  |  **Sim**  | [Objeto de canal](#objeto-do-canal-viber) |


### Objeto do canal Viber

| NOME DO PARÂMETRO | VALOR                                                                                                                                              | OBRIGATÓRIO | VALOR PREDEFINIDO |
|:---------------|:---------------------------------------------------------------------------------------------------------------------------------------------------|:---------:|:-------------:|
| sender         | Nome do remetente                                                                                                                                        |    Não     |       -       |
| expiration     | Tempo após o qual a mensagem expira                                                                                                               |  Não      |    `3600`     |
| button_caption | Texto do botão                                                                                                                                        |    Não     |     `OK`      | 
| button_url     | URL do botão                                                                                                                                         |    Não     |      `#`      |
| image          | URL da imagem contida na mensagem                                                                                                          |    Não     |    `null`     |
| image_zoom     | A imagem pode ser ampliada?                                                                                                                         |    Não     |    `false`    |
| text           | Texto da mensagem. É possível adicionar ao modelo variáveis do array `variables` (outro parâmetro) `Olá <first_name> <last_name> ....` |  **Sim**  |       -       |
| variables      | Array associativo para adicionar variáveis ao texto, p. ex. `{"first_name": "John", "last_name": "Doe"}`                                                   |    Não     |     `[]`      |

### Objeto do canal SMS
| NOME DO PARÂMETRO  | VALOR                                                                                                                                                                                                                           | OBRIGATÓRIO | VALOR PREDEFINIDO |
|:----------------|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:---------:|:-------------:|
| sender_id       | ID do remetente, consulte [Tipo de remetente](#tipo-de-remetente-sender-id)                                                                                                                                                                      |    Não     |   `gSystem`   |
| sender_id_value | Valor do remetente - `gOwn` (p. ex. "420 777 777 777"), `gText` (p. ex. "BulkGate"), `gProfile` (p. ex. "423"), `gMobile` ou `gPush` [(CHAVE)](https://www.bulkgate.com/pt/centro-de-ajuda/mobile-connect/instalacao-do-mobile-connect/)                                                       |    Não     |    `''`     |
| unicode         | `Yes`/`true`/`1` para SMS Unicode, `no`/`false`/`0` para SMS de 7 bits                                                                                                                                                                 |    Não     |    `false`    | 
| text            | Texto do SMS (máx. 612 caracteres ou 268 caracteres se o Unicode estiver ativado), codificação UTF-8. É possível adicionar ao modelo variáveis do array `variables` (parâmetro adicional) `Olá <first_name> <last_name> ....` |  **Sim**  |       -       |
| variables       | Array associativo para adicionar variáveis ao texto, p. ex.: `{"first_name": "John", "last_name": "Doe"}`                                                                                                                            |    Não     |     `[]`      |

#### Tipo de remetente `sender_id`

| VALOR      | DESCRIÇÃO                                                           |
|:-----------|:----------------------------------------------------------------------|
| `gSystem`  | Número do sistema                                                         | 
| `gShort`   | Short code                                                            | 
| `gText`    | Remetente de texto                                                           | 
| `gMobile`  | [Mobile Connect](https://www.bulkgate.com/pt/centro-de-ajuda/mobile-connect/instalacao-do-mobile-connect/)                     |
| `gPush`    | Mobile Connect push - Envia uma notificação para a sua aplicação Mobile Connect |
| `gOwn`     | Número próprio (requer verificação do número)                             |
| `gProfile` | [ID do perfil do remetente](https://www.bulkgate.com/pt/centro-de-ajuda/sms/perfil-de-remetente/)                            |
| `<int>`    | ID do perfil do remetente                                                     | 



**Exemplo de pedido completo:**
```http-json
POST /api/1.0/integration/promotional HTTP/1.1
Host: portal.bulkgate.com
Content-Type: application/json

{
  "application_id": 451,
  "application_token": "NKN02TWE6NfBkfl-your-secret-token-Wf05GaqLIWLW4aBj",
  "tag": "",
  "messages": [
    {
      "primary_channel": "sms",
      "phone_number": "420777777777",
      "country": "cz",
      "channels": {
        "viber": {
          "sender": "BulkGate",
          "expiration": 3600,
          "button_caption": "OK",
          "button_url": "#",
          "image": "",
          "image_zoom": false,
          "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"
          }
        }
      }
    },
    {
      "primary_channel": "sms",
      "phone_number": "420777777778",
      "country": "cz",
      "channels": {
        "viber": {
          "sender": "BulkGate",
          "expiration": 3600,
          "button_caption": "OK",
          "button_url": "#",
          "image": "",
          "image_zoom": false,
          "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"
          }
        }
      }
    }
  ]
}
```


## A resposta a este pedido pode ser:

**Em caso de sucesso**
```json
{
    "data": {
        "total": {
            "status": {
                "sent": 0,
                "accepted": 2,
                "scheduled": 0,
                "error": 0,
                "blacklisted": 0,
                "invalid_number": 0,
                "invalid_sender": 0
            }
        },
        "response": [
            {
                "status": "accepted",
                "message_id": "############-0",
                "part_id": [
                    "############-0"
                ],
                "number": "420777777777",
                "channel": "sms"
            },
            {
                "status": "accepted",
                "message_id": "############-1",
                "part_id": [
                    "############-1"
                ],
                "number": "420777777778",
                "channel": "sms"
            }
        ]
    }
}
```

**Em caso de erro:**
```json
{
    "data": {
        "total": {
            "status": {
                "sent": 0,
                "accepted": 0,
                "scheduled": 0,
                "error": 0,
                "blacklisted": 0,
                "invalid_number": 0,
                "invalid_sender": 0
            }
        },
        "response": []
    }
}
```

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

Todos os tipos de erros da Simple API e da Advanced API encontram-se [aqui](https://www.bulkgate.com/pt/documentacao/administracao-da-api/tipos-de-erro-api/).