Skráti cieľovú URL na krátky odkaz, ktorý potom môžete použiť v texte správy alebo v portáli BulkGate.

## API URL

Adresa URL, ktorá sa používa na odosielanie HTTP požiadaviek:

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

> [!NOTE]
> Ak sa požiadavka nedostane k cieľu, zopakujte ju na [záložnom serveri](https://www.bulkgate.com/sk/dokumentacia/api-administracia-a-tokeny/zalozny-server/) `backup1.bulkgate.com`.

## Podporované HTTP metódy

- `POST` - `application/json`

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

> [!NOTE]
> API má nastavenú kvótu `20` požiadaviek za minútu.

## Tabuľka s parametrami

| NÁZOV PARAMETRA   | HODNOTA                                                  | POVINNÝ | PREDVOLENÁ HODNOTA |
|:------------------|:---------------------------------------------------------|:--------|:-------------------|
| application_id    | [Identifikátor aplikácie](https://www.bulkgate.com/sk/dokumentacia/api-administracia-a-tokeny/administracia-api/)   | **Áno** | -                  |
| application_token | [Overovací token aplikácie](https://www.bulkgate.com/sk/dokumentacia/api-administracia-a-tokeny/api-tokeny/)         | **Áno** | -                  |
| target_url        | URL na skrátenie                                         | **Áno** | -                  |
| url_type          | Doména krátkeho odkazu, pozrite [Podporované domény](#podporovane-domeny) | Nie | `ur7.wf`  |

### Podporované domény

Hodnoty `url_type` sú konfiguráciou inštancie a menia sa — aktuálny zoznam pre váš účet vracia [endpoint `domains`](https://www.bulkgate.com/sk/dokumentacia/skracovac/skracovac-dostupne-domeny/). K dátumu písania:

| DOMÉNA              | OBMEDZENIE CIEĽOVEJ ADRESY                                |
|:--------------------|:----------------------------------------------------------|
| `ur7.wf`            | Bez obmedzenia. Predvolená hodnota.                       |
| `ms6.fr`            | Bez obmedzenia.                                           |
| `ur7.yt`            | Len cieľové domény na whiteliste.                         |
| `ur7.tf`            | Len cieľové domény na whiteliste.                         |
| `ms6.wf`            | Len cieľové domény na whiteliste.                         |
| `ms6.tf`            | Len cieľové domény na whiteliste.                         |
| `track-message.com` | Len cieľové domény na whiteliste.                         |

Pri doménach s obmedzením musí byť cieľová adresa na whiteliste vášho účtu, inak požiadavka skončí chybou `domain_is_not_white_listed`. Niekoľko verejných služieb (Google, YouTube, Facebook, GitHub a ďalšie) je na whiteliste vždy.

## Príklad požiadavky

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

{
  "application_id": 451,
  "application_token": "NKN02TWE6NfBkfl-your-secret-token-Wf05GaqLIWLW4aBj",
  "target_url": "www.bulkgate.com",
  "url_type": "ur7.wf"
}
```

## Odpoveď

**V prípade úspechu:**

```json
{
    "data": {
        "short_url": "http://ur7.wf/W",
        "target_url": "http://www.bulkgate.com/",
        "final_url": "http://www.bulkgate.com",
        "title": "SMS & other channels for business communication | BulkGate",
        "expiration": "2026-10-10T09:00:00+02:00"
    }
}
```

Odkazy vytvorené cez API platia **30 dní** — `expiration` obsahuje dátum vypršania v ISO 8601.

Tri URL polia v odpovedi neznamenajú to isté:

| POLE         | HODNOTA                                                                                                 |
|:-------------|:----------------------------------------------------------------------------------------------------------|
| `short_url`  | Samotný skrátený odkaz, zložený z `url_type` a vygenerovaného kľúča                                     |
| `target_url` | Adresa tak, ako bola uložená — doplní sa chýbajúca schéma a URL sa normalizuje, takže z `www.bulkgate.com` je `http://www.bulkgate.com/` |
| `final_url`  | Adresa, ktorú ste poslali, len s doplnenou schémou. **Presmerovania sa nesledujú**, takže toto nie je stránka, na ktorú sa návštevník napokon dostane |
| `title`      | Titulok načítaný z cieľovej stránky                                                                     |


**V prípade chyby:**

```json
{
    "type": "url_is_not_valid",
    "code": 400,
    "error": "Url is not valid",
    "detail": null
}
```

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

Kde:

- **type** a **error** (popis chyby) nájdete v [tabuľke typov chýb](https://www.bulkgate.com/sk/dokumentacia/api-administracia-a-tokeny/typy-chyb-api/)
- **code** je HTTP kód chyby
- **detail** je doplňujúca informácia o chybe

### Typy chýb Shortener API

Popri [všeobecných typoch](https://www.bulkgate.com/sk/dokumentacia/api-administracia-a-tokeny/typy-chyb-api/) vracia Shortener API aj vlastné:

| TYP                                     | KEDY NASTANE                                                           |
|:----------------------------------------|:-----------------------------------------------------------------------|
| `url_is_not_valid`                      | `target_url` sa nepodarilo rozparsovať.                                |
| `url_type_is_incorrect`                 | `url_type` nie je v zozname domén účtu.                                |
| `domain_is_not_white_listed`            | Cieľová doména nie je na whiteliste (pri doménach s obmedzením).       |
| `url_is_not_allowed`                    | Cieľová adresa smeruje na lokálnu/internú adresu.                      |
| `url_can_not_be_redirected_out_of_target_domain` | Cieľová adresa presmerúva mimo svojej domény.                 |
| `url_can_not_be_created`                | Odkaz sa nepodarilo vytvoriť.                                          |
| `the_per_minute_quota_has_been_exceeded`| Vyčerpaná kvóta 20 požiadaviek za minútu.                              |
