Devolve a lista de domínios curtos disponíveis para a sua conta. Os valores desta lista são os que pertencem ao parâmetro `url_type` ao [encurtar uma ligação](https://www.bulkgate.com/pt/documentacao/encurtador-de-url/encurtador-encurtar-url/).

## URL da API

O URL utilizado para enviar os pedidos HTTP:

```url
https://portal.bulkgate.com/api/1.0/shortener/domains
```

> [!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`.

## Métodos HTTP suportados

- `POST` - `application/json`

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

> [!NOTE]
> A API tem uma quota de `20` pedidos por minuto.

## Tabela de parâmetros

| NOME DO PARÂMETRO | VALOR | OBRIGATÓRIO | VALOR PREDEFINIDO |
|:------------------|:---------------------------------------------------------------------------------|:----------|:--------------|
| application_id    | [Application ID](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**   | -             |
| variant           | Formato da resposta - `list`, `key_value` ou `label_value`, consulte [Formatos da resposta](#formatos-da-resposta) | Não        | `list`        |

### Formatos da resposta

As três variantes contêm os mesmos domínios e diferem apenas na estrutura - escolha a que o seu formulário consome diretamente.

| VALOR         | FORMATO DE `data`                                          |
|:--------------|:-----------------------------------------------------------|
| `list`        | Um array de strings. |
| `key_value`   | Um objeto em que tanto a chave como o valor são o domínio. |
| `label_value` | Um array de objetos `{"label": …, "value": …}`. |

> [!NOTE]
> A lista não é igual para todas as contas. Contém também os seus [domínios próprios](https://www.bulkgate.com/pt/centro-de-ajuda/campanhas/encurtador-de-url-na-campanha/), se os tiver, e estes aparecem primeiro - o primeiro domínio da lista é também o que `shorten` utiliza quando omite `url_type`.

## Exemplo de pedido

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

{
  "application_id": 451,
  "application_token": "NKN02TWE6NfBkfl-your-secret-token-Wf05GaqLIWLW4aBj",
  "variant": "list"
}
```

## Resposta

**Em caso de sucesso:**

```json
{
    "data": [
        "ur7.wf",
        "ms6.fr",
        "ur7.yt",
        "ur7.tf",
        "ms6.wf",
        "ms6.tf",
        "track-message.com"
    ]
}
```

A mesma lista na variante `key_value`:

```json
{
    "data": {
        "ur7.wf": "ur7.wf",
        "ms6.fr": "ms6.fr"
    }
}
```

E na variante `label_value`:

```json
{
    "data": [
        {"label": "ur7.wf", "value": "ur7.wf"},
        {"label": "ms6.fr", "value": "ms6.fr"}
    ]
}
```

**Em caso de erro:**

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

Em que:

- **type** e **error** (descrição do erro) encontram-se na [tabela de tipos de erro](https://www.bulkgate.com/pt/documentacao/administracao-da-api/tipos-de-erro-api/)
- **code** é o código de erro HTTP
- **detail** é uma informação adicional sobre o erro

### Tipos de erro da Shortener API

Além dos [tipos gerais](https://www.bulkgate.com/pt/documentacao/administracao-da-api/tipos-de-erro-api/), este endpoint devolve os seus próprios:

| TIPO                                    | QUANDO OCORRE                                                        |
|:----------------------------------------|:-----------------------------------------------------------------------|
| `the_per_minute_quota_has_been_exceeded`| A quota de 20 pedidos por minuto está esgotada. |
