# API: csomagok

> Csomagok létrehozása, módosítása, lekérése, törölhetőségének ellenőrzése és törlése az API-val.

A csomagok végpontjaival csomagokat hozhatsz létre és módosíthatsz, megadhatod a bennük szereplő szolgáltatásokat, lekérdezheted a csomagok listáját, ellenőrizheted a törölhetőségüket, és törölheted őket.

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 |
|---|---|---|
| Csomag létrehozása | `POST` | `/packages` |
| Csomag módosítása | `POST` | `/packages/{{csomag_id}}` |
| Egy csomag lekérése | `GET` | `/packages/{{csomag_id}}` |
| Törölhetőség ellenőrzése | `GET` | `/packages/effect/{{csomag_id}}` |
| Csomagok listázása | `GET` | `/packages` |
| Csomag törlése | `POST` | `/packages/delete/{{csomag_id}}` |

## Csomag létrehozása

**Kötelező tulajdonságok**

| Tulajdonság | Típus | Leírás |
|---|---|---|
| `name` | szöveg | A csomag neve. |
| `bookable` | tömb | A csomagba tartozó szolgáltatások. Elemei: `service`, `providers`, `locations`, `quantity`, `minimumScheduled`, `maximumScheduled`, `allowProviderSelection`. |
| `price` | tizedes szám | A csomag ára. |

**Opcionális tulajdonságok**

| Tulajdonság | Típus | Leírás |
|---|---|---|
| `status` | szöveg | `visible`, `hidden` vagy `disabled`. Alapérték: `visible`. |
| `description` | szöveg | Leírás. |
| `color` | szöveg | Hexadecimális szín, alapérték: `#1788FB`. |
| `calculatedPrice` | logikai | Az ár a szolgáltatásokból számolódjon. Alapérték: `true`. |
| `discount` | tizedes szám | A csomag kedvezménye. |
| `gallery` | tömb | A galéria képeinek útvonalai. |
| `pictureFullPath`, `pictureThumbPath` | szöveg | A kép és a bélyegkép útvonala. |
| `position` | egész | Sorrendbeli hely. Alapérték: `1`. |
| `settings` | szöveg | JSON-ként kódolt csomagbeállítások; alapból az általános beállítások érvényesek. |
| `endDate` | szöveg | A megvásárolhatóság lejárata `ÉÉÉÉ-HH-NN ÓÓ:PP` formában. |
| `durationCount` | szöveg | A lejárati időtartam mennyisége. |
| `durationType` | egész | A lejárati időtartam egysége: `day`, `week` vagy `month`. |
| `translations` | szöveg | JSON-ként kódolt fordítások. |
| `sharedCapacity` | logikai | A kapacitás közös a szolgáltatások között. Alapérték: `false`. |
| `quantity` | egész | Az összes darabszám, ha a `sharedCapacity` értéke `true`. |
| `limitPerCustomer` | szöveg | JSON-ként kódolt vásárlónkénti korlát. |
| `descriptionHtml` | szöveg | A leírás HTML-ben. |
| `deposit` | tizedes szám | Az előleg összege. |
| `depositPayment` | szöveg | Az előleg típusa: `disabled`, `fixed`, `percentage`. |
| `fullPayment` | logikai | Csak az előleg helyett a teljes összeg is kifizethető. Alapérték: `false`. |

```bash
curl --location 'https://pelda.hu/wp-admin/admin-ajax.php?action=wpamelia_api&call=/api/v1/packages' \
--header 'Content-Type: application/json' \
--header 'Amelia: AZ_API_KULCSOD' \
--data '{
  "bookable": [
    { "service": { "id": 1 }, "providers": [], "locations": [], "quantity": 1,
      "minimumScheduled": 0, "maximumScheduled": 1, "allowProviderSelection": true },
    { "service": { "id": 4 }, "providers": [], "locations": [], "quantity": 1,
      "minimumScheduled": 0, "maximumScheduled": 1, "allowProviderSelection": false }
  ],
  "color": "#1788FB",
  "description": "Kétalkalmas csomag: konzultáció és kezelés kedvezményes áron.",
  "name": "Kezdő wellness csomag",
  "price": 55,
  "calculatedPrice": false,
  "discount": 0,
  "status": "visible",
  "gallery": [],
  "position": 9,
  "endDate": "2026-06-30 23:59",
  "deposit": 0,
  "depositPayment": "disabled",
  "sharedCapacity": false,
  "quantity": 1,
  "limitPerCustomer": "{\"enabled\":true,\"numberOfApp\":1,\"timeFrame\":\"day\",\"period\":1}"
}'
```

## Csomag módosítása

A `/packages/{{csomag_id}}` végpontra csak a változtatni kívánt mezőket küldd, például a szolgáltatásokat, az árat, a láthatóságot vagy a lejárati szabályokat. Ugyanazok a mezők használhatók, mint a létrehozásnál, mindegyik opcionális.

```bash
curl --location 'https://pelda.hu/wp-admin/admin-ajax.php?action=wpamelia_api&call=/api/v1/packages/22' \
--header 'Content-Type: application/json' \
--header 'Amelia: AZ_API_KULCSOD' \
--data '{
  "name": "Kezdő wellness csomag plusz",
  "description": "Kétalkalmas csomag hosszabb kezeléssel.",
  "price": 65,
  "calculatedPrice": false,
  "status": "visible",
  "endDate": "2026-06-30 23:59"
}'
```

## Lekérés, törölhetőség ellenőrzése, listázás és törlés

- **Egy csomag lekérése:** a `GET /packages/{{csomag_id}}` a csomag alapadatait, a benne szereplő szolgáltatásokat, a hozzárendelt munkavállalókat és a csomagszabályokat adja vissza.
- **Törölhetőség ellenőrzése:** a `GET /packages/effect/{{csomag_id}}` megmutatja, van-e a csomagnak jövőbeli csomagidőpontja, amely akadályozná a biztonságos törlést.
- **Listázás:** a `GET /packages` a csomagok listáját adja. Opcionális paraméterek: `page` (oldalszám) és `sort` (rendezés, például `name`).
- **Törlés:** a `POST /packages/delete/{{csomag_id}}` törli a csomagot.

```bash
curl --location 'https://pelda.hu/wp-admin/admin-ajax.php?action=wpamelia_api&call=/api/v1/packages?page=1&sort=name' \
--header 'Amelia: AZ_API_KULCSOD'
```
