Aponta um link curto existente para um URL de destino diferente. O próprio link curto mantém-se igual, pelo que continua a funcionar nas mensagens já enviadas.

## URL da API

URL utilizado para enviar os pedidos HTTP:

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

> [!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/change 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**    | -                 |
| short_url         | URL encurtado a alterar                                  | **Sim**     | -                 |
| target_url        | Novo URL                                                 | **Sim**     | -                 |

## Exemplo de pedido

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

{
  "application_id": 451,
  "application_token": "NKN02TWE6NfBkfl-your-secret-token-Wf05GaqLIWLW4aBj",
  "short_url": "ur7.wf/K",
  "target_url": "www.insymbo.com"
}
```

## Resposta

**Em caso de sucesso:**

```json
{
    "data": {
        "short_url": "http://ur7.wf/K",
        "target_url": "http://www.insymbo.com/",
        "final_url": "www.insymbo.com",
        "title": "Online assessment tool for employee selection - INSYMBO"
    }
}
```

Os campos da resposta funcionam da mesma forma que em [shorten](https://www.bulkgate.com/pt/documentacao/encurtador-de-url/encurtador-encurtar-url/), com uma diferença: aqui, `final_url` contém o endereço **exatamente como o enviou**, sem acrescentar o esquema.

**Em caso de erro:**

```json
{
    "type": "url_not_found",
    "code": 400,
    "error": "Url not found",
    "detail": null
}
```

```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 erros](https://www.bulkgate.com/pt/documentacao/administracao-da-api/tipos-de-erro-api/)
- **code** é o código de erro HTTP
- **detail** contém informações adicionais sobre o erro

### Tipos de erros da Shortener API

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

| TIPO                                    | QUANDO OCORRE                                                          |
|:----------------------------------------|:-----------------------------------------------------------------------|
| `url_not_found`                         | `short_url` não existe na conta.                                       |
| `url_is_not_valid`                      | Não foi possível interpretar o novo `target_url`.                      |
| `domain_is_not_white_listed`            | O novo domínio de destino não está na lista de permitidos (no caso de domínios restritos). |
| `the_per_minute_quota_has_been_exceeded`| A quota de 20 pedidos por minuto está esgotada.                        |
