# Webhelyek képességei

> A mainwp-sites kategória 30 képessége: webhelyek listázása, hozzáadása, szinkronizálása, felfüggesztése, bővítmények és témák kezelése, biztonsági és költségadatok.

A MainWP 30 webhelykezelő képességet regisztrál a `mainwp-sites` kategóriában. Ezekkel programból listázhatod, szűrheted, hozzáadhatod, frissítheted és törölheted a webhelyeket, kezelheted a kapcsolatukat, a rajtuk lévő bővítményeket és témákat, és lekérheted a biztonsági, változás- és költségadatokat.

A hívások általános szabályait (alap URL, hitelesítés, metódusok, bemenet átadása) az Abilities API áttekintése írja le. Az alábbi példák `curl -u 'admin:xxxx'` hitelesítéssel és az `https://a-te-vezerlopultod.hu/wp-json/wp-abilities/v1/abilities/` alap URL-lel értendők. A webhelyet a `site_id_or_domain` mezőben azonosítóval vagy tartománnyal adhatod meg.

## Áttekintés

| Képesség | Metódus | Mire jó |
|---|---|---|
| `mainwp/list-sites-v1` | GET | Webhelyek listája lapozással és szűréssel |
| `mainwp/get-site-v1` | GET | Egy webhely részletes adatai |
| `mainwp/count-sites-v1` | GET | Webhelyek száma |
| `mainwp/get-sites-basic-v1` | GET | Minimális adatok (azonosító, URL, név) az összes webhelyről |
| `mainwp/sync-sites-v1` | POST | Szinkronizálás egy vagy több webhelyen |
| `mainwp/add-site-v1` | POST | Új webhely hozzáadása |
| `mainwp/update-site-v1` | POST | Webhely tulajdonságainak módosítása |
| `mainwp/delete-site-v1` | POST | Webhely törlése (megerősítéssel) |
| `mainwp/reconnect-site-v1`, `mainwp/reconnect-sites-v1` | POST | Újracsatlakozás (egy, illetve több webhely) |
| `mainwp/disconnect-site-v1`, `mainwp/disconnect-sites-v1` | POST | Kapcsolat bontása |
| `mainwp/suspend-site-v1`, `mainwp/suspend-sites-v1` | POST | Webhely felfüggesztése |
| `mainwp/unsuspend-site-v1` | POST | Felfüggesztés feloldása |
| `mainwp/check-site-v1`, `mainwp/check-sites-v1` | POST | Elérhetőség ellenőrzése |
| `mainwp/get-site-plugins-v1` | GET | Egy webhely bővítményei |
| `mainwp/activate-site-plugins-v1` | POST | Bővítmények aktiválása |
| `mainwp/deactivate-site-plugins-v1` | POST | Bővítmények kikapcsolása |
| `mainwp/delete-site-plugins-v1` | POST | Bővítmények törlése (megerősítéssel) |
| `mainwp/get-site-themes-v1` | GET | Egy webhely témái |
| `mainwp/activate-site-theme-v1` | POST | Téma aktiválása |
| `mainwp/delete-site-themes-v1` | POST | Témák törlése (megerősítéssel) |
| `mainwp/get-abandoned-plugins-v1` | GET | Elhagyott bővítmények az összes webhelyen |
| `mainwp/get-abandoned-themes-v1` | GET | Elhagyott témák az összes webhelyen |
| `mainwp/get-site-security-v1` | GET | Biztonsági adatok |
| `mainwp/get-site-changes-v1` | GET | Változásnapló (Logs modul kell) |
| `mainwp/get-site-client-v1` | GET | A webhelyhez tartozó ügyfél |
| `mainwp/get-site-costs-v1` | GET | Költségkövetési adatok (Cost Tracker modul kell) |

## Webhelyek listázása és lekérdezése

### mainwp/list-sites-v1

A MainWP-hez csatlakoztatott webhelyek listája lapozással és szűréssel. Csak olvas, GET.

```bash
curl -u 'admin:xxxx' \
  'https://a-te-vezerlopultod.hu/wp-json/wp-abilities/v1/abilities/mainwp/list-sites-v1/run'
```

| Név | Típus | Kötelező | Alapérték | Leírás |
|---|---|---|---|---|
| `page` | egész | nem | 1 | Oldalszám (1-től) |
| `per_page` | egész | nem | 20 | Elemek oldalanként (1-100) |
| `status` | szöveg | nem | `any` | Szűrő: `any`, `connected`, `disconnected`, `suspended` |
| `search` | szöveg | nem | üres | Keresés a névben vagy az URL-ben |
| `client_id` | egész | nem | | Szűrés ügyfélazonosítóra |
| `tag_id` | egész | nem | | Szűrés címkeazonosítóra |

A válasz egy `items` tömb (azonosító, `url`, `name`, `status`, `client_id`), valamint a `page`, `per_page` és `total` mező.

### mainwp/get-site-v1

Egy webhely részletes adatai. GET.

```bash
curl -G -u 'admin:xxxx' \
  --data-urlencode 'input_json={"site_id_or_domain":1,"include_stats":true}' \
  'https://a-te-vezerlopultod.hu/wp-json/wp-abilities/v1/abilities/mainwp/get-site-v1/run'
```

| Név | Típus | Kötelező | Alapérték | Leírás |
|---|---|---|---|---|
| `site_id_or_domain` | egész vagy szöveg | igen | | Webhelyazonosító vagy tartomány/URL |
| `include_stats` | logikai | nem | `false` | Frissítésszámok és egészségi pontszám hozzáadása |

A válasz az alapadatok mellett a WordPress- és PHP-verziót (`wp_version`, `php_version`), az utolsó szinkronizálást (`last_sync`), a rendszergazda nevét (`admin_username`), a MainWP Child verzióját (`child_version`) és a jegyzeteket (`notes`) tartalmazza. Ha `include_stats` igaz, a `stats` objektum a `plugin_updates`, `theme_updates`, `wp_update_available` és `health_score` értékeket adja.

### mainwp/count-sites-v1

A webhelyek száma. Egyetlen bemenete a `status` (`any`, `connected`, `disconnected`, `suspended`; alapértéke `any`). A válasz: `{"total": 150}`.

### mainwp/get-sites-basic-v1

Minimális adat (azonosító, URL, név) az összes webhelyről, bemenet nélkül. A válasz a `sites` tömb és a `total`.

## Szinkronizálás

### mainwp/sync-sites-v1

Szinkronizálást indít egy vagy több webhelyen. Legfeljebb 200 webhelyet azonnal elvégez, a 200-nál többet háttérfeladatként sorba állítja.

```bash
# Meghatározott webhelyek szinkronizálása
curl -X POST -u 'admin:xxxx' \
  -H 'Content-Type: application/json' \
  -d '{"input":{"site_ids_or_domains":[1, 2, 3]}}' \
  'https://a-te-vezerlopultod.hu/wp-json/wp-abilities/v1/abilities/mainwp/sync-sites-v1/run'

# Az összes webhely szinkronizálása (üres tömb)
curl -X POST -u 'admin:xxxx' \
  -H 'Content-Type: application/json' \
  -d '{"input":{"site_ids_or_domains":[]}}' \
  'https://a-te-vezerlopultod.hu/wp-json/wp-abilities/v1/abilities/mainwp/sync-sites-v1/run'
```

| Név | Típus | Kötelező | Alapérték | Leírás |
|---|---|---|---|---|
| `site_ids_or_domains` | tömb | nem | `[]` | Webhelyazonosítók vagy tartományok; üresen az összes webhely |

Azonnali válasz (legfeljebb 200 webhely):

```json
{
  "queued": false,
  "synced": [
    {"id": 1, "url": "https://site1.example.com", "name": "1. webhely"}
  ],
  "errors": [],
  "total_synced": 1,
  "total_errors": 0
}
```

Sorba állított válasz (több mint 200 webhely):

```json
{
  "queued": true,
  "job_id": "sync_abc123def456",
  "status_url": "https://a-te-vezerlopultod.hu/wp-json/mainwp/v2/jobs/sync_abc123def456",
  "sites_queued": 350
}
```

A sorba állított feladat állapotát a Kötegelt műveletek fejezet szerint kérdezheted le.

## Webhely hozzáadása, módosítása, törlése

### mainwp/add-site-v1

Új webhelyet ad a vezérlőpulthoz. POST.

```bash
curl -X POST -u 'admin:xxxx' \
  -H 'Content-Type: application/json' \
  -d '{"input":{"url":"https://uj-weboldal.example.com","admin_username":"admin","name":"Új webhely","uniqueid":"xxxxx"}}' \
  'https://a-te-vezerlopultod.hu/wp-json/wp-abilities/v1/abilities/mainwp/add-site-v1/run'
```

| Név | Típus | Kötelező | Alapérték | Leírás |
|---|---|---|---|---|
| `url` | szöveg | igen | | A webhely URL-je |
| `admin_username` | szöveg | igen | | Rendszergazda felhasználóneve a gyermekwebhelyen |
| `name` | szöveg | igen | | A webhely megjelenített neve |
| `client_id` | egész | nem | | Hozzárendelés ügyfélhez |
| `tag_ids` | tömb | nem | | Hozzárendelendő címkék azonosítói |
| `http_user` | szöveg | nem | | HTTP-hitelesítés felhasználóneve |
| `http_pass` | szöveg | nem | | HTTP-hitelesítés jelszava |
| `adminpassword` | szöveg | nem | | A WordPress-rendszergazda jelszava; kötelező, ha a gyermekwebhelyen be van kapcsolva a jelszavas hitelesítés |
| `uniqueid` | szöveg | nem | | A MainWP Child egyedi biztonsági azonosítója; kötelező, ha az egyedi biztonsági azonosító be van kapcsolva, vagy a jelszavas hitelesítés ki van kapcsolva |
| `verify_certificate` | egész | nem | 2 | `0` kikapcsolja a tanúsítvány ellenőrzését, `1` ellenőrzi, `2` a globális beállítást használja |
| `ssl_version` | egész | nem | 0 | A cURL SSL-verziójának kiválasztása; `0` az automatikus felismerés |

A MainWP Child legalább egy hitelesítési módot megkövetel: add meg az `adminpassword`, a `uniqueid` vagy mindkét értéket, a gyermekwebhely MainWP Child beállításainak megfelelően. Rendszergazdai jelszó használatakor tartsd bekapcsolva a tanúsítvány ellenőrzését, és használj HTTPS-t. Az `ssl_version` értékét hagyd `0`-n, hacsak a tárhelyed nem kér konkrét cURL SSL-verziót. A válasz a létrehozott webhely objektuma, ugyanolyan szerkezetben, mint a `get-site-v1` válasza.

### mainwp/update-site-v1

Meglévő webhely tulajdonságainak módosítása. POST.

```bash
curl -X POST -u 'admin:xxxx' \
  -H 'Content-Type: application/json' \
  -d '{"input":{"site_id_or_domain":1,"name":"Új név","notes":"Új jegyzet"}}' \
  'https://a-te-vezerlopultod.hu/wp-json/wp-abilities/v1/abilities/mainwp/update-site-v1/run'
```

| Név | Típus | Kötelező | Leírás |
|---|---|---|---|
| `site_id_or_domain` | egész vagy szöveg | igen | Webhelyazonosító vagy tartomány |
| `name` | szöveg | nem | A webhely megjelenített neve |
| `notes` | szöveg | nem | Jegyzetek |
| `client_id` | egész | nem | Ügyfélazonosító (`null` leválasztja az ügyfelet) |
| `tags` | tömb | nem | Címkeazonosítók (lecserélik a meglévőket) |

A válasz a módosított webhely objektuma.

### mainwp/delete-site-v1

Törli a webhelyet a MainWP-ből. Romboló művelet, megerősítést kér. POST.

```bash
curl -X POST -u 'admin:xxxx' \
  -H 'Content-Type: application/json' \
  -d '{"input":{"site_id_or_domain":1,"confirm":true}}' \
  'https://a-te-vezerlopultod.hu/wp-json/wp-abilities/v1/abilities/mainwp/delete-site-v1/run'
```

| Név | Típus | Kötelező | Alapérték | Leírás |
|---|---|---|---|---|
| `site_id_or_domain` | egész vagy szöveg | igen | | Webhelyazonosító vagy tartomány |
| `confirm` | logikai | igen | | `true` kell hozzá a törlés megerősítéséhez |
| `dry_run` | logikai | nem | `false` | Előnézet törlés nélkül |

A válasz: `{"deleted": true, "site_id": 1, "site_url": "…"}`.

## Kapcsolat és elérhetőség

Az alábbi képességek mindegyike POST, és a `site_id_or_domain` mezőt várja. A válaszban a művelet eredményét jelző logikai mező, a `site_id`, a `site_url` és az új állapot (`status`) szerepel.

| Képesség | Mit csinál | Válaszmező |
|---|---|---|
| `mainwp/reconnect-site-v1` | Újracsatlakoztat egy lekapcsolódott webhelyet | `reconnected`, `status: connected` |
| `mainwp/disconnect-site-v1` | Bontja a kapcsolatot: a webhely az adatbázisban marad, de a kommunikáció le van tiltva | `disconnected`, `status: disconnected` |
| `mainwp/suspend-site-v1` | Felfüggeszti a webhelyet; a felfüggesztett webhelyek kimaradnak a szinkronizálásból és a frissítési műveletekből | `suspended`, `status: suspended` |
| `mainwp/unsuspend-site-v1` | Feloldja a felfüggesztést | `unsuspended`, `status: connected` |
| `mainwp/check-site-v1` | Ellenőrzi a webhely elérhetőségét | `reachable`, `response_time_ms`, `http_status` |

Az ellenőrzés válasza például:

```json
{
  "site_id": 1,
  "site_url": "https://site1.example.com",
  "reachable": true,
  "response_time_ms": 245,
  "http_status": 200
}
```

### Kötegelt változatok

A `mainwp/reconnect-sites-v1`, `mainwp/disconnect-sites-v1`, `mainwp/suspend-sites-v1` és `mainwp/check-sites-v1` több webhelyen végzi el ugyanazt. Mindegyik POST, és a `site_ids_or_domains` tömböt várja:

- az újracsatlakoztatásnál (`reconnect-sites-v1`) a tömb nem kötelező, üresen az összes lekapcsolódott webhelyet érinti,
- az elérhetőség-ellenőrzésnél (`check-sites-v1`) a tömb nem kötelező, üresen az összes webhelyet ellenőrzi,
- a kapcsolat bontásánál (`disconnect-sites-v1`) és a felfüggesztésnél (`suspend-sites-v1`) a tömb kötelező.

Az újracsatlakoztatás, bontás és felfüggesztés válasza a sikeres webhelyek listája (`reconnected`, `disconnected`, `suspended`), az `errors` tömb, valamint az összesítő számok (például `total_reconnected`, `total_errors`). Az ellenőrzés válasza a `results` tömb (`site_id`, `site_url`, `reachable`, `response_time_ms`) és a `summary` (`total_checked`, `reachable`, `unreachable`). 200 webhelynél többen ezek is háttérfeladatként futnak.

## Bővítmények kezelése egy webhelyen

### mainwp/get-site-plugins-v1

A gyermekwebhelyre telepített bővítmények listája. GET.

```bash
curl -G -u 'admin:xxxx' \
  --data-urlencode 'input_json={"site_id_or_domain":1,"status":"active"}' \
  'https://a-te-vezerlopultod.hu/wp-json/wp-abilities/v1/abilities/mainwp/get-site-plugins-v1/run'
```

| Név | Típus | Kötelező | Alapérték | Leírás |
|---|---|---|---|---|
| `site_id_or_domain` | egész vagy szöveg | igen | | Webhelyazonosító vagy tartomány |
| `status` | szöveg | nem | `all` | Szűrő: `all`, `active`, `inactive` |
| `has_update` | logikai | nem | | Csak a frissítéssel rendelkező bővítmények |

A válasz a `plugins` tömb (`slug`, `name`, `version`, `active`, `update_version`) és a `total`.

### Aktiválás, kikapcsolás, törlés

| Képesség | Mit csinál | Bemenet | Válasz |
|---|---|---|---|
| `mainwp/activate-site-plugins-v1` | Aktiválja a megadott bővítményeket | `site_id_or_domain`, `slugs` (mindkettő kötelező) | `activated`, `errors` |
| `mainwp/deactivate-site-plugins-v1` | Kikapcsolja a megadott bővítményeket | `site_id_or_domain`, `slugs` (mindkettő kötelező) | `deactivated`, `errors` |
| `mainwp/delete-site-plugins-v1` | Törli a megadott bővítményeket | `site_id_or_domain`, `slugs`, `confirm` (mind kötelező) | `deleted`, `errors` |

A `slugs` a bővítmény fájlútja a mappanévvel (például `akismet/akismet.php`). A törléshez a `confirm` értéke `true` kell legyen, mert a művelet romboló.

```bash
curl -X POST -u 'admin:xxxx' \
  -H 'Content-Type: application/json' \
  -d '{"input":{"site_id_or_domain":1,"slugs":["hello-dolly/hello.php"],"confirm":true}}' \
  'https://a-te-vezerlopultod.hu/wp-json/wp-abilities/v1/abilities/mainwp/delete-site-plugins-v1/run'
```

## Témák kezelése egy webhelyen

| Képesség | Mit csinál | Bemenet | Válasz |
|---|---|---|---|
| `mainwp/get-site-themes-v1` (GET) | Kilistázza a telepített témákat | `site_id_or_domain` | `active_theme`, `themes` (`slug`, `name`, `version`, `active`, `update_version`), `total` |
| `mainwp/activate-site-theme-v1` (POST) | Aktivál egy témát | `site_id_or_domain`, `slug` (mindkettő kötelező) | `activated`, `previous_theme` |
| `mainwp/delete-site-themes-v1` (POST) | Törli a megadott témákat | `site_id_or_domain`, `slugs`, `confirm` (mind kötelező) | `deleted`, `errors` |

A témák törlése romboló művelet, ezért a `confirm: true` itt is kötelező.

## Elhagyott bővítmények és témák

A `mainwp/get-abandoned-plugins-v1` és a `mainwp/get-abandoned-themes-v1` az összes webhelyen kilistázza az elhagyott elemeket. Elhagyottnak az számít, amely két éve vagy régebben nem kapott frissítést. Mindkettő GET, és két nem kötelező bemenete van: `page` (alapérték 1) és `per_page` (alapérték 50).

A válasz az `items` tömb (`site_id`, `site_url`, `slug`, `name`, `version`, `last_updated`) és a `total`.

## Biztonság, változásnapló, ügyfél, költségek

### mainwp/get-site-security-v1

A webhely biztonsági adatai. GET, bemenete a `site_id_or_domain`. A válasz a `security_issues` tömb (`type`, `severity`, `message`) és az `ssl_status` (`valid`, `expires`).

### mainwp/get-site-changes-v1

A webhely változás- és tevékenységnaplója. GET. A **Logs** modul aktív állapotát kéri; ha a modul nem aktív, `mainwp_module_not_available` hibát kapsz.

| Név | Típus | Kötelező | Alapérték | Leírás |
|---|---|---|---|---|
| `site_id_or_domain` | egész vagy szöveg | igen | | Webhelyazonosító vagy tartomány |
| `page` | egész | nem | 1 | Oldalszám |
| `per_page` | egész | nem | 50 | Elemek oldalanként |

A válasz a `changes` tömb (`id`, `type`, `description`, `user`, `timestamp`) és a `total`.

### mainwp/get-site-client-v1

A webhelyhez rendelt ügyfél. GET, bemenete a `site_id_or_domain`. A válasz a `client` objektum (`id`, `name`, `email`, `status`).

### mainwp/get-site-costs-v1

A webhely költségkövetési adatai. GET, bemenete a `site_id_or_domain`. A **Cost Tracker** modul aktív állapotát kéri, különben `mainwp_module_not_available` hibát ad. A válasz a `costs` tömb (`id`, `name`, `amount`, `frequency`, `next_due`), a `total_monthly` és a `total_yearly`.
