# Ügyfelek és költségek végpontjai

> A REST API v2 ügyfél-, ügyfélmező- és költségkövető végpontjai kérésmintákkal és kötegelt műveletekkel.

Ez a fejezet az ügyfelek (Clients) és a költségkövető tételek (Costs) végpontjait írja le. A pontos kérés- és válaszszerkezetet a Postman-gyűjtemény és az OpenAPI-leírás tartalmazza.

## Ügyfelek

A `{id_or_email}` jelölés az ügyfél számazonosítóját vagy e-mail-címét fogadja el.

### Ügyfélrekordok

| Metódus | Útvonal | Mire jó | Fő paraméterek |
|---|---|---|---|
| GET | `/clients` | Ügyfelek listázása | `page`, `per_page`, `search`, `include`, `exclude`, `status` |
| GET | `/clients/count` | Ügyfelek száma | Gyűjteményszűrők |
| POST | `/clients/add` | Ügyfél létrehozása | `name`, `client_email`, opcionális cím- és kapcsolattartási mezők |
| GET | `/clients/{id_or_email}` | Egy ügyfél adatai | |
| POST, PUT, PATCH | `/clients/{id_or_email}/edit` | Ügyfél szerkesztése | Szerkeszthető ügyfélmezők |
| DELETE | `/clients/{id_or_email}/remove` | Ügyfél törlése | |
| GET | `/clients/{id_or_email}/sites` | Az ügyfél webhelyei | |
| GET | `/clients/{id_or_email}/sites/count` | Az ügyfél webhelyeinek száma | |
| GET | `/clients/{id_or_email}/costs` | Az ügyfél költségei | |
| POST, PUT, PATCH | `/clients/{id_or_email}/suspend` | Ügyfél felfüggesztése | |
| POST, PUT, PATCH | `/clients/{id_or_email}/unsuspend` | Felfüggesztés feloldása | |
| POST | `/clients/batch` | Kötegelt létrehozás, módosítás, törlés | `create[]`, `update[]`, `delete[]` |

### Ügyfélmezők

| Metódus | Útvonal | Mire jó | Fő paraméterek |
|---|---|---|---|
| GET | `/clients/fields` | Ügyfélmezők listázása | `search`, `include`, `exclude`, `page`, `per_page`, `pre_page` (elavult) |
| POST | `/clients/fields/add` | Ügyfélmező létrehozása | `name`, `description` |
| PUT, PATCH | `/clients/fields/{id_name}/edit` | Ügyfélmező szerkesztése | `name`, `description` |
| DELETE | `/clients/fields/{id_name}/delete` | Ügyfélmező törlése | `{id_name}`: a mező azonosítója vagy neve |

A `GET /clients/fields` hívásban a `per_page` adja meg az oldalankénti mezőszámot. A `pre_page` paraméter elavult alias, a visszafelé kompatibilitás miatt még működik.

### Megjegyzés (note)

Ügyfél létrehozásakor és szerkesztésekor a `note` értéke szöveg legyen. Érvénytelen, nem szöveg típusú érték esetén a kérés elutasított, és a meglévő megjegyzés nem íródik felül.

### Ügyfél létrehozása

```bash
curl -X POST \
  -H "Authorization: Bearer API_KULCS" \
  -H "Content-Type: application/json" \
  -d '{"name":"Minta Kft.","client_email":"ugyfel@example.com","client_phone":"+36-1-555-0100"}' \
  "https://a-te-vezerlopultod.hu/wp-json/mainwp/v2/clients/add"
```

```json
{
  "success": 1,
  "message": "Client added successfully.",
  "data": {
    "id": 34,
    "name": "Minta Kft.",
    "client_email": "ugyfel@example.com"
  }
}
```

### Ügyfélmező létrehozása

```bash
curl -X POST \
  -H "Authorization: Bearer API_KULCS" \
  -H "Content-Type: application/json" \
  -d '{"name":"Kapcsolattartó","description":"Fő felelős"}' \
  "https://a-te-vezerlopultod.hu/wp-json/mainwp/v2/clients/fields/add"
```

```json
{
  "success": 1,
  "message": "Client field created successfully.",
  "data": {
    "field_id": 6,
    "name": "Kapcsolattartó",
    "description": "Fő felelős"
  }
}
```

## Költségek

A költségvégpontokhoz a beépített költségkövető modulnak (**Költségek**) bekapcsolva kell lennie.

| Metódus | Útvonal | Mire jó | Fő paraméterek |
|---|---|---|---|
| GET | `/costs` | Költségek listázása | `page`, `per_page`, `search`, `include`, `exclude`, `status`, `category`, `type` |
| POST, PUT, PATCH | `/costs/add` | Költség létrehozása | `name`, `price`, `payment_type`, `product_type`, `renewal_type`, és legalább egy a `sites`, `groups`, `clients` közül |
| GET | `/costs/{id}` | Egy költség adatai | |
| POST, PUT, PATCH | `/costs/{id}/edit` | Költség szerkesztése | Ugyanazok a mezők, mint a létrehozásnál |
| DELETE | `/costs/{id}/remove` | Költség törlése | |
| GET | `/costs/{id}/sites` | A költséghez kapcsolt webhelyek | |
| GET | `/costs/{id}/clients` | A költséghez kapcsolt ügyfelek | |
| POST | `/costs/batch` | Kötegelt létrehozás, módosítás, törlés | `create[]`, `update[]`, `delete[]` |

### Fontosabb írható mezők

Létrehozáskor és szerkesztéskor ezek a mezők használhatók:

- `name`, `price`, `payment_type`, `license_type`, `product_type`, `product_slug`
- `renewal_type`, `last_renewal`, `payment_method`, `cost_tracker_status`
- `url`, `note`, valamint megjelenési mezők, például `product_color`, `icon_hidden`
- kapcsolatkiválasztók: `sites`, `groups` (címkeazonosítók) és `clients`, mindegyik egész azonosítókból álló JSON-tömbként

Legalább egy nem üres célcsoport kötelező. A `sites`, `groups` és `clients` egy kérésben kombinálható: az összes megadott kiválasztó mentődik, a hozzájuk tartozó webhelyek pedig összeadódnak.

```json
{
  "sites": [12],
  "groups": [3, 7],
  "clients": [4]
}
```

A fenti példa csak a kapcsolatmezőket mutatja, költség létrehozásakor a többi kötelező mezőt is add meg. Tömböt használj, ne vesszővel elválasztott szöveget. A `/costs/{id}` útvonalakon az URL azonosítja a költséget: a törzsben vagy a lekérdezésben megadott ellentmondó `id` nem irányítja át a műveletet másik költségre. A `/costs/add` mindig új költséget hoz létre, a törzsben megadott `id`-t nem használja frissítésre. A kötegelt módosítás az egyes elemek `id` mezőjével azonosítja a célt.

### Költség létrehozása

```bash
curl -X POST \
  -H "Authorization: Bearer API_KULCS" \
  -H "Content-Type: application/json" \
  -d '{
    "name":"Tárhelycsomag",
    "price":49.00,
    "payment_type":"subscription",
    "product_type":"hosting",
    "renewal_type":"monthly",
    "sites":[12]
  }' \
  "https://a-te-vezerlopultod.hu/wp-json/mainwp/v2/costs/add"
```

```json
{
  "success": 1,
  "data": {
    "id": 22,
    "name": "Tárhelycsomag"
  }
}
```

### Költség törlése

```bash
curl -X DELETE \
  -H "Authorization: Bearer API_KULCS" \
  "https://a-te-vezerlopultod.hu/wp-json/mainwp/v2/costs/22/remove"
```

```json
{
  "success": 1,
  "message": "Cost deleted successfully."
}
```

A költségkövető kezelőfelületéről az [Ügyfelek és költségek](https://hub.hellowp.io/hu/plugins/mainwp/ugyfelek-koltsegkovetes/) fejezetben olvashatsz.

## Kapcsolódó fejezetek

- [REST API áttekintés](https://hub.hellowp.io/hu/plugins/mainwp/rest-api-attekintes/)
- [Webhelyek végpontjai](https://hub.hellowp.io/hu/plugins/mainwp/rest-api-webhelyek/)
- [Kötegelt műveletek](https://hub.hellowp.io/hu/plugins/mainwp/rest-api-kotegelt-muveletek/)
