# Kapcsolatok kezelése REST API-val

> A kapcsolat adatainak lekérdezése és a kapcsolódó elemek frissítése, cseréje, leválasztása REST API-n keresztül.

A kapcsolatok adatait REST API-n át is lekérheted és módosíthatod, például két weboldal között. Szükséges: aktív JetEngine egy létrehozott kapcsolattal, és egy REST-kéréseket küldő alkalmazás (a példa az Advanced REST Client, de bármelyik megfelel).

## A végpontok bekapcsolása

1. Menj a **JetEngine → Kapcsolatok** oldalra, és kattints a kapcsolat **Szerkesztés** hivatkozására.
2. Kapcsold be a **Tétel/tételek lekérdezésére szolgáló REST API-végpont regisztrálása** kapcsolót. Megjelenik a végpont URL-je, benne három címmel:
   - `GET /wp-json/jet-rel/<kapcsolat azonosítója>`: a kapcsolat összes adata;
   - `GET /wp-json/jet-rel/<kapcsolat azonosítója>/children/<elem azonosítója>`: a megadott elem gyermekei;
   - `GET /wp-json/jet-rel/<kapcsolat azonosítója>/parents/<elem azonosítója>`: a megadott elem szülei.
3. A **Hozzáférési jogosultság** mezőben megadhatod, melyik jogosultsággal rendelkezők érhetik el az adatot (például `edit_pages`: csak szerkesztők és adminisztrátorok). Üresen hagyva nincs korlátozás, a végpont nyilvános.
4. Kapcsold be a **Frissítést végző REST API-végpont regisztrálása** kapcsolót is, ha módosítani is akarsz. Ez egy `POST /wp-json/jet-rel/<kapcsolat azonosítója>` végpontot ad.
5. Kattints a **Kapcsolat frissítése** gombra.

## A frissítő kérés felépítése

A kérés törzse (JSON) a következőket tartalmazza:

| Kulcs | Jelentés |
| --- | --- |
| `parent_id` | A szülő elem azonosítója (vagy azonosítók tömbje). |
| `child_id` | A gyermek elem azonosítója (vagy azonosítók tömbje). |
| `context` | `child`: a szülő oldaláról frissíted a gyermekeket; `parent`: a gyermek oldaláról frissíted a szülőket. |
| `store_items_type` | `update`: az új elemek hozzáadódnak a meglévőkhöz; `replace`: a meglévő kapcsolatok törlődnek, és az újak kerülnek a helyükre; `disconnect`: a megadott elemek leválnak, újak nem kerülnek be. |
| `meta` | Nem kötelező: a kapcsolat metamezői (név és érték párok). |

A kéréshez a fejlécben add meg a `Content-Type: application/json` értéket; ha kell, az `Authorization` fejlécet is. A kérés módja POST, a címe a frissítő végpont. A törzs típusa JSON, nyers (raw) bevitellel.

## Példák

### Gyermek hozzáadása a szülőhöz

```json
{
  "parent_id": 2,
  "child_id": 1310,
  "context": "child",
  "store_items_type": "update"
}
```

A 2-es azonosítójú szülőhöz hozzáadja az 1310-es azonosítójú gyermeket.

### Metamezők frissítése

A törzsbe vedd fel a `meta` kulcsot:

```json
"meta": {"tour_start_date": "2024-06-24", "_pricing": "300"}
```

Itt a `tour_start_date` és a `_pricing` a kapcsolat metamezői (szöveg és dátum), az értékek pedig a mentendő adatok. Minden, a kapcsolatnál elérhető metamező-típus frissíthető. Az eredményt a kapcsolt elem melletti szerkesztő gombbal ellenőrizheted.

> **Figyelem**
>
> A JetEngine a dátumokat általában `ÉÉÉÉ-HH-NN` formában tárolja. Ha nem vagy biztos a formátumban, adj meg egy értéket kézzel a metamezőben, mentsd, és nézd meg a lekérdező végpont válaszát. Frissítéskor ugyanilyen formában add meg a dátumot.

### Meglévő kapcsolatok cseréje

Ha az összes meglévő gyermeket újra akarod cserélni, a `store_items_type` értéke `replace`:

```json
"store_items_type": "replace"
```

### Szülő hozzáadása a gyermekhez

A `context` értéke `parent`:

```json
{
  "parent_id": 3,
  "child_id": 710,
  "context": "parent",
  "store_items_type": "update",
  "meta": {"tour_start_date": "2024-08-13", "_price_": "400"}
}
```

A 3-as azonosítójú szülő a 710-es gyermekhez kerül.

### Több elem egyszerre

A `child_id` (vagy a `parent_id`) értéke tömb is lehet:

```json
"child_id": [710, 1174, 653, 1221, 649]
```

Több szülőt is megadhatsz egy gyermekhez, és szülők és gyermekek tömbje együtt is használható: ilyenkor minden szülőhöz az összes megadott gyermek kapcsolódik.

> **Megjegyzés**
>
> A kapcsolat metamezői csak egyetlen szülő-gyermek párra frissíthetők. Tömbökkel nem működik a metamező frissítése.

### Leválasztás

```json
{
  "parent_id": 2,
  "child_id": 1310,
  "context": "child",
  "store_items_type": "disconnect"
}
```

Az 1310-es gyermek leválik a 2-es szülőről, új elem nem kerül a kapcsolatba.
