{
    "openapi": "3.0.3",
    "info": {
        "title": "PmtSegéd API",
        "version": "1.1.0",
        "description": "A PmtSegéd API-val a saját programod (könyvelőprogram, ügyviteli rendszer, belső irodai eszköz) gépi úton éri el ugyanazokat az adatokat és műveleteket, amelyeket a PmtSegéd felületén látsz: ügyfelek és átvilágítási adataik, képviselők, tulajdonosok és tényleges tulajdonosok, dokumentumok, kockázati besorolások, szankciós ellenőrzés, ügyfélcsoportok és a saját fiókod adatai.\n\n## Alapok\n\n- **Cím:** minden végpont a `https://api.pmtseged.hu` alatt érhető el, HTTPS-en.\n- **Formátum:** a kérés és a válasz JSON (`Content-Type: application/json`). A szerver minden kérésre JSON-nal válaszol, a hibákra is. A fájlfeltöltések (dokumentum, import) `multipart/form-data` kéréssel mennek.\n- **Nincs burok:** a válasz maga az objektum vagy a lista, nincs `data` kulcs körülötte.\n- **Időpontok:** az időbélyegek (`created_at`, `updated_at` …) Unix-időbélyegek másodpercben (egész szám); a naptári dátumok `ÉÉÉÉ-HH-NN` alakú szövegek. Az időzóna Europe/Budapest.\n- **Nyelv:** a hibaüzenetek és a megnevezések magyarul jönnek.\n- **Saját adatok:** minden végpont csak a token felhasználójának saját adatait látja és módosítja. Más felhasználó rekordjára `404` a válasz.\n\n## Hitelesítés\n\nA végpontok (a belépés, a regisztráció, a jelszó-visszaállítás és a konfiguráció kivételével) hitelesítést kérnek: a kérés `Authorization` fejlécében egy **Bearer token** megy.\n\n```\nAuthorization: Bearer 12|AbCdEf…\n```\n\nKétféle token van, a végpontok mindkettőt elfogadják:\n\n1. **API-kulcs (ajánlott gépi kapcsolathoz).** A PmtSegédben bal oldalt az **API-kulcsok** menüpontban, az **Új API-kulcs** gombbal hozod létre (vagy a `POST /api-keys` végponttal). A kulcs csak a létrehozáskor látszik, ezért azonnal tárold el biztonságos helyen. Addig érvényes, amíg nem törlöd; törlés után a kulcsot használó rendszer azonnal elveszti a hozzáférést.\n2. **Belépési token.** A `POST /login` végpont e-mail-címmel és jelszóval ad tokent (`access_token`). A token a `POST /logout` hívásig érvényes.\n\nA token a **létrehozó felhasználó nevében** működik: ugyanazokat az adatokat látja, és ugyanazok az előfizetési korlátok vonatkoznak rá, mint a felhasználóra a felületen. Aktív előfizetés vagy próbaidő nélkül az ügyféladatokat kezelő végpontok `402` választ adnak; egyes funkciókhoz (például a csomagban szereplő lekérdezésekhez) a megfelelő csomag kell.\n\nA Swagger-felületen az **Authorize** gombbal adhatod meg a kulcsot, utána a **Try it out** gombbal közvetlenül kipróbálhatod a végpontokat. Vigyázz: a kipróbálás a saját, éles adataidon fut.\n\n## Listák, keresés, lapozás\n\n- A `GET /…` listák (például `GET /clients`) **minden** elérhető rekordot visszaadnak, lapozás nélkül. Nagy állománynál a keresést használd.\n- A `POST /…/search` végpontok szűrnek és lapoznak. A kérésben: `search` (szabad szöveg; szóközzel elválasztott szavak, mindegyiknek egyeznie kell), `limit` (1–200, alapból 200), `page` (1-től), `order_column` és `order_direction` (`asc` / `desc`), plusz a végpont saját szűrői. A válasz: `records` (a találatok), `count` (az összes találat száma), `page`, `max_page`, `order_column`, `order_direction`.\n- **Letöltések:** az exportok, az importminta és az átvilágítási adatlap egy `url` mezőt adnak vissza. Ez egy aláírt letöltési link, amely **60 percig** érvényes, és hitelesítés nélkül megnyitható.\n- Az importok (`POST /clients/import`) egy `import_file` mezőben várják az Excel- vagy CSV-fájlt; a minta a `GET /clients/download-import-sample` végponttal tölthető le.\n\n## Hibák\n\n| Kód | Jelentés | Válasz |\n|---|---|---|\n| `401` | Hiányzó vagy érvénytelen token, vagy hibás belépési adatok | `{\"message\": \"Unauthenticated.\"}` |\n| `402` | Nincs aktív előfizetés vagy próbaidő | `{\"message\": \"A funkció használatához fizess elő a PmtSegédre.\"}` |\n| `403` | A művelet nem engedélyezett (például a csomag nem tartalmazza a funkciót, vagy a tokenfajta nem jó hozzá) | `{\"message\": \"…\"}` |\n| `404` | A rekord nem létezik, vagy nem a felhasználóé | `{\"message\": \"…\"}` |\n| `422` | Hibás adat | `{\"message\": \"…\", \"errors\": {\"mezo\": [\"…\"]}}` |\n| `429` | Túl sok kérés rövid idő alatt (a belépés, a regisztráció és a jelszó-visszaállítás percenként 10 kérést enged) | `{\"message\": \"Too Many Attempts.\"}` |\n\n## Változásnapló\n\n- **1.1.0 (2026-10-27):** a leírás a SwaggerHubról a [pmtseged.hu/api-leiras](https://pmtseged.hu/api-leiras) oldalra költözött (OpenAPI 3.0.3), és végpontonként a tényleges működés szerint pontosítottuk: minden mező, kérésparaméter, hibakód és csomagfeltétel leírást kapott. Újonnan dokumentált végpontok: belépés, kilépés, regisztráció, jelszó-visszaállítás (`/login`, `/logout`, `/register`, `/register-through-partner`, `/password/*`), konfiguráció (`GET /configs`), jelszócsere (`POST /user/change-password`), előfizetés (`/packages/*`) és API-kulcsok (`/api-keys`). Javítás a régi leíráshoz képest: a szankciós keresés `POST /sanctions/search` (nem `PUT`), és találat nélkül üres listát ad (nem `404`-et). A belépés, a regisztráció és a jelszó-visszaállítás percenként legfeljebb 10 kérést fogad (`429`). Az API viselkedése a korlátozáson kívül nem változott.\n- **1.0.0:** az első, SwaggerHubon közzétett változat.\n",
        "contact": {
            "name": "PmtSegéd ügyfélszolgálat",
            "email": "ugyfelszolgalat@pmtseged.hu",
            "url": "https://pmtseged.hu/api-leiras"
        }
    },
    "servers": [
        {
            "url": "https://api.pmtseged.hu"
        }
    ],
    "security": [
        {
            "bearerAuth": []
        }
    ],
    "tags": [
        {
            "name": "Belépés és regisztráció",
            "description": "Belépés (token kérése), kilépés, regisztráció és jelszó-visszaállítás."
        },
        {
            "name": "Konfiguráció",
            "description": "Bejelentkezés nélkül lekérhető törzsadatok (országok, főtevékenységek, PEP-kategóriák, szankciós listák, csomagok)."
        },
        {
            "name": "Saját fiók",
            "description": "A bejelentkezett felhasználó adatai és jelszava."
        },
        {
            "name": "Előfizetés",
            "description": "Számlázási adatok és előfizetés, csomagváltás."
        },
        {
            "name": "API-kulcsok",
            "description": "A felhasználó saját API-kulcsai."
        },
        {
            "name": "Számlák",
            "description": "A felhasználó PmtSegéd-előfizetési számlái."
        },
        {
            "name": "Ügyfélcsoportok",
            "description": "A felhasználó ügyfélcsoportjai (a felületen: Ügyfélcsoportok), amelyekbe az ügyfeleit sorolhatja; a csoport szerződési adatai az ügyfelei átvilágítási adatlapjára kerülnek."
        },
        {
            "name": "Ügyfelek",
            "description": "Az ügyfelek (magánszemélyek, cégek) átvilágítási adatai: létrehozás, módosítás, keresés, tömeges műveletek, nyilvános cégadatok lekérdezése."
        },
        {
            "name": "Ügyfél-import és -export",
            "description": "Ügyfelek importja Excel-fájlból vagy adószámok alapján, és az ügyféllista exportja."
        },
        {
            "name": "Képviselők",
            "description": "Az ügyfelek képviselői."
        },
        {
            "name": "Tulajdonosok",
            "description": "Az ügyfelek tulajdonosai."
        },
        {
            "name": "Tényleges tulajdonosok",
            "description": "Az ügyfelek tényleges tulajdonosai."
        },
        {
            "name": "Ügyféldokumentumok",
            "description": "Az ügyfelekhez feltöltött dokumentumok."
        },
        {
            "name": "Kockázati besorolás",
            "description": "Az ügyfelek kockázati besorolásai."
        },
        {
            "name": "Átvilágítási adatlap",
            "description": "Az ügyfél-átvilágítási adatlap letöltése és kiküldése."
        },
        {
            "name": "Szankciós ellenőrzés",
            "description": "Keresés a szankciós listákban, és az utolsó szankciós ellenőrzés rögzítése."
        }
    ],
    "paths": {
        "/login": {
            "post": {
                "tags": [
                    "Belépés és regisztráció"
                ],
                "summary": "Belépés email-címmel és jelszóval",
                "description": "Ellenőrzi az email-címet és a jelszót, és sikeres belépésnél új belépési tokent ad (képesség: `access-api`), amelyet a további kérésekben `Authorization: Bearer <token>` fejlécben kell küldeni. Minden sikeres hívás új tokent hoz létre; a token nem jár le, a `POST /logout` érvényteleníti. A végpont hívásszáma korlátozott (percenként legfeljebb 10 kérés), túllépésnél 429. Integrációkhoz a hosszú életű API-kulcs ajánlott (`POST /api-keys`).",
                "operationId": "login",
                "security": [],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "email",
                                    "password"
                                ],
                                "properties": {
                                    "email": {
                                        "type": "string",
                                        "format": "email",
                                        "description": "A fiók email-címe.",
                                        "example": "kiss.elemer@example.com"
                                    },
                                    "password": {
                                        "type": "string",
                                        "format": "password",
                                        "description": "A fiók jelszava.",
                                        "example": "titkos123"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Sikeres belépés: a felhasználó adatai és a belépési token.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/AuthResult"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Helytelen email-cím vagy jelszó (nem létező fiók esetén is ez).",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "description": "A hibaüzenet.",
                                            "example": "Helytelen email-jelszó páros."
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationError"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/register": {
            "post": {
                "tags": [
                    "Belépés és regisztráció"
                ],
                "summary": "Regisztráció",
                "description": "Létrehoz egy új felhasználói fiókot próbaidővel, és belépési tokent ad (képesség: `access-api`). A kéréshez érvényes Cloudflare Turnstile-választoken kell (`cf_turnstile_response`), ezért a végpont gépi integrációból nem, csak a Turnstile-ellenőrzést megjelenítő felületről hívható. Mellékhatás: üdvözlő emailt küld a megadott címre (benne az oktatóvideó és az ügyfélszolgálat elérhetősége), és a fizetési szolgáltatónál (Stripe) vevőt hoz létre a felhasználóhoz. A végpont hívásszáma korlátozott (percenként legfeljebb 10 kérés).",
                "operationId": "register",
                "security": [],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "cf_turnstile_response",
                                    "name",
                                    "email",
                                    "password"
                                ],
                                "properties": {
                                    "cf_turnstile_response": {
                                        "type": "string",
                                        "description": "A Cloudflare Turnstile-ellenőrzés által a böngészőben adott választoken. Hiányzó vagy érvénytelen token esetén 422.",
                                        "example": "0.AbCdEf…"
                                    },
                                    "name": {
                                        "type": "string",
                                        "maxLength": 255,
                                        "description": "A felhasználó neve.",
                                        "example": "Kiss Elemér"
                                    },
                                    "email": {
                                        "type": "string",
                                        "format": "email",
                                        "maxLength": 255,
                                        "description": "Email-cím; létező (DNS-ben feloldható) domainnel, és még nem lehet regisztrálva.",
                                        "example": "kiss.elemer@example.com"
                                    },
                                    "password": {
                                        "type": "string",
                                        "format": "password",
                                        "minLength": 6,
                                        "description": "A jelszó, legalább 6 karakter.",
                                        "example": "titkos123"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Sikeres regisztráció: az új felhasználó és a belépési token.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/AuthResult"
                                }
                            }
                        }
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationError"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/register-through-partner": {
            "post": {
                "tags": [
                    "Belépés és regisztráció"
                ],
                "summary": "Regisztráció partneren keresztül",
                "description": "Csak a PmtSegéddel szerződött partnereknek: a partner rendszere a saját felhasználója nevében hoz létre PmtSegéd-fiókot. A válasz `access_token` mezőjében itt nem belépési token, hanem API-kulcs érkezik (képesség: `developer-api`), amely a felhasználó API-kulcsai között is megjelenik, és a `POST /logout` nem fogadja el. A partneres fiók csomagját a partnerszerződés határozza meg. Mellékhatás: üdvözlő emailt küld a megadott címre, és a fizetési szolgáltatónál (Stripe) vevőt hoz létre.",
                "operationId": "registerThroughPartner",
                "security": [],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "partner",
                                    "name",
                                    "email",
                                    "password"
                                ],
                                "properties": {
                                    "partner": {
                                        "type": "string",
                                        "description": "A partner azonosítója, amelyet a PmtSegéd a szerződéskötéskor ad meg. Ismeretlen azonosító esetén 422."
                                    },
                                    "name": {
                                        "type": "string",
                                        "maxLength": 255,
                                        "description": "A felhasználó neve.",
                                        "example": "Kiss Elemér"
                                    },
                                    "email": {
                                        "type": "string",
                                        "format": "email",
                                        "maxLength": 255,
                                        "description": "Email-cím; létező (DNS-ben feloldható) domainnel, és még nem lehet regisztrálva.",
                                        "example": "kiss.elemer@example.com"
                                    },
                                    "password": {
                                        "type": "string",
                                        "format": "password",
                                        "minLength": 6,
                                        "description": "A jelszó, legalább 6 karakter.",
                                        "example": "titkos123"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Sikeres regisztráció: az új felhasználó és az API-kulcsa (az `access_token` mezőben).",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/AuthResult"
                                }
                            }
                        }
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationError"
                    }
                }
            }
        },
        "/logout": {
            "post": {
                "tags": [
                    "Belépés és regisztráció"
                ],
                "summary": "Kilépés",
                "description": "Törli (érvényteleníti) a kérésben használt belépési tokent; a felhasználó többi tokenje és API-kulcsa érvényes marad. Csak `POST /login` vagy `POST /register` által adott belépési tokennel hívható; API-kulccsal 403. Az API-kulcsot a `DELETE /api-keys/{id}` törli.",
                "operationId": "logout",
                "responses": {
                    "200": {
                        "description": "Sikeres művelet, üres választörzzsel."
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthenticated"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    }
                }
            }
        },
        "/password/email": {
            "post": {
                "tags": [
                    "Belépés és regisztráció"
                ],
                "summary": "Jelszó-visszaállító link kérése",
                "description": "Jelszó-visszaállító emailt küld a megadott címre. A levélben lévő link (https://pmtseged.hu/reset-password?token=…) 60 percig érvényes; új kérés a korábbi linket érvényteleníti. Ha az email-címmel nincs fiók, 422-t ad. A végpont hívásszáma korlátozott (percenként legfeljebb 10 kérés).",
                "operationId": "sendPasswordResetLink",
                "security": [],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "email"
                                ],
                                "properties": {
                                    "email": {
                                        "type": "string",
                                        "description": "A regisztrált fiók email-címe (formátumát a szerver nem ellenőrzi, csak hogy létezik-e ilyen fiók).",
                                        "example": "kiss.elemer@example.com"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Sikeres művelet, üres választörzzsel."
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationError"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/password/reset": {
            "post": {
                "tags": [
                    "Belépés és regisztráció"
                ],
                "summary": "Új jelszó beállítása visszaállító tokennel",
                "description": "A jelszó-visszaállító levél linkjében kapott tokennel új jelszót állít be. A token egyszer használható, 60 percig érvényes; érvénytelen, már felhasznált vagy lejárt token esetén 422 a `token` mezőn. Sikeres csere után a „maradjak bejelentkezve” sütik érvénytelenné válnak a felületen. A végpont hívásszáma korlátozott (percenként legfeljebb 10 kérés).",
                "operationId": "resetPassword",
                "security": [],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "token",
                                    "password"
                                ],
                                "properties": {
                                    "token": {
                                        "type": "string",
                                        "description": "A visszaállító link `token` paramétere.",
                                        "example": "AbCdEf…"
                                    },
                                    "password": {
                                        "type": "string",
                                        "format": "password",
                                        "minLength": 6,
                                        "description": "Az új jelszó, legalább 6 karakter.",
                                        "example": "ujtitkos456"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Sikeres művelet, üres választörzzsel."
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationError"
                    },
                    "429": {
                        "$ref": "#/components/responses/TooManyRequests"
                    }
                }
            }
        },
        "/configs": {
            "get": {
                "tags": [
                    "Konfiguráció"
                ],
                "summary": "Rendszerkonfiguráció lekérése",
                "description": "Visszaadja a felület és az integrációk által használt törzsadatokat: TEÁOR-tevékenységek, országok, kiemelt közszereplői (PEP) kategóriák, a szankciós listák azonosítói és forrásai, oktatóvideók és az előfizetési csomagok funkciói. Bejelentkezés nélkül hívható. A törzsadatok kulcsait (például tevékenységkód, országkód, PEP-kategória) a többi végpont mezőiben ezekkel az értékekkel kell megadni.",
                "operationId": "getConfigs",
                "security": [],
                "responses": {
                    "200": {
                        "description": "A konfiguráció.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Config"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/user": {
            "get": {
                "tags": [
                    "Saját fiók"
                ],
                "summary": "Saját fiók adatai",
                "description": "Visszaadja a tokenhez tartozó felhasználó adatait: név, email, számlázási adatok, valamint az aktuális csomag, a próbaidő és a csomag funkciói. Belépési tokennel és API-kulccsal is hívható, csomag nélkül is.",
                "operationId": "getUser",
                "responses": {
                    "200": {
                        "description": "A felhasználó adatai.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/User"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthenticated"
                    }
                }
            },
            "put": {
                "tags": [
                    "Saját fiók"
                ],
                "summary": "Saját fiók módosítása",
                "description": "Módosítja a felhasználó nevét (más mező itt nem módosítható; a számlázási adatokat a `POST /packages/billing-details` állítja). Mellékhatás: a név a fizetési szolgáltatónál (Stripe) tárolt vevőadatokban is frissül. Belépési tokennel és API-kulccsal is hívható.",
                "operationId": "updateUser",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "name"
                                ],
                                "properties": {
                                    "name": {
                                        "type": "string",
                                        "maxLength": 255,
                                        "description": "A felhasználó új neve.",
                                        "example": "Kiss Elemér"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "A módosított felhasználó.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/User"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthenticated"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationError"
                    }
                }
            }
        },
        "/user/change-password": {
            "post": {
                "tags": [
                    "Saját fiók"
                ],
                "summary": "Jelszó módosítása",
                "description": "A jelenlegi jelszó ellenőrzése után új jelszót állít be. Helytelen jelenlegi jelszónál 422 a `current_password` mezőn. A felület „maradjak bejelentkezve” sütijei érvénytelenné válnak; a meglévő belépési tokenek és API-kulcsok érvényesek maradnak. Belépési tokennel és API-kulccsal is hívható.",
                "operationId": "changePassword",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "current_password",
                                    "new_password"
                                ],
                                "properties": {
                                    "current_password": {
                                        "type": "string",
                                        "format": "password",
                                        "description": "A jelenlegi jelszó.",
                                        "example": "titkos123"
                                    },
                                    "new_password": {
                                        "type": "string",
                                        "format": "password",
                                        "minLength": 6,
                                        "description": "Az új jelszó, legalább 6 karakter.",
                                        "example": "ujtitkos456"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Sikeres művelet, üres választörzzsel."
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthenticated"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationError"
                    }
                }
            }
        },
        "/packages/billing-details": {
            "post": {
                "tags": [
                    "Előfizetés"
                ],
                "summary": "Számlázási adatok megadása",
                "description": "Beállítja a felhasználó számlázási adatait; ezek nélkül előfizetni nem lehet (`POST /packages/subscribe` 403-at ad). Az adószám nem kötelező, de ha meg van adva, érvényes magyar adószámnak kell lennie (kötőjellel vagy anélkül). Mellékhatás: az adatok a fizetési szolgáltatónál (Stripe) tárolt vevőadatokban is frissülnek, és a későbbi számlák ezekkel készülnek.",
                "operationId": "updateBillingDetails",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "billing_name",
                                    "billing_city",
                                    "billing_zip",
                                    "billing_address"
                                ],
                                "properties": {
                                    "billing_name": {
                                        "type": "string",
                                        "maxLength": 255,
                                        "description": "Számlázási név (cég vagy magánszemély neve).",
                                        "example": "Kiss Elemér Könyvelőiroda Kft."
                                    },
                                    "billing_city": {
                                        "type": "string",
                                        "maxLength": 255,
                                        "description": "Számlázási cím: település.",
                                        "example": "Budapest"
                                    },
                                    "billing_zip": {
                                        "type": "integer",
                                        "minimum": 1000,
                                        "maximum": 9999,
                                        "description": "Számlázási cím: négyjegyű irányítószám.",
                                        "example": 1111
                                    },
                                    "billing_address": {
                                        "type": "string",
                                        "maxLength": 255,
                                        "description": "Számlázási cím: utca, házszám.",
                                        "example": "Minta utca 1."
                                    },
                                    "billing_tax_number": {
                                        "type": "string",
                                        "nullable": true,
                                        "description": "Magyar adószám (11 számjegy, kötőjellel vagy anélkül, ellenőrző számjeggyel ellenőrizve). Üresen vagy null értékkel törölhető.",
                                        "example": "12345676-2-13"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "A módosított felhasználó.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/User"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthenticated"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationError"
                    }
                }
            }
        },
        "/packages/subscribe": {
            "post": {
                "tags": [
                    "Előfizetés"
                ],
                "summary": "Előfizetés indítása vagy csomagváltás",
                "description": "A felhasználó állapotától függően egy URL-t ad vissza, ahová a felhasználót át kell irányítani: (1) nincs előfizetése (próbaidőn sem): Stripe fizetési oldal az új előfizetéshez (kuponkód megadható; sikeres fizetés után a https://pmtseged.hu/successful-payment, megszakításkor a https://pmtseged.hu/subscription oldalra tér vissza); (2) lejárt vagy függő fizetésű előfizetése van: a Stripe ügyfélportál a tartozás rendezéséhez (új előfizetés nem indul); (3) érvényes előfizetése van ugyanerre a csomagra: a Stripe ügyfélportál; (4) érvényes előfizetése van másik csomagra: a csomagváltás azonnal megtörténik és a különbözet azonnal kiszámlázásra kerül, a válasz a https://pmtseged.hu/subscription oldal címe. Sikertelen terhelésnél a váltás nem történik meg, a régi csomag marad (422 a `package` mezőn, a fizetési szolgáltató hibaüzenetével). Számlázási adatok nélkül 403 („Előfizetés előtt a számlázási adatok megadása szükséges.”), rögzített csomagú fiókon 422. Egy felhasználó egyszerre csak egy ilyen kérést futtathat: a párhuzamos kérés megvárja az előzőt (legfeljebb 30 másodpercig).",
                "operationId": "subscribeToPackage",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "package"
                                ],
                                "properties": {
                                    "package": {
                                        "type": "string",
                                        "enum": [
                                            "basic",
                                            "premium"
                                        ],
                                        "description": "A választott csomag: `basic` – Alap csomag, `premium` – Prémium csomag. A csomagok funkciói a `GET /configs` válaszában.",
                                        "example": "premium"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Az átirányítási cím.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "url"
                                    ],
                                    "properties": {
                                        "url": {
                                            "type": "string",
                                            "format": "uri",
                                            "description": "Ahová a felhasználót át kell irányítani: Stripe fizetési oldal, Stripe ügyfélportál, vagy csomagváltás után a PmtSegéd előfizetés-oldala (ez utóbbi a felületre belépett munkamenetet kíván).",
                                            "example": "https://checkout.stripe.com/c/pay/cs_live_AbCdEf…"
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthenticated"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationError"
                    }
                }
            }
        },
        "/api-keys": {
            "get": {
                "tags": [
                    "API-kulcsok"
                ],
                "summary": "API-kulcsok listája",
                "description": "Visszaadja a felhasználó API-kulcsait (a legújabb elöl), a kulcs titkos értéke nélkül. A belépési tokenek (`POST /login`) nem szerepelnek a listában. Belépési tokennel és API-kulccsal is hívható.",
                "operationId": "listApiKeys",
                "responses": {
                    "200": {
                        "description": "Az API-kulcsok.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/ApiKey"
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthenticated"
                    }
                }
            },
            "post": {
                "tags": [
                    "API-kulcsok"
                ],
                "summary": "API-kulcs létrehozása",
                "description": "Új API-kulcsot hoz létre (képesség: `developer-api`), amellyel a tokenes végpontok hívhatók (a `POST /logout` kivételével). A kulcs titkos értékét csak ez a válasz tartalmazza, később nem kérhető le újra. A kulcs nem jár le; a `DELETE /api-keys/{id}` törli. Belépési tokennel és API-kulccsal is hívható.",
                "operationId": "createApiKey",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "name"
                                ],
                                "properties": {
                                    "name": {
                                        "type": "string",
                                        "maxLength": 255,
                                        "description": "A kulcs megnevezése (például az integráció neve).",
                                        "example": "Saját könyvelőprogram"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "A létrehozott kulcs.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "token"
                                    ],
                                    "properties": {
                                        "token": {
                                            "type": "string",
                                            "description": "A kulcs teljes titkos értéke `<azonosító>|<titok>` alakban; az `Authorization: Bearer` fejlécben így, egészében kell küldeni. A `|` előtti szám a kulcs `id`-ja.",
                                            "example": "12|AbCdEf…"
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthenticated"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationError"
                    }
                }
            }
        },
        "/api-keys/{id}": {
            "parameters": [
                {
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "Az API-kulcs azonosítója.",
                    "schema": {
                        "type": "integer",
                        "example": 12
                    }
                }
            ],
            "get": {
                "tags": [
                    "API-kulcsok"
                ],
                "summary": "API-kulcs adatai",
                "description": "Visszaadja egy API-kulcs adatait a titkos érték nélkül. Más felhasználó kulcsára vagy belépési tokenre 404-et ad.",
                "operationId": "getApiKey",
                "responses": {
                    "200": {
                        "description": "Az API-kulcs.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiKey"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthenticated"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    }
                }
            },
            "delete": {
                "tags": [
                    "API-kulcsok"
                ],
                "summary": "API-kulcs törlése",
                "description": "Véglegesen törli az API-kulcsot; a kulccsal küldött kérések ezután 401-et kapnak. A kérésben használt kulcs saját magát is törölheti. Más felhasználó kulcsára vagy belépési tokenre 404-et ad.",
                "operationId": "deleteApiKey",
                "responses": {
                    "200": {
                        "description": "Sikeres művelet, üres választörzzsel."
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthenticated"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    }
                }
            }
        },
        "/invoices": {
            "get": {
                "tags": [
                    "Számlák"
                ],
                "summary": "Előfizetési számlák listázása",
                "operationId": "listInvoices",
                "description": "Visszaadja a PmtSegéd előfizetés díjáról a felhasználónak kiállított számlákat (nem az ügyfelek számláit), a legújabbal kezdve, lapozás nélkül. Minden sikeres előfizetési díjfizetés után egy számla készül. Csak olvasható; csomag nem kell hozzá, így lejárt előfizetéssel is lekérhetők a korábbi számlák.",
                "responses": {
                    "200": {
                        "description": "A számlák listája (üres tömb, ha még nincs számla).",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/Invoice"
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthenticated"
                    }
                }
            }
        },
        "/invoices/{id}": {
            "get": {
                "tags": [
                    "Számlák"
                ],
                "summary": "Előfizetési számla lekérdezése",
                "operationId": "getInvoice",
                "description": "Visszaadja a felhasználó egy előfizetési számláját. A számla PDF-je az `url` mezőben kapott linken nyitható meg és tölthető le. Csomag nem kell hozzá. Más felhasználó számlájára 404 a válasz.",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "description": "A számla azonosítója. Csak a saját rekord érhető el; más felhasználó rekordjára vagy nem létező azonosítóra 404 a válasz.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1
                        },
                        "example": 12
                    }
                ],
                "responses": {
                    "200": {
                        "description": "A számla.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Invoice"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthenticated"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    }
                }
            }
        },
        "/companies": {
            "get": {
                "tags": [
                    "Ügyfélcsoportok"
                ],
                "summary": "Ügyfélcsoportok listázása",
                "operationId": "listCompanies",
                "description": "Visszaadja a felhasználó összes ügyfélcsoportját (a felületen „Ügyfélcsoportok” menüpont) név szerint rendezve, lapozás nélkül. Minden elem tartalmazza a csoportba sorolt ügyfelek számát (`clients_count`). Csomag nem kell hozzá, bármely érvényes belépési token vagy API-kulcs hívhatja.",
                "responses": {
                    "200": {
                        "description": "Az ügyfélcsoportok listája (üres tömb, ha nincs egy sem).",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/Company"
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthenticated"
                    }
                }
            },
            "post": {
                "tags": [
                    "Ügyfélcsoportok"
                ],
                "summary": "Ügyfélcsoport létrehozása",
                "operationId": "createCompany",
                "description": "Létrehoz egy új ügyfélcsoportot a felhasználónak. Az ügyfélcsoport az ügyfelek csoportosítására szolgál (ügyfélnél a `company_id` mező), és a szerződés adatait tárolja, amelyek a csoport ügyfeleinek átvilágítási adatlapjára kerülnek. Csomag nem kell hozzá. A válasz a létrehozott csoport (`clients_count` = 0).",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "description": "Az ügyfélcsoport adatai. A nem kötelező mezők elhagyhatók vagy null értékűek lehetnek.",
                                "required": [
                                    "name"
                                ],
                                "properties": {
                                    "name": {
                                        "type": "string",
                                        "maxLength": 255,
                                        "description": "Az ügyfélcsoport neve (kötelező).",
                                        "example": "Budapesti iroda, könyvelési ügyfelek"
                                    },
                                    "contract_type": {
                                        "type": "string",
                                        "maxLength": 255,
                                        "nullable": true,
                                        "description": "Szerződés típusa; a csoport ügyfeleinek átvilágítási adatlapjára kerül.",
                                        "example": "Megbízási szerződés"
                                    },
                                    "contract_subject": {
                                        "type": "string",
                                        "maxLength": 255,
                                        "nullable": true,
                                        "description": "Szerződés tárgya; a csoport ügyfeleinek átvilágítási adatlapjára kerül.",
                                        "example": "Könyvviteli szolgáltatás"
                                    },
                                    "contract_duration": {
                                        "type": "string",
                                        "maxLength": 255,
                                        "nullable": true,
                                        "description": "Szerződés időtartama (szabad szöveg); a csoport ügyfeleinek átvilágítási adatlapjára kerül.",
                                        "example": "Határozatlan idő"
                                    },
                                    "performance_details": {
                                        "type": "string",
                                        "maxLength": 255,
                                        "nullable": true,
                                        "description": "Teljesítés körülményei (hely, idő, mód); a csoport ügyfeleinek átvilágítási adatlapjára kerül.",
                                        "example": "Havonta, elektronikus úton, a megbízó székhelyén"
                                    },
                                    "business_relationship_purpose": {
                                        "type": "string",
                                        "maxLength": 255,
                                        "nullable": true,
                                        "description": "Az üzleti kapcsolat célja és tervezett jellege; a csoport ügyfeleinek átvilágítási adatlapjára kerül.",
                                        "example": "Folyamatos könyvelési és bérszámfejtési szolgáltatás"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "A létrehozott ügyfélcsoport.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Company"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthenticated"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationError"
                    }
                }
            }
        },
        "/companies/{id}": {
            "get": {
                "tags": [
                    "Ügyfélcsoportok"
                ],
                "summary": "Ügyfélcsoport lekérdezése",
                "operationId": "getCompany",
                "description": "Visszaadja a felhasználó egy ügyfélcsoportját a csoportba sorolt ügyfelek számával együtt. Csomag nem kell hozzá. Más felhasználó csoportjára 404 a válasz.",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "description": "Az ügyfélcsoport azonosítója. Csak a saját rekord érhető el; más felhasználó rekordjára vagy nem létező azonosítóra 404 a válasz.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1
                        },
                        "example": 12
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Az ügyfélcsoport.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Company"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthenticated"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    }
                }
            },
            "put": {
                "tags": [
                    "Ügyfélcsoportok"
                ],
                "summary": "Ügyfélcsoport módosítása",
                "operationId": "updateCompany",
                "description": "Módosítja a felhasználó egy ügyfélcsoportját. Teljes csere: a `name` kötelező, és minden kihagyott nem kötelező mező null értékre áll, ezért mindig a teljes rekordot küldd el. A változás a csoport összes ügyfelének átvilágítási adatlapján megjelenik. Csomag nem kell hozzá.",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "description": "Az ügyfélcsoport azonosítója. Csak a saját rekord érhető el; más felhasználó rekordjára vagy nem létező azonosítóra 404 a válasz.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1
                        },
                        "example": 12
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "description": "Az ügyfélcsoport adatai. Teljes csere: minden mezőt el kell küldeni; a kérésből kihagyott nem kötelező mező null értékre áll.",
                                "required": [
                                    "name"
                                ],
                                "properties": {
                                    "name": {
                                        "type": "string",
                                        "maxLength": 255,
                                        "description": "Az ügyfélcsoport neve (kötelező).",
                                        "example": "Budapesti iroda, könyvelési ügyfelek"
                                    },
                                    "contract_type": {
                                        "type": "string",
                                        "maxLength": 255,
                                        "nullable": true,
                                        "description": "Szerződés típusa; a csoport ügyfeleinek átvilágítási adatlapjára kerül.",
                                        "example": "Megbízási szerződés"
                                    },
                                    "contract_subject": {
                                        "type": "string",
                                        "maxLength": 255,
                                        "nullable": true,
                                        "description": "Szerződés tárgya; a csoport ügyfeleinek átvilágítási adatlapjára kerül.",
                                        "example": "Könyvviteli szolgáltatás"
                                    },
                                    "contract_duration": {
                                        "type": "string",
                                        "maxLength": 255,
                                        "nullable": true,
                                        "description": "Szerződés időtartama (szabad szöveg); a csoport ügyfeleinek átvilágítási adatlapjára kerül.",
                                        "example": "Határozatlan idő"
                                    },
                                    "performance_details": {
                                        "type": "string",
                                        "maxLength": 255,
                                        "nullable": true,
                                        "description": "Teljesítés körülményei (hely, idő, mód); a csoport ügyfeleinek átvilágítási adatlapjára kerül.",
                                        "example": "Havonta, elektronikus úton, a megbízó székhelyén"
                                    },
                                    "business_relationship_purpose": {
                                        "type": "string",
                                        "maxLength": 255,
                                        "nullable": true,
                                        "description": "Az üzleti kapcsolat célja és tervezett jellege; a csoport ügyfeleinek átvilágítási adatlapjára kerül.",
                                        "example": "Folyamatos könyvelési és bérszámfejtési szolgáltatás"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "A módosított ügyfélcsoport.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Company"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthenticated"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationError"
                    }
                }
            },
            "delete": {
                "tags": [
                    "Ügyfélcsoportok"
                ],
                "summary": "Ügyfélcsoport törlése",
                "operationId": "deleteCompany",
                "description": "Véglegesen törli a felhasználó egy ügyfélcsoportját. A csoport ügyfelei NEM törlődnek: megmaradnak csoport nélkül (`company_id` = null), így az átvilágítási adatlapjukról eltűnnek a csoport szerződéses adatai. Csomag nem kell hozzá.",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "description": "Az ügyfélcsoport azonosítója. Csak a saját rekord érhető el; más felhasználó rekordjára vagy nem létező azonosítóra 404 a válasz.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1
                        },
                        "example": 12
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Sikeres művelet, üres választörzzsel."
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthenticated"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    }
                }
            }
        },
        "/clients": {
            "get": {
                "tags": [
                    "Ügyfelek"
                ],
                "summary": "Ügyfelek listája",
                "operationId": "listClients",
                "description": "Visszaadja a felhasználó összes ügyfelét azonosító szerint növekvő sorrendben, lapozás nélkül (nagy állománynál használd a `POST /clients/search` végpontot). Aktív előfizetés vagy próbaidő kell hozzá (bármely csomag), különben 402. Az elemek a lista-változatot tartalmazzák: ügyfélcsoport, kapcsolódó személyek, legutóbbi besorolás, figyelmeztetések és ellenőrizetlen listás találatok igen, a besorolási előzmények, dokumentumok, változásnapló és ellenőrzési napló nem.",
                "responses": {
                    "200": {
                        "description": "Az ügyfelek listája.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/Client"
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthenticated"
                    },
                    "402": {
                        "$ref": "#/components/responses/PaymentRequired"
                    }
                }
            },
            "post": {
                "tags": [
                    "Ügyfelek"
                ],
                "summary": "Ügyfél létrehozása",
                "operationId": "createClient",
                "description": "Létrehoz egy ügyfelet, opcionálisan egy első kockázati besorolással és (`company` típusnál) képviselőkkel, tulajdonosokkal, tényleges tulajdonosokkal együtt. A típushoz nem tartozó mezőket mentéskor törli (lásd a mezők leírását). Aktív előfizetés vagy próbaidő kell hozzá (bármely csomag), különben 402. Előbb a kérés érvényességét ellenőrzi (422), utána a csomagot (402). Mentés után lefut a listás ellenőrzés a nemzetközi és hazai szankciós és kiemelt közszereplői listákon (az ügyfélre és kapcsolódó személyeire); ha az eredmény változott, új bejegyzés kerül a `sanction_checks` naplóba, és új találat esetén a fiók e-mail-címére értesítés megy. Ügyfélszám-korlát nincs.",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "name",
                                    "type",
                                    "notification",
                                    "risk_classification_frequency_in_months"
                                ],
                                "properties": {
                                    "company_id": {
                                        "type": "integer",
                                        "nullable": true,
                                        "description": "Az ügyfélcsoport (`Company`) azonosítója; csak a saját ügyfélcsoportod lehet.",
                                        "example": 3
                                    },
                                    "name": {
                                        "type": "string",
                                        "description": "Az ügyfél neve (cégnév vagy személynév).",
                                        "maxLength": 255,
                                        "example": "Példa Kft."
                                    },
                                    "type": {
                                        "type": "string",
                                        "enum": [
                                            "company",
                                            "private_person",
                                            "private_person_business"
                                        ],
                                        "description": "Ügyféltípus: `company` – cég, szervezet; `private_person` – magánszemély; `private_person_business` – egyéni vállalkozó, őstermelő.",
                                        "example": "company"
                                    },
                                    "tax_number": {
                                        "type": "string",
                                        "description": "Adószám: 11 jegy kötőjelekkel vagy nélkülük (pl. 12345676-2-13), ellenőrzőszámmal ellenőrizve. `private_person` típusnál mentéskor törlődik.",
                                        "nullable": true,
                                        "example": "12345676-2-13"
                                    },
                                    "company_registration_number": {
                                        "type": "string",
                                        "description": "Cégjegyzékszám vagy nyilvántartási szám. `private_person` típusnál törlődik.",
                                        "maxLength": 255,
                                        "nullable": true,
                                        "example": "06-09-123456"
                                    },
                                    "main_activity_code": {
                                        "type": "string",
                                        "description": "Főtevékenység négyjegyű TEÁOR-kódja (a `GET /configs` válasz `main_activities` kulcsai közül). `private_person` típusnál törlődik.",
                                        "nullable": true,
                                        "example": "6920"
                                    },
                                    "birth_name": {
                                        "type": "string",
                                        "description": "Születési név. `company` típusnál törlődik.",
                                        "maxLength": 255,
                                        "nullable": true
                                    },
                                    "birth_place": {
                                        "type": "string",
                                        "description": "Születési hely. `company` típusnál törlődik.",
                                        "maxLength": 255,
                                        "nullable": true
                                    },
                                    "birth_date": {
                                        "type": "string",
                                        "format": "date",
                                        "description": "Születési dátum. `company` típusnál törlődik. Formátum: ÉÉÉÉ-HH-NN.",
                                        "nullable": true
                                    },
                                    "mother_name": {
                                        "type": "string",
                                        "description": "Anyja születési neve. `company` típusnál törlődik.",
                                        "maxLength": 255,
                                        "nullable": true
                                    },
                                    "nationality": {
                                        "type": "string",
                                        "description": "Állampolgárság. ISO 3166-1 alpha-2 országkód (a `GET /configs` válasz `countries` kulcsai közül, pl. `HU`). `company` típusnál törlődik.",
                                        "nullable": true
                                    },
                                    "nationality2": {
                                        "type": "string",
                                        "description": "Második állampolgárság. ISO 3166-1 alpha-2 országkód (a `GET /configs` válasz `countries` kulcsai közül, pl. `HU`). `company` típusnál törlődik.",
                                        "nullable": true
                                    },
                                    "id_document_type": {
                                        "type": "string",
                                        "enum": [
                                            "national_id_card",
                                            "passport",
                                            "driver_license",
                                            "student_id_card",
                                            "other",
                                            null
                                        ],
                                        "description": "Igazolvány típusa: `national_id_card` – személyigazolvány, `passport` – útlevél, `driver_license` – jogosítvány, `student_id_card` – diákigazolvány, `other` – egyéb. `company` típusnál törlődik.",
                                        "nullable": true
                                    },
                                    "id_document_number": {
                                        "type": "string",
                                        "description": "Igazolvány száma. `company` típusnál törlődik.",
                                        "maxLength": 255,
                                        "nullable": true
                                    },
                                    "id_document_expiration": {
                                        "type": "string",
                                        "format": "date",
                                        "description": "Igazolvány lejárata. `company` típusnál törlődik. Formátum: ÉÉÉÉ-HH-NN.",
                                        "nullable": true
                                    },
                                    "pep": {
                                        "type": "boolean",
                                        "description": "Kiemelt közszereplő-e (magánszemélynél, egyéni vállalkozónál). `company` típusnál törlődik.",
                                        "nullable": true,
                                        "example": false
                                    },
                                    "pep_type": {
                                        "type": "string",
                                        "enum": [
                                            "a",
                                            "b",
                                            "c",
                                            "d",
                                            "e",
                                            "f",
                                            "g",
                                            "h",
                                            null
                                        ],
                                        "description": "Kiemelt közszereplői kategória a pénzmosási törvény szerinti pont betűjele (`a`–`h`; a teljes szöveg a `GET /configs` válasz `pep_types` mezőjében). Kötelező, ha `pep` igaz. `company` típusnál törlődik.",
                                        "nullable": true
                                    },
                                    "country": {
                                        "type": "string",
                                        "description": "Székhely/lakcím országa. ISO 3166-1 alpha-2 országkód (a `GET /configs` válasz `countries` kulcsai közül, pl. `HU`).",
                                        "nullable": true,
                                        "example": "HU"
                                    },
                                    "address": {
                                        "type": "string",
                                        "description": "Székhely vagy lakcím (ország nélkül).",
                                        "maxLength": 255,
                                        "nullable": true,
                                        "example": "6720 Szeged, Példa utca 1."
                                    },
                                    "contract_start": {
                                        "type": "string",
                                        "format": "date",
                                        "description": "Az ügyfélkapcsolat (szerződés) kezdete. Formátum: ÉÉÉÉ-HH-NN.",
                                        "nullable": true,
                                        "example": "2025-01-01"
                                    },
                                    "contract_end": {
                                        "type": "string",
                                        "format": "date",
                                        "description": "Az ügyfélkapcsolat vége. Ha a mai napnál korábbi, az ügyfél inaktív. Az API nem ellenőrzi, hogy a kezdetnél későbbi-e. Formátum: ÉÉÉÉ-HH-NN.",
                                        "nullable": true
                                    },
                                    "emails": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "email"
                                        },
                                        "description": "Az ügyfél e-mail-címei (az ügyfélnek szóló értesítésekhez). Elhagyva vagy `null` értékkel üres lista lesz.",
                                        "nullable": true
                                    },
                                    "notification": {
                                        "type": "boolean",
                                        "description": "Kapjon-e az ügyfél e-mail-értesítést (pl. lejáró igazolványról). A mező bármely csomaggal menthető, de az értesítés csak a Prémium csomag „ügyfélértesítés” funkciójával megy ki.",
                                        "example": false
                                    },
                                    "note": {
                                        "type": "string",
                                        "description": "Megjegyzés.",
                                        "maxLength": 65535,
                                        "nullable": true
                                    },
                                    "risk_classification_frequency_in_months": {
                                        "type": "integer",
                                        "minimum": 1,
                                        "maximum": 12,
                                        "description": "A kockázati besorolás felülvizsgálatának gyakorisága hónapban; ebből számolódnak az esedékességi figyelmeztetések.",
                                        "example": 12
                                    },
                                    "ttny_check_result": {
                                        "type": "string",
                                        "enum": [
                                            "match",
                                            "differ",
                                            null
                                        ],
                                        "description": "A tényleges tulajdonosi nyilvántartással (TTNY) való egyeztetés eredménye: `match` – egyezés, `differ` – eltérés. Csak `company` típusnál marad meg.",
                                        "nullable": true
                                    },
                                    "ttny_check_date": {
                                        "type": "string",
                                        "format": "date",
                                        "description": "A TTNY-egyeztetés dátuma. Csak `company` típusnál marad meg. Formátum: ÉÉÉÉ-HH-NN.",
                                        "nullable": true
                                    },
                                    "ttny_check_note": {
                                        "type": "string",
                                        "description": "Megjegyzés a TTNY-egyeztetéshez. Csak `company` típusnál marad meg.",
                                        "maxLength": 255,
                                        "nullable": true
                                    },
                                    "risk_classification_risk": {
                                        "type": "string",
                                        "enum": [
                                            "low",
                                            "average",
                                            "high",
                                            null
                                        ],
                                        "description": "Ha megadod, az ügyfél mellé egy első kockázati besorolás is létrejön. Kockázati besorolás: `low` – alacsony, `average` – átlagos, `high` – magas.",
                                        "nullable": true,
                                        "example": "average"
                                    },
                                    "risk_classification_reason": {
                                        "type": "string",
                                        "description": "Az első kockázati besorolás indoka.",
                                        "maxLength": 255,
                                        "nullable": true
                                    },
                                    "risk_classification_date": {
                                        "type": "string",
                                        "format": "date",
                                        "description": "Az első kockázati besorolás dátuma; kötelező, ha `risk_classification_risk` meg van adva. Formátum: ÉÉÉÉ-HH-NN.",
                                        "nullable": true,
                                        "example": "2025-07-01"
                                    },
                                    "representatives": {
                                        "type": "array",
                                        "description": "Képviselők. Csak `company` típusú ügyfélnél számít: a tömb a teljes listát jelenti, ami nincs benne (vagy `id` nélkül szerepel), az törlődik, illetve újként jön létre (új azonosítóval, a változásnaplóban is újként). Más ügyféltípusnál az ügyfél minden ilyen személye törlődik.",
                                        "items": {
                                            "type": "object",
                                            "required": [
                                                "name"
                                            ],
                                            "properties": {
                                                "id": {
                                                    "type": "integer",
                                                    "minimum": 1,
                                                    "nullable": true,
                                                    "description": "Egy meglévő képviselő azonosítója (az ügyfél válaszának tömbjéből). Ha megadod és az ügyfélhez tartozik, azt a rekordot módosítja; ha hiányzik (vagy nem ehhez az ügyfélhez tartozik), új rekordot hoz létre. Új személynél hagyd el a mezőt: ha bármelyik elemben `\"id\": null` szerepel, a listából kimaradó meglévő személyek nem törlődnek.",
                                                    "example": 12
                                                },
                                                "name": {
                                                    "type": "string",
                                                    "description": "Név.",
                                                    "maxLength": 255,
                                                    "example": "Kiss Elemér"
                                                },
                                                "birth_name": {
                                                    "type": "string",
                                                    "description": "Születési név.",
                                                    "maxLength": 255,
                                                    "nullable": true,
                                                    "example": "Kiss Elemér"
                                                },
                                                "birth_place": {
                                                    "type": "string",
                                                    "description": "Születési hely.",
                                                    "maxLength": 255,
                                                    "nullable": true,
                                                    "example": "Szeged"
                                                },
                                                "birth_date": {
                                                    "type": "string",
                                                    "format": "date",
                                                    "description": "Születési dátum. Formátum: ÉÉÉÉ-HH-NN.",
                                                    "nullable": true,
                                                    "example": "1975-04-12"
                                                },
                                                "mother_name": {
                                                    "type": "string",
                                                    "description": "Anyja születési neve.",
                                                    "maxLength": 255,
                                                    "nullable": true,
                                                    "example": "Nagy Ilona"
                                                },
                                                "nationality": {
                                                    "type": "string",
                                                    "description": "Állampolgárság. ISO 3166-1 alpha-2 országkód (a `GET /configs` válasz `countries` kulcsai közül, pl. `HU`).",
                                                    "nullable": true,
                                                    "example": "HU"
                                                },
                                                "nationality2": {
                                                    "type": "string",
                                                    "description": "Második állampolgárság. ISO 3166-1 alpha-2 országkód (a `GET /configs` válasz `countries` kulcsai közül, pl. `HU`).",
                                                    "nullable": true
                                                },
                                                "id_document_type": {
                                                    "type": "string",
                                                    "enum": [
                                                        "national_id_card",
                                                        "passport",
                                                        "driver_license",
                                                        "student_id_card",
                                                        "other",
                                                        null
                                                    ],
                                                    "description": "Igazolvány típusa: `national_id_card` – személyigazolvány, `passport` – útlevél, `driver_license` – jogosítvány, `student_id_card` – diákigazolvány, `other` – egyéb.",
                                                    "nullable": true,
                                                    "example": "national_id_card"
                                                },
                                                "id_document_number": {
                                                    "type": "string",
                                                    "description": "Igazolvány száma.",
                                                    "maxLength": 255,
                                                    "nullable": true,
                                                    "example": "123456AB"
                                                },
                                                "id_document_expiration": {
                                                    "type": "string",
                                                    "format": "date",
                                                    "description": "Igazolvány lejárata. Formátum: ÉÉÉÉ-HH-NN.",
                                                    "nullable": true,
                                                    "example": "2031-09-30"
                                                },
                                                "country": {
                                                    "type": "string",
                                                    "description": "Lakcím országa. ISO 3166-1 alpha-2 országkód (a `GET /configs` válasz `countries` kulcsai közül, pl. `HU`).",
                                                    "nullable": true,
                                                    "example": "HU"
                                                },
                                                "address": {
                                                    "type": "string",
                                                    "description": "Lakcím (ország nélkül).",
                                                    "maxLength": 255,
                                                    "nullable": true,
                                                    "example": "6720 Szeged, Példa utca 1."
                                                },
                                                "title": {
                                                    "type": "string",
                                                    "description": "Beosztás (pl. ügyvezető).",
                                                    "maxLength": 255,
                                                    "nullable": true,
                                                    "example": "ügyvezető"
                                                }
                                            }
                                        }
                                    },
                                    "owners": {
                                        "type": "array",
                                        "description": "Tulajdonosok. Csak `company` típusú ügyfélnél számít: a tömb a teljes listát jelenti, ami nincs benne (vagy `id` nélkül szerepel), az törlődik, illetve újként jön létre (új azonosítóval, a változásnaplóban is újként). Más ügyféltípusnál az ügyfél minden ilyen személye törlődik.",
                                        "items": {
                                            "type": "object",
                                            "required": [
                                                "name",
                                                "type"
                                            ],
                                            "properties": {
                                                "id": {
                                                    "type": "integer",
                                                    "minimum": 1,
                                                    "nullable": true,
                                                    "description": "Egy meglévő tulajdonos azonosítója (az ügyfél válaszának tömbjéből). Ha megadod és az ügyfélhez tartozik, azt a rekordot módosítja; ha hiányzik (vagy nem ehhez az ügyfélhez tartozik), új rekordot hoz létre. Új személynél hagyd el a mezőt: ha bármelyik elemben `\"id\": null` szerepel, a listából kimaradó meglévő személyek nem törlődnek.",
                                                    "example": 12
                                                },
                                                "name": {
                                                    "type": "string",
                                                    "description": "Név.",
                                                    "maxLength": 255,
                                                    "example": "Kiss Elemér"
                                                },
                                                "birth_name": {
                                                    "type": "string",
                                                    "description": "Születési név.",
                                                    "maxLength": 255,
                                                    "nullable": true,
                                                    "example": "Kiss Elemér"
                                                },
                                                "birth_place": {
                                                    "type": "string",
                                                    "description": "Születési hely.",
                                                    "maxLength": 255,
                                                    "nullable": true,
                                                    "example": "Szeged"
                                                },
                                                "birth_date": {
                                                    "type": "string",
                                                    "format": "date",
                                                    "description": "Születési dátum. Formátum: ÉÉÉÉ-HH-NN.",
                                                    "nullable": true,
                                                    "example": "1975-04-12"
                                                },
                                                "mother_name": {
                                                    "type": "string",
                                                    "description": "Anyja születési neve.",
                                                    "maxLength": 255,
                                                    "nullable": true,
                                                    "example": "Nagy Ilona"
                                                },
                                                "nationality": {
                                                    "type": "string",
                                                    "description": "Állampolgárság. ISO 3166-1 alpha-2 országkód (a `GET /configs` válasz `countries` kulcsai közül, pl. `HU`).",
                                                    "nullable": true,
                                                    "example": "HU"
                                                },
                                                "nationality2": {
                                                    "type": "string",
                                                    "description": "Második állampolgárság. ISO 3166-1 alpha-2 országkód (a `GET /configs` válasz `countries` kulcsai közül, pl. `HU`).",
                                                    "nullable": true
                                                },
                                                "id_document_type": {
                                                    "type": "string",
                                                    "enum": [
                                                        "national_id_card",
                                                        "passport",
                                                        "driver_license",
                                                        "student_id_card",
                                                        "other",
                                                        null
                                                    ],
                                                    "description": "Igazolvány típusa: `national_id_card` – személyigazolvány, `passport` – útlevél, `driver_license` – jogosítvány, `student_id_card` – diákigazolvány, `other` – egyéb.",
                                                    "nullable": true,
                                                    "example": "national_id_card"
                                                },
                                                "id_document_number": {
                                                    "type": "string",
                                                    "description": "Igazolvány száma.",
                                                    "maxLength": 255,
                                                    "nullable": true,
                                                    "example": "123456AB"
                                                },
                                                "id_document_expiration": {
                                                    "type": "string",
                                                    "format": "date",
                                                    "description": "Igazolvány lejárata. Formátum: ÉÉÉÉ-HH-NN.",
                                                    "nullable": true,
                                                    "example": "2031-09-30"
                                                },
                                                "country": {
                                                    "type": "string",
                                                    "description": "Lakcím országa. ISO 3166-1 alpha-2 országkód (a `GET /configs` válasz `countries` kulcsai közül, pl. `HU`).",
                                                    "nullable": true,
                                                    "example": "HU"
                                                },
                                                "address": {
                                                    "type": "string",
                                                    "description": "Lakcím (ország nélkül).",
                                                    "maxLength": 255,
                                                    "nullable": true,
                                                    "example": "6720 Szeged, Példa utca 1."
                                                },
                                                "type": {
                                                    "type": "string",
                                                    "enum": [
                                                        "company",
                                                        "private_person",
                                                        "private_person_business"
                                                    ],
                                                    "description": "A tulajdonos típusa (Ügyféltípus: `company` – cég, szervezet; `private_person` – magánszemély; `private_person_business` – egyéni vállalkozó, őstermelő.) `company` típusnál a személyes adatok (születési adatok, anyja neve, állampolgárság, igazolvány) mentéskor törlődnek; `private_person` típusnál az adószám törlődik.",
                                                    "example": "private_person"
                                                },
                                                "tax_number": {
                                                    "type": "string",
                                                    "description": "A tulajdonos adószáma (cég vagy egyéni vállalkozó tulajdonosnál), 11 jegy kötőjelekkel vagy nélkülük, ellenőrzőszámmal ellenőrizve.",
                                                    "nullable": true,
                                                    "example": "12345676-2-13"
                                                }
                                            }
                                        }
                                    },
                                    "real_owners": {
                                        "type": "array",
                                        "description": "Tényleges tulajdonosok. Csak `company` típusú ügyfélnél számít: a tömb a teljes listát jelenti, ami nincs benne (vagy `id` nélkül szerepel), az törlődik, illetve újként jön létre (új azonosítóval, a változásnaplóban is újként). Más ügyféltípusnál az ügyfél minden ilyen személye törlődik.",
                                        "items": {
                                            "type": "object",
                                            "required": [
                                                "name"
                                            ],
                                            "properties": {
                                                "id": {
                                                    "type": "integer",
                                                    "minimum": 1,
                                                    "nullable": true,
                                                    "description": "Egy meglévő tényleges tulajdonos azonosítója (az ügyfél válaszának tömbjéből). Ha megadod és az ügyfélhez tartozik, azt a rekordot módosítja; ha hiányzik (vagy nem ehhez az ügyfélhez tartozik), új rekordot hoz létre. Új személynél hagyd el a mezőt: ha bármelyik elemben `\"id\": null` szerepel, a listából kimaradó meglévő személyek nem törlődnek.",
                                                    "example": 12
                                                },
                                                "name": {
                                                    "type": "string",
                                                    "description": "Név.",
                                                    "maxLength": 255,
                                                    "example": "Kiss Elemér"
                                                },
                                                "birth_name": {
                                                    "type": "string",
                                                    "description": "Születési név.",
                                                    "maxLength": 255,
                                                    "nullable": true,
                                                    "example": "Kiss Elemér"
                                                },
                                                "birth_place": {
                                                    "type": "string",
                                                    "description": "Születési hely.",
                                                    "maxLength": 255,
                                                    "nullable": true,
                                                    "example": "Szeged"
                                                },
                                                "birth_date": {
                                                    "type": "string",
                                                    "format": "date",
                                                    "description": "Születési dátum. Formátum: ÉÉÉÉ-HH-NN.",
                                                    "nullable": true,
                                                    "example": "1975-04-12"
                                                },
                                                "mother_name": {
                                                    "type": "string",
                                                    "description": "Anyja születési neve.",
                                                    "maxLength": 255,
                                                    "nullable": true,
                                                    "example": "Nagy Ilona"
                                                },
                                                "nationality": {
                                                    "type": "string",
                                                    "description": "Állampolgárság. ISO 3166-1 alpha-2 országkód (a `GET /configs` válasz `countries` kulcsai közül, pl. `HU`).",
                                                    "nullable": true,
                                                    "example": "HU"
                                                },
                                                "nationality2": {
                                                    "type": "string",
                                                    "description": "Második állampolgárság. ISO 3166-1 alpha-2 országkód (a `GET /configs` válasz `countries` kulcsai közül, pl. `HU`).",
                                                    "nullable": true
                                                },
                                                "id_document_type": {
                                                    "type": "string",
                                                    "enum": [
                                                        "national_id_card",
                                                        "passport",
                                                        "driver_license",
                                                        "student_id_card",
                                                        "other",
                                                        null
                                                    ],
                                                    "description": "Igazolvány típusa: `national_id_card` – személyigazolvány, `passport` – útlevél, `driver_license` – jogosítvány, `student_id_card` – diákigazolvány, `other` – egyéb.",
                                                    "nullable": true,
                                                    "example": "national_id_card"
                                                },
                                                "id_document_number": {
                                                    "type": "string",
                                                    "description": "Igazolvány száma.",
                                                    "maxLength": 255,
                                                    "nullable": true,
                                                    "example": "123456AB"
                                                },
                                                "id_document_expiration": {
                                                    "type": "string",
                                                    "format": "date",
                                                    "description": "Igazolvány lejárata. Formátum: ÉÉÉÉ-HH-NN.",
                                                    "nullable": true,
                                                    "example": "2031-09-30"
                                                },
                                                "country": {
                                                    "type": "string",
                                                    "description": "Lakcím országa. ISO 3166-1 alpha-2 országkód (a `GET /configs` válasz `countries` kulcsai közül, pl. `HU`).",
                                                    "nullable": true,
                                                    "example": "HU"
                                                },
                                                "address": {
                                                    "type": "string",
                                                    "description": "Lakcím (ország nélkül).",
                                                    "maxLength": 255,
                                                    "nullable": true,
                                                    "example": "6720 Szeged, Példa utca 1."
                                                },
                                                "pep": {
                                                    "type": "boolean",
                                                    "description": "Kiemelt közszereplő-e.",
                                                    "nullable": true,
                                                    "example": false
                                                },
                                                "pep_type": {
                                                    "type": "string",
                                                    "enum": [
                                                        "a",
                                                        "b",
                                                        "c",
                                                        "d",
                                                        "e",
                                                        "f",
                                                        "g",
                                                        "h",
                                                        null
                                                    ],
                                                    "description": "Kiemelt közszereplői kategória a pénzmosási törvény szerinti pont betűjele (`a`–`h`; a teljes szöveg a `GET /configs` válasz `pep_types` mezőjében). Ha `pep` igaz, add meg.",
                                                    "nullable": true
                                                },
                                                "ownership_share": {
                                                    "type": "number",
                                                    "minimum": 0,
                                                    "maximum": 100,
                                                    "nullable": true,
                                                    "description": "Tulajdoni hányad százalékban (legfeljebb 2 tizedesjegy).",
                                                    "example": 50.5
                                                },
                                                "ownership_interest": {
                                                    "type": "string",
                                                    "description": "A tulajdoni érdekeltség jellege szövegesen.",
                                                    "maxLength": 255,
                                                    "nullable": true,
                                                    "example": "közvetlen tulajdon"
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "example": {
                                "company_id": null,
                                "name": "Példa Kft.",
                                "type": "company",
                                "tax_number": "12345676-2-13",
                                "company_registration_number": "06-09-123456",
                                "main_activity_code": "6920",
                                "country": "HU",
                                "address": "6720 Szeged, Példa utca 1.",
                                "contract_start": "2025-01-01",
                                "contract_end": null,
                                "emails": [
                                    "info@pelda.hu"
                                ],
                                "notification": false,
                                "note": null,
                                "risk_classification_frequency_in_months": 12,
                                "ttny_check_result": "match",
                                "ttny_check_date": "2025-01-05",
                                "ttny_check_note": null,
                                "risk_classification_risk": "average",
                                "risk_classification_reason": null,
                                "risk_classification_date": "2025-01-05",
                                "representatives": [
                                    {
                                        "name": "Kiss Elemér",
                                        "title": "ügyvezető",
                                        "birth_date": "1975-04-12",
                                        "mother_name": "Nagy Ilona",
                                        "country": "HU",
                                        "address": "6720 Szeged, Példa utca 1."
                                    }
                                ],
                                "owners": [
                                    {
                                        "name": "Kiss Elemér",
                                        "type": "private_person",
                                        "country": "HU"
                                    }
                                ],
                                "real_owners": [
                                    {
                                        "name": "Kiss Elemér",
                                        "pep": false,
                                        "pep_type": null,
                                        "ownership_share": 100,
                                        "country": "HU"
                                    }
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "A létrehozott ügyfél a teljes (egyedi lekérés szerinti) változatban.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Client"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthenticated"
                    },
                    "402": {
                        "$ref": "#/components/responses/PaymentRequired"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationError"
                    }
                }
            }
        },
        "/clients/{id}": {
            "get": {
                "tags": [
                    "Ügyfelek"
                ],
                "summary": "Egy ügyfél adatai",
                "operationId": "getClient",
                "description": "Visszaadja egy ügyfél teljes adatlapját: a lista-változat mezőin felül a kockázati besorolások előzményét, a dokumentumokat, a változásnaplót és a listás ellenőrzések naplóját. Más felhasználó ügyfelére 404-et ad. Aktív előfizetés vagy próbaidő kell hozzá (bármely csomag), különben 402.",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "description": "Az ügyfél azonosítója.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1
                        },
                        "example": 101
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Az ügyfél.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Client"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthenticated"
                    },
                    "402": {
                        "$ref": "#/components/responses/PaymentRequired"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    }
                }
            },
            "put": {
                "tags": [
                    "Ügyfelek"
                ],
                "summary": "Ügyfél módosítása (teljes csere)",
                "operationId": "updateClient",
                "description": "Felülírja az ügyfél összes mezőjét a kérés szerint: ami kimarad, az `null` lesz (az `emails` üres lista), ezért mindig a teljes ügyfelet küldd. `company` típusnál a `representatives`, `owners`, `real_owners` tömb a teljes listát jelenti: a kimaradó személyek törlődnek, a meglévők megtartásához küldd az `id`-jukat; ha a tömb hiányzik, az összes ilyen személy törlődik. Kockázati besorolást itt nem lehet felvenni. A név megváltoztatása nullázza a `last_sanction_check` értékét. Aktív előfizetés vagy próbaidő kell hozzá (bármely csomag), különben 402. Mentés után lefut a listás ellenőrzés a nemzetközi és hazai szankciós és kiemelt közszereplői listákon (az ügyfélre és kapcsolódó személyeire); ha az eredmény változott, új bejegyzés kerül a `sanction_checks` naplóba, és új találat esetén a fiók e-mail-címére értesítés megy.",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "description": "Az ügyfél azonosítója.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1
                        },
                        "example": 101
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "name",
                                    "type",
                                    "notification",
                                    "risk_classification_frequency_in_months"
                                ],
                                "properties": {
                                    "company_id": {
                                        "type": "integer",
                                        "nullable": true,
                                        "description": "Az ügyfélcsoport (`Company`) azonosítója; csak a saját ügyfélcsoportod lehet.",
                                        "example": 3
                                    },
                                    "name": {
                                        "type": "string",
                                        "description": "Az ügyfél neve (cégnév vagy személynév).",
                                        "maxLength": 255,
                                        "example": "Példa Kft."
                                    },
                                    "type": {
                                        "type": "string",
                                        "enum": [
                                            "company",
                                            "private_person",
                                            "private_person_business"
                                        ],
                                        "description": "Ügyféltípus: `company` – cég, szervezet; `private_person` – magánszemély; `private_person_business` – egyéni vállalkozó, őstermelő.",
                                        "example": "company"
                                    },
                                    "tax_number": {
                                        "type": "string",
                                        "description": "Adószám: 11 jegy kötőjelekkel vagy nélkülük (pl. 12345676-2-13), ellenőrzőszámmal ellenőrizve. `private_person` típusnál mentéskor törlődik.",
                                        "nullable": true,
                                        "example": "12345676-2-13"
                                    },
                                    "company_registration_number": {
                                        "type": "string",
                                        "description": "Cégjegyzékszám vagy nyilvántartási szám. `private_person` típusnál törlődik.",
                                        "maxLength": 255,
                                        "nullable": true,
                                        "example": "06-09-123456"
                                    },
                                    "main_activity_code": {
                                        "type": "string",
                                        "description": "Főtevékenység négyjegyű TEÁOR-kódja (a `GET /configs` válasz `main_activities` kulcsai közül). `private_person` típusnál törlődik.",
                                        "nullable": true,
                                        "example": "6920"
                                    },
                                    "birth_name": {
                                        "type": "string",
                                        "description": "Születési név. `company` típusnál törlődik.",
                                        "maxLength": 255,
                                        "nullable": true
                                    },
                                    "birth_place": {
                                        "type": "string",
                                        "description": "Születési hely. `company` típusnál törlődik.",
                                        "maxLength": 255,
                                        "nullable": true
                                    },
                                    "birth_date": {
                                        "type": "string",
                                        "format": "date",
                                        "description": "Születési dátum. `company` típusnál törlődik. Formátum: ÉÉÉÉ-HH-NN.",
                                        "nullable": true
                                    },
                                    "mother_name": {
                                        "type": "string",
                                        "description": "Anyja születési neve. `company` típusnál törlődik.",
                                        "maxLength": 255,
                                        "nullable": true
                                    },
                                    "nationality": {
                                        "type": "string",
                                        "description": "Állampolgárság. ISO 3166-1 alpha-2 országkód (a `GET /configs` válasz `countries` kulcsai közül, pl. `HU`). `company` típusnál törlődik.",
                                        "nullable": true
                                    },
                                    "nationality2": {
                                        "type": "string",
                                        "description": "Második állampolgárság. ISO 3166-1 alpha-2 országkód (a `GET /configs` válasz `countries` kulcsai közül, pl. `HU`). `company` típusnál törlődik.",
                                        "nullable": true
                                    },
                                    "id_document_type": {
                                        "type": "string",
                                        "enum": [
                                            "national_id_card",
                                            "passport",
                                            "driver_license",
                                            "student_id_card",
                                            "other",
                                            null
                                        ],
                                        "description": "Igazolvány típusa: `national_id_card` – személyigazolvány, `passport` – útlevél, `driver_license` – jogosítvány, `student_id_card` – diákigazolvány, `other` – egyéb. `company` típusnál törlődik.",
                                        "nullable": true
                                    },
                                    "id_document_number": {
                                        "type": "string",
                                        "description": "Igazolvány száma. `company` típusnál törlődik.",
                                        "maxLength": 255,
                                        "nullable": true
                                    },
                                    "id_document_expiration": {
                                        "type": "string",
                                        "format": "date",
                                        "description": "Igazolvány lejárata. `company` típusnál törlődik. Formátum: ÉÉÉÉ-HH-NN.",
                                        "nullable": true
                                    },
                                    "pep": {
                                        "type": "boolean",
                                        "description": "Kiemelt közszereplő-e (magánszemélynél, egyéni vállalkozónál). `company` típusnál törlődik.",
                                        "nullable": true,
                                        "example": false
                                    },
                                    "pep_type": {
                                        "type": "string",
                                        "enum": [
                                            "a",
                                            "b",
                                            "c",
                                            "d",
                                            "e",
                                            "f",
                                            "g",
                                            "h",
                                            null
                                        ],
                                        "description": "Kiemelt közszereplői kategória a pénzmosási törvény szerinti pont betűjele (`a`–`h`; a teljes szöveg a `GET /configs` válasz `pep_types` mezőjében). Kötelező, ha `pep` igaz. `company` típusnál törlődik.",
                                        "nullable": true
                                    },
                                    "country": {
                                        "type": "string",
                                        "description": "Székhely/lakcím országa. ISO 3166-1 alpha-2 országkód (a `GET /configs` válasz `countries` kulcsai közül, pl. `HU`).",
                                        "nullable": true,
                                        "example": "HU"
                                    },
                                    "address": {
                                        "type": "string",
                                        "description": "Székhely vagy lakcím (ország nélkül).",
                                        "maxLength": 255,
                                        "nullable": true,
                                        "example": "6720 Szeged, Példa utca 1."
                                    },
                                    "contract_start": {
                                        "type": "string",
                                        "format": "date",
                                        "description": "Az ügyfélkapcsolat (szerződés) kezdete. Formátum: ÉÉÉÉ-HH-NN.",
                                        "nullable": true,
                                        "example": "2025-01-01"
                                    },
                                    "contract_end": {
                                        "type": "string",
                                        "format": "date",
                                        "description": "Az ügyfélkapcsolat vége. Ha a mai napnál korábbi, az ügyfél inaktív. Az API nem ellenőrzi, hogy a kezdetnél későbbi-e. Formátum: ÉÉÉÉ-HH-NN.",
                                        "nullable": true
                                    },
                                    "emails": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "email"
                                        },
                                        "description": "Az ügyfél e-mail-címei (az ügyfélnek szóló értesítésekhez). Elhagyva vagy `null` értékkel üres lista lesz.",
                                        "nullable": true
                                    },
                                    "notification": {
                                        "type": "boolean",
                                        "description": "Kapjon-e az ügyfél e-mail-értesítést (pl. lejáró igazolványról). A mező bármely csomaggal menthető, de az értesítés csak a Prémium csomag „ügyfélértesítés” funkciójával megy ki.",
                                        "example": false
                                    },
                                    "note": {
                                        "type": "string",
                                        "description": "Megjegyzés.",
                                        "maxLength": 65535,
                                        "nullable": true
                                    },
                                    "risk_classification_frequency_in_months": {
                                        "type": "integer",
                                        "minimum": 1,
                                        "maximum": 12,
                                        "description": "A kockázati besorolás felülvizsgálatának gyakorisága hónapban; ebből számolódnak az esedékességi figyelmeztetések.",
                                        "example": 12
                                    },
                                    "ttny_check_result": {
                                        "type": "string",
                                        "enum": [
                                            "match",
                                            "differ",
                                            null
                                        ],
                                        "description": "A tényleges tulajdonosi nyilvántartással (TTNY) való egyeztetés eredménye: `match` – egyezés, `differ` – eltérés. Csak `company` típusnál marad meg.",
                                        "nullable": true
                                    },
                                    "ttny_check_date": {
                                        "type": "string",
                                        "format": "date",
                                        "description": "A TTNY-egyeztetés dátuma. Csak `company` típusnál marad meg. Formátum: ÉÉÉÉ-HH-NN.",
                                        "nullable": true
                                    },
                                    "ttny_check_note": {
                                        "type": "string",
                                        "description": "Megjegyzés a TTNY-egyeztetéshez. Csak `company` típusnál marad meg.",
                                        "maxLength": 255,
                                        "nullable": true
                                    },
                                    "representatives": {
                                        "type": "array",
                                        "description": "Képviselők. Csak `company` típusú ügyfélnél számít: a tömb a teljes listát jelenti, ami nincs benne (vagy `id` nélkül szerepel), az törlődik, illetve újként jön létre (új azonosítóval, a változásnaplóban is újként). Más ügyféltípusnál az ügyfél minden ilyen személye törlődik.",
                                        "items": {
                                            "type": "object",
                                            "required": [
                                                "name"
                                            ],
                                            "properties": {
                                                "id": {
                                                    "type": "integer",
                                                    "minimum": 1,
                                                    "nullable": true,
                                                    "description": "Egy meglévő képviselő azonosítója (az ügyfél válaszának tömbjéből). Ha megadod és az ügyfélhez tartozik, azt a rekordot módosítja; ha hiányzik (vagy nem ehhez az ügyfélhez tartozik), új rekordot hoz létre. Új személynél hagyd el a mezőt: ha bármelyik elemben `\"id\": null` szerepel, a listából kimaradó meglévő személyek nem törlődnek.",
                                                    "example": 12
                                                },
                                                "name": {
                                                    "type": "string",
                                                    "description": "Név.",
                                                    "maxLength": 255,
                                                    "example": "Kiss Elemér"
                                                },
                                                "birth_name": {
                                                    "type": "string",
                                                    "description": "Születési név.",
                                                    "maxLength": 255,
                                                    "nullable": true,
                                                    "example": "Kiss Elemér"
                                                },
                                                "birth_place": {
                                                    "type": "string",
                                                    "description": "Születési hely.",
                                                    "maxLength": 255,
                                                    "nullable": true,
                                                    "example": "Szeged"
                                                },
                                                "birth_date": {
                                                    "type": "string",
                                                    "format": "date",
                                                    "description": "Születési dátum. Formátum: ÉÉÉÉ-HH-NN.",
                                                    "nullable": true,
                                                    "example": "1975-04-12"
                                                },
                                                "mother_name": {
                                                    "type": "string",
                                                    "description": "Anyja születési neve.",
                                                    "maxLength": 255,
                                                    "nullable": true,
                                                    "example": "Nagy Ilona"
                                                },
                                                "nationality": {
                                                    "type": "string",
                                                    "description": "Állampolgárság. ISO 3166-1 alpha-2 országkód (a `GET /configs` válasz `countries` kulcsai közül, pl. `HU`).",
                                                    "nullable": true,
                                                    "example": "HU"
                                                },
                                                "nationality2": {
                                                    "type": "string",
                                                    "description": "Második állampolgárság. ISO 3166-1 alpha-2 országkód (a `GET /configs` válasz `countries` kulcsai közül, pl. `HU`).",
                                                    "nullable": true
                                                },
                                                "id_document_type": {
                                                    "type": "string",
                                                    "enum": [
                                                        "national_id_card",
                                                        "passport",
                                                        "driver_license",
                                                        "student_id_card",
                                                        "other",
                                                        null
                                                    ],
                                                    "description": "Igazolvány típusa: `national_id_card` – személyigazolvány, `passport` – útlevél, `driver_license` – jogosítvány, `student_id_card` – diákigazolvány, `other` – egyéb.",
                                                    "nullable": true,
                                                    "example": "national_id_card"
                                                },
                                                "id_document_number": {
                                                    "type": "string",
                                                    "description": "Igazolvány száma.",
                                                    "maxLength": 255,
                                                    "nullable": true,
                                                    "example": "123456AB"
                                                },
                                                "id_document_expiration": {
                                                    "type": "string",
                                                    "format": "date",
                                                    "description": "Igazolvány lejárata. Formátum: ÉÉÉÉ-HH-NN.",
                                                    "nullable": true,
                                                    "example": "2031-09-30"
                                                },
                                                "country": {
                                                    "type": "string",
                                                    "description": "Lakcím országa. ISO 3166-1 alpha-2 országkód (a `GET /configs` válasz `countries` kulcsai közül, pl. `HU`).",
                                                    "nullable": true,
                                                    "example": "HU"
                                                },
                                                "address": {
                                                    "type": "string",
                                                    "description": "Lakcím (ország nélkül).",
                                                    "maxLength": 255,
                                                    "nullable": true,
                                                    "example": "6720 Szeged, Példa utca 1."
                                                },
                                                "title": {
                                                    "type": "string",
                                                    "description": "Beosztás (pl. ügyvezető).",
                                                    "maxLength": 255,
                                                    "nullable": true,
                                                    "example": "ügyvezető"
                                                }
                                            }
                                        }
                                    },
                                    "owners": {
                                        "type": "array",
                                        "description": "Tulajdonosok. Csak `company` típusú ügyfélnél számít: a tömb a teljes listát jelenti, ami nincs benne (vagy `id` nélkül szerepel), az törlődik, illetve újként jön létre (új azonosítóval, a változásnaplóban is újként). Más ügyféltípusnál az ügyfél minden ilyen személye törlődik.",
                                        "items": {
                                            "type": "object",
                                            "required": [
                                                "name",
                                                "type"
                                            ],
                                            "properties": {
                                                "id": {
                                                    "type": "integer",
                                                    "minimum": 1,
                                                    "nullable": true,
                                                    "description": "Egy meglévő tulajdonos azonosítója (az ügyfél válaszának tömbjéből). Ha megadod és az ügyfélhez tartozik, azt a rekordot módosítja; ha hiányzik (vagy nem ehhez az ügyfélhez tartozik), új rekordot hoz létre. Új személynél hagyd el a mezőt: ha bármelyik elemben `\"id\": null` szerepel, a listából kimaradó meglévő személyek nem törlődnek.",
                                                    "example": 12
                                                },
                                                "name": {
                                                    "type": "string",
                                                    "description": "Név.",
                                                    "maxLength": 255,
                                                    "example": "Kiss Elemér"
                                                },
                                                "birth_name": {
                                                    "type": "string",
                                                    "description": "Születési név.",
                                                    "maxLength": 255,
                                                    "nullable": true,
                                                    "example": "Kiss Elemér"
                                                },
                                                "birth_place": {
                                                    "type": "string",
                                                    "description": "Születési hely.",
                                                    "maxLength": 255,
                                                    "nullable": true,
                                                    "example": "Szeged"
                                                },
                                                "birth_date": {
                                                    "type": "string",
                                                    "format": "date",
                                                    "description": "Születési dátum. Formátum: ÉÉÉÉ-HH-NN.",
                                                    "nullable": true,
                                                    "example": "1975-04-12"
                                                },
                                                "mother_name": {
                                                    "type": "string",
                                                    "description": "Anyja születési neve.",
                                                    "maxLength": 255,
                                                    "nullable": true,
                                                    "example": "Nagy Ilona"
                                                },
                                                "nationality": {
                                                    "type": "string",
                                                    "description": "Állampolgárság. ISO 3166-1 alpha-2 országkód (a `GET /configs` válasz `countries` kulcsai közül, pl. `HU`).",
                                                    "nullable": true,
                                                    "example": "HU"
                                                },
                                                "nationality2": {
                                                    "type": "string",
                                                    "description": "Második állampolgárság. ISO 3166-1 alpha-2 országkód (a `GET /configs` válasz `countries` kulcsai közül, pl. `HU`).",
                                                    "nullable": true
                                                },
                                                "id_document_type": {
                                                    "type": "string",
                                                    "enum": [
                                                        "national_id_card",
                                                        "passport",
                                                        "driver_license",
                                                        "student_id_card",
                                                        "other",
                                                        null
                                                    ],
                                                    "description": "Igazolvány típusa: `national_id_card` – személyigazolvány, `passport` – útlevél, `driver_license` – jogosítvány, `student_id_card` – diákigazolvány, `other` – egyéb.",
                                                    "nullable": true,
                                                    "example": "national_id_card"
                                                },
                                                "id_document_number": {
                                                    "type": "string",
                                                    "description": "Igazolvány száma.",
                                                    "maxLength": 255,
                                                    "nullable": true,
                                                    "example": "123456AB"
                                                },
                                                "id_document_expiration": {
                                                    "type": "string",
                                                    "format": "date",
                                                    "description": "Igazolvány lejárata. Formátum: ÉÉÉÉ-HH-NN.",
                                                    "nullable": true,
                                                    "example": "2031-09-30"
                                                },
                                                "country": {
                                                    "type": "string",
                                                    "description": "Lakcím országa. ISO 3166-1 alpha-2 országkód (a `GET /configs` válasz `countries` kulcsai közül, pl. `HU`).",
                                                    "nullable": true,
                                                    "example": "HU"
                                                },
                                                "address": {
                                                    "type": "string",
                                                    "description": "Lakcím (ország nélkül).",
                                                    "maxLength": 255,
                                                    "nullable": true,
                                                    "example": "6720 Szeged, Példa utca 1."
                                                },
                                                "type": {
                                                    "type": "string",
                                                    "enum": [
                                                        "company",
                                                        "private_person",
                                                        "private_person_business"
                                                    ],
                                                    "description": "A tulajdonos típusa (Ügyféltípus: `company` – cég, szervezet; `private_person` – magánszemély; `private_person_business` – egyéni vállalkozó, őstermelő.) `company` típusnál a személyes adatok (születési adatok, anyja neve, állampolgárság, igazolvány) mentéskor törlődnek; `private_person` típusnál az adószám törlődik.",
                                                    "example": "private_person"
                                                },
                                                "tax_number": {
                                                    "type": "string",
                                                    "description": "A tulajdonos adószáma (cég vagy egyéni vállalkozó tulajdonosnál), 11 jegy kötőjelekkel vagy nélkülük, ellenőrzőszámmal ellenőrizve.",
                                                    "nullable": true,
                                                    "example": "12345676-2-13"
                                                }
                                            }
                                        }
                                    },
                                    "real_owners": {
                                        "type": "array",
                                        "description": "Tényleges tulajdonosok. Csak `company` típusú ügyfélnél számít: a tömb a teljes listát jelenti, ami nincs benne (vagy `id` nélkül szerepel), az törlődik, illetve újként jön létre (új azonosítóval, a változásnaplóban is újként). Más ügyféltípusnál az ügyfél minden ilyen személye törlődik.",
                                        "items": {
                                            "type": "object",
                                            "required": [
                                                "name"
                                            ],
                                            "properties": {
                                                "id": {
                                                    "type": "integer",
                                                    "minimum": 1,
                                                    "nullable": true,
                                                    "description": "Egy meglévő tényleges tulajdonos azonosítója (az ügyfél válaszának tömbjéből). Ha megadod és az ügyfélhez tartozik, azt a rekordot módosítja; ha hiányzik (vagy nem ehhez az ügyfélhez tartozik), új rekordot hoz létre. Új személynél hagyd el a mezőt: ha bármelyik elemben `\"id\": null` szerepel, a listából kimaradó meglévő személyek nem törlődnek.",
                                                    "example": 12
                                                },
                                                "name": {
                                                    "type": "string",
                                                    "description": "Név.",
                                                    "maxLength": 255,
                                                    "example": "Kiss Elemér"
                                                },
                                                "birth_name": {
                                                    "type": "string",
                                                    "description": "Születési név.",
                                                    "maxLength": 255,
                                                    "nullable": true,
                                                    "example": "Kiss Elemér"
                                                },
                                                "birth_place": {
                                                    "type": "string",
                                                    "description": "Születési hely.",
                                                    "maxLength": 255,
                                                    "nullable": true,
                                                    "example": "Szeged"
                                                },
                                                "birth_date": {
                                                    "type": "string",
                                                    "format": "date",
                                                    "description": "Születési dátum. Formátum: ÉÉÉÉ-HH-NN.",
                                                    "nullable": true,
                                                    "example": "1975-04-12"
                                                },
                                                "mother_name": {
                                                    "type": "string",
                                                    "description": "Anyja születési neve.",
                                                    "maxLength": 255,
                                                    "nullable": true,
                                                    "example": "Nagy Ilona"
                                                },
                                                "nationality": {
                                                    "type": "string",
                                                    "description": "Állampolgárság. ISO 3166-1 alpha-2 országkód (a `GET /configs` válasz `countries` kulcsai közül, pl. `HU`).",
                                                    "nullable": true,
                                                    "example": "HU"
                                                },
                                                "nationality2": {
                                                    "type": "string",
                                                    "description": "Második állampolgárság. ISO 3166-1 alpha-2 országkód (a `GET /configs` válasz `countries` kulcsai közül, pl. `HU`).",
                                                    "nullable": true
                                                },
                                                "id_document_type": {
                                                    "type": "string",
                                                    "enum": [
                                                        "national_id_card",
                                                        "passport",
                                                        "driver_license",
                                                        "student_id_card",
                                                        "other",
                                                        null
                                                    ],
                                                    "description": "Igazolvány típusa: `national_id_card` – személyigazolvány, `passport` – útlevél, `driver_license` – jogosítvány, `student_id_card` – diákigazolvány, `other` – egyéb.",
                                                    "nullable": true,
                                                    "example": "national_id_card"
                                                },
                                                "id_document_number": {
                                                    "type": "string",
                                                    "description": "Igazolvány száma.",
                                                    "maxLength": 255,
                                                    "nullable": true,
                                                    "example": "123456AB"
                                                },
                                                "id_document_expiration": {
                                                    "type": "string",
                                                    "format": "date",
                                                    "description": "Igazolvány lejárata. Formátum: ÉÉÉÉ-HH-NN.",
                                                    "nullable": true,
                                                    "example": "2031-09-30"
                                                },
                                                "country": {
                                                    "type": "string",
                                                    "description": "Lakcím országa. ISO 3166-1 alpha-2 országkód (a `GET /configs` válasz `countries` kulcsai közül, pl. `HU`).",
                                                    "nullable": true,
                                                    "example": "HU"
                                                },
                                                "address": {
                                                    "type": "string",
                                                    "description": "Lakcím (ország nélkül).",
                                                    "maxLength": 255,
                                                    "nullable": true,
                                                    "example": "6720 Szeged, Példa utca 1."
                                                },
                                                "pep": {
                                                    "type": "boolean",
                                                    "description": "Kiemelt közszereplő-e.",
                                                    "nullable": true,
                                                    "example": false
                                                },
                                                "pep_type": {
                                                    "type": "string",
                                                    "enum": [
                                                        "a",
                                                        "b",
                                                        "c",
                                                        "d",
                                                        "e",
                                                        "f",
                                                        "g",
                                                        "h",
                                                        null
                                                    ],
                                                    "description": "Kiemelt közszereplői kategória a pénzmosási törvény szerinti pont betűjele (`a`–`h`; a teljes szöveg a `GET /configs` válasz `pep_types` mezőjében). Ha `pep` igaz, add meg.",
                                                    "nullable": true
                                                },
                                                "ownership_share": {
                                                    "type": "number",
                                                    "minimum": 0,
                                                    "maximum": 100,
                                                    "nullable": true,
                                                    "description": "Tulajdoni hányad százalékban (legfeljebb 2 tizedesjegy).",
                                                    "example": 50.5
                                                },
                                                "ownership_interest": {
                                                    "type": "string",
                                                    "description": "A tulajdoni érdekeltség jellege szövegesen.",
                                                    "maxLength": 255,
                                                    "nullable": true,
                                                    "example": "közvetlen tulajdon"
                                                }
                                            }
                                        }
                                    }
                                }
                            },
                            "example": {
                                "company_id": null,
                                "name": "Példa Kft.",
                                "type": "company",
                                "tax_number": "12345676-2-13",
                                "company_registration_number": "06-09-123456",
                                "main_activity_code": "6920",
                                "country": "HU",
                                "address": "6720 Szeged, Példa utca 1.",
                                "contract_start": "2025-01-01",
                                "contract_end": null,
                                "emails": [
                                    "info@pelda.hu"
                                ],
                                "notification": false,
                                "note": null,
                                "risk_classification_frequency_in_months": 12,
                                "ttny_check_result": "match",
                                "ttny_check_date": "2025-01-05",
                                "ttny_check_note": null,
                                "representatives": [
                                    {
                                        "id": 12,
                                        "name": "Kiss Elemér",
                                        "title": "ügyvezető",
                                        "birth_date": "1975-04-12",
                                        "mother_name": "Nagy Ilona",
                                        "country": "HU",
                                        "address": "6720 Szeged, Példa utca 1."
                                    }
                                ],
                                "owners": [
                                    {
                                        "name": "Kiss Elemér",
                                        "type": "private_person",
                                        "country": "HU"
                                    }
                                ],
                                "real_owners": [
                                    {
                                        "name": "Kiss Elemér",
                                        "pep": false,
                                        "pep_type": null,
                                        "ownership_share": 100,
                                        "country": "HU"
                                    }
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "A módosított ügyfél a teljes változatban.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Client"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthenticated"
                    },
                    "402": {
                        "$ref": "#/components/responses/PaymentRequired"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationError"
                    }
                }
            },
            "delete": {
                "tags": [
                    "Ügyfelek"
                ],
                "summary": "Ügyfél törlése",
                "operationId": "deleteClient",
                "description": "Véglegesen törli az ügyfelet a kapcsolódó személyekkel, kockázati besorolásokkal, változásnaplóval és a feltöltött dokumentumokkal (a fájlokkal együtt). Más felhasználó ügyfelére 404-et ad. Aktív előfizetés vagy próbaidő kell hozzá (bármely csomag), különben 402.",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "description": "Az ügyfél azonosítója.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1
                        },
                        "example": 101
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Sikeres művelet, üres választörzzsel."
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthenticated"
                    },
                    "402": {
                        "$ref": "#/components/responses/PaymentRequired"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    }
                }
            }
        },
        "/clients/search": {
            "post": {
                "tags": [
                    "Ügyfelek"
                ],
                "summary": "Ügyfelek keresése, szűrése, lapozása",
                "operationId": "searchClients",
                "description": "Lapozva adja vissza a felhasználó ügyfeleit szabad szöveges kereséssel, állapot-, figyelmeztetés-, típus-, kockázat- és ügyfélcsoport-szűrővel és rendezéssel; a szűrők egymással ÉS kapcsolatban vannak. Ugyanezek a szűrők működnek a felület ügyféllistáján. Aktív előfizetés vagy próbaidő kell hozzá (bármely csomag), különben 402. Az elemek a lista-változatot tartalmazzák.",
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "search": {
                                        "type": "string",
                                        "nullable": true,
                                        "description": "Szabad szöveges keresés. A szöveget szóközök és írásjelek (' ´ - . _ ( ) [ ] & , ; \") mentén szavakra bontja; minden szónak szerepelnie kell (részszövegként, kis- és nagybetű nem számít) legalább egy keresett mezőben. Keresett mezők – ügyfél: `name`, `tax_number` (kötőjelek nélkül tárolva, ezért a számjegyeket egyben érdemes megadni), `company_registration_number`, `main_activity_code`, `birth_name`, `birth_place`, `mother_name`, `id_document_number`, `address`, `emails`, `note`, `ttny_check_note`; ügyfélcsoport: `company.name`; kockázati besorolás: `risk_classifications.reason`; képviselő: `name`, `birth_name`, `birth_place`, `mother_name`, `id_document_number`, `address`, `title`; tulajdonos: `name`, `tax_number`, `birth_name`, `birth_place`, `mother_name`, `id_document_number`, `address`; tényleges tulajdonos: `name`, `birth_name`, `birth_place`, `mother_name`, `id_document_number`, `address`, `ownership_interest`; dokumentum: `name`, `note`.",
                                        "example": "példa kft"
                                    },
                                    "limit": {
                                        "type": "integer",
                                        "minimum": 1,
                                        "maximum": 200,
                                        "default": 200,
                                        "nullable": true,
                                        "description": "Oldalméret.",
                                        "example": 50
                                    },
                                    "page": {
                                        "type": "integer",
                                        "minimum": 1,
                                        "default": 1,
                                        "nullable": true,
                                        "description": "Oldalszám (1-től).",
                                        "example": 1
                                    },
                                    "order_column": {
                                        "type": "string",
                                        "enum": [
                                            "company_name",
                                            "name",
                                            "active",
                                            "type",
                                            "tax_number",
                                            "ttny_check_result",
                                            "ttny_check_date",
                                            "last_risk_classification_risk",
                                            "last_risk_classification_date",
                                            null
                                        ],
                                        "description": "Rendezési oszlop (alapértelmezés: `name`): `company_name` – az ügyfélcsoport neve; `name` – név; `active` – aktív/inaktív; `type` – ügyféltípus; `tax_number` – adószám; `ttny_check_result` – TTNY-eredmény; `ttny_check_date` – TTNY-dátum; `last_risk_classification_risk` – a legutóbbi besorolás szintje (alacsony < átlagos < magas); `last_risk_classification_date` – a legutóbbi besorolás dátuma.",
                                        "nullable": true,
                                        "example": "name"
                                    },
                                    "order_direction": {
                                        "type": "string",
                                        "enum": [
                                            "asc",
                                            "desc",
                                            null
                                        ],
                                        "description": "Rendezési irány (alapértelmezés: `asc`).",
                                        "nullable": true,
                                        "example": "asc"
                                    },
                                    "status": {
                                        "type": "string",
                                        "enum": [
                                            "active",
                                            "todo",
                                            "sanction",
                                            "inactive",
                                            null
                                        ],
                                        "description": "Állapotszűrő: `active` – aktív ügyfelek (nincs szerződésvég, vagy az ma vagy később van); `todo` – teendőt igénylő aktív ügyfelek (van legalább egy `warnings` elem); `sanction` – aktív ügyfelek ellenőrizetlen listás találattal (`has_sanctions`); `inactive` – lejárt szerződésvégű ügyfelek.",
                                        "nullable": true
                                    },
                                    "warning": {
                                        "type": "string",
                                        "enum": [
                                            "sanction",
                                            "risk",
                                            "id_document",
                                            "ttny",
                                            "missing_data",
                                            null
                                        ],
                                        "description": "Figyelmeztetés-csoport szűrő (csak aktív ügyfelek): `sanction` – `has_sanctions`; `risk` – `expired_risk_classification`, `pep_high_risk_classification`, `high_risk_country`, `missing_risk_classification`, `expiring_risk_classification`; `id_document` – `expired_id_document`, `expiring_id_document`; `ttny` – `ttny_check_result_differ`; `missing_data` – `missing_tax_number`, `missing_representatives`, `missing_owners`, `missing_real_owners`.",
                                        "nullable": true
                                    },
                                    "type": {
                                        "type": "string",
                                        "enum": [
                                            "company",
                                            "private_person",
                                            "private_person_business",
                                            null
                                        ],
                                        "description": "Ügyféltípus-szűrő. Ügyféltípus: `company` – cég, szervezet; `private_person` – magánszemély; `private_person_business` – egyéni vállalkozó, őstermelő.",
                                        "nullable": true
                                    },
                                    "risk": {
                                        "type": "string",
                                        "enum": [
                                            "low",
                                            "average",
                                            "high",
                                            "none",
                                            null
                                        ],
                                        "description": "Szűrés a legutóbbi kockázati besorolásra: `low` – alacsony, `average` – átlagos, `high` – magas, `none` – nincs még besorolás.",
                                        "nullable": true
                                    },
                                    "company_id": {
                                        "type": "string",
                                        "nullable": true,
                                        "description": "Ügyfélcsoport-szűrő: az ügyfélcsoport azonosítója SZÖVEGKÉNT (pl. `\"3\"`; JSON-számmal 422-t ad), vagy `none` a csoport nélküli ügyfelekhez.",
                                        "example": "3"
                                    }
                                }
                            },
                            "example": {
                                "search": "példa",
                                "status": "todo",
                                "risk": "none",
                                "order_column": "name",
                                "order_direction": "asc",
                                "limit": 50,
                                "page": 1
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "A találatok egy oldala.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ClientSearchResult"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthenticated"
                    },
                    "402": {
                        "$ref": "#/components/responses/PaymentRequired"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationError"
                    }
                }
            }
        },
        "/clients/get-counts": {
            "get": {
                "tags": [
                    "Ügyfelek"
                ],
                "summary": "Ügyfelek száma",
                "operationId": "getClientCounts",
                "description": "Visszaadja a felhasználó összes, aktív és inaktív ügyfelének számát. Aktív az ügyfél, ha nincs szerződésvége, vagy az a mai nap vagy későbbi. Előfizetés nélkül is hívható.",
                "responses": {
                    "200": {
                        "description": "Az ügyfélszámok.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "all",
                                        "active",
                                        "inactive"
                                    ],
                                    "properties": {
                                        "all": {
                                            "type": "integer",
                                            "description": "Összes ügyfél.",
                                            "example": 57
                                        },
                                        "active": {
                                            "type": "integer",
                                            "description": "Aktív ügyfelek.",
                                            "example": 50
                                        },
                                        "inactive": {
                                            "type": "integer",
                                            "description": "Inaktív (lejárt szerződésvégű) ügyfelek.",
                                            "example": 7
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthenticated"
                    }
                }
            }
        },
        "/clients/get-public-company-data": {
            "post": {
                "tags": [
                    "Ügyfelek"
                ],
                "summary": "Cégadatok lekérése adószám alapján",
                "operationId": "getPublicCompanyData",
                "description": "Adószám (vagy 8 jegyű törzsszám) alapján lekéri egy cég vagy egyéni vállalkozó nyilvános cégnyilvántartási adatait, a `POST /clients` kérés mezőneveivel; ügyfelet nem hoz létre. Prémium csomagban (a „tényleges tulajdonosok lekérdezése” funkció) a hiányzó tényleges tulajdonosokat további nyilvános nyilvántartásból is kikeresi. Aktív előfizetés vagy próbaidő kell hozzá (bármely csomag), különben 402. Ha nincs találat (vagy az adatforrás épp nem elérhető), a `company` értéke `null`.",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "tax_number"
                                ],
                                "properties": {
                                    "tax_number": {
                                        "type": "string",
                                        "description": "8 jegyű adószám-törzsszám vagy teljes 11 jegyű adószám, kötőjelekkel vagy nélkülük; a törzsszám ellenőrzőszámát ellenőrzi.",
                                        "example": "12345676-2-13"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "A cég adatai, vagy `null`, ha nincs találat.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "company"
                                    ],
                                    "properties": {
                                        "company": {
                                            "allOf": [
                                                {
                                                    "$ref": "#/components/schemas/PublicCompanyData"
                                                }
                                            ],
                                            "nullable": true,
                                            "description": "A cég nyilvános adatai, vagy `null`.",
                                            "type": "object"
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthenticated"
                    },
                    "402": {
                        "$ref": "#/components/responses/PaymentRequired"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationError"
                    }
                }
            }
        },
        "/clients/bulk-delete": {
            "post": {
                "tags": [
                    "Ügyfelek"
                ],
                "summary": "Több ügyfél törlése",
                "operationId": "bulkDeleteClients",
                "description": "Törli a megadott azonosítójú ügyfeleket (a kapcsolódó adatokkal és dokumentumfájlokkal együtt, mint az egyenkénti törlés). A nem létező vagy más felhasználóhoz tartozó azonosítókat csendben kihagyja. Aktív előfizetés vagy próbaidő nélkül nem töröl semmit, de akkor is üres 200-at ad (nincs 402).",
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "ids": {
                                        "type": "array",
                                        "nullable": true,
                                        "items": {
                                            "type": "integer",
                                            "minimum": 1
                                        },
                                        "description": "A törlendő ügyfelek azonosítói. Üres vagy hiányzó lista esetén nem történik semmi.",
                                        "example": [
                                            101,
                                            102
                                        ]
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Sikeres művelet, üres választörzzsel."
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthenticated"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationError"
                    }
                }
            }
        },
        "/clients/bulk-update": {
            "post": {
                "tags": [
                    "Ügyfelek"
                ],
                "summary": "Több ügyfél módosítása",
                "operationId": "bulkUpdateClients",
                "description": "A megadott ügyfeleknél egyszerre módosítja a kiválasztott adatcsoportokat: ügyfélcsoport, új kockázati besorolás, TTNY-egyeztetés, ügyfélértesítés; mindegyiket a saját `update_…` kapcsolója engedélyezi. Új besorolásnál az ügyfél ugyanarra a napra szóló korábbi besorolása lecserélődik. A TTNY-adatok csak `company` típusnál maradnak meg; az értesítési beállítást csak a Prémium csomag „ügyfélértesítés” funkciójával menti, egyébként csendben kihagyja. A nem létező vagy más felhasználóhoz tartozó azonosítókat kihagyja; aktív előfizetés vagy próbaidő nélkül nem módosít semmit, de üres 200-at ad (nincs 402).",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "update_company",
                                    "update_risk_classification",
                                    "update_ttny_check",
                                    "update_notification",
                                    "notification"
                                ],
                                "properties": {
                                    "ids": {
                                        "type": "array",
                                        "nullable": true,
                                        "items": {
                                            "type": "integer",
                                            "minimum": 1
                                        },
                                        "description": "A módosítandó ügyfelek azonosítói.",
                                        "example": [
                                            101,
                                            102
                                        ]
                                    },
                                    "update_company": {
                                        "type": "boolean",
                                        "description": "Igaz: az ügyfélcsoport a `company_id` értékre áll (`null` = csoport nélkül).",
                                        "example": true
                                    },
                                    "company_id": {
                                        "type": "integer",
                                        "nullable": true,
                                        "description": "A saját ügyfélcsoport azonosítója, vagy `null`.",
                                        "example": 3
                                    },
                                    "update_risk_classification": {
                                        "type": "boolean",
                                        "description": "Igaz: minden ügyfélnél új kockázati besorolás jön létre (`risk_classification_risk`, `risk_classification_date`), indok nélkül.",
                                        "example": false
                                    },
                                    "risk_classification_risk": {
                                        "type": "string",
                                        "enum": [
                                            "low",
                                            "average",
                                            "high",
                                            null
                                        ],
                                        "description": "Kockázati besorolás: `low` – alacsony, `average` – átlagos, `high` – magas. Kötelező, ha `update_risk_classification` igaz.",
                                        "nullable": true
                                    },
                                    "risk_classification_date": {
                                        "type": "string",
                                        "format": "date",
                                        "description": "A besorolás dátuma. Kötelező, ha `update_risk_classification` igaz. Formátum: ÉÉÉÉ-HH-NN.",
                                        "nullable": true
                                    },
                                    "update_ttny_check": {
                                        "type": "boolean",
                                        "description": "Igaz: a TTNY-eredmény és -dátum a megadott értékre áll (`null` = törlés).",
                                        "example": false
                                    },
                                    "ttny_check_result": {
                                        "type": "string",
                                        "enum": [
                                            "match",
                                            "differ",
                                            null
                                        ],
                                        "description": "A tényleges tulajdonosi nyilvántartással (TTNY) való egyeztetés eredménye: `match` – egyezés, `differ` – eltérés. Csak `company` típusnál marad meg.",
                                        "nullable": true
                                    },
                                    "ttny_check_date": {
                                        "type": "string",
                                        "format": "date",
                                        "description": "A TTNY-egyeztetés dátuma. Formátum: ÉÉÉÉ-HH-NN.",
                                        "nullable": true
                                    },
                                    "update_notification": {
                                        "type": "boolean",
                                        "description": "Igaz: az ügyfélértesítés a `notification` értékre áll (csak Prémium csomagban).",
                                        "example": false
                                    },
                                    "notification": {
                                        "type": "boolean",
                                        "description": "Az ügyfélértesítés új értéke. A kód jelenleg akkor is kötelezőnek veszi, ha `update_notification` hamis.",
                                        "example": false
                                    }
                                }
                            },
                            "example": {
                                "ids": [
                                    101,
                                    102
                                ],
                                "update_company": true,
                                "company_id": 3,
                                "update_risk_classification": true,
                                "risk_classification_risk": "low",
                                "risk_classification_date": "2025-07-01",
                                "update_ttny_check": false,
                                "update_notification": false,
                                "notification": false
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Sikeres művelet, üres választörzzsel."
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthenticated"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationError"
                    }
                }
            }
        },
        "/clients/export": {
            "post": {
                "tags": [
                    "Ügyfél-import és -export"
                ],
                "summary": "Ügyfelek exportálása Excelbe",
                "operationId": "exportClients",
                "description": "Letöltési linket ad a felhasználó ÖSSZES ügyfelének Excel-exportjához (szűrés az API-n nincs); a fájl a link megnyitásakor készül el a pillanatnyi adatokból, e-mail nem megy. Az `.xlsx` munkalapjai: Ügyfelek, Képviselők, Tulajdonosok, Tényleges tulajdonosok, Kockázati besorolások, Dokumentumok (fájllinkkel), Változások, Lista ellenőrzések (az azonos eredményű egymás utáni ellenőrzések egy sorba vonva). Aktív előfizetés vagy próbaidő kell hozzá (bármely csomag), különben 402. A link 60 percig érvényes, és aki birtokolja, bejelentkezés nélkül letöltheti.",
                "responses": {
                    "200": {
                        "description": "A letöltési link.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "url"
                                    ],
                                    "properties": {
                                        "url": {
                                            "type": "string",
                                            "format": "uri",
                                            "description": "Aláírt, 60 percig érvényes letöltési link (GET); token nélkül, böngészőből is megnyitható.",
                                            "example": "https://api.pmtseged.hu/file-download/clients/export/42?expires=1761559200&signature=abc123…"
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthenticated"
                    },
                    "402": {
                        "$ref": "#/components/responses/PaymentRequired"
                    }
                }
            }
        },
        "/clients/download-import-sample": {
            "get": {
                "tags": [
                    "Ügyfél-import és -export"
                ],
                "summary": "Ügyfélimport mintafájl",
                "operationId": "downloadClientImportSample",
                "description": "Letöltési linket ad az ügyfélimport Excel-mintájához: az első sor a pontos oszlopfejléceket, alatta négy kitalált mintasor a cég, egyéni vállalkozó és magánszemély kitöltésére. A `POST /clients/import` ezzel a fejléccel dolgozik. Aktív előfizetés vagy próbaidő kell hozzá (bármely csomag), különben 402.",
                "responses": {
                    "200": {
                        "description": "A letöltési link.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "url"
                                    ],
                                    "properties": {
                                        "url": {
                                            "type": "string",
                                            "format": "uri",
                                            "description": "Aláírt, 60 percig érvényes letöltési link (GET); token nélkül, böngészőből is megnyitható.",
                                            "example": "https://api.pmtseged.hu/file-download/import-sample/client?expires=1761559200&signature=abc123…"
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthenticated"
                    },
                    "402": {
                        "$ref": "#/components/responses/PaymentRequired"
                    }
                }
            }
        },
        "/clients/import": {
            "post": {
                "tags": [
                    "Ügyfél-import és -export"
                ],
                "summary": "Ügyfelek importálása Excelből",
                "operationId": "importClients",
                "description": "Új ügyfeleket hoz létre egy táblázatból (a minta szerinti fejléccel, `GET /clients/download-import-sample`); meglévő ügyfelet nem módosít és nem szűr ismétlődésre. Oszlopok: Név (kötelező), Típus (kötelező: „Cég, szervezet”, „Magánszemély” vagy „Egyéni vállalkozó, őstermelő”), Ország (magyar országnév), Cím, Szerződéskötés kezdete/vége, Megjegyzés, Kockázati besorolás felülvizsgálati gyakorisága (hónap, kötelező, 1–12), Kockázati besorolás („Alacsony”/„Átlagos”/„Magas”) a dátumával (kötelező, ha van besorolás) és okával, Adószám, Cégjegyzékszám, Főtevékenység kódja, Képviselők / Tulajdonosok / Tényleges tulajdonosok (vesszővel elválasztott nevek; a tulajdonosok magánszemélyként jönnek létre), TTNY-eredmény („Egyezés”/„Eltérés”), -ideje és -megjegyzés, valamint magánszemélynél születési név, hely, idő, anyja neve, állampolgárság 1–2, igazolvány típusa („Személyigazolvány” stb.), száma, lejárata, és a kiemelt közszereplői pont betűje (`a`–`h`). A dátum ÉÉÉÉ.HH.NN. alakú szöveg vagy Excel-dátum lehet. A fájl egészben kerül be: bármely sor hibája esetén 422-t ad (a hibakulcs a sor számát és az oszlopot tartalmazza), és egyetlen ügyfél sem jön létre. Aktív előfizetés vagy próbaidő kell hozzá (bármely csomag), különben 402. Minden új ügyfélnél lefut a listás ellenőrzés, találat esetén a fiók e-mail-címére értesítés megy.",
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "import_file"
                                ],
                                "properties": {
                                    "import_file": {
                                        "type": "string",
                                        "format": "binary",
                                        "description": "A táblázat (`xls`, `xlsx`, `csv` vagy `txt`), első sorában a minta fejlécével."
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Sikeres művelet, üres választörzzsel."
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthenticated"
                    },
                    "402": {
                        "$ref": "#/components/responses/PaymentRequired"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationError"
                    }
                }
            }
        },
        "/clients/import-by-tax-numbers": {
            "post": {
                "tags": [
                    "Ügyfél-import és -export"
                ],
                "summary": "Ügyfelek importálása adószámok alapján",
                "operationId": "importClientsByTaxNumbers",
                "description": "Adószámonként lekéri a nyilvános cégnyilvántartási adatokat (mint a `POST /clients/get-public-company-data`, Prémium csomagban a tényleges tulajdonosok kiegészítésével), és mindegyik találatból új ügyfelet hoz létre képviselőkkel, tulajdonosokkal, tényleges tulajdonosokkal, 12 hónapos felülvizsgálati gyakorisággal. Opcionálisan mindegyikhez ugyanazt a kockázati besorolást és TTNY-eredményt rögzíti. Az API (a felülettel ellentétben) nem hagyja ki a már meglévő ügyfelek adószámait, és a kérésen belül ismétlődő adószámból is két ügyfél lesz. Aktív előfizetés vagy próbaidő kell hozzá (bármely csomag), különben 402. Minden új ügyfélnél lefut a listás ellenőrzés, találat esetén a fiók e-mail-címére értesítés megy.",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "tax_numbers"
                                ],
                                "properties": {
                                    "tax_numbers": {
                                        "type": "array",
                                        "minItems": 1,
                                        "maxItems": 200,
                                        "items": {
                                            "type": "string",
                                            "nullable": true
                                        },
                                        "description": "Adószámok vagy 8 jegyű törzsszámok szövegként (kötőjelekkel vagy nélkülük). Az üres elemeket kihagyja; az érvénytelen formájúak a `failed_tax_numbers` listába kerülnek.",
                                        "example": [
                                            "12345676-2-13",
                                            "87654321"
                                        ]
                                    },
                                    "risk_classification_risk": {
                                        "type": "string",
                                        "enum": [
                                            "low",
                                            "average",
                                            "high",
                                            null
                                        ],
                                        "description": "Ha megadod, minden létrehozott ügyfélnél ilyen kockázati besorolás jön létre (indok nélkül). Kockázati besorolás: `low` – alacsony, `average` – átlagos, `high` – magas.",
                                        "nullable": true
                                    },
                                    "risk_classification_date": {
                                        "type": "string",
                                        "format": "date",
                                        "description": "A besorolás dátuma; kötelező, ha `risk_classification_risk` meg van adva. Formátum: ÉÉÉÉ-HH-NN.",
                                        "nullable": true
                                    },
                                    "ttny_check_result": {
                                        "type": "string",
                                        "enum": [
                                            "match",
                                            "differ",
                                            null
                                        ],
                                        "description": "Ha megadod, minden létrehozott cég ügyfélnél ez lesz a TTNY-eredmény (`ttny_check_date`-tel együtt); egyéni vállalkozónál nem marad meg. A tényleges tulajdonosi nyilvántartással (TTNY) való egyeztetés eredménye: `match` – egyezés, `differ` – eltérés. Csak `company` típusnál marad meg.",
                                        "nullable": true
                                    },
                                    "ttny_check_date": {
                                        "type": "string",
                                        "format": "date",
                                        "description": "A TTNY-egyeztetés dátuma; csak `ttny_check_result` mellett számít. Formátum: ÉÉÉÉ-HH-NN.",
                                        "nullable": true
                                    }
                                }
                            },
                            "example": {
                                "tax_numbers": [
                                    "12345676-2-13"
                                ],
                                "risk_classification_risk": "low",
                                "risk_classification_date": "2025-07-01",
                                "ttny_check_result": "match",
                                "ttny_check_date": "2025-07-01"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Az importált és a sikertelen adószámok, a kérésben szereplő alakban.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "imported_tax_numbers",
                                        "failed_tax_numbers"
                                    ],
                                    "properties": {
                                        "imported_tax_numbers": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            },
                                            "description": "Az adószámok, amelyekből ügyfél jött létre.",
                                            "example": [
                                                "12345676-2-13"
                                            ]
                                        },
                                        "failed_tax_numbers": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            },
                                            "description": "Az érvénytelen formájú vagy a nyilvántartásban nem talált adószámok (az érvénytelenek elöl).",
                                            "example": [
                                                "87654321"
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthenticated"
                    },
                    "402": {
                        "$ref": "#/components/responses/PaymentRequired"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationError"
                    }
                }
            }
        },
        "/client-representatives/{id}": {
            "get": {
                "tags": [
                    "Képviselők"
                ],
                "summary": "Egy képviselő lekérdezése",
                "description": "Visszaadja a saját ügyfeled egy képviselőjét az el nem bírált szankciós találatokkal együtt (`unchecked_sanctions`). Aktív előfizetés vagy próbaidő kell hozzá (bármelyik csomag). Más felhasználó ügyfelének személye 404-et ad. A képviselő adatait nem itt, hanem az ügyfél módosításával (`PUT /clients/{id}`) lehet szerkeszteni. A válasz nem tartalmazza, melyik ügyfélhez tartozik a személy.",
                "operationId": "getClientRepresentative",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "description": "A képviselő azonosítója.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "example": 42
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "A képviselő adatai.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ClientRepresentative"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthenticated"
                    },
                    "402": {
                        "$ref": "#/components/responses/PaymentRequired"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    }
                }
            }
        },
        "/client-owners/{id}": {
            "get": {
                "tags": [
                    "Tulajdonosok"
                ],
                "summary": "Egy tulajdonos lekérdezése",
                "description": "Visszaadja a saját ügyfeled egy tulajdonosát az el nem bírált szankciós találatokkal együtt (`unchecked_sanctions`). Aktív előfizetés vagy próbaidő kell hozzá (bármelyik csomag). Más felhasználó ügyfelének személye 404-et ad. A tulajdonos adatait nem itt, hanem az ügyfél módosításával (`PUT /clients/{id}`) lehet szerkeszteni. A válasz nem tartalmazza, melyik ügyfélhez tartozik a személy.",
                "operationId": "getClientOwner",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "description": "A tulajdonos azonosítója.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "example": 42
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "A tulajdonos adatai.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ClientOwner"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthenticated"
                    },
                    "402": {
                        "$ref": "#/components/responses/PaymentRequired"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    }
                }
            }
        },
        "/client-real-owners/{id}": {
            "get": {
                "tags": [
                    "Tényleges tulajdonosok"
                ],
                "summary": "Egy tényleges tulajdonos lekérdezése",
                "description": "Visszaadja a saját ügyfeled egy tényleges tulajdonosát az el nem bírált szankciós találatokkal együtt (`unchecked_sanctions`). Aktív előfizetés vagy próbaidő kell hozzá (bármelyik csomag). Más felhasználó ügyfelének személye 404-et ad. A tényleges tulajdonos adatait nem itt, hanem az ügyfél módosításával (`PUT /clients/{id}`) lehet szerkeszteni. A válasz nem tartalmazza, melyik ügyfélhez tartozik a személy.",
                "operationId": "getClientRealOwner",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "description": "A tényleges tulajdonos azonosítója.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "example": 42
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "A tényleges tulajdonos adatai.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ClientRealOwner"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthenticated"
                    },
                    "402": {
                        "$ref": "#/components/responses/PaymentRequired"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    }
                }
            }
        },
        "/clients/{id}/upload-document": {
            "post": {
                "tags": [
                    "Ügyféldokumentumok"
                ],
                "summary": "Dokumentum feltöltése egy ügyfélhez",
                "description": "Feltölt egy dokumentumot (képet, PDF-et, Word- vagy Excel-fájlt) a saját ügyfeledhez, `multipart/form-data` kéréssel. Engedett fájltípusok: jpeg, jpg, jfif, png, pdf, doc, docx, xls, xlsx; a fájl tartalmának ÉS a fájlnév kiterjesztésének is ebbe a körbe kell esnie, legfeljebb 50 MB (51 200 KB) méretben. Aktív előfizetés vagy próbaidő kell hozzá. A mezőket a rendszer az ügyfél keresése előtt ellenőrzi, ezért hibás mezőknél nem létező ügyfélre is 422 jön. A válasz az ügyfél, de a `documents` tömb NINCS benne: az új dokumentum azonosítóját a `GET /clients/{id}` válaszából kapod meg.",
                "operationId": "uploadClientDocument",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "description": "Az ügyfél azonosítója.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "example": 42
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "name",
                                    "file"
                                ],
                                "properties": {
                                    "name": {
                                        "type": "string",
                                        "maxLength": 255,
                                        "description": "A dokumentum megnevezése.",
                                        "example": "Aláírt átvilágítási adatlap"
                                    },
                                    "file": {
                                        "type": "string",
                                        "format": "binary",
                                        "description": "A feltöltendő fájl: jpeg, jpg, jfif, png, pdf, doc, docx, xls vagy xlsx, legfeljebb 50 MB."
                                    },
                                    "note": {
                                        "type": "string",
                                        "nullable": true,
                                        "maxLength": 65535,
                                        "description": "Megjegyzés a dokumentumhoz.",
                                        "example": "Eredeti példány az irodában."
                                    }
                                }
                            },
                            "encoding": {
                                "file": {
                                    "contentType": "image/jpeg, image/png, application/pdf, application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document, application/vnd.ms-excel, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Az ügyfél a feltöltés után. Nem a teljes `GET /clients/{id}` szerkezet: a `company`, `risk_classifications`, `documents`, `changes` és `sanction_checks` mező hiányzik; a `representatives`, `owners`, `real_owners` és az `unchecked_sanctions` csak aktív ügyfélnél szerepel.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Client"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthenticated"
                    },
                    "402": {
                        "$ref": "#/components/responses/PaymentRequired"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationError"
                    }
                }
            }
        },
        "/client-documents/{id}": {
            "get": {
                "tags": [
                    "Ügyféldokumentumok"
                ],
                "summary": "Egy ügyféldokumentum lekérdezése",
                "description": "Visszaadja a saját ügyfeledhez feltöltött dokumentum adatait és a fájl letöltési URL-jét. Aktív előfizetés vagy próbaidő kell hozzá. Más felhasználó dokumentuma 404-et ad. A válasz nem tartalmazza az ügyfél azonosítóját.",
                "operationId": "getClientDocument",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "description": "A dokumentum azonosítója.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "example": 42
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "A dokumentum.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ClientDocument"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthenticated"
                    },
                    "402": {
                        "$ref": "#/components/responses/PaymentRequired"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    }
                }
            },
            "put": {
                "tags": [
                    "Ügyféldokumentumok"
                ],
                "summary": "Egy ügyféldokumentum megnevezésének és megjegyzésének módosítása",
                "description": "Módosítja a dokumentum megnevezését és megjegyzését; a fájl nem cserélhető (ehhez töröld, és tölts fel újat). Mindkét mezőt küldd el: a kihagyott `note` törlődik (`null` lesz). Aktív előfizetés vagy próbaidő kell hozzá.",
                "operationId": "updateClientDocument",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "description": "A dokumentum azonosítója.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "example": 42
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "name"
                                ],
                                "properties": {
                                    "name": {
                                        "type": "string",
                                        "maxLength": 255,
                                        "description": "A dokumentum új megnevezése.",
                                        "example": "Személyi igazolvány másolata"
                                    },
                                    "note": {
                                        "type": "string",
                                        "nullable": true,
                                        "maxLength": 65535,
                                        "description": "Az új megjegyzés; kihagyva vagy `null` értékkel törlődik.",
                                        "example": "Lejár 2029-ben."
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "A módosított dokumentum.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ClientDocument"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthenticated"
                    },
                    "402": {
                        "$ref": "#/components/responses/PaymentRequired"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationError"
                    }
                }
            },
            "delete": {
                "tags": [
                    "Ügyféldokumentumok"
                ],
                "summary": "Egy ügyféldokumentum törlése",
                "description": "Véglegesen törli a dokumentumot a feltöltött fájllal együtt (a fájl letöltési URL-je ezután nem működik). Aktív előfizetés vagy próbaidő kell hozzá. Más felhasználó dokumentuma 404-et ad.",
                "operationId": "deleteClientDocument",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "description": "A dokumentum azonosítója.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "example": 42
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Sikeres művelet, üres választörzzsel."
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthenticated"
                    },
                    "402": {
                        "$ref": "#/components/responses/PaymentRequired"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    }
                }
            }
        },
        "/client-risk-classifications": {
            "post": {
                "tags": [
                    "Kockázati besorolás"
                ],
                "summary": "Kockázati besorolás rögzítése egy ügyfélhez",
                "description": "Új kockázati besorolást rögzít a saját ügyfeledhez. Ha az ügyfélnek ugyanarra a dátumra már van besorolása, azt a rendszer figyelmeztetés nélkül lecseréli (törli, és az újat menti). Az ügyfél aktuális besorolása mindig a legkésőbbi dátumú, ettől számít a következő esedékesség. Aktív előfizetés vagy próbaidő kell hozzá. Nem létező vagy más felhasználóhoz tartozó `client_id` 422-t ad.",
                "operationId": "createClientRiskClassification",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "client_id",
                                    "risk",
                                    "date"
                                ],
                                "properties": {
                                    "client_id": {
                                        "type": "integer",
                                        "description": "A saját ügyfeled azonosítója.",
                                        "example": 42
                                    },
                                    "risk": {
                                        "type": "string",
                                        "enum": [
                                            "low",
                                            "average",
                                            "high"
                                        ],
                                        "description": "Kockázati szint: `low` – alacsony, `average` – átlagos, `high` – magas.",
                                        "example": "average"
                                    },
                                    "reason": {
                                        "type": "string",
                                        "nullable": true,
                                        "maxLength": 255,
                                        "description": "A besorolás indoklása.",
                                        "example": "Belföldi ügyfél, átlátható tulajdonosi szerkezet."
                                    },
                                    "date": {
                                        "type": "string",
                                        "format": "date",
                                        "description": "A besorolás dátuma, pontosan ÉÉÉÉ-HH-NN alakban.",
                                        "example": "2026-10-27"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "A rögzített besorolás.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ClientRiskClassification"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthenticated"
                    },
                    "402": {
                        "$ref": "#/components/responses/PaymentRequired"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationError"
                    }
                }
            }
        },
        "/client-risk-classifications/{id}": {
            "get": {
                "tags": [
                    "Kockázati besorolás"
                ],
                "summary": "Egy kockázati besorolás lekérdezése",
                "description": "Visszaadja a saját ügyfeled egy kockázati besorolását. Aktív előfizetés vagy próbaidő kell hozzá. Más felhasználó ügyfelének besorolása 404-et ad. A válasz nem tartalmazza az ügyfél azonosítóját; egy ügyfél összes besorolását a `GET /clients/{id}` `risk_classifications` mezője adja.",
                "operationId": "getClientRiskClassification",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "description": "A kockázati besorolás azonosítója.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "example": 42
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "A kockázati besorolás.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ClientRiskClassification"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthenticated"
                    },
                    "402": {
                        "$ref": "#/components/responses/PaymentRequired"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    }
                }
            },
            "delete": {
                "tags": [
                    "Kockázati besorolás"
                ],
                "summary": "Egy kockázati besorolás törlése",
                "description": "Véglegesen törli a kockázati besorolást. Ha ez volt az ügyfél legkésőbbi besorolása, az ügyfél aktuális besorolása a megmaradó legkésőbbi lesz (ha nem marad, az ügyfél „hiányzó kockázati besorolás” figyelmeztetést kap). Aktív előfizetés vagy próbaidő kell hozzá. Más felhasználó ügyfelének besorolása 404-et ad.",
                "operationId": "deleteClientRiskClassification",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "description": "A kockázati besorolás azonosítója.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "example": 42
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Sikeres művelet, üres választörzzsel."
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthenticated"
                    },
                    "402": {
                        "$ref": "#/components/responses/PaymentRequired"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    }
                }
            }
        },
        "/clients/{id}/download-know-your-customer-form": {
            "post": {
                "tags": [
                    "Átvilágítási adatlap"
                ],
                "summary": "Az ügyfélátvilágítási adatlap letöltési linkjének kérése",
                "description": "Letöltési linket ad a saját ügyfeled előre kitöltött átvilágítási adatlapjához, Word (docx) vagy PDF formátumban. Az adatlap az ügyfél adataiból előre kitöltött ügyfélátvilágítási adatlap: ügyfélnév, adószám, cégjegyzékszám, főtevékenység, székhely, képviselők, a választott képviselő személyes adatai, a tényleges tulajdonosok adatai és PEP-jelölése, a legutóbbi kockázati besorolás és indoklása, a TTNY-ellenőrzés eredménye és dátuma, a szerződés vége, valamint az ügyfélhez rendelt saját cég (`company_id`) szerződési adatai (szerződés típusa, tárgya, időtartama, teljesítés módja, az üzleti kapcsolat célja). A visszaadott `url` aláírt, bejelentkezés nélkül 60 percig érvényes link (aki megkapja, letöltheti); a fájl a link megnyitásakor készül el az aktuális adatokból, `<ügyfélnév>_atvilagitasi_adatlap.docx|pdf` néven. Aktív előfizetés vagy próbaidő kell hozzá (bármelyik csomag).",
                "operationId": "downloadClientKnowYourCustomerForm",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "description": "Az ügyfél azonosítója.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "example": 42
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "format"
                                ],
                                "properties": {
                                    "representative_id": {
                                        "type": "integer",
                                        "nullable": true,
                                        "description": "Cég típusú ügyfélnél annak a képviselőnek az azonosítója (az ügyfél saját képviselői közül), akinek az adataival a „képviselő” rész kitöltődik; kihagyva ez a rész üres marad. Magánszemély és egyéni vállalkozó ügyfélnél hagyd ki: ott az ügyfél saját adatai kerülnek a képviselői és a tényleges tulajdonosi részbe.",
                                        "example": 314
                                    },
                                    "format": {
                                        "type": "string",
                                        "enum": [
                                            "docx",
                                            "pdf"
                                        ],
                                        "description": "A fájl formátuma: `docx` – szerkeszthető Word-dokumentum, `pdf` – PDF.",
                                        "example": "pdf"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Az aláírt letöltési link.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "url"
                                    ],
                                    "properties": {
                                        "url": {
                                            "type": "string",
                                            "format": "uri",
                                            "description": "Aláírt, 60 percig érvényes letöltési link az api.pmtseged.hu címen (`/file-download/clients/{id}/download-know-your-customer-form/{format}`, `expires` és `signature` paraméterrel). Lejárt vagy módosított link 403-at ad.",
                                            "example": "https://api.pmtseged.hu/file-download/clients/42/download-know-your-customer-form/pdf?representative_id=314&expires=1761561600&signature=abc123…"
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthenticated"
                    },
                    "402": {
                        "$ref": "#/components/responses/PaymentRequired"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationError"
                    }
                }
            }
        },
        "/clients/{id}/send-know-your-customer-form": {
            "post": {
                "tags": [
                    "Átvilágítási adatlap"
                ],
                "summary": "Az ügyfélátvilágítási adatlap elküldése emailben",
                "description": "Elkészíti a saját ügyfeled előre kitöltött átvilágítási adatlapját (docx vagy PDF), és azonnal elküldi csatolmányként a megadott címekre, a PmtSegéd rendszer címéről. Az adatlap az ügyfél adataiból előre kitöltött ügyfélátvilágítási adatlap: ügyfélnév, adószám, cégjegyzékszám, főtevékenység, székhely, képviselők, a választott képviselő személyes adatai, a tényleges tulajdonosok adatai és PEP-jelölése, a legutóbbi kockázati besorolás és indoklása, a TTNY-ellenőrzés eredménye és dátuma, a szerződés vége, valamint az ügyfélhez rendelt saját cég (`company_id`) szerződési adatai (szerződés típusa, tárgya, időtartama, teljesítés módja, az üzleti kapcsolat célja). A levél tárgya „Ügyfélátvilágítási adatlap – küldd vissza aláírva”; a szövege a Pmt.-re hivatkozva kéri az adatok ellenőrzését, kiegészítését, aláírását és a visszaküldést a felhasználó email címére, a válaszcím (Reply-To) is a felhasználó címe, aláírásként a felhasználó neve szerepel. A Prémium csomag funkciója: Alap csomaggal vagy próbaidőben 402-t ad. A kiküldött adatlap nem kerül az ügyfél dokumentumai közé.",
                "operationId": "sendClientKnowYourCustomerForm",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "description": "Az ügyfél azonosítója.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "example": 42
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "format",
                                    "emails"
                                ],
                                "properties": {
                                    "representative_id": {
                                        "type": "integer",
                                        "nullable": true,
                                        "description": "Cég típusú ügyfélnél annak a képviselőnek az azonosítója (az ügyfél saját képviselői közül), akinek az adataival a „képviselő” rész kitöltődik; kihagyva ez a rész üres marad. Magánszemély és egyéni vállalkozó ügyfélnél hagyd ki: ott az ügyfél saját adatai kerülnek a képviselői és a tényleges tulajdonosi részbe. Megadva az email megszólítása „Kedves <képviselő neve>!”, különben „Szia!”.",
                                        "example": 314
                                    },
                                    "format": {
                                        "type": "string",
                                        "enum": [
                                            "docx",
                                            "pdf"
                                        ],
                                        "description": "A fájl formátuma: `docx` – szerkeszthető Word-dokumentum, `pdf` – PDF.",
                                        "example": "pdf"
                                    },
                                    "emails": {
                                        "type": "array",
                                        "minItems": 1,
                                        "items": {
                                            "type": "string",
                                            "format": "email"
                                        },
                                        "description": "A címzettek email címei (legalább egy). Ezeknek kell megadni; a rendszer nem az ügyfélnél tárolt `emails` címekre küld. Minden cím ugyanabba a levélbe, a „Címzett” mezőbe kerül, így a címzettek látják egymás címét.",
                                        "example": [
                                            "kiss.elemer@example.com"
                                        ]
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Sikeres művelet, üres választörzzsel."
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthenticated"
                    },
                    "402": {
                        "$ref": "#/components/responses/PaymentRequired"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationError"
                    }
                }
            }
        },
        "/clients/{id}/set-last-sanction-check": {
            "post": {
                "tags": [
                    "Szankciós ellenőrzés"
                ],
                "summary": "Az ügyfél szankciós találatainak elbírálása",
                "description": "Elbíráltnak jelöli az ügyfél saját nevére talált szankciós egyezéseket („nem ő az” / ellenőrizve). Nem futtat új keresést a szankciós listákon, és nem kér le külső adatot: csak rögzíti a mostani időpontot az elbírálás idejeként (`last_sanction_check`). Ettől kezdve az `unchecked_sanctions` csak az ezután listára került, egyező nevű bejegyzéseket tartalmazza, a mostani találatok pedig nem okoznak „szankciós találat” figyelmeztetést az ügyfélnél. A kapcsolódó személyek (képviselők, tulajdonosok, tényleges tulajdonosok) találatait ez nem érinti, azokra a saját végpontjuk való. Ha az ügyfél neve később megváltozik, az elbírálás törlődik. Aktív előfizetés vagy próbaidő kell hozzá. Kérés törzs nélkül hívandó.",
                "operationId": "setClientLastSanctionCheck",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "description": "Az ügyfél azonosítója.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "example": 42
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "A módosított ügyfél. Figyelem: ez a válasz nem a teljes `GET /clients/{id}` szerkezet: a `company`, `risk_classifications`, `documents`, `changes` és `sanction_checks` mező hiányzik; a `representatives`, `owners`, `real_owners` és az `unchecked_sanctions` csak aktív (szerződéses időszakban lévő) ügyfélnél szerepel.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Client"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthenticated"
                    },
                    "402": {
                        "$ref": "#/components/responses/PaymentRequired"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    }
                }
            }
        },
        "/client-representatives/{id}/set-last-sanction-check": {
            "post": {
                "tags": [
                    "Szankciós ellenőrzés"
                ],
                "summary": "Egy képviselő szankciós találatainak elbírálása",
                "description": "Elbíráltnak jelöli a saját ügyfeled egy képviselőjét érintő szankciós egyezéseket („nem ő az” / ellenőrizve). Nem futtat új keresést a szankciós listákon, és nem kér le külső adatot: csak rögzíti a mostani időpontot az elbírálás idejeként (`last_sanction_check`). Ettől kezdve az `unchecked_sanctions` csak az ezután listára került, egyező nevű bejegyzéseket tartalmazza, a mostani találatok pedig nem okoznak „szankciós találat” figyelmeztetést az ügyfélnél. Ha a személy neve később megváltozik (az ügyfél módosításakor), az elbírálás törlődik. Aktív előfizetés vagy próbaidő kell hozzá. Kérés törzs nélkül hívandó.",
                "operationId": "setClientRepresentativeLastSanctionCheck",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "description": "A képviselő azonosítója.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "example": 42
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "A módosított képviselő; az `unchecked_sanctions` ilyenkor általában üres tömb.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ClientRepresentative"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthenticated"
                    },
                    "402": {
                        "$ref": "#/components/responses/PaymentRequired"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    }
                }
            }
        },
        "/client-owners/{id}/set-last-sanction-check": {
            "post": {
                "tags": [
                    "Szankciós ellenőrzés"
                ],
                "summary": "Egy tulajdonos szankciós találatainak elbírálása",
                "description": "Elbíráltnak jelöli a saját ügyfeled egy tulajdonosát érintő szankciós egyezéseket („nem ő az” / ellenőrizve). Nem futtat új keresést a szankciós listákon, és nem kér le külső adatot: csak rögzíti a mostani időpontot az elbírálás idejeként (`last_sanction_check`). Ettől kezdve az `unchecked_sanctions` csak az ezután listára került, egyező nevű bejegyzéseket tartalmazza, a mostani találatok pedig nem okoznak „szankciós találat” figyelmeztetést az ügyfélnél. Ha a személy neve később megváltozik (az ügyfél módosításakor), az elbírálás törlődik. Aktív előfizetés vagy próbaidő kell hozzá. Kérés törzs nélkül hívandó.",
                "operationId": "setClientOwnerLastSanctionCheck",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "description": "A tulajdonos azonosítója.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "example": 42
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "A módosított tulajdonos; az `unchecked_sanctions` ilyenkor általában üres tömb.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ClientOwner"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthenticated"
                    },
                    "402": {
                        "$ref": "#/components/responses/PaymentRequired"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    }
                }
            }
        },
        "/client-real-owners/{id}/set-last-sanction-check": {
            "post": {
                "tags": [
                    "Szankciós ellenőrzés"
                ],
                "summary": "Egy tényleges tulajdonos szankciós találatainak elbírálása",
                "description": "Elbíráltnak jelöli a saját ügyfeled egy tényleges tulajdonosát érintő szankciós egyezéseket („nem ő az” / ellenőrizve). Nem futtat új keresést a szankciós listákon, és nem kér le külső adatot: csak rögzíti a mostani időpontot az elbírálás idejeként (`last_sanction_check`). Ettől kezdve az `unchecked_sanctions` csak az ezután listára került, egyező nevű bejegyzéseket tartalmazza, a mostani találatok pedig nem okoznak „szankciós találat” figyelmeztetést az ügyfélnél. Ha a személy neve később megváltozik (az ügyfél módosításakor), az elbírálás törlődik. Aktív előfizetés vagy próbaidő kell hozzá. Kérés törzs nélkül hívandó.",
                "operationId": "setClientRealOwnerLastSanctionCheck",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "description": "A tényleges tulajdonos azonosítója.",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "example": 42
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "A módosított tényleges tulajdonos; az `unchecked_sanctions` ilyenkor általában üres tömb.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ClientRealOwner"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthenticated"
                    },
                    "402": {
                        "$ref": "#/components/responses/PaymentRequired"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    }
                }
            }
        },
        "/sanctions/search": {
            "post": {
                "tags": [
                    "Szankciós ellenőrzés"
                ],
                "summary": "Név keresése a szankciós listákon",
                "operationId": "searchSanctions",
                "description": "Megkeresi a megadott nevet a nemzetközi és hazai szankciós listákon (ENSZ, EU) és a kiemelt közszereplői (PEP) listán. Az egyezés a teljes névre vonatkozik: a kis- és nagybetű, az ékezetek, az írásjelek és a szavak sorrendje nem számít, de minden szónak egyeznie kell, részleges névre (például csak vezetéknévre) nincs találat. A válasz a találatok tömbje; üres tömb, ha nincs találat. A keresés nem rögzít semmit az ügyfeleknél (az ellenőrzés nyugtázása a `…/set-last-sanction-check` végpontokkal történik).",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "description": "A keresett név.",
                                "required": [
                                    "name"
                                ],
                                "properties": {
                                    "name": {
                                        "type": "string",
                                        "description": "A keresett személy vagy szervezet teljes neve.",
                                        "example": "Kiss Elemér"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "A találatok (üres tömb, ha nincs találat).",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/SanctionSearchResult"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthenticated"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationError"
                    }
                }
            }
        }
    },
    "components": {
        "securitySchemes": {
            "bearerAuth": {
                "type": "http",
                "scheme": "bearer",
                "description": "API-kulcs (a PmtSegédben: API-kulcsok) vagy a `POST /login` által adott `access_token`."
            }
        },
        "responses": {
            "Unauthenticated": {
                "description": "Hiányzó vagy érvénytelen token.",
                "content": {
                    "application/json": {
                        "schema": {
                            "$ref": "#/components/schemas/Error"
                        },
                        "example": {
                            "message": "Unauthenticated."
                        }
                    }
                }
            },
            "PaymentRequired": {
                "description": "Nincs aktív előfizetés vagy próbaidő.",
                "content": {
                    "application/json": {
                        "schema": {
                            "$ref": "#/components/schemas/Error"
                        },
                        "example": {
                            "message": "A funkció használatához fizess elő a PmtSegédre."
                        }
                    }
                }
            },
            "Forbidden": {
                "description": "A művelet nem engedélyezett.",
                "content": {
                    "application/json": {
                        "schema": {
                            "$ref": "#/components/schemas/Error"
                        }
                    }
                }
            },
            "NotFound": {
                "description": "A rekord nem létezik, vagy nem a felhasználóé.",
                "content": {
                    "application/json": {
                        "schema": {
                            "$ref": "#/components/schemas/Error"
                        }
                    }
                }
            },
            "ValidationError": {
                "description": "Hibás adat.",
                "content": {
                    "application/json": {
                        "schema": {
                            "$ref": "#/components/schemas/ValidationError"
                        }
                    }
                }
            },
            "TooManyRequests": {
                "description": "Túl sok kérés rövid idő alatt; egy perc múlva újra próbálható.",
                "content": {
                    "application/json": {
                        "schema": {
                            "$ref": "#/components/schemas/Error"
                        }
                    }
                }
            }
        },
        "schemas": {
            "Error": {
                "type": "object",
                "description": "Hibaválasz.",
                "properties": {
                    "message": {
                        "type": "string",
                        "description": "A hiba szöveges leírása."
                    }
                },
                "required": [
                    "message"
                ]
            },
            "ValidationError": {
                "type": "object",
                "description": "Validációs hiba: mezőnként a hibaüzenetek.",
                "properties": {
                    "message": {
                        "type": "string",
                        "description": "Az első hiba szövege; több hiba esetén „(és N további hiba)” utótaggal."
                    },
                    "errors": {
                        "type": "object",
                        "description": "Mezőnként (a kérés mezőneve, tömböknél pontozva, például `owners.0.name`) a hibaüzenetek listája.",
                        "additionalProperties": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                },
                "required": [
                    "message",
                    "errors"
                ]
            },
            "User": {
                "type": "object",
                "description": "A bejelentkezett felhasználó fiókja: alapadatok, számlázási adatok és a csomag állapota.",
                "required": [
                    "name",
                    "email",
                    "trial_ends_at",
                    "has_package",
                    "package",
                    "subscribed_package",
                    "package_features",
                    "has_fixed_package"
                ],
                "properties": {
                    "name": {
                        "type": "string",
                        "description": "A felhasználó neve.",
                        "example": "Kiss Elemér"
                    },
                    "email": {
                        "type": "string",
                        "format": "email",
                        "description": "A fiók email-címe (belépési azonosító).",
                        "example": "kiss.elemer@example.com"
                    },
                    "billing_name": {
                        "type": "string",
                        "nullable": true,
                        "description": "Számlázási név; null, amíg nincs megadva.",
                        "example": "Kiss Elemér Könyvelőiroda Kft."
                    },
                    "billing_city": {
                        "type": "string",
                        "nullable": true,
                        "description": "Számlázási cím: település.",
                        "example": "Budapest"
                    },
                    "billing_zip": {
                        "type": "integer",
                        "nullable": true,
                        "minimum": 1000,
                        "maximum": 9999,
                        "description": "Számlázási cím: irányítószám.",
                        "example": 1111
                    },
                    "billing_address": {
                        "type": "string",
                        "nullable": true,
                        "description": "Számlázási cím: utca, házszám.",
                        "example": "Minta utca 1."
                    },
                    "billing_tax_number": {
                        "type": "string",
                        "nullable": true,
                        "description": "Adószám, mindig `12345678-1-23` alakra formázva.",
                        "example": "12345676-2-13"
                    },
                    "trial_ends_at": {
                        "type": "integer",
                        "nullable": true,
                        "description": "A próbaidő vége Unix-időbélyegként (másodperc); null, ha a felhasználó nincs próbaidőn (lejárt, előfizetett vagy rögzített csomagja van).",
                        "example": 1798757999
                    },
                    "has_package": {
                        "type": "boolean",
                        "description": "Van-e most használható csomagja (próbaidő, érvényes előfizetés vagy rögzített csomag). Ha false, a csomaghoz kötött végpontok 402-t adnak."
                    },
                    "package": {
                        "type": "string",
                        "nullable": true,
                        "enum": [
                            "basic",
                            "premium",
                            null
                        ],
                        "description": "A most használható csomag: `basic` – Alap csomag, `premium` – Prémium csomag; próbaidőn a próbaidős csomag; null, ha nincs csomag."
                    },
                    "subscribed_package": {
                        "type": "string",
                        "nullable": true,
                        "enum": [
                            "basic",
                            "premium",
                            null
                        ],
                        "description": "Ugyanaz, mint a `package`, de próbaidőn null (ilyenkor nincs fizetős csomag)."
                    },
                    "package_features": {
                        "type": "object",
                        "description": "A csomag funkciói (true = elérhető). Csomag nélkül üres objektum (JSON-ban `[]` is lehet, mert üres tömbként szerializálódik).",
                        "properties": {
                            "sanction_check": {
                                "type": "boolean",
                                "description": "Szankciós ellenőrzés nemzetközi és hazai szankciós listák alapján."
                            },
                            "expiring_id_document_reminder": {
                                "type": "boolean",
                                "description": "Emlékeztető email a lejáró személyazonosító okmányokról."
                            },
                            "expiring_risk_classification_reminder": {
                                "type": "boolean",
                                "description": "Emlékeztető email a lejáró kockázati besorolásokról."
                            },
                            "monthly_summary_mail": {
                                "type": "boolean",
                                "description": "Havi összefoglaló email."
                            },
                            "client_real_owner_query": {
                                "type": "boolean",
                                "description": "Ügyfél tényleges tulajdonosainak lekérdezése (a felület jelzője)."
                            },
                            "client_watch": {
                                "type": "boolean",
                                "description": "Ügyfélfigyelés: értesítés az ügyfél nyilvános cégnyilvántartási adatainak változásáról."
                            },
                            "client_notification": {
                                "type": "boolean",
                                "description": "Az ügyfél közvetlen értesítése emailben (például lejáró okmányról), ha az ügyfélnél be van kapcsolva."
                            },
                            "send_know_your_customer_form": {
                                "type": "boolean",
                                "description": "Az átvilágítási adatlap kiküldése az ügyfélnek emailben."
                            },
                            "real_owners_query": {
                                "type": "boolean",
                                "description": "Tényleges tulajdonosok automatikus kitöltése nyilvános cégnyilvántartási adatokból."
                            }
                        }
                    },
                    "has_fixed_package": {
                        "type": "boolean",
                        "description": "A fióknak rögzített (szerződésben meghatározott) csomagja van; ilyenkor a csomagváltás nem érhető el."
                    }
                }
            },
            "ApiKey": {
                "type": "object",
                "description": "Egy API-kulcs adatai (a titkos érték nélkül, azt csak létrehozáskor adja vissza a rendszer).",
                "required": [
                    "id",
                    "name",
                    "last_used_at",
                    "created_at"
                ],
                "properties": {
                    "id": {
                        "type": "integer",
                        "description": "A kulcs azonosítója (a kulcs értékének `|` előtti része).",
                        "example": 12
                    },
                    "name": {
                        "type": "string",
                        "description": "A kulcs megnevezése.",
                        "example": "Saját könyvelőprogram"
                    },
                    "last_used_at": {
                        "type": "integer",
                        "nullable": true,
                        "description": "A kulcs utolsó használata Unix-időbélyegként (másodperc); null, ha még nem használták.",
                        "example": 1793001600
                    },
                    "created_at": {
                        "type": "integer",
                        "description": "A létrehozás ideje Unix-időbélyegként (másodperc).",
                        "example": 1792915200
                    }
                }
            },
            "AuthResult": {
                "type": "object",
                "description": "Belépés és regisztráció válasza: a felhasználó és a hozzá kiadott token.",
                "required": [
                    "user",
                    "access_token"
                ],
                "properties": {
                    "user": {
                        "$ref": "#/components/schemas/User"
                    },
                    "access_token": {
                        "type": "string",
                        "description": "A token `<azonosító>|<titok>` alakban, amelyet `Authorization: Bearer <token>` fejlécben kell küldeni. `POST /login` és `POST /register` esetén belépési token (`access-api`), `POST /register-through-partner` esetén API-kulcs (`developer-api`). Nem jár le.",
                        "example": "1|AbCdEf…"
                    }
                }
            },
            "Config": {
                "type": "object",
                "description": "A rendszer törzsadatai és a csomagok leírása.",
                "required": [
                    "main_activities",
                    "countries",
                    "pep_types",
                    "sanction_lists",
                    "tutorial_videos",
                    "packages"
                ],
                "properties": {
                    "main_activities": {
                        "type": "object",
                        "description": "TEÁOR-tevékenységek: kulcs a négyjegyű tevékenységkód, érték a kód és a megnevezés.",
                        "additionalProperties": {
                            "type": "string",
                            "description": "A tevékenység kódja és megnevezése."
                        },
                        "example": {
                            "6920": "6920 - Számviteli, könyvvizsgálói, adószakértői tevékenység"
                        }
                    },
                    "countries": {
                        "type": "object",
                        "description": "Országok: kulcs a kétbetűs ISO 3166-1 országkód, érték a magyar országnév.",
                        "additionalProperties": {
                            "type": "string",
                            "description": "Az ország magyar neve."
                        },
                        "example": {
                            "HU": "Magyarország",
                            "AT": "Ausztria"
                        }
                    },
                    "pep_types": {
                        "type": "object",
                        "description": "Kiemelt közszereplői (PEP) kategóriák a Pmt. szerint: kulcs a kategória betűjele (`a`–`h`), érték a kategória leírása.",
                        "additionalProperties": {
                            "type": "string",
                            "description": "A kategória leírása."
                        },
                        "example": {
                            "b": "b.) Az országgyűlési képviselő vagy a hasonló jogalkotó szerv tagja, …"
                        }
                    },
                    "sanction_lists": {
                        "type": "object",
                        "description": "Az ellenőrzéshez használt nemzetközi és hazai szankciós listák: kulcs a lista azonosítója (`ensz` – ENSZ BT, `eu` – Európai Unió, `pep` – kiemelt közszereplők), érték a lista nyilvános forrásának címe.",
                        "additionalProperties": {
                            "type": "string",
                            "format": "uri",
                            "description": "A lista nyilvános forrásának címe."
                        }
                    },
                    "tutorial_videos": {
                        "type": "array",
                        "description": "Oktatóvideók; az első mindig a teljes bemutató.",
                        "items": {
                            "type": "object",
                            "required": [
                                "name",
                                "image",
                                "url",
                                "embed_url"
                            ],
                            "properties": {
                                "name": {
                                    "type": "string",
                                    "description": "A videó címe.",
                                    "example": "Útmutató videó"
                                },
                                "image": {
                                    "type": "string",
                                    "format": "uri",
                                    "description": "Előnézeti kép címe."
                                },
                                "url": {
                                    "type": "string",
                                    "format": "uri",
                                    "description": "A videó YouTube-címe."
                                },
                                "embed_url": {
                                    "type": "string",
                                    "format": "uri",
                                    "description": "Beágyazható lejátszó címe."
                                }
                            }
                        }
                    },
                    "packages": {
                        "type": "array",
                        "description": "Az előfizethető csomagok.",
                        "items": {
                            "type": "object",
                            "required": [
                                "name",
                                "label",
                                "features",
                                "pricing"
                            ],
                            "properties": {
                                "name": {
                                    "type": "string",
                                    "enum": [
                                        "basic",
                                        "premium"
                                    ],
                                    "description": "A csomag azonosítója (`POST /packages/subscribe` `package` mezője): `basic` – Alap csomag, `premium` – Prémium csomag."
                                },
                                "label": {
                                    "type": "string",
                                    "description": "A csomag megjelenített neve.",
                                    "example": "Prémium csomag"
                                },
                                "features": {
                                    "type": "object",
                                    "description": "A csomag funkciói (true = elérhető); a kulcsok és jelentésük megegyeznek a `User.package_features` mezőivel.",
                                    "additionalProperties": {
                                        "type": "boolean",
                                        "description": "Elérhető-e a funkció a csomagban."
                                    }
                                },
                                "pricing": {
                                    "type": "object",
                                    "description": "A csomag díjadatai (csak szerkezet; az aktuális értékeket a válasz adja).",
                                    "required": [
                                        "subscription",
                                        "client"
                                    ],
                                    "properties": {
                                        "subscription": {
                                            "type": "integer",
                                            "description": "Az előfizetéshez tartozó díjtétel (egész szám)."
                                        },
                                        "client": {
                                            "type": "integer",
                                            "description": "Az ügyfelekhez kötött díjtétel (egész szám)."
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            },
            "Client": {
                "type": "object",
                "description": "Ügyfél (a pénzmosás-megelőzési átvilágítás alanya). A típustól (`type`) függ, mely mezők tölthetők: `company` – cég, szervezet (adószám, cégjegyzékszám, főtevékenység, TTNY, képviselők, tulajdonosok, tényleges tulajdonosok; a személyes mezők `null`-ok); `private_person` – magánszemély (születési adatok, állampolgárság, igazolvány, kiemelt közszereplő; az adószám, cégjegyzékszám, főtevékenység és TTNY `null`); `private_person_business` – egyéni vállalkozó, őstermelő (személyes adatok és adószám, cégjegyzékszám, főtevékenység; TTNY nincs). A lista-végpontok (`GET /clients`, `POST /clients/search`) válaszában nincs `risk_classifications`, `documents`, `changes` és `sanction_checks`; ezek csak az egyedi lekérés, a létrehozás és a módosítás válaszában szerepelnek.",
                "required": [
                    "id",
                    "company_id",
                    "name",
                    "type",
                    "tax_number",
                    "company_registration_number",
                    "main_activity_code",
                    "birth_name",
                    "birth_place",
                    "birth_date",
                    "mother_name",
                    "nationality",
                    "nationality2",
                    "id_document_type",
                    "id_document_number",
                    "id_document_expiration",
                    "pep",
                    "pep_type",
                    "country",
                    "address",
                    "contract_start",
                    "contract_end",
                    "emails",
                    "notification",
                    "note",
                    "risk_classification_frequency_in_months",
                    "ttny_check_result",
                    "ttny_check_date",
                    "ttny_check_note",
                    "last_sanction_check",
                    "created_at",
                    "updated_at",
                    "active",
                    "last_risk_classification",
                    "warnings",
                    "unchecked_sanctions",
                    "company",
                    "representatives",
                    "owners",
                    "real_owners"
                ],
                "properties": {
                    "id": {
                        "type": "integer",
                        "description": "Az ügyfél azonosítója.",
                        "example": 101
                    },
                    "company_id": {
                        "type": "integer",
                        "nullable": true,
                        "description": "Az ügyfélcsoport (`Company`) azonosítója, vagy `null`.",
                        "example": 3
                    },
                    "name": {
                        "type": "string",
                        "description": "Az ügyfél neve.",
                        "example": "Példa Kft."
                    },
                    "type": {
                        "type": "string",
                        "enum": [
                            "company",
                            "private_person",
                            "private_person_business"
                        ],
                        "description": "Ügyféltípus: `company` – cég, szervezet; `private_person` – magánszemély; `private_person_business` – egyéni vállalkozó, őstermelő.",
                        "example": "company"
                    },
                    "tax_number": {
                        "type": "string",
                        "description": "Adószám ÉÉÉÉÉÉÉÉ-É-ÉÉ alakban (kötőjelekkel formázva).",
                        "nullable": true,
                        "example": "12345676-2-13"
                    },
                    "company_registration_number": {
                        "type": "string",
                        "description": "Cégjegyzékszám vagy nyilvántartási szám.",
                        "nullable": true,
                        "example": "06-09-123456"
                    },
                    "main_activity_code": {
                        "type": "string",
                        "description": "Főtevékenység négyjegyű TEÁOR-kódja (megnevezés: `GET /configs` → `main_activities`).",
                        "nullable": true,
                        "example": "6920"
                    },
                    "birth_name": {
                        "type": "string",
                        "description": "Születési név (magánszemély, egyéni vállalkozó).",
                        "nullable": true
                    },
                    "birth_place": {
                        "type": "string",
                        "description": "Születési hely.",
                        "nullable": true
                    },
                    "birth_date": {
                        "type": "string",
                        "format": "date",
                        "description": "Születési dátum. Formátum: ÉÉÉÉ-HH-NN.",
                        "nullable": true
                    },
                    "mother_name": {
                        "type": "string",
                        "description": "Anyja születési neve.",
                        "nullable": true
                    },
                    "nationality": {
                        "type": "string",
                        "description": "Állampolgárság. ISO 3166-1 alpha-2 országkód (a `GET /configs` válasz `countries` kulcsai közül, pl. `HU`).",
                        "nullable": true
                    },
                    "nationality2": {
                        "type": "string",
                        "description": "Második állampolgárság. ISO 3166-1 alpha-2 országkód (a `GET /configs` válasz `countries` kulcsai közül, pl. `HU`).",
                        "nullable": true
                    },
                    "id_document_type": {
                        "type": "string",
                        "enum": [
                            "national_id_card",
                            "passport",
                            "driver_license",
                            "student_id_card",
                            "other",
                            null
                        ],
                        "description": "Igazolvány típusa: `national_id_card` – személyigazolvány, `passport` – útlevél, `driver_license` – jogosítvány, `student_id_card` – diákigazolvány, `other` – egyéb.",
                        "nullable": true
                    },
                    "id_document_number": {
                        "type": "string",
                        "description": "Igazolvány száma.",
                        "nullable": true
                    },
                    "id_document_expiration": {
                        "type": "string",
                        "format": "date",
                        "description": "Igazolvány lejárata. Formátum: ÉÉÉÉ-HH-NN.",
                        "nullable": true
                    },
                    "pep": {
                        "type": "boolean",
                        "description": "Kiemelt közszereplő-e (cégnél mindig `null`).",
                        "nullable": true
                    },
                    "pep_type": {
                        "type": "string",
                        "enum": [
                            "a",
                            "b",
                            "c",
                            "d",
                            "e",
                            "f",
                            "g",
                            "h",
                            null
                        ],
                        "description": "Kiemelt közszereplői kategória a pénzmosási törvény szerinti pont betűjele (`a`–`h`; a teljes szöveg a `GET /configs` válasz `pep_types` mezőjében).",
                        "nullable": true
                    },
                    "country": {
                        "type": "string",
                        "description": "Székhely/lakcím országa. ISO 3166-1 alpha-2 országkód (a `GET /configs` válasz `countries` kulcsai közül, pl. `HU`).",
                        "nullable": true,
                        "example": "HU"
                    },
                    "address": {
                        "type": "string",
                        "description": "Székhely vagy lakcím.",
                        "nullable": true,
                        "example": "6720 Szeged, Példa utca 1."
                    },
                    "contract_start": {
                        "type": "string",
                        "format": "date",
                        "description": "Az ügyfélkapcsolat kezdete. Formátum: ÉÉÉÉ-HH-NN.",
                        "nullable": true,
                        "example": "2025-01-01"
                    },
                    "contract_end": {
                        "type": "string",
                        "format": "date",
                        "description": "Az ügyfélkapcsolat vége (`null` = határozatlan). Formátum: ÉÉÉÉ-HH-NN.",
                        "nullable": true
                    },
                    "emails": {
                        "type": "array",
                        "items": {
                            "type": "string",
                            "format": "email"
                        },
                        "description": "Az ügyfél e-mail-címei (üres lista, ha nincs)."
                    },
                    "notification": {
                        "type": "boolean",
                        "description": "Kérte-e az ügyfélnek szóló e-mail-értesítést (csak a Prémium csomag „ügyfélértesítés” funkciójával megy ki).",
                        "example": false
                    },
                    "note": {
                        "type": "string",
                        "description": "Megjegyzés.",
                        "nullable": true
                    },
                    "risk_classification_frequency_in_months": {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 12,
                        "description": "A kockázati besorolás felülvizsgálatának gyakorisága hónapban.",
                        "example": 12
                    },
                    "ttny_check_result": {
                        "type": "string",
                        "enum": [
                            "match",
                            "differ",
                            null
                        ],
                        "description": "A tényleges tulajdonosi nyilvántartással (TTNY) való egyeztetés eredménye: `match` – egyezés, `differ` – eltérés. Csak `company` típusnál marad meg.",
                        "nullable": true
                    },
                    "ttny_check_date": {
                        "type": "string",
                        "format": "date",
                        "description": "A TTNY-egyeztetés dátuma. Formátum: ÉÉÉÉ-HH-NN.",
                        "nullable": true
                    },
                    "ttny_check_note": {
                        "type": "string",
                        "description": "Megjegyzés a TTNY-egyeztetéshez.",
                        "nullable": true
                    },
                    "last_sanction_check": {
                        "type": "integer",
                        "format": "int64",
                        "description": "Mikor nézte át utoljára a felhasználó az ügyfél listás találatait (`POST /clients/{id}/set-last-sanction-check`); az ennél régebbi találatok már nem számítanak ellenőrizetlennek. Az ügyfél nevének megváltoztatásakor `null`-ra áll. Unix-időbélyeg (másodperc).",
                        "example": 1761555600,
                        "nullable": true
                    },
                    "created_at": {
                        "type": "integer",
                        "format": "int64",
                        "description": "Létrehozás ideje. Unix-időbélyeg (másodperc).",
                        "example": 1761555600
                    },
                    "updated_at": {
                        "type": "integer",
                        "format": "int64",
                        "description": "Utolsó módosítás ideje. Unix-időbélyeg (másodperc).",
                        "example": 1761555600
                    },
                    "active": {
                        "type": "boolean",
                        "description": "Aktív-e az ügyfél: nincs `contract_end`, vagy az a mai nap vagy későbbi.",
                        "example": true
                    },
                    "last_risk_classification": {
                        "allOf": [
                            {
                                "$ref": "#/components/schemas/ClientRiskClassification"
                            }
                        ],
                        "nullable": true,
                        "description": "A legutóbbi (legkésőbbi dátumú) kockázati besorolás, vagy `null`, ha még nincs.",
                        "type": "object"
                    },
                    "warnings": {
                        "type": "array",
                        "items": {
                            "type": "object",
                            "required": [
                                "key",
                                "title",
                                "color"
                            ],
                            "properties": {
                                "key": {
                                    "type": "string",
                                    "enum": [
                                        "missing_tax_number",
                                        "missing_representatives",
                                        "missing_owners",
                                        "missing_real_owners",
                                        "ttny_check_result_differ",
                                        "missing_risk_classification",
                                        "expiring_risk_classification",
                                        "expired_risk_classification",
                                        "pep_high_risk_classification",
                                        "high_risk_country",
                                        "expiring_id_document",
                                        "expired_id_document",
                                        "has_sanctions"
                                    ],
                                    "description": "A figyelmeztetés kulcsa: `missing_tax_number` – nincs adószám (cég, egyéni vállalkozó); `missing_representatives` – nincs képviselő (cég); `missing_owners` – nincs tulajdonos (cég); `missing_real_owners` – nincs tényleges tulajdonos (cég); `ttny_check_result_differ` – a TTNY-egyeztetés eltérést mutatott (cég); `missing_risk_classification` – nincs kockázati besorolás; `expiring_risk_classification` – a besorolás felülvizsgálata egy hónapon belül esedékes; `expired_risk_classification` – a besorolás felülvizsgálata esedékes (lejárt); `pep_high_risk_classification` – kiemelt közszereplő tényleges tulajdonos mellett a besorolás nem magas; `high_risk_country` – az ügyfél vagy egy kapcsolódó személy országa magas kockázatú, de a besorolás nem magas; `expiring_id_document` – egy hónapon belül lejáró igazolvány (az ügyfélé, cégnél bármely kapcsolódó személyé); `expired_id_document` – lejárt igazolvány; `has_sanctions` – ellenőrizetlen találat a nemzetközi és hazai szankciós vagy kiemelt közszereplői listákon (az ügyfélnél vagy kapcsolódó személyénél).",
                                    "example": "missing_risk_classification"
                                },
                                "title": {
                                    "type": "string",
                                    "description": "A figyelmeztetés magyar szövege, ahogy a felületen látszik.",
                                    "example": "Nincs kockázati besorolás"
                                },
                                "color": {
                                    "type": "string",
                                    "enum": [
                                        "warning",
                                        "danger"
                                    ],
                                    "description": "Súlyosság: `warning` – figyelmeztetés, `danger` – sürgős teendő.",
                                    "example": "warning"
                                }
                            }
                        },
                        "description": "Az ügyfél teendői (figyelmeztetései), mindegyik legfeljebb egyszer. Inaktív ügyfélnél mindig üres."
                    },
                    "unchecked_sanctions": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/Sanction"
                        },
                        "description": "Az ügyfél nevével egyező, még át nem nézett tételek a nemzetközi és hazai szankciós és kiemelt közszereplői listákon (névegyezés alapján; ha a születési dátum ismert és a listán is szerepel, annak is egyeznie kell). A kapcsolódó személyek találatai az ő objektumaikban vannak."
                    },
                    "company": {
                        "allOf": [
                            {
                                "$ref": "#/components/schemas/Company"
                            }
                        ],
                        "nullable": true,
                        "description": "Az ügyfélcsoport, amelybe az ügyfél tartozik, vagy `null`.",
                        "type": "object"
                    },
                    "representatives": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/ClientRepresentative"
                        },
                        "description": "Képviselők (csak `company` típusnál lehet nem üres)."
                    },
                    "owners": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/ClientOwner"
                        },
                        "description": "Tulajdonosok (csak `company` típusnál lehet nem üres)."
                    },
                    "real_owners": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/ClientRealOwner"
                        },
                        "description": "Tényleges tulajdonosok (csak `company` típusnál lehet nem üres)."
                    },
                    "risk_classifications": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/ClientRiskClassification"
                        },
                        "description": "Az összes kockázati besorolás, dátum szerint csökkenő sorrendben. Csak egyedi lekérésnél, létrehozásnál és módosításnál."
                    },
                    "documents": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/ClientDocument"
                        },
                        "description": "Feltöltött dokumentumok, a legújabb elöl. Csak egyedi lekérésnél, létrehozásnál és módosításnál."
                    },
                    "changes": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/ClientChange"
                        },
                        "description": "Változásnapló (az ügyfél és kapcsolódó személyei mezőinek új értékei), a legújabb elöl. Csak egyedi lekérésnél, létrehozásnál és módosításnál."
                    },
                    "sanction_checks": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/SanctionCheck"
                        },
                        "description": "A listás ellenőrzések naplója, a legújabb elöl. Csak egyedi lekérésnél, létrehozásnál és módosításnál."
                    }
                }
            },
            "ClientChange": {
                "type": "object",
                "description": "Egy változásnapló-bejegyzés: az ügyfél vagy egy kapcsolódó személy egy mezőjének új értéke. Létrehozáskor a kitöltött mezők, módosításkor a ténylegesen megváltozott mezők kerülnek ide. Az ügyfélcsoport, az e-mail-címek és az értesítési beállítás változása nem kerül a naplóba.",
                "required": [
                    "id",
                    "created_at",
                    "field",
                    "value"
                ],
                "properties": {
                    "id": {
                        "type": "integer",
                        "description": "A bejegyzés azonosítója.",
                        "example": 5501
                    },
                    "created_at": {
                        "type": "integer",
                        "format": "int64",
                        "description": "A változás ideje. Unix-időbélyeg (másodperc).",
                        "example": 1761555600
                    },
                    "field": {
                        "type": "string",
                        "description": "A megváltozott mező magyar, ember által olvasható neve. Kapcsolódó személynél a személy fajtája és azonosítója is benne van (pl. „Képviselő [12] név”, „Tényleges tulajdonos [7] tulajdoni hányad”).",
                        "example": "Képviselő [12] név"
                    },
                    "value": {
                        "type": "string",
                        "nullable": true,
                        "maxLength": 255,
                        "description": "Az új érték szövegként, legfeljebb 255 karakterre vágva: választható értékeknél a magyar megnevezés (pl. „Cég, szervezet”, „Magyarország”), dátumnál ÉÉÉÉ.HH.NN. alak, logikai igaznál „1”. `null`, ha a mezőt kiürítették vagy hamisra állították.",
                        "example": "Kiss Elemér"
                    }
                }
            },
            "ClientSearchResult": {
                "type": "object",
                "description": "Az ügyfélkeresés (`POST /clients/search`) egy oldala.",
                "required": [
                    "records",
                    "count",
                    "page",
                    "max_page",
                    "order_column",
                    "order_direction"
                ],
                "properties": {
                    "records": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/Client"
                        },
                        "description": "Az oldal ügyfelei (a lista-változat: `risk_classifications`, `documents`, `changes` és `sanction_checks` nélkül)."
                    },
                    "count": {
                        "type": "integer",
                        "description": "A szűrésnek megfelelő ügyfelek száma összesen.",
                        "example": 57
                    },
                    "page": {
                        "type": "integer",
                        "description": "A visszaadott oldal sorszáma (1-től).",
                        "example": 1
                    },
                    "max_page": {
                        "type": "integer",
                        "description": "Az utolsó oldal sorszáma a megadott `limit` mellett (0, ha nincs találat).",
                        "example": 3
                    },
                    "order_column": {
                        "type": "string",
                        "description": "A ténylegesen alkalmazott rendezési oszlop (alapértelmezés: `name`).",
                        "example": "name"
                    },
                    "order_direction": {
                        "type": "string",
                        "enum": [
                            "asc",
                            "desc"
                        ],
                        "description": "A rendezés iránya (alapértelmezés: `asc`).",
                        "example": "asc"
                    }
                }
            },
            "PublicCompanyData": {
                "type": "object",
                "description": "Egy cég vagy egyéni vállalkozó nyilvános cégnyilvántartási adatai, a `POST /clients` kérés mezőneveivel, így közvetlenül egy új ügyfél kitöltésére használható (a `notification` és a `risk_classification_frequency_in_months` mezőt neked kell hozzáadnod). A magánszemélyes mezők (`birth_name` … `pep_type`) mindig `null`-ok.",
                "required": [
                    "name",
                    "type",
                    "tax_number",
                    "company_registration_number",
                    "main_activity_code",
                    "emails",
                    "country",
                    "address",
                    "representatives",
                    "owners",
                    "real_owners"
                ],
                "properties": {
                    "name": {
                        "type": "string",
                        "description": "A cég rövid neve (ha nincs, a teljes neve; ismeretlen név esetén „-”).",
                        "example": "Példa Kft."
                    },
                    "type": {
                        "type": "string",
                        "enum": [
                            "company",
                            "private_person_business"
                        ],
                        "description": "`company` – cég, szervezet; `private_person_business` – egyéni vállalkozó.",
                        "example": "company"
                    },
                    "tax_number": {
                        "type": "string",
                        "description": "Adószám kötőjelekkel formázva; ha a nyilvántartás nem ad adószámot, a keresett érték (ami 8 jegyű törzsszám is lehet).",
                        "example": "12345676-2-13"
                    },
                    "company_registration_number": {
                        "type": "string",
                        "description": "Cégjegyzékszám vagy nyilvántartási szám.",
                        "nullable": true,
                        "example": "06-09-123456"
                    },
                    "main_activity_code": {
                        "type": "string",
                        "description": "Főtevékenység négyjegyű TEÁOR-kódja; `null`, ha nincs, vagy nem szerepel a `GET /configs` `main_activities` listájában.",
                        "nullable": true,
                        "example": "6920"
                    },
                    "birth_name": {
                        "type": "string",
                        "description": "Mindig `null`.",
                        "nullable": true
                    },
                    "birth_place": {
                        "type": "string",
                        "description": "Mindig `null`.",
                        "nullable": true
                    },
                    "birth_date": {
                        "type": "string",
                        "description": "Mindig `null`.",
                        "nullable": true
                    },
                    "mother_name": {
                        "type": "string",
                        "description": "Mindig `null`.",
                        "nullable": true
                    },
                    "nationality": {
                        "type": "string",
                        "description": "Mindig `null`.",
                        "nullable": true
                    },
                    "nationality2": {
                        "type": "string",
                        "description": "Mindig `null`.",
                        "nullable": true
                    },
                    "id_document_type": {
                        "type": "string",
                        "description": "Mindig `null`.",
                        "nullable": true
                    },
                    "id_document_number": {
                        "type": "string",
                        "description": "Mindig `null`.",
                        "nullable": true
                    },
                    "id_document_expiration": {
                        "type": "string",
                        "description": "Mindig `null`.",
                        "nullable": true
                    },
                    "pep": {
                        "type": "boolean",
                        "description": "Mindig `null`.",
                        "nullable": true
                    },
                    "pep_type": {
                        "type": "string",
                        "description": "Mindig `null`.",
                        "nullable": true
                    },
                    "emails": {
                        "type": "array",
                        "items": {
                            "type": "string",
                            "format": "email"
                        },
                        "description": "A cég nyilvános hivatalos (kézbesítési) e-mail-címei; üres, ha nincs."
                    },
                    "country": {
                        "type": "string",
                        "description": "A székhely országa (ISO 3166-1 alpha-2); ha a cím nem tartalmaz ismert országkódot, `HU`.",
                        "nullable": true,
                        "example": "HU"
                    },
                    "address": {
                        "type": "string",
                        "description": "A székhely címe ország nélkül.",
                        "nullable": true,
                        "example": "6720 Szeged, Példa utca 1."
                    },
                    "representatives": {
                        "type": "array",
                        "items": {
                            "type": "object",
                            "description": "Képviselő a nyilvános cégnyilvántartási adatok szerint. Mindig van `name`, `birth_date`, `mother_name`, `title`, `country`, `address`; a többi mező `null`.",
                            "properties": {
                                "name": {
                                    "type": "string",
                                    "description": "Név (ismeretlen név esetén „-”).",
                                    "example": "Kiss Elemér"
                                },
                                "birth_name": {
                                    "type": "string",
                                    "description": "Születési név.",
                                    "nullable": true,
                                    "example": "Kiss Elemér"
                                },
                                "birth_place": {
                                    "type": "string",
                                    "description": "Születési hely.",
                                    "nullable": true,
                                    "example": "Szeged"
                                },
                                "birth_date": {
                                    "type": "string",
                                    "nullable": true,
                                    "description": "Születési dátum a nyilvántartásból (jellemzően ÉÉÉÉ-HH-NN).",
                                    "example": "1975-04-12"
                                },
                                "mother_name": {
                                    "type": "string",
                                    "description": "Anyja születési neve.",
                                    "nullable": true,
                                    "example": "Nagy Ilona"
                                },
                                "nationality": {
                                    "type": "string",
                                    "description": "Állampolgárság. ISO 3166-1 alpha-2 országkód (a `GET /configs` válasz `countries` kulcsai közül, pl. `HU`).",
                                    "nullable": true,
                                    "example": "HU"
                                },
                                "nationality2": {
                                    "type": "string",
                                    "description": "Második állampolgárság. ISO 3166-1 alpha-2 országkód (a `GET /configs` válasz `countries` kulcsai közül, pl. `HU`).",
                                    "nullable": true
                                },
                                "id_document_type": {
                                    "type": "string",
                                    "enum": [
                                        "national_id_card",
                                        "passport",
                                        "driver_license",
                                        "student_id_card",
                                        "other",
                                        null
                                    ],
                                    "description": "Igazolvány típusa: `national_id_card` – személyigazolvány, `passport` – útlevél, `driver_license` – jogosítvány, `student_id_card` – diákigazolvány, `other` – egyéb.",
                                    "nullable": true,
                                    "example": "national_id_card"
                                },
                                "id_document_number": {
                                    "type": "string",
                                    "description": "Igazolvány száma.",
                                    "nullable": true,
                                    "example": "123456AB"
                                },
                                "id_document_expiration": {
                                    "type": "string",
                                    "format": "date",
                                    "description": "Igazolvány lejárata. Formátum: ÉÉÉÉ-HH-NN.",
                                    "nullable": true,
                                    "example": "2031-09-30"
                                },
                                "country": {
                                    "type": "string",
                                    "description": "Lakcím országa. ISO 3166-1 alpha-2 országkód (a `GET /configs` válasz `countries` kulcsai közül, pl. `HU`).",
                                    "nullable": true,
                                    "example": "HU"
                                },
                                "address": {
                                    "type": "string",
                                    "description": "Lakcím (ország nélkül).",
                                    "nullable": true,
                                    "example": "6720 Szeged, Példa utca 1."
                                },
                                "title": {
                                    "type": "string",
                                    "description": "Beosztás (pl. ügyvezető).",
                                    "nullable": true,
                                    "example": "ügyvezető"
                                }
                            }
                        },
                        "description": "Képviselők (egyéni vállalkozónál üres)."
                    },
                    "owners": {
                        "type": "array",
                        "items": {
                            "type": "object",
                            "description": "Tulajdonos (tag, részvényes) a nyilvános cégnyilvántartási adatok szerint. A `type` `private_person`, ha születési adat vagy anyja neve szerepel, egyébként `company`; az adószám és a személyazonosító mezők `null`-ok.",
                            "properties": {
                                "name": {
                                    "type": "string",
                                    "description": "Név (ismeretlen név esetén „-”).",
                                    "example": "Kiss Elemér"
                                },
                                "birth_name": {
                                    "type": "string",
                                    "description": "Születési név.",
                                    "nullable": true,
                                    "example": "Kiss Elemér"
                                },
                                "birth_place": {
                                    "type": "string",
                                    "description": "Születési hely.",
                                    "nullable": true,
                                    "example": "Szeged"
                                },
                                "birth_date": {
                                    "type": "string",
                                    "nullable": true,
                                    "description": "Születési dátum a nyilvántartásból (jellemzően ÉÉÉÉ-HH-NN)."
                                },
                                "mother_name": {
                                    "type": "string",
                                    "description": "Anyja születési neve.",
                                    "nullable": true,
                                    "example": "Nagy Ilona"
                                },
                                "nationality": {
                                    "type": "string",
                                    "description": "Állampolgárság. ISO 3166-1 alpha-2 országkód (a `GET /configs` válasz `countries` kulcsai közül, pl. `HU`).",
                                    "nullable": true,
                                    "example": "HU"
                                },
                                "nationality2": {
                                    "type": "string",
                                    "description": "Második állampolgárság. ISO 3166-1 alpha-2 országkód (a `GET /configs` válasz `countries` kulcsai közül, pl. `HU`).",
                                    "nullable": true
                                },
                                "id_document_type": {
                                    "type": "string",
                                    "enum": [
                                        "national_id_card",
                                        "passport",
                                        "driver_license",
                                        "student_id_card",
                                        "other",
                                        null
                                    ],
                                    "description": "Igazolvány típusa: `national_id_card` – személyigazolvány, `passport` – útlevél, `driver_license` – jogosítvány, `student_id_card` – diákigazolvány, `other` – egyéb.",
                                    "nullable": true,
                                    "example": "national_id_card"
                                },
                                "id_document_number": {
                                    "type": "string",
                                    "description": "Igazolvány száma.",
                                    "nullable": true,
                                    "example": "123456AB"
                                },
                                "id_document_expiration": {
                                    "type": "string",
                                    "format": "date",
                                    "description": "Igazolvány lejárata. Formátum: ÉÉÉÉ-HH-NN.",
                                    "nullable": true,
                                    "example": "2031-09-30"
                                },
                                "country": {
                                    "type": "string",
                                    "description": "Lakcím országa. ISO 3166-1 alpha-2 országkód (a `GET /configs` válasz `countries` kulcsai közül, pl. `HU`).",
                                    "nullable": true,
                                    "example": "HU"
                                },
                                "address": {
                                    "type": "string",
                                    "description": "Lakcím (ország nélkül).",
                                    "nullable": true,
                                    "example": "6720 Szeged, Példa utca 1."
                                },
                                "type": {
                                    "type": "string",
                                    "enum": [
                                        "company",
                                        "private_person"
                                    ],
                                    "description": "`private_person` – magánszemély, `company` – cég, szervezet.",
                                    "example": "private_person"
                                },
                                "tax_number": {
                                    "type": "string",
                                    "description": "A tulajdonos adószáma (cég vagy egyéni vállalkozó tulajdonosnál), 11 jegy kötőjelekkel vagy nélkülük, ellenőrzőszámmal ellenőrizve.",
                                    "nullable": true,
                                    "example": "12345676-2-13"
                                }
                            }
                        },
                        "description": "Tulajdonosok: tagok, beltagok, kültagok, részvényesek (egyéni vállalkozónál üres)."
                    },
                    "real_owners": {
                        "type": "array",
                        "items": {
                            "type": "object",
                            "description": "Tényleges tulajdonos. Ha a cégnek egyetlen magánszemély tulajdonosa van, belőle képződik 100%-os hányaddal. Prémium csomagban (a „tényleges tulajdonosok lekérdezése” funkció) a hiányzó tényleges tulajdonosokat további nyilvános nyilvántartásból is kikeresi, ha a cégnek vannak tulajdonosai; ilyenkor a tulajdoni hányad a befolyás mértéke. `pep`, `pep_type`, `ownership_interest` mindig `null`.",
                            "properties": {
                                "name": {
                                    "type": "string",
                                    "description": "Név (ismeretlen név esetén „-”).",
                                    "example": "Kiss Elemér"
                                },
                                "birth_name": {
                                    "type": "string",
                                    "description": "Születési név.",
                                    "nullable": true,
                                    "example": "Kiss Elemér"
                                },
                                "birth_place": {
                                    "type": "string",
                                    "description": "Születési hely.",
                                    "nullable": true,
                                    "example": "Szeged"
                                },
                                "birth_date": {
                                    "type": "string",
                                    "nullable": true,
                                    "description": "Születési dátum a nyilvántartásból (jellemzően ÉÉÉÉ-HH-NN)."
                                },
                                "mother_name": {
                                    "type": "string",
                                    "description": "Anyja születési neve.",
                                    "nullable": true,
                                    "example": "Nagy Ilona"
                                },
                                "nationality": {
                                    "type": "string",
                                    "description": "Állampolgárság. ISO 3166-1 alpha-2 országkód (a `GET /configs` válasz `countries` kulcsai közül, pl. `HU`).",
                                    "nullable": true,
                                    "example": "HU"
                                },
                                "nationality2": {
                                    "type": "string",
                                    "description": "Második állampolgárság. ISO 3166-1 alpha-2 országkód (a `GET /configs` válasz `countries` kulcsai közül, pl. `HU`).",
                                    "nullable": true
                                },
                                "id_document_type": {
                                    "type": "string",
                                    "enum": [
                                        "national_id_card",
                                        "passport",
                                        "driver_license",
                                        "student_id_card",
                                        "other",
                                        null
                                    ],
                                    "description": "Igazolvány típusa: `national_id_card` – személyigazolvány, `passport` – útlevél, `driver_license` – jogosítvány, `student_id_card` – diákigazolvány, `other` – egyéb.",
                                    "nullable": true,
                                    "example": "national_id_card"
                                },
                                "id_document_number": {
                                    "type": "string",
                                    "description": "Igazolvány száma.",
                                    "nullable": true,
                                    "example": "123456AB"
                                },
                                "id_document_expiration": {
                                    "type": "string",
                                    "format": "date",
                                    "description": "Igazolvány lejárata. Formátum: ÉÉÉÉ-HH-NN.",
                                    "nullable": true,
                                    "example": "2031-09-30"
                                },
                                "country": {
                                    "type": "string",
                                    "description": "Lakcím országa. ISO 3166-1 alpha-2 országkód (a `GET /configs` válasz `countries` kulcsai közül, pl. `HU`).",
                                    "nullable": true,
                                    "example": "HU"
                                },
                                "address": {
                                    "type": "string",
                                    "description": "Lakcím (ország nélkül).",
                                    "nullable": true,
                                    "example": "6720 Szeged, Példa utca 1."
                                },
                                "pep": {
                                    "type": "boolean",
                                    "description": "Kiemelt közszereplő-e.",
                                    "nullable": true,
                                    "example": false
                                },
                                "pep_type": {
                                    "type": "string",
                                    "enum": [
                                        "a",
                                        "b",
                                        "c",
                                        "d",
                                        "e",
                                        "f",
                                        "g",
                                        "h",
                                        null
                                    ],
                                    "description": "Kiemelt közszereplői kategória a pénzmosási törvény szerinti pont betűjele (`a`–`h`; a teljes szöveg a `GET /configs` válasz `pep_types` mezőjében). Ha `pep` igaz, add meg.",
                                    "nullable": true
                                },
                                "ownership_share": {
                                    "type": "number",
                                    "minimum": 0,
                                    "maximum": 100,
                                    "nullable": true,
                                    "description": "Tulajdoni hányad százalékban (legfeljebb 2 tizedesjegy).",
                                    "example": 50.5
                                },
                                "ownership_interest": {
                                    "type": "string",
                                    "description": "A tulajdoni érdekeltség jellege szövegesen.",
                                    "nullable": true,
                                    "example": "közvetlen tulajdon"
                                }
                            }
                        },
                        "description": "Tényleges tulajdonosok (lehet üres)."
                    }
                }
            },
            "ClientRepresentative": {
                "type": "object",
                "description": "Egy cég típusú ügyfél képviselője (pl. ügyvezető). A képviselőket az ügyfél létrehozásakor / módosításakor a `representatives` tömbben lehet megadni; önállóan csak lekérdezni és a szankciós találatait elbírálni lehet.",
                "properties": {
                    "id": {
                        "type": "integer",
                        "description": "A személy azonosítója.",
                        "example": 314
                    },
                    "name": {
                        "type": "string",
                        "description": "Név (cégtulajdonosnál a cég neve). A szankciós egyezést ez alapján keresi a rendszer.",
                        "example": "Kiss Elemér"
                    },
                    "birth_name": {
                        "type": "string",
                        "nullable": true,
                        "description": "Születési név.",
                        "example": "Kiss Elemér"
                    },
                    "birth_place": {
                        "type": "string",
                        "nullable": true,
                        "description": "Születési hely.",
                        "example": "Szeged"
                    },
                    "birth_date": {
                        "type": "string",
                        "format": "date",
                        "nullable": true,
                        "description": "Születési dátum ÉÉÉÉ-HH-NN alakban.",
                        "example": "1978-04-12"
                    },
                    "mother_name": {
                        "type": "string",
                        "nullable": true,
                        "description": "Anyja születési neve.",
                        "example": "Nagy Ilona"
                    },
                    "nationality": {
                        "allOf": [
                            {
                                "$ref": "#/components/schemas/CountryCode"
                            }
                        ],
                        "nullable": true,
                        "description": "Állampolgárság (kétbetűs országkód, ISO 3166-1 alpha-2).",
                        "type": "string"
                    },
                    "nationality2": {
                        "allOf": [
                            {
                                "$ref": "#/components/schemas/CountryCode"
                            }
                        ],
                        "nullable": true,
                        "description": "Második állampolgárság (kétbetűs országkód), ha van.",
                        "type": "string"
                    },
                    "id_document_type": {
                        "type": "string",
                        "nullable": true,
                        "enum": [
                            "national_id_card",
                            "passport",
                            "driver_license",
                            "student_id_card",
                            "other",
                            null
                        ],
                        "description": "Az azonosító okmány típusa: `national_id_card` – személyigazolvány, `passport` – útlevél, `driver_license` – jogosítvány, `student_id_card` – diákigazolvány, `other` – egyéb."
                    },
                    "id_document_number": {
                        "type": "string",
                        "nullable": true,
                        "description": "Az azonosító okmány száma.",
                        "example": "123456AB"
                    },
                    "id_document_expiration": {
                        "type": "string",
                        "format": "date",
                        "nullable": true,
                        "description": "Az okmány lejárati dátuma ÉÉÉÉ-HH-NN alakban (a lejárt vagy egy hónapon belül lejáró okmány figyelmeztetést ad az ügyfélnél).",
                        "example": "2029-08-31"
                    },
                    "country": {
                        "allOf": [
                            {
                                "$ref": "#/components/schemas/CountryCode"
                            }
                        ],
                        "nullable": true,
                        "description": "A lakcím / székhely országa (kétbetűs országkód).",
                        "type": "string"
                    },
                    "address": {
                        "type": "string",
                        "nullable": true,
                        "description": "Lakcím vagy székhely (ország nélkül).",
                        "example": "6720 Szeged, Kárász utca 1."
                    },
                    "last_sanction_check": {
                        "type": "integer",
                        "nullable": true,
                        "description": "Mikor bírálták el utoljára a szankciós találatokat (Unix-időbélyeg, másodperc). `null`, ha még soha, vagy ha a név azóta megváltozott (névváltozáskor törlődik).",
                        "example": 1761558000
                    },
                    "created_at": {
                        "type": "integer",
                        "description": "Létrehozás ideje (Unix-időbélyeg, másodperc).",
                        "example": 1745570000
                    },
                    "updated_at": {
                        "type": "integer",
                        "description": "Utolsó módosítás ideje (Unix-időbélyeg, másodperc).",
                        "example": 1761558000
                    },
                    "title": {
                        "type": "string",
                        "nullable": true,
                        "description": "A képviselő tisztsége / beosztása.",
                        "example": "ügyvezető"
                    },
                    "unchecked_sanctions": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/Sanction"
                        },
                        "description": "Az el nem bírált szankciós találatok: a nemzetközi és hazai szankciós listák (és a kiemelt közszereplői lista) azon bejegyzései, amelyek neve egyezik a személy nevével, és amelyek az utolsó elbírálás (`last_sanction_check`) óta kerültek a listára. Ha a személynél és a bejegyzésnél is van születési dátum, csak az egyező születési dátumú bejegyzés számít. Üres tömb, ha nincs elbírálandó találat."
                    }
                },
                "required": [
                    "id",
                    "name",
                    "birth_name",
                    "birth_place",
                    "birth_date",
                    "mother_name",
                    "nationality",
                    "nationality2",
                    "id_document_type",
                    "id_document_number",
                    "id_document_expiration",
                    "country",
                    "address",
                    "last_sanction_check",
                    "created_at",
                    "updated_at",
                    "unchecked_sanctions",
                    "title"
                ]
            },
            "ClientOwner": {
                "type": "object",
                "description": "Egy cég típusú ügyfél tulajdonosa (cég vagy magánszemély). A tulajdonosokat az ügyfél létrehozásakor / módosításakor az `owners` tömbben lehet megadni; önállóan csak lekérdezni és a szankciós találatait elbírálni lehet.",
                "properties": {
                    "id": {
                        "type": "integer",
                        "description": "A személy azonosítója.",
                        "example": 314
                    },
                    "name": {
                        "type": "string",
                        "description": "Név (cégtulajdonosnál a cég neve). A szankciós egyezést ez alapján keresi a rendszer.",
                        "example": "Kiss Elemér"
                    },
                    "birth_name": {
                        "type": "string",
                        "nullable": true,
                        "description": "Születési név.",
                        "example": "Kiss Elemér"
                    },
                    "birth_place": {
                        "type": "string",
                        "nullable": true,
                        "description": "Születési hely.",
                        "example": "Szeged"
                    },
                    "birth_date": {
                        "type": "string",
                        "format": "date",
                        "nullable": true,
                        "description": "Születési dátum ÉÉÉÉ-HH-NN alakban.",
                        "example": "1978-04-12"
                    },
                    "mother_name": {
                        "type": "string",
                        "nullable": true,
                        "description": "Anyja születési neve.",
                        "example": "Nagy Ilona"
                    },
                    "nationality": {
                        "allOf": [
                            {
                                "$ref": "#/components/schemas/CountryCode"
                            }
                        ],
                        "nullable": true,
                        "description": "Állampolgárság (kétbetűs országkód, ISO 3166-1 alpha-2).",
                        "type": "string"
                    },
                    "nationality2": {
                        "allOf": [
                            {
                                "$ref": "#/components/schemas/CountryCode"
                            }
                        ],
                        "nullable": true,
                        "description": "Második állampolgárság (kétbetűs országkód), ha van.",
                        "type": "string"
                    },
                    "id_document_type": {
                        "type": "string",
                        "nullable": true,
                        "enum": [
                            "national_id_card",
                            "passport",
                            "driver_license",
                            "student_id_card",
                            "other",
                            null
                        ],
                        "description": "Az azonosító okmány típusa: `national_id_card` – személyigazolvány, `passport` – útlevél, `driver_license` – jogosítvány, `student_id_card` – diákigazolvány, `other` – egyéb."
                    },
                    "id_document_number": {
                        "type": "string",
                        "nullable": true,
                        "description": "Az azonosító okmány száma.",
                        "example": "123456AB"
                    },
                    "id_document_expiration": {
                        "type": "string",
                        "format": "date",
                        "nullable": true,
                        "description": "Az okmány lejárati dátuma ÉÉÉÉ-HH-NN alakban (a lejárt vagy egy hónapon belül lejáró okmány figyelmeztetést ad az ügyfélnél).",
                        "example": "2029-08-31"
                    },
                    "country": {
                        "allOf": [
                            {
                                "$ref": "#/components/schemas/CountryCode"
                            }
                        ],
                        "nullable": true,
                        "description": "A lakcím / székhely országa (kétbetűs országkód).",
                        "type": "string"
                    },
                    "address": {
                        "type": "string",
                        "nullable": true,
                        "description": "Lakcím vagy székhely (ország nélkül).",
                        "example": "6720 Szeged, Kárász utca 1."
                    },
                    "last_sanction_check": {
                        "type": "integer",
                        "nullable": true,
                        "description": "Mikor bírálták el utoljára a szankciós találatokat (Unix-időbélyeg, másodperc). `null`, ha még soha, vagy ha a név azóta megváltozott (névváltozáskor törlődik).",
                        "example": 1761558000
                    },
                    "created_at": {
                        "type": "integer",
                        "description": "Létrehozás ideje (Unix-időbélyeg, másodperc).",
                        "example": 1745570000
                    },
                    "updated_at": {
                        "type": "integer",
                        "description": "Utolsó módosítás ideje (Unix-időbélyeg, másodperc).",
                        "example": 1761558000
                    },
                    "type": {
                        "type": "string",
                        "enum": [
                            "company",
                            "private_person"
                        ],
                        "description": "A tulajdonos típusa: `company` – cég, szervezet (ilyenkor a személyes adatok – születési adatok, anyja neve, állampolgárság, okmány – mindig `null`); `private_person` – magánszemély (ilyenkor a `tax_number` mindig `null`).",
                        "example": "private_person"
                    },
                    "tax_number": {
                        "type": "string",
                        "nullable": true,
                        "description": "A cégtulajdonos adószáma, abban az alakban, ahogy megadták (csak `company` típusnál).",
                        "example": "12345676-2-13"
                    },
                    "unchecked_sanctions": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/Sanction"
                        },
                        "description": "Az el nem bírált szankciós találatok: a nemzetközi és hazai szankciós listák (és a kiemelt közszereplői lista) azon bejegyzései, amelyek neve egyezik a személy nevével, és amelyek az utolsó elbírálás (`last_sanction_check`) óta kerültek a listára. Ha a személynél és a bejegyzésnél is van születési dátum, csak az egyező születési dátumú bejegyzés számít. Üres tömb, ha nincs elbírálandó találat."
                    }
                },
                "required": [
                    "id",
                    "name",
                    "birth_name",
                    "birth_place",
                    "birth_date",
                    "mother_name",
                    "nationality",
                    "nationality2",
                    "id_document_type",
                    "id_document_number",
                    "id_document_expiration",
                    "country",
                    "address",
                    "last_sanction_check",
                    "created_at",
                    "updated_at",
                    "unchecked_sanctions",
                    "type",
                    "tax_number"
                ]
            },
            "ClientRealOwner": {
                "type": "object",
                "description": "Egy cég típusú ügyfél tényleges tulajdonosa (Pmt. szerinti tényleges tulajdonos), kiemelt közszereplői jelöléssel. A tényleges tulajdonosokat az ügyfél létrehozásakor / módosításakor a `real_owners` tömbben lehet megadni; önállóan csak lekérdezni és a szankciós találatait elbírálni lehet.",
                "properties": {
                    "id": {
                        "type": "integer",
                        "description": "A személy azonosítója.",
                        "example": 314
                    },
                    "name": {
                        "type": "string",
                        "description": "Név (cégtulajdonosnál a cég neve). A szankciós egyezést ez alapján keresi a rendszer.",
                        "example": "Kiss Elemér"
                    },
                    "birth_name": {
                        "type": "string",
                        "nullable": true,
                        "description": "Születési név.",
                        "example": "Kiss Elemér"
                    },
                    "birth_place": {
                        "type": "string",
                        "nullable": true,
                        "description": "Születési hely.",
                        "example": "Szeged"
                    },
                    "birth_date": {
                        "type": "string",
                        "format": "date",
                        "nullable": true,
                        "description": "Születési dátum ÉÉÉÉ-HH-NN alakban.",
                        "example": "1978-04-12"
                    },
                    "mother_name": {
                        "type": "string",
                        "nullable": true,
                        "description": "Anyja születési neve.",
                        "example": "Nagy Ilona"
                    },
                    "nationality": {
                        "allOf": [
                            {
                                "$ref": "#/components/schemas/CountryCode"
                            }
                        ],
                        "nullable": true,
                        "description": "Állampolgárság (kétbetűs országkód, ISO 3166-1 alpha-2).",
                        "type": "string"
                    },
                    "nationality2": {
                        "allOf": [
                            {
                                "$ref": "#/components/schemas/CountryCode"
                            }
                        ],
                        "nullable": true,
                        "description": "Második állampolgárság (kétbetűs országkód), ha van.",
                        "type": "string"
                    },
                    "id_document_type": {
                        "type": "string",
                        "nullable": true,
                        "enum": [
                            "national_id_card",
                            "passport",
                            "driver_license",
                            "student_id_card",
                            "other",
                            null
                        ],
                        "description": "Az azonosító okmány típusa: `national_id_card` – személyigazolvány, `passport` – útlevél, `driver_license` – jogosítvány, `student_id_card` – diákigazolvány, `other` – egyéb."
                    },
                    "id_document_number": {
                        "type": "string",
                        "nullable": true,
                        "description": "Az azonosító okmány száma.",
                        "example": "123456AB"
                    },
                    "id_document_expiration": {
                        "type": "string",
                        "format": "date",
                        "nullable": true,
                        "description": "Az okmány lejárati dátuma ÉÉÉÉ-HH-NN alakban (a lejárt vagy egy hónapon belül lejáró okmány figyelmeztetést ad az ügyfélnél).",
                        "example": "2029-08-31"
                    },
                    "country": {
                        "allOf": [
                            {
                                "$ref": "#/components/schemas/CountryCode"
                            }
                        ],
                        "nullable": true,
                        "description": "A lakcím / székhely országa (kétbetűs országkód).",
                        "type": "string"
                    },
                    "address": {
                        "type": "string",
                        "nullable": true,
                        "description": "Lakcím vagy székhely (ország nélkül).",
                        "example": "6720 Szeged, Kárász utca 1."
                    },
                    "last_sanction_check": {
                        "type": "integer",
                        "nullable": true,
                        "description": "Mikor bírálták el utoljára a szankciós találatokat (Unix-időbélyeg, másodperc). `null`, ha még soha, vagy ha a név azóta megváltozott (névváltozáskor törlődik).",
                        "example": 1761558000
                    },
                    "created_at": {
                        "type": "integer",
                        "description": "Létrehozás ideje (Unix-időbélyeg, másodperc).",
                        "example": 1745570000
                    },
                    "updated_at": {
                        "type": "integer",
                        "description": "Utolsó módosítás ideje (Unix-időbélyeg, másodperc).",
                        "example": 1761558000
                    },
                    "pep": {
                        "type": "boolean",
                        "nullable": true,
                        "description": "Kiemelt közszereplő-e (PEP). `null`, ha nincs megadva.",
                        "example": false
                    },
                    "pep_type": {
                        "type": "string",
                        "nullable": true,
                        "enum": [
                            "a",
                            "b",
                            "c",
                            "d",
                            "e",
                            "f",
                            "g",
                            "h",
                            null
                        ],
                        "description": "A kiemelt közszereplői kategória (Pmt. szerinti betűjel): `a` – államfő, kormányfő, miniszter, miniszterhelyettes, államtitkár; `b` – országgyűlési képviselő vagy hasonló jogalkotó szerv tagja, nemzetiségi szószóló; `c` – politikai párt irányító szervének tagja, tisztségviselője; `d` – legfelsőbb bíróság, alkotmánybíróság, fellebbezhetetlen döntést hozó magas rangú bírói testület tagja (Alkotmánybíróság, ítélőtábla, Kúria); `e` – számvevőszék és központi bank igazgatósági tagja (ÁSZ elnöke, alelnöke, Monetáris Tanács, Pénzügyi Stabilitási Tanács tagja); `f` – nagykövet, ügyvivő, fegyveres erők és rendvédelmi szervek magas rangú vezetője; `g` – többségi állami tulajdonú vállalat ügyvezetője, irányító vagy felügyelő testületének tagja; `h` – nemzetközi szervezet vezetője, vezetőhelyettese, vezető testületének tagja. Csak `pep: true` mellett van értéke."
                    },
                    "ownership_share": {
                        "type": "number",
                        "format": "float",
                        "nullable": true,
                        "minimum": 0,
                        "maximum": 100,
                        "description": "Tulajdoni hányad százalékban (legfeljebb két tizedesjegy).",
                        "example": 50.5
                    },
                    "ownership_interest": {
                        "type": "string",
                        "nullable": true,
                        "description": "A tulajdonosi érdekeltség jellege, szövegesen.",
                        "example": "közvetlen tulajdon"
                    },
                    "unchecked_sanctions": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/Sanction"
                        },
                        "description": "Az el nem bírált szankciós találatok: a nemzetközi és hazai szankciós listák (és a kiemelt közszereplői lista) azon bejegyzései, amelyek neve egyezik a személy nevével, és amelyek az utolsó elbírálás (`last_sanction_check`) óta kerültek a listára. Ha a személynél és a bejegyzésnél is van születési dátum, csak az egyező születési dátumú bejegyzés számít. Üres tömb, ha nincs elbírálandó találat."
                    }
                },
                "required": [
                    "id",
                    "name",
                    "birth_name",
                    "birth_place",
                    "birth_date",
                    "mother_name",
                    "nationality",
                    "nationality2",
                    "id_document_type",
                    "id_document_number",
                    "id_document_expiration",
                    "country",
                    "address",
                    "last_sanction_check",
                    "created_at",
                    "updated_at",
                    "unchecked_sanctions",
                    "pep",
                    "pep_type",
                    "ownership_share",
                    "ownership_interest"
                ]
            },
            "ClientDocument": {
                "type": "object",
                "description": "Az ügyfélhez feltöltött dokumentum (pl. aláírt átvilágítási adatlap, okmánymásolat).",
                "properties": {
                    "id": {
                        "type": "integer",
                        "description": "A dokumentum azonosítója.",
                        "example": 77
                    },
                    "name": {
                        "type": "string",
                        "description": "A dokumentum megnevezése.",
                        "example": "Aláírt átvilágítási adatlap"
                    },
                    "file": {
                        "type": "string",
                        "format": "uri",
                        "description": "A feltöltött fájl letöltési URL-je. A tárolt fájl neve generált, a kiterjesztése a feltöltött fájlé (kisbetűvel).",
                        "example": "https://api.pmtseged.hu/storage/client_document/k3x9qa/6720ab12cd34e.pdf"
                    },
                    "note": {
                        "type": "string",
                        "nullable": true,
                        "description": "Megjegyzés a dokumentumhoz.",
                        "example": "Eredeti példány az irodában."
                    },
                    "created_at": {
                        "type": "integer",
                        "description": "Feltöltés ideje (Unix-időbélyeg, másodperc).",
                        "example": 1761558000
                    },
                    "updated_at": {
                        "type": "integer",
                        "description": "Utolsó módosítás ideje (Unix-időbélyeg, másodperc).",
                        "example": 1761558000
                    }
                },
                "required": [
                    "id",
                    "name",
                    "file",
                    "note",
                    "created_at",
                    "updated_at"
                ]
            },
            "ClientRiskClassification": {
                "type": "object",
                "description": "Egy ügyfél egy kockázati besorolása. Ügyfelenként egy napra egy besorolás lehet; az ügyfél aktuális besorolása a legkésőbbi dátumú.",
                "properties": {
                    "id": {
                        "type": "integer",
                        "description": "A besorolás azonosítója.",
                        "example": 1203
                    },
                    "risk": {
                        "type": "string",
                        "enum": [
                            "low",
                            "average",
                            "high"
                        ],
                        "description": "Kockázati szint: `low` – alacsony, `average` – átlagos, `high` – magas.",
                        "example": "average"
                    },
                    "reason": {
                        "type": "string",
                        "nullable": true,
                        "description": "A besorolás indoklása.",
                        "example": "Belföldi ügyfél, átlátható tulajdonosi szerkezet."
                    },
                    "date": {
                        "type": "string",
                        "format": "date",
                        "description": "A besorolás dátuma ÉÉÉÉ-HH-NN alakban. Ettől számítja a rendszer az ügyfél `risk_classification_frequency_in_months` mezője szerinti következő esedékességet.",
                        "example": "2026-10-27"
                    },
                    "created_at": {
                        "type": "integer",
                        "description": "Rögzítés ideje (Unix-időbélyeg, másodperc).",
                        "example": 1761558000
                    }
                },
                "required": [
                    "id",
                    "risk",
                    "reason",
                    "date",
                    "created_at"
                ]
            },
            "SanctionCheck": {
                "type": "object",
                "description": "Az ügyfél szankciós ellenőrzési naplójának egy bejegyzése (a `GET /clients/{id}` válaszában a `sanction_checks` tömb eleme, legújabb elöl). Új bejegyzés akkor keletkezik, amikor az ügyfél és kapcsolódó személyei el nem bírált találatainak köre megváltozik (például az ügyfél mentésekor vagy a szankciós listák változásakor), valamint adószám alapján történő cégadat-betöltéskor.",
                "properties": {
                    "id": {
                        "type": "integer",
                        "description": "A naplóbejegyzés azonosítója.",
                        "example": 9001
                    },
                    "names": {
                        "type": "string",
                        "nullable": true,
                        "description": "Az ellenőrzéskor talált, el nem bírált szankciós bejegyzések, ábécérendben, vesszővel elválasztva, `Név (LISTA)` alakban, ahol a LISTA `ENSZ`, `EU` vagy `PEP`. `null`, ha nem volt találat.",
                        "example": "Kiss Elemér (EU)"
                    },
                    "has_sanctions": {
                        "type": "boolean",
                        "description": "Volt-e találat (`true`, ha a `names` nem üres).",
                        "example": true
                    },
                    "created_at": {
                        "type": "integer",
                        "description": "Az ellenőrzés ideje (Unix-időbélyeg, másodperc).",
                        "example": 1761558000
                    }
                },
                "required": [
                    "id",
                    "names",
                    "has_sanctions",
                    "created_at"
                ]
            },
            "CountryCode": {
                "type": "string",
                "description": "Kétbetűs országkód (ISO 3166-1 alpha-2), a `GET /configs` országlistája szerint (pl. `HU` – Magyarország, `AT` – Ausztria, `DE` – Németország).",
                "enum": [
                    "HU",
                    "AF",
                    "AL",
                    "DZ",
                    "AS",
                    "US",
                    "UM",
                    "VI",
                    "AD",
                    "AO",
                    "AI",
                    "AQ",
                    "AG",
                    "AR",
                    "AW",
                    "AX",
                    "AT",
                    "AU",
                    "AZ",
                    "BS",
                    "BH",
                    "BD",
                    "BB",
                    "BE",
                    "BZ",
                    "BJ",
                    "BM",
                    "BT",
                    "GW",
                    "BO",
                    "BA",
                    "BW",
                    "BV",
                    "BR",
                    "IO",
                    "VG",
                    "BN",
                    "BG",
                    "BF",
                    "BI",
                    "CL",
                    "CY",
                    "CC",
                    "KM",
                    "CK",
                    "CR",
                    "CZ",
                    "TD",
                    "CW",
                    "DM",
                    "DO",
                    "DJ",
                    "DK",
                    "ZA",
                    "KR",
                    "SS",
                    "GS",
                    "EC",
                    "GQ",
                    "GB",
                    "EG",
                    "CI",
                    "AE",
                    "ER",
                    "ET",
                    "KP",
                    "MK",
                    "MP",
                    "EE",
                    "FK",
                    "BY",
                    "FO",
                    "FJ",
                    "FI",
                    "GF",
                    "PF",
                    "TF",
                    "FR",
                    "PH",
                    "GA",
                    "GM",
                    "GH",
                    "GI",
                    "GD",
                    "GL",
                    "GE",
                    "GP",
                    "GU",
                    "GT",
                    "GG",
                    "GN",
                    "GY",
                    "GR",
                    "HT",
                    "HM",
                    "NL",
                    "HN",
                    "HK",
                    "HR",
                    "IN",
                    "ID",
                    "IQ",
                    "IR",
                    "IS",
                    "IL",
                    "IE",
                    "JM",
                    "JP",
                    "YE",
                    "JE",
                    "JO",
                    "KY",
                    "KH",
                    "CM",
                    "CA",
                    "BQ",
                    "CX",
                    "QA",
                    "KZ",
                    "TL",
                    "KE",
                    "KI",
                    "CO",
                    "CG",
                    "CD",
                    "CU",
                    "KW",
                    "CN",
                    "CF",
                    "LA",
                    "PL",
                    "LS",
                    "LV",
                    "LB",
                    "LR",
                    "LI",
                    "LT",
                    "LU",
                    "LY",
                    "MG",
                    "MO",
                    "MY",
                    "MW",
                    "MV",
                    "ML",
                    "IM",
                    "MA",
                    "MH",
                    "MQ",
                    "MU",
                    "MR",
                    "YT",
                    "MX",
                    "MM",
                    "FM",
                    "MD",
                    "MC",
                    "MN",
                    "ME",
                    "MS",
                    "MZ",
                    "MT",
                    "NA",
                    "NR",
                    "NP",
                    "NI",
                    "NE",
                    "NG",
                    "NU",
                    "NF",
                    "NO",
                    "EH",
                    "DE",
                    "IT",
                    "OM",
                    "RU",
                    "AM",
                    "PK",
                    "PW",
                    "PS",
                    "PA",
                    "PY",
                    "PE",
                    "PN",
                    "PT",
                    "PR",
                    "PG",
                    "RO",
                    "RW",
                    "RE",
                    "BL",
                    "KN",
                    "LC",
                    "MF",
                    "PM",
                    "VC",
                    "SB",
                    "SV",
                    "WS",
                    "SM",
                    "SC",
                    "SL",
                    "SX",
                    "ES",
                    "SJ",
                    "LK",
                    "SR",
                    "CH",
                    "SE",
                    "SA",
                    "SN",
                    "SH",
                    "RS",
                    "SG",
                    "SK",
                    "SI",
                    "SO",
                    "SD",
                    "SY",
                    "ST",
                    "TW",
                    "TZ",
                    "TH",
                    "TG",
                    "TK",
                    "TO",
                    "TT",
                    "TN",
                    "TC",
                    "TV",
                    "TJ",
                    "TR",
                    "TM",
                    "UG",
                    "UA",
                    "UY",
                    "NC",
                    "NZ",
                    "UZ",
                    "VU",
                    "VA",
                    "VE",
                    "VN",
                    "WF",
                    "ZM",
                    "ZW",
                    "CV"
                ],
                "example": "HU"
            },
            "Company": {
                "type": "object",
                "description": "Ügyfélcsoport (a felületen „Ügyfélcsoport”). Az ügyfelek csoportosítására szolgál, és a szerződés adatait tárolja, amelyek a csoportba sorolt ügyfelek átvilágítási adatlapjára kerülnek.",
                "required": [
                    "id",
                    "name",
                    "contract_type",
                    "contract_subject",
                    "contract_duration",
                    "performance_details",
                    "business_relationship_purpose",
                    "clients_count"
                ],
                "properties": {
                    "id": {
                        "type": "integer",
                        "description": "Az ügyfélcsoport azonosítója (ügyfélnél ezt kell a `company_id` mezőbe írni).",
                        "example": 12
                    },
                    "name": {
                        "type": "string",
                        "maxLength": 255,
                        "description": "Az ügyfélcsoport neve (kötelező).",
                        "example": "Budapesti iroda, könyvelési ügyfelek"
                    },
                    "contract_type": {
                        "type": "string",
                        "maxLength": 255,
                        "nullable": true,
                        "description": "Szerződés típusa; a csoport ügyfeleinek átvilágítási adatlapjára kerül.",
                        "example": "Megbízási szerződés"
                    },
                    "contract_subject": {
                        "type": "string",
                        "maxLength": 255,
                        "nullable": true,
                        "description": "Szerződés tárgya; a csoport ügyfeleinek átvilágítási adatlapjára kerül.",
                        "example": "Könyvviteli szolgáltatás"
                    },
                    "contract_duration": {
                        "type": "string",
                        "maxLength": 255,
                        "nullable": true,
                        "description": "Szerződés időtartama (szabad szöveg); a csoport ügyfeleinek átvilágítási adatlapjára kerül.",
                        "example": "Határozatlan idő"
                    },
                    "performance_details": {
                        "type": "string",
                        "maxLength": 255,
                        "nullable": true,
                        "description": "Teljesítés körülményei (hely, idő, mód); a csoport ügyfeleinek átvilágítási adatlapjára kerül.",
                        "example": "Havonta, elektronikus úton, a megbízó székhelyén"
                    },
                    "business_relationship_purpose": {
                        "type": "string",
                        "maxLength": 255,
                        "nullable": true,
                        "description": "Az üzleti kapcsolat célja és tervezett jellege; a csoport ügyfeleinek átvilágítási adatlapjára kerül.",
                        "example": "Folyamatos könyvelési és bérszámfejtési szolgáltatás"
                    },
                    "clients_count": {
                        "type": "integer",
                        "minimum": 0,
                        "description": "A csoportba sorolt ügyfelek száma.",
                        "example": 8
                    }
                }
            },
            "Invoice": {
                "type": "object",
                "description": "A PmtSegéd előfizetés díjáról a felhasználónak kiállított számla.",
                "required": [
                    "id",
                    "invoice_no",
                    "price",
                    "url",
                    "created_at"
                ],
                "properties": {
                    "id": {
                        "type": "integer",
                        "description": "A számla azonosítója.",
                        "example": 154
                    },
                    "invoice_no": {
                        "type": "string",
                        "description": "A számla sorszáma.",
                        "example": "PMT-2026-123"
                    },
                    "price": {
                        "type": "integer",
                        "description": "A számla bruttó végösszege forintban (egész szám, ÁFA-val együtt).",
                        "example": 12700
                    },
                    "url": {
                        "type": "string",
                        "format": "uri",
                        "description": "Bejelentkezés nélkül megnyitható link, ahol a számla megtekinthető és PDF-ben letölthető. Ha a link nem készült el, átmenetileg a PmtSegéd weboldal címe szerepel itt.",
                        "example": "https://example.com/szamla/AbCdEf123"
                    },
                    "created_at": {
                        "type": "integer",
                        "format": "int64",
                        "description": "A számla kiállításának időpontja (Unix-időbélyeg, másodperc).",
                        "example": 1793000000
                    }
                }
            },
            "Sanction": {
                "type": "object",
                "description": "Egy szankciós vagy kiemelt közszereplői listán szereplő név. Ugyanaz a személy vagy szervezet több találatként is megjelenhet (más listán vagy más névváltozattal).",
                "required": [
                    "id",
                    "list",
                    "name",
                    "birth_dates",
                    "list_name"
                ],
                "properties": {
                    "id": {
                        "type": "integer",
                        "format": "int64",
                        "description": "A listatétel azonosítója.",
                        "example": 48211
                    },
                    "list": {
                        "type": "string",
                        "enum": [
                            "ensz",
                            "eu",
                            "pep"
                        ],
                        "description": "A lista azonosítója: `ensz` – ENSZ szankciós lista; `eu` – EU szankciós lista; `pep` – kiemelt közszereplői lista.",
                        "example": "eu"
                    },
                    "name": {
                        "type": "string",
                        "description": "A név úgy, ahogy a listán szerepel.",
                        "example": "Kiss Elemér"
                    },
                    "birth_dates": {
                        "type": "array",
                        "description": "A listán megadott születési dátumok növekvő sorrendben; a pontosság a listától függ (`ÉÉÉÉ`, `ÉÉÉÉ-HH` vagy `ÉÉÉÉ-HH-NN`). Üres tömb, ha nincs megadva.",
                        "items": {
                            "type": "string",
                            "pattern": "^\\d{4}(-\\d{2}(-\\d{2})?)?$",
                            "example": "1970-05-12"
                        },
                        "example": [
                            "1970",
                            "1970-05-12"
                        ]
                    },
                    "list_name": {
                        "type": "string",
                        "description": "A lista magyar megnevezése: „ENSZ szankciós lista”, „EU szankciós lista” vagy „Kiemelt közszereplői lista”.",
                        "example": "EU szankciós lista"
                    }
                }
            },
            "SanctionSearchResult": {
                "type": "array",
                "description": "A szankciós keresés válasza: a találatok tömbje, burok nélkül. Üres tömb, ha a név egyik listán sem szerepel.",
                "items": {
                    "$ref": "#/components/schemas/Sanction"
                }
            }
        }
    }
}