# Ügyfelek képességei

> A mainwp-clients kategória 11 képessége: ügyfelek listázása, létrehozása, módosítása, törlése, webhelyeik lekérdezése, felfüggesztés és költségek.

A `mainwp-clients` kategória 11 képessége az ügyfélrekordokat és a hozzájuk rendelt webhelyeket kezeli. Az ügyfelet azonosítóval vagy e-mail-címmel adhatod meg a `client_id_or_email` mezőben. A hívások általános szabályait az Abilities API áttekintése írja le.

## Áttekintés

| Képesség | Metódus | Mire jó |
|---|---|---|
| `mainwp/list-clients-v1` | GET | Ügyfelek listája lapozással és szűréssel |
| `mainwp/count-clients-v1` | GET | Ügyfelek száma |
| `mainwp/get-client-v1` | GET | Egy ügyfél részletes adatai |
| `mainwp/add-client-v1` | POST | Új ügyfél létrehozása |
| `mainwp/update-client-v1` | POST | Meglévő ügyfél módosítása |
| `mainwp/delete-client-v1` | POST | Ügyfél törlése (megerősítéssel) |
| `mainwp/get-client-sites-v1` | GET | Az ügyfélhez tartozó webhelyek |
| `mainwp/count-client-sites-v1` | GET | Az ügyfél webhelyeinek száma |
| `mainwp/get-client-costs-v1` | GET | Az ügyfél költségkövetési tételei (Cost Tracker modul kell) |
| `mainwp/suspend-client-v1` | POST | Ügyfél felfüggesztése a webhelyeivel együtt |
| `mainwp/unsuspend-client-v1` | POST | A felfüggesztés feloldása |

## Ügyfelek listázása és lekérdezése

### mainwp/list-clients-v1

Az ügyfelek listája lapozással és szűréssel. GET.

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

| Név | Típus | Kötelező | Alapérték | Leírás |
|---|---|---|---|---|
| `page` | egész | nem | 1 | Oldalszám |
| `per_page` | egész | nem | 20 | Elemek oldalanként (legfeljebb 100) |
| `status` | szöveg | nem | `any` | Szűrő: `any`, `active`, `suspended` |
| `search` | szöveg | nem | üres | Keresési kifejezés |
| `include` | tömb | nem | `[]` | A belevett ügyfélazonosítók |
| `exclude` | tömb | nem | `[]` | A kizárt ügyfélazonosítók |

A válasz az `items` tömb (`id`, `name`, `email`, `phone`, `status`, `sites_count`, `created_at`) és a lapozási adatok.

### mainwp/count-clients-v1

Az ügyfelek száma. A `status` bemenet (`any`, `active`, `suspended`; alapérték `any`) szűri. A válasz: `{"total": 25}`.

### mainwp/get-client-v1

Egy ügyfél részletes adatai. GET, bemenete a `client_id_or_email` (kötelező).

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

A válasz mezői: `id`, `name`, `email`, `phone`, `address_1`, `address_2`, `city`, `state`, `zip`, `country`, `note`, `status`, `sites_count`, `created_at`, `updated_at`.

## Ügyfél létrehozása, módosítása, törlése

### mainwp/add-client-v1

Új ügyfelet hoz létre. POST. Csak a `name` kötelező.

```bash
curl -X POST -u 'admin:xxxx' \
  -H 'Content-Type: application/json' \
  -d '{"input":{"name":"Minta Kft.","client_email":"ugyfel@example.com","client_phone":"+36 1 555 0100"}}' \
  'https://a-te-vezerlopultod.hu/wp-json/wp-abilities/v1/abilities/mainwp/add-client-v1/run'
```

| Név | Típus | Kötelező | Leírás |
|---|---|---|---|
| `name` | szöveg | igen | Az ügyfél neve |
| `client_email` | szöveg | nem | E-mail-cím |
| `client_phone` | szöveg | nem | Telefonszám |
| `address_1` | szöveg | nem | Cím, 1. sor |
| `address_2` | szöveg | nem | Cím, 2. sor |
| `city` | szöveg | nem | Város |
| `state` | szöveg | nem | Megye vagy tartomány |
| `zip` | szöveg | nem | Irányítószám |
| `country` | szöveg | nem | Ország |
| `note` | szöveg | nem | Jegyzetek |
| `selected_sites` | tömb | nem | A hozzárendelendő webhelyek azonosítói |

A válasz a létrehozott ügyfél objektuma, a `get-client-v1` szerkezetében.

### mainwp/update-client-v1

Meglévő ügyfelet módosít. POST. A `client_id_or_email` kötelező, a többi mező (`name`, `client_email`, `client_phone`, `address_1`, `address_2`, `city`, `state`, `zip`, `country`, `note`) ugyanaz, mint a létrehozásnál, és mind elhagyható. A `selected_sites` a hozzárendelt webhelyeket lecseréli a megadottakra. A válasz a módosított ügyfél objektuma.

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

### mainwp/delete-client-v1

Törli az ügyfelet. Romboló művelet, megerősítést kér. POST.

```bash
# Előnézet
curl -X POST -u 'admin:xxxx' \
  -H 'Content-Type: application/json' \
  -d '{"input":{"client_id_or_email":1,"dry_run":true}}' \
  'https://a-te-vezerlopultod.hu/wp-json/wp-abilities/v1/abilities/mainwp/delete-client-v1/run'

# Tényleges törlés
curl -X POST -u 'admin:xxxx' \
  -H 'Content-Type: application/json' \
  -d '{"input":{"client_id_or_email":1,"confirm":true}}' \
  'https://a-te-vezerlopultod.hu/wp-json/wp-abilities/v1/abilities/mainwp/delete-client-v1/run'
```

| Név | Típus | Kötelező | Alapérték | Leírás |
|---|---|---|---|---|
| `client_id_or_email` | egész vagy szöveg | igen | | Ügyfélazonosító vagy e-mail-cím |
| `confirm` | logikai | igen | | `true` kell 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, "client_id": 1, "client_name": "…"}`.

## Az ügyfél webhelyei és költségei

### mainwp/get-client-sites-v1

Az ügyfélhez rendelt webhelyek. GET. Bemenet: `client_id_or_email` (kötelező), `page` (alapérték 1), `per_page` (alapérték 20). A válasz a `client_id`, a `client_name`, a `sites` tömb (`id`, `url`, `name`, `status`) és a lapozási adatok.

### mainwp/count-client-sites-v1

Az ügyfél webhelyeinek száma. GET, bemenete a `client_id_or_email`. A válasz: `client_id`, `client_name`, `sites_count`.

### mainwp/get-client-costs-v1

Az ügyfél költségkövetői tételei. GET, bemenete a `client_id_or_email`. 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`, `site_id`, `site_name`, `name`, `amount`, `frequency`, `next_due`), a `total_monthly` és a `total_yearly`.

## Felfüggesztés

A `mainwp/suspend-client-v1` felfüggeszti az ügyfelet, és vele együtt az összes hozzárendelt webhelyét. A `mainwp/unsuspend-client-v1` feloldja a felfüggesztést, ugyancsak az összes webhelyre. Mindkettő POST, és egyetlen bemenetük a `client_id_or_email`.

```bash
curl -X POST -u 'admin:xxxx' \
  -H 'Content-Type: application/json' \
  -d '{"input":{"client_id_or_email":1}}' \
  'https://a-te-vezerlopultod.hu/wp-json/wp-abilities/v1/abilities/mainwp/suspend-client-v1/run'
```

A felfüggesztés válasza: `suspended`, `client_id`, `client_name`, `sites_suspended`. A feloldásé: `unsuspended`, `client_id`, `client_name`, `sites_unsuspended`.
