# Frissítések képességei

> A mainwp-updates kategória 14 képessége: frissítések listázása, előnézet és megerősítés, webhelyenkénti frissítés, mellőzött frissítések és tiltások.

A `mainwp-updates` kategória 14 képessége a WordPress magjának, a bővítményeknek, a témáknak és a fordításoknak a frissítéseit kezeli a teljes hálózaton. Segítségükkel kilistázhatod az elérhető frissítéseket, előnézetet kérhetsz, végrehajthatod a frissítést, és kezelheted a mellőzött frissítéseket.

## Megerősítés és frissítési tiltások (6.3-tól)

A `run-updates-v1`, az `update-all-v1` és a négy `update-site-*` képesség vagy `dry_run: true` (előnézet), vagy `confirm: true` (végrehajtás) értéket kér. Ha egyik sincs a hívásban, a válasz `mainwp_confirmation_required` hiba, HTTP 400-zal. A két jelzőt ne állítsd egyszerre `true`-ra.

A helyes menet:

1. Kérj előnézetet `dry_run: true` értékkel.
2. Nézd át a visszaadott webhelyeket és a frissítési tervet.
3. Küldd el ugyanazt a kijelölést `confirm: true` értékkel.

A közvetlen Abilities API-kérés ezeket a jelzőket használja. Az MCP-szerver külön, egyszeri megerősítő tokent használ, amely az MCP megerősítési folyamatához tartozik.

Az előnézet válaszában ezek a mezők vannak: `dry_run`, `would_affect`, `count`, `warnings` és `errors`. A megerősített, azonnali válasz `dry_run: false` értéket, `skipped` tömböt és `summary.total_skipped` számot ad. Mindig nézd meg az `errors` és a `skipped` tömböt is: a sikeres HTTP-válasz nem jelenti azt, hogy minden frissítés települt. A sorba állított válaszban feladatazonosító van, amellyel az állapot lekérdezhető (lásd a Kötegelt műveletek fejezetet).

Ezek a képességek tiszteletben tartják a webhelyszintű és a globális frissítési tiltásokat. A tiltás miatt blokkolt elemek kihagyottként (`skipped`) jelennek meg, a sorba állított feladatok pedig végrehajtáskor újra ellenőrzik a tiltásokat, a webhelyhozzáférést és a feladat tulajdonosának műveleti jogait. A fordítások frissítése a webhely fordításmellőzési beállítását is figyelembe veszi.

Frissítési tiltást az „ignore” képességekkel adhatsz hozzá. A webhely saját tiltásait az új `mainwp/unignore-site-updates-v1` képesség távolítja el, előnézettel vagy megerősítéssel. A régi `action: unignore` és `action: remove` megoldások hibát adnak, és erre a képességre irányítanak.

## Áttekintés

| Képesség | Metódus | Mire jó |
|---|---|---|
| `mainwp/list-updates-v1` | GET | Elérhető frissítések az összes webhelyen |
| `mainwp/get-site-updates-v1` | GET | Egy webhely elérhető frissítései |
| `mainwp/run-updates-v1` | POST | Frissítések végrehajtása kijelölt webhelyeken |
| `mainwp/update-all-v1` | POST | Minden elérhető frissítés végrehajtása |
| `mainwp/update-site-core-v1` | POST | A WordPress magjának frissítése egy webhelyen |
| `mainwp/update-site-plugins-v1` | POST | Bővítmények frissítése egy webhelyen |
| `mainwp/update-site-themes-v1` | POST | Témák frissítése egy webhelyen |
| `mainwp/update-site-translations-v1` | POST | Fordítások frissítése egy webhelyen |
| `mainwp/list-ignored-updates-v1` | GET | Mellőzött frissítések listája |
| `mainwp/set-ignored-updates-v1` | POST | Elem hozzáadása a webhely mellőzött frissítései közé |
| `mainwp/ignore-site-core-v1` | POST | Magfrissítési tiltás hozzáadása |
| `mainwp/ignore-site-plugins-v1` | POST | Bővítményfrissítési tiltások hozzáadása |
| `mainwp/ignore-site-themes-v1` | POST | Témafrissítési tiltások hozzáadása |
| `mainwp/unignore-site-updates-v1` | POST | Egy webhely saját frissítési tiltásainak előnézete vagy eltávolítása |

## Frissítések listázása

### mainwp/list-updates-v1

Az elérhető frissítések az összes webhelyen. Csak olvas, GET.

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

| Név | Típus | Kötelező | Alapérték | Leírás |
|---|---|---|---|---|
| `site_ids_or_domains` | tömb | nem | `[]` | Szűrés meghatározott webhelyekre |
| `types` | tömb | nem | `[]` | Szűrő: `core`, `plugins`, `themes`, `translations` |
| `page` | egész | nem | 1 | Oldalszám |
| `per_page` | egész | nem | 50 | Elemek oldalanként (legfeljebb 200) |

A válasz az `updates` tömb (`site_id`, `site_url`, `site_name`, `type`, `slug`, `name`, `current_version`, `new_version`), a `summary` (típusonkénti darabszámok: `core`, `plugins`, `themes`, `translations`, `total`) és a lapozási adatok.

### mainwp/get-site-updates-v1

Egy webhely elérhető frissítései. GET.

```bash
curl -G -u 'admin:xxxx' \
  --data-urlencode 'input_json={"site_id_or_domain":1}' \
  'https://a-te-vezerlopultod.hu/wp-json/wp-abilities/v1/abilities/mainwp/get-site-updates-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 |
| `types` | tömb | nem | `[]` | Szűrő: `core`, `plugins`, `themes`, `translations` |

A válasz tartalmazza a webhely adatait, az `updates` tömböt, a `summary` összesítőt, és a `rollback_items` objektumot (`plugins`, `themes`).

## Frissítések végrehajtása

### mainwp/run-updates-v1

Frissítéseket hajt végre a webhelyeken. A 200-nál több webhelyet érintő műveletek háttérfeladatként futnak. POST.

```bash
# Egy bővítményfrissítés előnézete kijelölt webhelyeken
curl -X POST -u 'admin:xxxx' \
  -H 'Content-Type: application/json' \
  -d '{"input":{"site_ids_or_domains":[1,2,3],"types":["plugins"],"specific_items":["akismet/akismet.php"],"dry_run":true}}' \
  'https://a-te-vezerlopultod.hu/wp-json/wp-abilities/v1/abilities/mainwp/run-updates-v1/run'

# Ugyanaz a kijelölés végrehajtva az előnézet átnézése után
curl -X POST -u 'admin:xxxx' \
  -H 'Content-Type: application/json' \
  -d '{"input":{"site_ids_or_domains":[1,2,3],"types":["plugins"],"specific_items":["akismet/akismet.php"],"confirm":true}}' \
  'https://a-te-vezerlopultod.hu/wp-json/wp-abilities/v1/abilities/mainwp/run-updates-v1/run'
```

| Név | Típus | Kötelező | Alapérték | Leírás |
|---|---|---|---|---|
| `site_ids_or_domains` | tömb | nem | `[]` | A frissítendő webhelyek; üresen mindegyik, amelyen van frissítés |
| `types` | tömb | nem | `[]` | Frissítéstípusok: `core`, `plugins`, `themes`, `translations` |
| `specific_items` | tömb | nem | `[]` | Meghatározott elemek azonosítói |
| `dry_run` | logikai | előnézethez | `false` | `true`: előnézet; ne kombináld a `confirm` jelzővel |
| `confirm` | logikai | végrehajtáshoz | `false` | `true`: végrehajtás az előnézet átnézése után |

Az azonnali, megerősített válasz:

```json
{
  "dry_run": false,
  "updated": [
    {
      "site_id": 1,
      "site_url": "https://site1.example.com",
      "site_name": "1. webhely",
      "type": "plugin",
      "slug": "akismet/akismet.php",
      "name": "Akismet",
      "old_version": "5.3",
      "new_version": "5.3.1"
    }
  ],
  "errors": [],
  "summary": {
    "total_updated": 1,
    "total_errors": 0,
    "sites_updated": 1,
    "total_skipped": 0
  },
  "skipped": []
}
```

### mainwp/update-all-v1

Az összes elérhető frissítés végrehajtása a webhelyeken, beleértve a WordPress magját is. Termelési környezetben óvatosan használd, és előbb próbáld ki tesztwebhelyen. POST.

```bash
# Minden frissítés az összes webhelyen
curl -X POST -u 'admin:xxxx' \
  -H 'Content-Type: application/json' \
  -d '{"input":{"confirm":true}}' \
  'https://a-te-vezerlopultod.hu/wp-json/wp-abilities/v1/abilities/mainwp/update-all-v1/run'
```

| Név | Típus | Kötelező | Alapérték | Leírás |
|---|---|---|---|---|
| `site_ids_or_domains` | tömb | nem | `[]` | A frissítendő webhelyek; üresen az összes |
| `dry_run` | logikai | előnézethez | `false` | `true`: előnézet |
| `confirm` | logikai | végrehajtáshoz | `false` | `true`: végrehajtás |

A válasz szerkezete megegyezik a `run-updates-v1` válaszáéval.

### Frissítés egy webhelyen

A négy webhelyszintű képesség mindegyike POST, és ugyanazt a `dry_run` / `confirm` párost várja.

| Képesség | Mit frissít | Bemenet | Válasz |
|---|---|---|---|
| `mainwp/update-site-core-v1` | A WordPress magját | `site_id_or_domain` | `updated` (egy objektum: `type: core`, `slug: wordpress`, `old_version`, `new_version`), `skipped`, `summary.total_skipped` |
| `mainwp/update-site-plugins-v1` | A bővítményeket | `site_id_or_domain`, `slugs` (nem kötelező; üresen az összes) | `updated`, `errors`, `skipped`, `summary` |
| `mainwp/update-site-themes-v1` | A témákat | `site_id_or_domain`, `slugs` (nem kötelező; üresen az összes) | `updated`, `errors`, `skipped`, `summary` |
| `mainwp/update-site-translations-v1` | A fordításokat | `site_id_or_domain`, `slugs` (nem kötelező; üresen az összes elérhető) | `updated`, `errors`, `skipped`, `summary` |

Példa meghatározott bővítmények frissítésére:

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

Ha a `slugs` tömböt kihagyod, az összes bővítmény frissül. Mindegyik képesség esetén érdemes előbb `dry_run: true` értékkel előnézetet kérni.

## Mellőzött frissítések és tiltások

### mainwp/list-ignored-updates-v1

A mellőzöttként megjelölt frissítések listája. GET. Két nem kötelező bemenete van: `page` (alapérték 1) és `per_page` (alapérték 50). A válasz az `ignored` tömb (`site_id`, `site_url`, `site_name`, `type`, `slug`, `name`, `ignored_version`) és a `total`.

### mainwp/set-ignored-updates-v1

Elemet ad egy webhely mellőzött frissítései közé. A 6.3-tól itt csak az `ignore` művelet használható, a tiltás eltávolítására az `unignore-site-updates-v1` való. POST.

```bash
curl -X POST -u 'admin:xxxx' \
  -H 'Content-Type: application/json' \
  -d '{"input":{"action":"ignore","site_id_or_domain":1,"type":"plugin","slug":"woocommerce/woocommerce.php"}}' \
  'https://a-te-vezerlopultod.hu/wp-json/wp-abilities/v1/abilities/mainwp/set-ignored-updates-v1/run'
```

| Név | Típus | Kötelező | Leírás |
|---|---|---|---|
| `action` | szöveg | igen | `ignore`; az `unignore` a 6.3-ban el van utasítva |
| `site_id_or_domain` | egész vagy szöveg | igen | Webhelyazonosító vagy tartomány |
| `type` | szöveg | igen | `core`, `plugin` vagy `theme` |
| `slug` | szöveg | igen | Az elem azonosítója (a magnál `wordpress`) |

A válasz: `success`, `action`, `site_id`, `type`, `slug`.

### A három „ignore” képesség

Ezek a képességek tiltást adnak egy webhely frissítéseire. A tiltás eltávolítására mindegyiknél az `unignore-site-updates-v1` való. Mind POST, és a `site_id_or_domain` mellett az `action` mezőt várják, amely a 6.3-ban csak `add` lehet (a `remove` el van utasítva).

| Képesség | Mit tilt | További bemenet | Válasz |
|---|---|---|---|
| `mainwp/ignore-site-core-v1` | A webhely magfrissítéseit | nincs | `success`, `message`, `ignored_count` |
| `mainwp/ignore-site-plugins-v1` | A megadott bővítmények frissítéseit | `slugs` (kötelező) | `success`, `message`, `ignored_count` |
| `mainwp/ignore-site-themes-v1` | A megadott témák frissítéseit | `slugs` (kötelező) | `success`, `message`, `ignored_count` |

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

### mainwp/unignore-site-updates-v1

Egy webhely saját frissítési tiltásainak előnézete vagy eltávolítása. A tiltás eltávolítása után az elem jogosulttá válhat a későbbi frissítési futásokra, a sorba állítottakra is, de ez a képesség maga nem telepíti a frissítést. POST.

```bash
# Egy bővítmény webhelyszintű tiltása eltávolításának előnézete
curl -X POST -u 'admin:xxxx' \
  -H 'Content-Type: application/json' \
  -d '{"input":{"site_id_or_domain":1,"type":"plugin","slugs":["akismet/akismet.php"],"dry_run":true}}' \
  'https://a-te-vezerlopultod.hu/wp-json/wp-abilities/v1/abilities/mainwp/unignore-site-updates-v1/run'

# A tiltás eltávolítása az előnézet átnézése után
curl -X POST -u 'admin:xxxx' \
  -H 'Content-Type: application/json' \
  -d '{"input":{"site_id_or_domain":1,"type":"plugin","slugs":["akismet/akismet.php"],"confirm":true}}' \
  'https://a-te-vezerlopultod.hu/wp-json/wp-abilities/v1/abilities/mainwp/unignore-site-updates-v1/run'
```

| Név | Típus | Kötelező | Leírás |
|---|---|---|---|
| `site_id_or_domain` | egész vagy szöveg | igen | Engedélyezett webhely azonosítója vagy tartománya |
| `type` | szöveg | igen | `core`, `plugin` vagy `theme` |
| `slugs` | szövegek tömbje | bővítménynél és témánál | Nem üres elemlista; a magnál figyelmen kívül marad |
| `dry_run` | logikai | előnézethez | `true`: a tiltások megtekintése módosítás nélkül |
| `confirm` | logikai | végrehajtáshoz | `true`: a webhely saját tiltásainak eltávolítása |

Az előnézet válasza a `would_affect.holds` listát, a darabszámot, a figyelmeztetéseket és a hibákat adja. Ha egy tiltás bejegyzésében a `still_held_by` mező szerepel, az azt jelzi, hogy egy globális vagy az egész webhelyre szóló tiltás továbbra is érvényben marad. A végrehajtás válasza:

```json
{
  "dry_run": false,
  "removed": ["akismet/akismet.php"],
  "not_held": [],
  "count": 1
}
```

A globális tiltások és az egész webhelyre szóló mellőzési jelzők változatlanok maradnak. A webhelyhozzáférés és a frissítések mellőzéséhez, illetve visszaállításához tartozó jogosultság itt is érvényes.
