Leitet einen bestehenden Kurzlink auf eine andere Ziel-URL um. Der Kurzlink selbst bleibt unverändert und funktioniert daher auch in bereits gesendeten Nachrichten weiter.

## API-URL

Die URL, an die die HTTP-Anfragen gesendet werden:

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

> [!NOTE]
> Erreicht die Anfrage ihr Ziel nicht, wiederholen Sie sie auf dem [Backup-Server](https://www.bulkgate.com/de/dokumentation/api-verwaltung-und-tokens/backup-server/) `backup1.bulkgate.com`.

## Unterstützte HTTP-Methoden

- `POST` - `application/json`

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

> [!NOTE]
> Für die API gilt ein Kontingent von `20` Anfragen pro Minute.

## Parametertabelle

| PARAMETERNAME     | WERT                                                    | PFLICHT   | STANDARDWERT  |
|:------------------|:---------------------------------------------------------|:----------|:--------------|
| application_id    | [Application ID](https://www.bulkgate.com/de/dokumentation/api-verwaltung-und-tokens/api-verwaltung/)           | **Ja**    | -             | 
| application_token | [Authentifizierungstoken der Anwendung](https://www.bulkgate.com/de/dokumentation/api-verwaltung-und-tokens/api-tokens/)	 | **Ja**    | -             |
| short_url         | Gekürzte URL, die geändert werden soll	                  | **Ja**    | -             |
| target_url        | Neue URL                                                | **Ja**    | -             |

## Beispiel einer Anfrage

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

## Antwort

**Bei Erfolg:**

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

Die Felder der Antwort verhalten sich wie bei [URL kürzen](https://www.bulkgate.com/de/dokumentation/url-kuerzer/url-kuerzer-url-kuerzen/), mit einem Unterschied: `final_url` enthält hier die Adresse **genau so, wie Sie sie gesendet haben**, ohne ergänztes Schema.

**Im Fehlerfall:**

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

Dabei gilt:

- **type** und **error** (Beschreibung des Fehlers) finden Sie in der [Tabelle der Fehlertypen](https://www.bulkgate.com/de/dokumentation/api-verwaltung-und-tokens/api-fehlertypen/)
- **code** ist der HTTP-Fehlercode
- **detail** enthält zusätzliche Informationen zum Fehler

### Fehlertypen der Shortener API

Neben den [allgemeinen Typen](https://www.bulkgate.com/de/dokumentation/api-verwaltung-und-tokens/api-fehlertypen/) gibt die Shortener API eigene Fehlertypen zurück:

| TYP                                     | WANN ER AUFTRITT                                                       |
|:----------------------------------------|:-----------------------------------------------------------------------|
| `url_not_found`                         | `short_url` existiert im Konto nicht.                                  |
| `url_is_not_valid`                      | Die neue `target_url` konnte nicht verarbeitet werden.                 |
| `domain_is_not_white_listed`            | Die neue Zieldomain steht nicht auf der Whitelist (bei eingeschränkten Domains). |
| `the_per_minute_quota_has_been_exceeded`| Das Kontingent von 20 Anfragen pro Minute ist aufgebraucht.            |
