# API: csomagvásárlások

> Csomagvásárlás rögzítése egy vásárlónak, időpont felvétele a csomagból, a vásárlás státuszának módosítása, a szabad csomaghelyek lekérése és a vásárlás törlése az API-val.

A csomagvásárlások végpontjaival csomagvásárlást rögzíthetsz egy vásárlónak, felvehetsz olyan időpontot, amely a csomag szolgáltatását használja fel, módosíthatod a vásárlás státuszát, lekérdezheted a csomagban megmaradt helyeket, és szükség esetén törölheted a vásárlást.

Az API az Elite licenchez tartozik, használatához programozási ismeret kell. 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 |
|---|---|---|
| Csomagvásárlás létrehozása | `POST` | `/packages/customers` |
| Időpont felvétele a csomagvásárláshoz | `POST` | `/appointments` |
| Csomagvásárlás státuszának módosítása | `POST` | `/packages/customers/{{csomagvasarlas_id}}` |
| Szabad csomaghelyek lekérése | `GET` | `/package-purchases/slots` |
| Csomagvásárlás törlése | `POST` | `/packages/customers/delete/{{csomagvasarlas_id}}` |

## Csomagvásárlás létrehozása

Egy adott vásárlónak rögzít egy csomagvásárlást. Létrehozza a vásárlási rekordot, és igény szerint értesíti a vásárlót.

| Tulajdonság | Típus | Kötelező | Leírás |
|---|---|---|---|
| `packageId` | egész | igen | A csomag azonosítója. |
| `customerId` | egész | igen | A vásárló azonosítója. |
| `notify` | logikai | igen | Értesítse-e a vásárlót a vásárlásról. |

```bash
curl --location 'https://pelda.hu/wp-admin/admin-ajax.php?action=wpamelia_api&call=/api/v1/packages/customers' \
--header 'Content-Type: application/json' \
--header 'Amelia: AZ_API_KULCSOD' \
--data '{ "packageId": 14, "customerId": 16, "notify": true }'
```

A válasz tartalmazza a csomagvásárlás azonosítóját (`packageCustomerId`) és a fizetés azonosítóját (`paymentId`). A `packageCustomerId` kell a következő lépésekhez.

## Időpont felvétele a csomagvásárláshoz

Olyan időpontot hoz létre, amely egy konkrét csomagvásárlás szolgáltatását használja fel. A foglalás adatai között szerepelnie kell a `packageCustomerService` mezőnek a hozzá tartozó `packageCustomer` azonosítóval, hogy az Amelia össze tudja kapcsolni a foglalást a vásárlással.

**Kötelező tulajdonságok**

| Tulajdonság | Típus | Leírás |
|---|---|---|
| `bookings` | tömb | Foglalásobjektumok. |
| `serviceId` | egész | A szolgáltatás azonosítója. |
| `providerId` | egész | A munkavállaló azonosítója. |
| `bookingStart` | szöveg | Az időpont kezdete, `ÉÉÉÉ-HH-NN óó:pp` formában. |

**További tulajdonságok**

| Tulajdonság | Típus | Leírás |
|---|---|---|
| `notifyParticipants` | egész | Értesítse-e a vásárlót: `1` igen, `0` nem. |
| `internalNotes` | szöveg | Belső megjegyzések az időponthoz. |
| `lessonSpace` | szöveg | A Lessonspace-szoba azonosítója. |
| `locationId` | egész | Helyszínazonosító. |

```bash
curl --location 'https://pelda.hu/wp-admin/admin-ajax.php?action=wpamelia_api&call=/api/v1/appointments' \
--header 'Content-Type: application/json' \
--header 'Amelia: AZ_API_KULCSOD' \
--data '{
  "serviceId": 1,
  "providerId": 1,
  "locationId": 2,
  "bookings": [
    {
      "customerId": 16,
      "status": "approved",
      "duration": 3600,
      "persons": 1,
      "extras": [],
      "packageCustomerService": {
        "packageCustomer": { "id": 115 }
      }
    }
  ],
  "bookingStart": "2026-03-18 09:30",
  "notifyParticipants": 1,
  "internalNotes": "Csomagvásárlás részeként foglalva.",
  "lessonSpace": null
}'
```

A válasz az `appointment` objektumban adja vissza a létrehozott időpontot a foglalásaival, a kezdéssel és a befejezéssel.

## Csomagvásárlás státuszának módosítása

Módosítja a csomagvásárlás státuszát, például lemondja a vásárlást.

| Tulajdonság | Típus | Kötelező | Leírás |
|---|---|---|---|
| `status` | szöveg | igen | Az új státusz: `approved` (jóváhagyott) vagy `canceled` (lemondott). |

```bash
curl --location 'https://pelda.hu/wp-admin/admin-ajax.php?action=wpamelia_api&call=/api/v1/packages/customers/115' \
--header 'Content-Type: application/json' \
--header 'Amelia: AZ_API_KULCSOD' \
--data '{ "status": "canceled" }'
```

## Szabad csomaghelyek lekérése

Megmutatja, hogy egy vásárló egy csomagvásárlásán belül szolgáltatásonként hány hely maradt.

| Paraméter | Típus | Leírás |
|---|---|---|
| `packageId` | egész | A csomag azonosítója. |
| `customerId` | egész | A vásárló azonosítója. |

```bash
curl --location 'https://pelda.hu/wp-admin/admin-ajax.php?action=wpamelia_api&call=/api/v1/package-purchases/slots&packageId=3&customerId=3' \
--header 'Amelia: AZ_API_KULCSOD'
```

A válasz vásárlónként és csomagonként csoportosít. Minden vásárlásnál szolgáltatásonként megadja a szabad helyek számát (`available`) és az összes helyet (`total`), a vásárlás idejét (`purchased`) és a vásárlás azonosítóját (`packageCustomerId`).

## Csomagvásárlás törlése

Töröl egy csomagvásárlást, és szükség esetén frissíti a hozzá tartozó időpontokat és foglalásokat. A kérésnek nincs tartalma.

```bash
curl --location --request POST 'https://pelda.hu/wp-admin/admin-ajax.php?action=wpamelia_api&call=/api/v1/packages/customers/delete/115' \
--header 'Amelia: AZ_API_KULCSOD'
```

A válasz a `packageCustomer` objektumban adja vissza a törölt vásárlás adatait (ár, időszak, státusz, a foglalások száma).
