# API: kuponok és kategóriák

> Kuponok ellenőrzése, létrehozása, módosítása, lekérése és törlése, valamint szolgáltatáskategóriák kezelése az API-val.

Ez a fejezet a kuponok és a szolgáltatáskategóriák végpontjait írja le.

Az API az Elite licenchez tartozik, használatához programozási ismeret kell, a szokásos támogatás nem terjed ki rá. A hitelesítés az **Amelia** fejlécben küldött API-kulccsal történik ([részletek](https://hub.hellowp.io/hu/plugins/ameliabooking/fejlesztoknek-api-attekintes/)). Az alap útvonal: `{{az_oldalad_URL-je}}/wp-admin/admin-ajax.php?action=wpamelia_api&call=/api/v1`.

| Művelet | Metódus | Útvonal |
|---|---|---|
| Kupon ellenőrzése | `POST` | `/coupons/validate` |
| Kupon létrehozása | `POST` | `/coupons` |
| Kupon módosítása | `POST` | `/coupons/{{kupon_id}}` |
| Egy kupon lekérése | `GET` | `/coupons/{{kupon_id}}` |
| Kuponok listázása | `GET` | `/coupons` |
| Kupon törlése | `POST` | `/coupons/delete/{{kupon_id}}` |
| Kategória létrehozása | `POST` | `/categories` |
| Kategória módosítása | `POST` | `/categories/{{kategoria_id}}` |
| Egy kategória lekérése | `GET` | `/categories/{{kategoria_id}}` |
| Kategóriák listázása | `GET` | `/categories` |
| Kategória törlése | `POST` | `/categories/delete/{{kategoria_id}}` |

## Kuponok

### Kupon ellenőrzése

Egy kuponkódot ellenőriz egy adott entitásra és felhasználóra, és megnézi, elérte-e a kupon a használati korlátját.

| Tulajdonság | Típus | Leírás |
|---|---|---|
| `code` | szöveg | Kötelező. A kuponkód. |
| `id` | egész | Kötelező. Az entitás (szolgáltatás, esemény vagy csomag) azonosítója. |
| `type` | szöveg | Kötelező. Az entitás típusa: `service`, `package` vagy `event`. |
| `user` | objektum | Kötelező. A felhasználónkénti korlát ellenőrzéséhez: `firstName`, `lastName`, `email`. |
| `count` | egész | Opcionális. Az ismétlődő foglalások száma, ha az összes ismétlődő foglalásra ellenőrzöd a kupont. |

```bash
curl --location 'https://pelda.hu/wp-admin/admin-ajax.php?action=wpamelia_api&call=/api/v1/coupons/validate' \
--header 'Content-Type: application/json' \
--header 'Amelia: AZ_API_KULCSOD' \
--data-raw '{
  "code": "TAVASZ10",
  "id": 1,
  "type": "service",
  "user": { "firstName": "Anna", "lastName": "Minta", "email": "anna.minta@example.test" },
  "count": 1
}'
```

### Kupon létrehozása

Új kupont hoz létre a használati korlátokkal, a kedvezménnyel és azzal, hogy mely szolgáltatásokra, eseményekre vagy csomagokra érvényes.

| Tulajdonság | Típus | Leírás |
|---|---|---|
| `code` | szöveg | Kötelező. A kuponkód. |
| `limit` | egész | Kötelező. A kupon használati korlátja. |
| `discount` | egész | Százalékos kedvezmény; kötelező, ha nincs `deduction`. |
| `deduction` | tizedes szám | Fix összegű levonás; kötelező, ha nincs `discount`. |
| `customerLimit` | egész | Vásárlónkénti korlát. |
| `notificationInterval` | egész | Hány jóváhagyott foglalás után kerüljön a kupon egy értesítésbe. |
| `notificationRecurring` | logikai | Ismétlődik-e a `notificationInterval`. Alapérték: `false`. |
| `status` | szöveg | `visible` vagy `hidden`. |
| `services` | tömb | Szolgáltatásazonosítók. |
| `events` | tömb | Eseményazonosítók. |
| `packages` | tömb | Csomagazonosítók. |
| `expirationDate` | szöveg | Lejárat `ÉÉÉÉ-HH-NN` formában. |
| `startDate` | szöveg | Kezdet `ÉÉÉÉ-HH-NN` formában. |

```bash
curl --location 'https://pelda.hu/wp-admin/admin-ajax.php?action=wpamelia_api&call=/api/v1/coupons' \
--header 'Content-Type: application/json' \
--header 'Amelia: AZ_API_KULCSOD' \
--data '{
  "code": "TAVASZ10",
  "discount": 0,
  "deduction": 10,
  "limit": 20,
  "customerLimit": 2,
  "notificationInterval": 0,
  "notificationRecurring": false,
  "status": "visible",
  "events": [80],
  "services": [1],
  "packages": [1],
  "expirationDate": "2026-04-10"
}'
```

### Kupon módosítása, lekérése, listázása és törlése

- **Módosítás:** a `/coupons/{{kupon_id}}` végpontra küldd el csak azokat a mezőket, amelyeket változtatni akarsz. Ugyanazok a mezők használhatók, mint a létrehozásnál, mindegyik opcionális.
- **Lekérés:** a `GET /coupons/{{kupon_id}}` egy kupon adatait adja vissza.
- **Listázás:** a `GET /coupons` a kuponok listáját adja.
- **Törlés:** a `POST /coupons/delete/{{kupon_id}}` törli a kupont.

```bash
curl --location 'https://pelda.hu/wp-admin/admin-ajax.php?action=wpamelia_api&call=/api/v1/coupons/14' \
--header 'Content-Type: application/json' \
--header 'Amelia: AZ_API_KULCSOD' \
--data '{ "code": "TAVASZ20", "deduction": 20, "limit": 50, "customerLimit": 1, "expirationDate": "2026-05-06" }'
```

## Kategóriák

A kategóriák csoportokba rendezik a szolgáltatásokat, szabályozzák a láthatóságukat és a sorrendjüket a foglalási űrlapokon és az admin nézetekben.

### Kategória létrehozása

| Tulajdonság | Típus | Leírás |
|---|---|---|
| `name` | szöveg | Kötelező. A kategória neve. |
| `position` | egész | Kötelező. A kategória sorrendbeli helye. |
| `status` | szöveg | Opcionális. `visible` vagy `hidden`. |
| `color` | szöveg | Opcionális. Hexadecimális szín, alapérték: `#1788FB`. |

```bash
curl --location 'https://pelda.hu/wp-admin/admin-ajax.php?action=wpamelia_api&call=/api/v1/categories' \
--header 'Content-Type: application/json' \
--header 'Amelia: AZ_API_KULCSOD' \
--data '{ "status": "visible", "name": "Hajvágás", "position": 1 }'
```

### Kategória módosítása, lekérése, listázása és törlése

- **Módosítás:** a `/categories/{{kategoria_id}}` végpontra csak a változtatni kívánt mezőket küldd: `name`, `status`, `position`, `color`, valamint a `translations` (JSON-ként kódolt szöveg a lefordított kategórianevekkel).
- **Lekérés:** a `GET /categories/{{kategoria_id}}` egy kategória részletes adatait adja vissza a hozzá tartozó szolgáltatásokkal.
- **Listázás:** a `GET /categories` az összes kategóriát visszaadja a hozzájuk tartozó szolgáltatásokkal.
- **Törlés:** a `POST /categories/delete/{{kategoria_id}}` véglegesen törli a kategóriát.

```bash
curl --location 'https://pelda.hu/wp-admin/admin-ajax.php?action=wpamelia_api&call=/api/v1/categories/4' \
--header 'Content-Type: application/json' \
--header 'Amelia: AZ_API_KULCSOD' \
--data '{ "name": "Masszázs", "translations": "{\"name\":{\"fr_FR\":\"Massages\"}}" }'
```
