# Webhelyek végpontjai

> A REST API v2 webhelyvégpontjai: lista, szinkronizálás, bővítmény- és témaműveletek, webhely hozzáadása, címkék frissítése és kötegelt műveletek.

A webhelyvégpontokkal a vezérlőpulthoz csatlakoztatott Child-webhelyeket kezelheted programból. A `{id_or_domain}` jelölés a webhely számazonosítóját vagy a domainjét fogadja el. A pontos kérés- és válaszszerkezetet a Postman-gyűjtemény és az OpenAPI-leírás adja.

## Globális végpontok

| Metódus | Útvonal | Mire jó | Fő paraméterek |
|---|---|---|---|
| GET | `/sites` | Webhelyek listázása | `page`, `per_page`, `search`, `include`, `exclude`, `status`, `with_tags`, `full_data` |
| GET | `/sites/basic` | Könnyített webhelyrekordok | `page`, `per_page`, `search`, `include`, `exclude`, `status` |
| GET | `/sites/count` | Webhelyek száma | `include`, `exclude`, `status` |
| POST, PUT, PATCH | `/sites/sync` | Szinkronizálás az összes webhelyen | Opcionális szűrők (`include`, `exclude`) |
| POST, PUT, PATCH | `/sites/reconnect` | Újracsatlakozás az összes webhelyen | Opcionális szűrők |
| POST, PUT, PATCH | `/sites/disconnect` | Az összes egyező webhely leválasztása | Opcionális szűrők |
| POST, PUT, PATCH | `/sites/check` | Kapcsolatellenőrzés az összes webhelyen | Opcionális szűrők |
| POST | `/sites/add` | Child-webhely hozzáadása | `url`, `admin`, plusz `adminpassword` és/vagy `uniqueid`; opcionális `name`, `groupids`, `client_id` |
| POST | `/sites/batch` | Webhelyek kötegelt létrehozása, módosítása, törlése | `create[]`, `update[]`, `delete[]`; a létrehozás ugyanazokat a kapcsolódási mezőket használja, mint a `/sites/add` |

## Webhelyenkénti végpontok

| Metódus | Útvonal | Mire jó | Fő paraméterek |
|---|---|---|---|
| GET | `/sites/{id_or_domain}` | A webhely teljes adatai | opcionális `with_tags` |
| POST, PUT, PATCH | `/sites/{id_or_domain}/edit` | Webhelymezők módosítása | `name`, `groupids`, `client_id` és más szerkeszthető mezők |
| POST, PUT, PATCH | `/sites/{id_or_domain}/sync` | Egy webhely szinkronizálása | |
| GET | `/sites/{id_or_domain}/security` | Biztonsági pillanatkép | |
| GET | `/sites/{id_or_domain}/plugins` | A webhely bővítményei | `status`, `search`, `page`, `per_page`, `must_use` |
| POST, PUT, PATCH | `/sites/{id_or_domain}/plugins/activate` | Bővítmény(ek) aktiválása | `slug` (egy vagy vesszővel elválasztott lista) |
| POST, PUT, PATCH | `/sites/{id_or_domain}/plugins/deactivate` | Bővítmény(ek) kikapcsolása | `slug` |
| DELETE | `/sites/{id_or_domain}/plugins/delete` | Bővítmény(ek) törlése | `slug` |
| GET | `/sites/{id_or_domain}/plugins/abandoned` | Elhagyott bővítmények | Szokásos listaszűrők |
| GET | `/sites/{id_or_domain}/themes` | A webhely témái | `status`, `search`, `page`, `per_page` |
| POST, PUT, PATCH | `/sites/{id_or_domain}/themes/activate` | Téma aktiválása | `slug` |
| DELETE | `/sites/{id_or_domain}/themes/delete` | Téma(ák) törlése | `slug` |
| GET | `/sites/{id_or_domain}/themes/abandoned` | Elhagyott témák | Szokásos listaszűrők |
| GET | `/sites/{id_or_domain}/non-mainwp-changes` | A MainWP-n kívüli változások | opcionális `source`, `actions`, `contexts`, `total_count`, `page`, `per_page` |
| POST, PUT, PATCH | `/sites/{id_or_domain}/reconnect` | Újracsatlakozás | |
| POST, PUT, PATCH | `/sites/{id_or_domain}/disconnect` | Leválasztás | |
| POST, PUT, PATCH | `/sites/{id_or_domain}/suspend` | Felfüggesztés | |
| POST, PUT, PATCH | `/sites/{id_or_domain}/unsuspend` | Felfüggesztés feloldása | |
| POST, PUT, PATCH | `/sites/{id_or_domain}/check` | Ellenőrzés futtatása | |
| DELETE | `/sites/{id_or_domain}/remove` | A webhely eltávolítása a vezérlőpultról | |

### Kapcsolódó erőforrások

| Metódus | Útvonal | Mire jó |
|---|---|---|
| GET | `/sites/{id_or_domain}/client` | A webhelyhez tartozó ügyfél |
| GET | `/sites/{id_or_domain}/costs` | A webhelyhez tartozó költségek |

## Webhely hozzáadása REST API-val

Mindig kötelező a webhely URL-je és az adminisztrátor felhasználóneve (`admin`). A kapcsolódás hitelesítéséhez a Child beállításaitól függően még kell:

- `adminpassword`, ha a Child-webhelyen a jelszavas hitelesítés be van kapcsolva;
- `uniqueid`, ha az egyedi biztonsági azonosító be van kapcsolva;
- mindkettő, ha mindkét mód be van kapcsolva.

A MainWP Child már nem engedi, hogy a jelszavas hitelesítés és az egyedi biztonsági azonosító egyszerre ki legyen kapcsolva.

### Kapcsolódási mezők típusai

Webhely hozzáadásakor és szerkesztésekor a megfelelő JSON-típust add meg, ne az automatikus átalakításra hagyatkozz.

| Mező | Mikor | Elfogadott értékek |
|---|---|---|
| `force_use_ipv4` | Hozzáadás és szerkesztés | `0`: kikapcsolva, `1`: IPv4 kényszerítése, `2`: a globális beállítás; a JSON `false` és `true` is megy a `0` és `1` helyett |
| `ssl_verify` | Hozzáadás | JSON `true` vagy `false`; a `null` elutasított |
| `ssl_version` | Hozzáadás | cURL SSL-verzió kiválasztása; `0`: automatikus felismerés |
| `uniqueid` | Hozzáadás és szerkesztés | Szöveg: a Child egyedi biztonsági azonosítója; tartalék aliasként a `uniqueId` is elfogadott |
| `groupids` | Hozzáadás és szerkesztés | Vesszővel elválasztott címkeazonosítók szövegként, például `"3,7"` |

Ha hozzáadáskor kihagyod a `force_use_ipv4` mezőt, a kapcsolódási próbálkozás a globális beállítást használja. Érvénytelen érték (például a `force_use_ipv4` mezőben `3`, vagy `ssl_verify` helyén `null`) HTTP 400 hibát ad. Nézd meg a hibaválaszban az érintett paramétert, javítsd, és csak utána próbáld újra. A `/sites/batch` és a globális `/batch` webhelylétrehozása ugyanezt az ellenőrzést alkalmazza.

## Címkék frissítése

A webhely címkéit a `/sites/{id_or_domain}/edit` végponton, a `groupids` mezővel módosítod. Ez **lecseréli** a webhely címkehozzárendeléseit, nem hozzáad hozzájuk.

| Kérés | Eredmény |
|---|---|
| `"groupids": "3,7"` | A 3-as és 7-es címkét rendeli hozzá, a többi hozzárendelést eltávolítja |
| `"groupids": ""` | Az összes címkehozzárendelést eltávolítja a webhelyről |
| A `groupids` kihagyása | A webhely jelenlegi címkéi megmaradnak |

Minden azonosító pozitív egész legyen, és olyan létező címkét jelöljön, amelyhez a hitelesített API-felhasználó hozzáfér. Az ismétlődő azonosítókat a rendszer eltávolítja, az azonosítók körüli szóközök megengedettek. A címkenevek, a nulla, a negatív, a nem létező vagy nem elérhető azonosítók és az üres elemek (például `"3,,7"`) elutasítottak. A végpont nem hoz létre címkét.

```bash
curl -X POST \
  -H "Authorization: Bearer API_KULCS" \
  -H "Content-Type: application/json" \
  -d '{"groupids":"3,7"}' \
  "https://a-te-vezerlopultod.hu/wp-json/mainwp/v2/sites/12/edit"
```

Ha `tags` mezőt küldesz (üres értékkel is), vagy a `groupids` tömb vagy más, nem szöveg típusú, a válasz HTTP 400 és `rest_invalid_param`. Az érvénytelen címkeazonosítókat a rendszer még a webhelymezők mentése előtt ellenőrzi, és `success: 0`, `group_updated: false` és a hibát magyarázó `group_message` választ ad. A válasz törzsét akkor is nézd meg, ha a HTTP-állapot 200. Sikeres frissítésnél a válasz `success: 1`, `group_updated: true` és `group_message: "Tags updated successfully."`.

Ha az azonosítók érvényesek, de a címkehozzárendelések mentése mégis hibára fut, a többi kért webhelymező már mentődhetett. Ilyenkor ez a válasz:

```json
{
  "success": 0,
  "group_updated": false,
  "group_message": "Failed to update tags or invalid tag IDs.",
  "message": "Group associations could not be updated, but the other requested fields were saved."
}
```

Újrapróbálkozás előtt olvasd le a webhely aktuális értékeit: a `success: 0` nem garantálja, hogy a teljes szerkesztés visszagördült.

## Példák

### Webhelyek listázása

```bash
curl -H "Authorization: Bearer API_KULCS" \
  "https://a-te-vezerlopultod.hu/wp-json/mainwp/v2/sites?page=1&per_page=20&status=connected"
```

```json
{
  "success": 1,
  "total": 2,
  "data": [
    {
      "id": 12,
      "name": "Minta webhely",
      "url": "https://pelda.hu",
      "status": "connected"
    }
  ]
}
```

### Bővítmény aktiválása egy webhelyen

```bash
curl -X POST \
  -H "Authorization: Bearer API_KULCS" \
  -H "Content-Type: application/json" \
  -d '{"slug":"akismet/akismet.php"}' \
  "https://a-te-vezerlopultod.hu/wp-json/mainwp/v2/sites/12/plugins/activate"
```

```json
{
  "success": 1,
  "message": "Plugin activated successfully."
}
```

### Kötegelt webhelyműveletek

```bash
curl -X POST \
  -H "Authorization: Bearer API_KULCS" \
  -H "Content-Type: application/json" \
  -d '{
    "create": [{"url":"https://uj-webhely.hu","name":"Új webhely","admin":"admin","uniqueid":"xxxxx"}],
    "update": [{"id":12,"name":"Átnevezett webhely"}],
    "delete": [31]
  }' \
  "https://a-te-vezerlopultod.hu/wp-json/mainwp/v2/sites/batch"
```

```json
{
  "create": [{"success": 1}],
  "update": [{"success": 1}],
  "delete": [{"success": 1}]
}
```

## Kapcsolódó fejezetek

- [REST API áttekintés](https://hub.hellowp.io/hu/plugins/mainwp/rest-api-attekintes/)
- [Ügyfelek és költségek végpontjai](https://hub.hellowp.io/hu/plugins/mainwp/rest-api-ugyfelek-koltsegek/)
- [Kötegelt műveletek](https://hub.hellowp.io/hu/plugins/mainwp/rest-api-kotegelt-muveletek/)
