[Intum Pomoc](https://intum.pl/pomoc.md) / [API](https://intum.pl/pomoc/baza-wiedzy/api.md)

# [Adresy wpisów bazy wiedzy](https://intum.pl/pomoc/baza-wiedzy/api/adresy-wpisow.md)

Tworzenie, aktualizacja, usuwanie i pobieranie aliasów adresów wpisów bazy wiedzy (stare adresy wpisów, które mają przekierowywać 301 na aktualny adres wpisu).

**Autoryzacja:** `Authorization: Bearer TOKEN`
**Content-Type:** `application/json; charset=utf-8`

## API Endpoints

| Metoda | Ścieżka | Opis |
|--------|---------|------|
| GET | `/kb/entry_urls.json` | Lista aliasów |
| GET | `/kb/entry_urls/:id.json` | Pojedynczy alias |
| POST | `/kb/entry_urls.json` | Utworzenie aliasu |
| PATCH | `/kb/entry_urls/:id.json` | Aktualizacja aliasu |
| DELETE | `/kb/entry_urls/:id.json` | Usunięcie aliasu |

## Pola aliasu

| Pole | Typ | Wymagane | Opis |
|------|-----|----------|------|
| `entry_id` | integer | tak | ID wpisu bazy wiedzy, na który kieruje alias |
| `url` | string | tak | Adres aliasu (sam slug, np. `import-z-santander`); normalizowany - można podać ścieżkę lub pełny URL |
| `kind` | string | nie | `manual` (dodany ręcznie, domyślny) lub `auto` (odłożony automatycznie po zmianie adresu wpisu) |
| `fields` | object | nie | Dodatkowe pola |

Pola tylko do odczytu: `knowledge_base_id` (brany z wpisu), `hit_count` (liczba trafień), `last_hit_at` (ostatnie trafienie).

## Filtrowanie listy

| Parametr | Opis |
|----------|------|
| `entry_id` | Aliasy jednego wpisu |
| `knowledge_base_id` | Aliasy jednej bazy wiedzy |
| `kind` | `auto` / `manual` |
| `query` | Szukanie po adresie |
| `order_by` | `url`, `kind`, `hit_count`, `last_hit_at`, `created_at`, `updated_at` |

## Tworzenie aliasu

```
POST /kb/entry_urls.json
Authorization: Bearer TOKEN
Content-Type: application/json; charset=utf-8
```

```json
{
  "entry_url": {
    "entry_id": 123,
    "url": "import-z-santander"
  }
}
```

## Aktualizacja aliasu

```
PATCH /kb/entry_urls/:id.json
```

```json
{
  "entry_url": {
    "url": "pomoc/import-z-santander"
  }
}
```

## Błędy (422)

```json
{"url": ["jest już zajęty przez wpis bazy wiedzy"]}
```

## Wskazówki

- **Aliasy `auto` powstają same** - przy każdej zmianie pola `url` we wpisie poprzedni adres odkłada się jako alias, żeby rozesłane i zaindeksowane linki nie kończyły się błędem 404
- **Alias jest unikalny w ramach bazy wiedzy** - jeden adres kieruje na jeden wpis
- **Adres zajęty przez istniejący wpis** nie przejdzie walidacji - wpis zawsze wygrywa w routingu, alias nigdy by nie zadziałał
- **Wydajność** - alias sprawdzamy dopiero wtedy, gdy pod wpisanym adresem nie ma wpisu (jedno zapytanie po unikalnym indeksie)
- **Usunięcie wpisu** usuwa też jego aliasy

## Powiązane

- [common_api](https://app.intum.pl/noe/prompt/common_api.md) - wspólne zasady API