{
    "openapi": "3.0.3",
    "info": {
        "title": "Raktárkezelő API v1",
        "version": "1.9.1",
        "description": "Kiadás: 2026-10-29. Katalógus és külön jogosultságú rendelési API. A Swagger csak teszt GET-kérést enged. Nincs havi használati kvóta miatti automatikus tiltás; a dokumentált technikai sebességvédelem érvényes."
    },
    "servers": [
        {
            "url": "/api/v1/test",
            "description": "Teszt - külön tesztkulcs, csak mintaadatok"
        },
        {
            "url": "/api/v1",
            "description": "Éles - éles kulcs, fizetett hozzáférés; Swaggerben nem próbálható"
        }
    ],
    "security": [
        {
            "bearerAuth": []
        }
    ],
    "paths": {
        "/variant-groups": {
            "get": {
                "tags": [
                    "Variációk"
                ],
                "summary": "Webshopos variációs gyűjtők",
                "operationId": "get_variant_groups",
                "description": "Tesztben tesztkulcs, élesben éles kulcs szükséges. Csak az adott webshop adatai érhetők el.",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/page"
                    },
                    {
                        "$ref": "#/components/parameters/per_page"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Sikeres lekérés.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/VariantGroupList"
                                }
                            }
                        },
                        "headers": {
                            "X-Request-ID": {
                                "schema": {
                                    "type": "string"
                                }
                            },
                            "X-Raktar-API-Mode": {
                                "schema": {
                                    "type": "string",
                                    "enum": [
                                        "test",
                                        "live"
                                    ]
                                }
                            },
                            "X-RateLimit-Limit": {
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-RateLimit-Remaining": {
                                "schema": {
                                    "type": "integer"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/RateLimited"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    },
                    "503": {
                        "$ref": "#/components/responses/Error"
                    }
                }
            }
        },
        "/variant-groups/{group}": {
            "get": {
                "tags": [
                    "Variációk"
                ],
                "summary": "Egy variációs gyűjtő és változatai",
                "operationId": "get_variant_groups_group",
                "description": "Tesztben tesztkulcs, élesben éles kulcs szükséges. Csak az adott webshop adatai érhetők el.",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/group"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Sikeres lekérés.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/VariantGroupResponse"
                                }
                            }
                        },
                        "headers": {
                            "X-Request-ID": {
                                "schema": {
                                    "type": "string"
                                }
                            },
                            "X-Raktar-API-Mode": {
                                "schema": {
                                    "type": "string",
                                    "enum": [
                                        "test",
                                        "live"
                                    ]
                                }
                            },
                            "X-RateLimit-Limit": {
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-RateLimit-Remaining": {
                                "schema": {
                                    "type": "integer"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/RateLimited"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    },
                    "503": {
                        "$ref": "#/components/responses/Error"
                    }
                }
            }
        },
        "/products": {
            "get": {
                "tags": [
                    "Termékek"
                ],
                "summary": "Terméklista",
                "operationId": "get_products",
                "description": "Tesztben tesztkulcs, élesben éles kulcs szükséges. Csak az adott webshop adatai érhetők el.",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/page"
                    },
                    {
                        "$ref": "#/components/parameters/per_page"
                    },
                    {
                        "$ref": "#/components/parameters/sku"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Sikeres lekérés.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ProductList"
                                }
                            }
                        },
                        "headers": {
                            "X-Request-ID": {
                                "schema": {
                                    "type": "string"
                                }
                            },
                            "X-Raktar-API-Mode": {
                                "schema": {
                                    "type": "string",
                                    "enum": [
                                        "test",
                                        "live"
                                    ]
                                }
                            },
                            "X-RateLimit-Limit": {
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-RateLimit-Remaining": {
                                "schema": {
                                    "type": "integer"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/RateLimited"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    },
                    "503": {
                        "$ref": "#/components/responses/Error"
                    }
                }
            }
        },
        "/products/{product}": {
            "get": {
                "tags": [
                    "Termékek"
                ],
                "summary": "Termék azonosító alapján",
                "operationId": "get_products_product",
                "description": "Tesztben tesztkulcs, élesben éles kulcs szükséges. Csak az adott webshop adatai érhetők el.",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/product"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Sikeres lekérés.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ProductResponse"
                                }
                            }
                        },
                        "headers": {
                            "X-Request-ID": {
                                "schema": {
                                    "type": "string"
                                }
                            },
                            "X-Raktar-API-Mode": {
                                "schema": {
                                    "type": "string",
                                    "enum": [
                                        "test",
                                        "live"
                                    ]
                                }
                            },
                            "X-RateLimit-Limit": {
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-RateLimit-Remaining": {
                                "schema": {
                                    "type": "integer"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/RateLimited"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    },
                    "503": {
                        "$ref": "#/components/responses/Error"
                    }
                }
            }
        },
        "/products/{product}/documents": {
            "get": {
                "tags": [
                    "Termékdokumentumok"
                ],
                "summary": "Termék PDF-dokumentumainak listája",
                "operationId": "get_products_product_documents",
                "description": "Tesztben tesztkulcs, élesben éles kulcs szükséges. Csak az adott webshop adatai érhetők el.",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/product"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Sikeres lekérés.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ProductDocumentsResponse"
                                }
                            }
                        },
                        "headers": {
                            "X-Request-ID": {
                                "schema": {
                                    "type": "string"
                                }
                            },
                            "X-Raktar-API-Mode": {
                                "schema": {
                                    "type": "string",
                                    "enum": [
                                        "test",
                                        "live"
                                    ]
                                }
                            },
                            "X-RateLimit-Limit": {
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-RateLimit-Remaining": {
                                "schema": {
                                    "type": "integer"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/RateLimited"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    },
                    "503": {
                        "$ref": "#/components/responses/Error"
                    }
                }
            }
        },
        "/products/{product}/documents/{document}": {
            "get": {
                "tags": [
                    "Termékdokumentumok"
                ],
                "summary": "Védett PDF letöltése",
                "operationId": "get_products_product_documents_document",
                "description": "Tesztben tesztkulcs, élesben éles kulcs szükséges. Csak az adott webshop adatai érhetők el.",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/product"
                    },
                    {
                        "$ref": "#/components/parameters/document"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Védett PDF-fájl, szerveroldali letöltéshez.",
                        "content": {
                            "application/pdf": {
                                "schema": {
                                    "type": "string",
                                    "format": "binary"
                                }
                            }
                        },
                        "headers": {
                            "Content-Disposition": {
                                "schema": {
                                    "type": "string"
                                }
                            },
                            "X-Request-ID": {
                                "schema": {
                                    "type": "string"
                                }
                            },
                            "X-Raktar-API-Mode": {
                                "schema": {
                                    "type": "string",
                                    "enum": [
                                        "test",
                                        "live"
                                    ]
                                }
                            },
                            "X-RateLimit-Limit": {
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-RateLimit-Remaining": {
                                "schema": {
                                    "type": "integer"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/RateLimited"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    },
                    "503": {
                        "$ref": "#/components/responses/Error"
                    }
                }
            }
        },
        "/products/{product}/image": {
            "get": {
                "tags": [
                    "Termékképek"
                ],
                "summary": "Fő termékkép",
                "operationId": "get_products_product_image",
                "description": "Tesztben tesztkulcs, élesben éles kulcs szükséges. Csak az adott webshop adatai érhetők el.",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/product"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Védett fő termékkép.",
                        "content": {
                            "image/jpeg": {
                                "schema": {
                                    "type": "string",
                                    "format": "binary"
                                }
                            },
                            "image/png": {
                                "schema": {
                                    "type": "string",
                                    "format": "binary"
                                }
                            },
                            "image/webp": {
                                "schema": {
                                    "type": "string",
                                    "format": "binary"
                                }
                            }
                        },
                        "headers": {
                            "X-Request-ID": {
                                "schema": {
                                    "type": "string"
                                }
                            },
                            "X-Raktar-API-Mode": {
                                "schema": {
                                    "type": "string",
                                    "enum": [
                                        "test",
                                        "live"
                                    ]
                                }
                            },
                            "X-RateLimit-Limit": {
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-RateLimit-Remaining": {
                                "schema": {
                                    "type": "integer"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/RateLimited"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    },
                    "503": {
                        "$ref": "#/components/responses/Error"
                    }
                }
            }
        },
        "/categories": {
            "get": {
                "tags": [
                    "Kategóriák"
                ],
                "summary": "Kategóriafa alapadatai",
                "operationId": "get_categories",
                "description": "Tesztben tesztkulcs, élesben éles kulcs szükséges. Csak az adott webshop adatai érhetők el.",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/page"
                    },
                    {
                        "$ref": "#/components/parameters/per_page"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Sikeres lekérés.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/CategoryList"
                                }
                            }
                        },
                        "headers": {
                            "X-Request-ID": {
                                "schema": {
                                    "type": "string"
                                }
                            },
                            "X-Raktar-API-Mode": {
                                "schema": {
                                    "type": "string",
                                    "enum": [
                                        "test",
                                        "live"
                                    ]
                                }
                            },
                            "X-RateLimit-Limit": {
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-RateLimit-Remaining": {
                                "schema": {
                                    "type": "integer"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/RateLimited"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    },
                    "503": {
                        "$ref": "#/components/responses/Error"
                    }
                }
            }
        },
        "/customer-groups": {
            "get": {
                "tags": [
                    "Ügyfélcsoportok"
                ],
                "summary": "Webshophoz rendelt aktív ügyfélcsoportok",
                "operationId": "get_customer_groups",
                "description": "Tesztben tesztkulcs, élesben éles kulcs szükséges. Csak az adott webshop adatai érhetők el.",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/page"
                    },
                    {
                        "$ref": "#/components/parameters/per_page"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Sikeres lekérés.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/CustomerGroupList"
                                }
                            }
                        },
                        "headers": {
                            "X-Request-ID": {
                                "schema": {
                                    "type": "string"
                                }
                            },
                            "X-Raktar-API-Mode": {
                                "schema": {
                                    "type": "string",
                                    "enum": [
                                        "test",
                                        "live"
                                    ]
                                }
                            },
                            "X-RateLimit-Limit": {
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-RateLimit-Remaining": {
                                "schema": {
                                    "type": "integer"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/RateLimited"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    },
                    "503": {
                        "$ref": "#/components/responses/Error"
                    }
                }
            }
        },
        "/stocks": {
            "get": {
                "tags": [
                    "Készlet"
                ],
                "summary": "Összesített készletlista",
                "operationId": "get_stocks",
                "description": "Tesztben tesztkulcs, élesben éles kulcs szükséges. Csak az adott webshop adatai érhetők el.",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/page"
                    },
                    {
                        "$ref": "#/components/parameters/per_page"
                    },
                    {
                        "$ref": "#/components/parameters/sku"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Sikeres lekérés.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/StockList"
                                }
                            }
                        },
                        "headers": {
                            "X-Request-ID": {
                                "schema": {
                                    "type": "string"
                                }
                            },
                            "X-Raktar-API-Mode": {
                                "schema": {
                                    "type": "string",
                                    "enum": [
                                        "test",
                                        "live"
                                    ]
                                }
                            },
                            "X-RateLimit-Limit": {
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-RateLimit-Remaining": {
                                "schema": {
                                    "type": "integer"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/RateLimited"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    },
                    "503": {
                        "$ref": "#/components/responses/Error"
                    }
                }
            }
        },
        "/stocks/by-sku": {
            "get": {
                "tags": [
                    "Készlet"
                ],
                "summary": "Készlet pontos cikkszám alapján",
                "operationId": "get_stocks_by_sku",
                "description": "Tesztben tesztkulcs, élesben éles kulcs szükséges. Csak az adott webshop adatai érhetők el.",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/required_sku"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Sikeres lekérés.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/StockResponse"
                                }
                            }
                        },
                        "headers": {
                            "X-Request-ID": {
                                "schema": {
                                    "type": "string"
                                }
                            },
                            "X-Raktar-API-Mode": {
                                "schema": {
                                    "type": "string",
                                    "enum": [
                                        "test",
                                        "live"
                                    ]
                                }
                            },
                            "X-RateLimit-Limit": {
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-RateLimit-Remaining": {
                                "schema": {
                                    "type": "integer"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/RateLimited"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    },
                    "503": {
                        "$ref": "#/components/responses/Error"
                    }
                }
            }
        },
        "/stocks/{product}": {
            "get": {
                "tags": [
                    "Készlet"
                ],
                "summary": "Készlet termékazonosító alapján",
                "operationId": "get_stocks_product",
                "description": "Tesztben tesztkulcs, élesben éles kulcs szükséges. Csak az adott webshop adatai érhetők el.",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/product"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Sikeres lekérés.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/StockResponse"
                                }
                            }
                        },
                        "headers": {
                            "X-Request-ID": {
                                "schema": {
                                    "type": "string"
                                }
                            },
                            "X-Raktar-API-Mode": {
                                "schema": {
                                    "type": "string",
                                    "enum": [
                                        "test",
                                        "live"
                                    ]
                                }
                            },
                            "X-RateLimit-Limit": {
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-RateLimit-Remaining": {
                                "schema": {
                                    "type": "integer"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/RateLimited"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    },
                    "503": {
                        "$ref": "#/components/responses/Error"
                    }
                }
            }
        },
        "/changes": {
            "get": {
                "tags": [
                    "Változásnapló"
                ],
                "summary": "Kurzoros változáskövetés",
                "operationId": "get_changes",
                "description": "Tesztben tesztkulcs, élesben éles kulcs szükséges. Csak az adott webshop adatai érhetők el.",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/after"
                    },
                    {
                        "$ref": "#/components/parameters/until"
                    },
                    {
                        "$ref": "#/components/parameters/limit"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Sikeres lekérés.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ChangeResponse"
                                }
                            }
                        },
                        "headers": {
                            "X-Request-ID": {
                                "schema": {
                                    "type": "string"
                                }
                            },
                            "X-Raktar-API-Mode": {
                                "schema": {
                                    "type": "string",
                                    "enum": [
                                        "test",
                                        "live"
                                    ]
                                }
                            },
                            "X-RateLimit-Limit": {
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-RateLimit-Remaining": {
                                "schema": {
                                    "type": "integer"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/RateLimited"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    },
                    "503": {
                        "$ref": "#/components/responses/Error"
                    },
                    "410": {
                        "description": "Lejárt kurzor, teljes újraimport kell.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "message",
                                        "reset_required",
                                        "current_cursor"
                                    ],
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        },
                                        "reset_required": {
                                            "type": "boolean",
                                            "enum": [
                                                true
                                            ]
                                        },
                                        "current_cursor": {
                                            "type": "integer"
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/orders": {
            "post": {
                "tags": [
                    "Rendelések"
                ],
                "summary": "Rendelés beküldése",
                "operationId": "post_orders",
                "description": "Külön orders:read / orders:write jog; tesztben orders:test. Élesben csak a beküldő webshop rendelései. A teszt nem ment adatot. customer.type: kötelező JSON string (registered|guest). Registered: customer.external_id kötelező JSON integer (signed PHP64, 0 és negatív is); guest: opcionális/null, egyébként ugyanilyen integer. Vendégből nem készül ügyféltörzsadat. Regisztrált ügyfél azonosítása: tenant + webshop + external_id, email szerinti összevonás nélkül; meglévő törzsadatot nem írunk felül. Számlázási/szállítási/kontakt pillanatkép rendelésenként fagyasztott.",
                "responses": {
                    "200": {
                        "description": "Ismételt kérés vagy fizetési esemény fogadva; tesztben nincs mentés.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "oneOf": [
                                        {
                                            "$ref": "#/components/schemas/WebshopOrderResponse"
                                        },
                                        {
                                            "$ref": "#/components/schemas/WebshopOrderTestAcknowledgement"
                                        }
                                    ]
                                }
                            }
                        }
                    },
                    "201": {
                        "description": "Új rendelés létrejött, készletfoglalás és levonás nélkül.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/WebshopOrderResponse"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "409": {
                        "$ref": "#/components/responses/Error"
                    },
                    "413": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "description": "Hibás rendelésadat. Ügyféltípus-hiba: errors[\"customer.type\"]. Registered esetén hiányzó/null azonosító vagy bármely típusnál hibás azonosító: errors[\"customer.external_id\"]. Élesben és tesztben azonos szabályok.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                },
                                "example": {
                                    "message": "A megadott adatok érvénytelenek.",
                                    "errors": {
                                        "customer.type": [
                                            "A customer.type értéke registered vagy guest JSON string legyen."
                                        ],
                                        "customer.external_id": [
                                            "Registered esetén kötelező, nem null; értéke szigorúan signed PHP64 JSON integer legyen."
                                        ]
                                    }
                                }
                            }
                        }
                    },
                    "429": {
                        "$ref": "#/components/responses/RateLimited"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    },
                    "503": {
                        "$ref": "#/components/responses/Error"
                    },
                    "423": {
                        "description": "A szolgáltató csak olvasható módot állított be. A kérés nincs mentve; feloldás után azonos külső azonosítókkal újraküldhető.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "message",
                                        "code"
                                    ],
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        },
                                        "code": {
                                            "type": "string",
                                            "enum": [
                                                "organization_read_only"
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/WebshopOrderInput"
                            },
                            "examples": {
                                "registered": {
                                    "summary": "Regisztrált ügyfél, érvényes nulla azonosító",
                                    "value": {
                                        "external_order_id": "SHOP-123",
                                        "ordered_at": "2026-10-24T10:00:00+02:00",
                                        "currency": "HUF",
                                        "price_base": "gross",
                                        "payment_method": "card",
                                        "shipping_method": "personal",
                                        "lines": [
                                            {
                                                "product_id": 910001,
                                                "sku": "API-DEMO-001",
                                                "name": "Teszt USB billentyűzet",
                                                "quantity": "2",
                                                "unit_net_price": "1000.0000",
                                                "unit_gross_price": "1270.0000",
                                                "vat_rate": "27.00"
                                            }
                                        ],
                                        "total_net": "2000.00",
                                        "total_gross": "2540.00",
                                        "customer": {
                                            "type": "registered",
                                            "external_id": 0,
                                            "name": "Teszt Vásárló",
                                            "email": "vasarlo@example.test",
                                            "billing_address": "1111 Budapest, Teszt utca 1.",
                                            "shipping_address": "1111 Budapest, Minta utca 2.",
                                            "contact_name": "Teszt Kapcsolattartó",
                                            "phone": "+3612345678"
                                        }
                                    }
                                },
                                "guest": {
                                    "summary": "Vendég, külső azonosító nélkül",
                                    "value": {
                                        "external_order_id": "SHOP-123",
                                        "ordered_at": "2026-10-24T10:00:00+02:00",
                                        "currency": "HUF",
                                        "price_base": "gross",
                                        "payment_method": "card",
                                        "shipping_method": "personal",
                                        "lines": [
                                            {
                                                "product_id": 910001,
                                                "sku": "API-DEMO-001",
                                                "name": "Teszt USB billentyűzet",
                                                "quantity": "2",
                                                "unit_net_price": "1000.0000",
                                                "unit_gross_price": "1270.0000",
                                                "vat_rate": "27.00"
                                            }
                                        ],
                                        "total_net": "2000.00",
                                        "total_gross": "2540.00",
                                        "customer": {
                                            "type": "guest",
                                            "name": "Teszt Vásárló",
                                            "email": "vasarlo@example.test",
                                            "billing_address": "1111 Budapest, Teszt utca 1.",
                                            "shipping_address": "1111 Budapest, Minta utca 2.",
                                            "contact_name": "Teszt Kapcsolattartó",
                                            "phone": "+3612345678"
                                        }
                                    }
                                },
                                "guestNull": {
                                    "summary": "Vendég, null külső azonosítóval",
                                    "value": {
                                        "external_order_id": "SHOP-123",
                                        "ordered_at": "2026-10-24T10:00:00+02:00",
                                        "currency": "HUF",
                                        "price_base": "gross",
                                        "payment_method": "card",
                                        "shipping_method": "personal",
                                        "lines": [
                                            {
                                                "product_id": 910001,
                                                "sku": "API-DEMO-001",
                                                "name": "Teszt USB billentyűzet",
                                                "quantity": "2",
                                                "unit_net_price": "1000.0000",
                                                "unit_gross_price": "1270.0000",
                                                "vat_rate": "27.00"
                                            }
                                        ],
                                        "total_net": "2000.00",
                                        "total_gross": "2540.00",
                                        "customer": {
                                            "type": "guest",
                                            "external_id": null,
                                            "name": "Teszt Vásárló",
                                            "email": "vasarlo@example.test",
                                            "billing_address": "1111 Budapest, Teszt utca 1.",
                                            "shipping_address": "1111 Budapest, Minta utca 2.",
                                            "contact_name": "Teszt Kapcsolattartó",
                                            "phone": "+3612345678"
                                        }
                                    }
                                },
                                "guestExternalId": {
                                    "summary": "Vendég, negatív azonosítóval; nem hoz létre ügyféltörzsadatot",
                                    "value": {
                                        "external_order_id": "SHOP-123",
                                        "ordered_at": "2026-10-24T10:00:00+02:00",
                                        "currency": "HUF",
                                        "price_base": "gross",
                                        "payment_method": "card",
                                        "shipping_method": "personal",
                                        "lines": [
                                            {
                                                "product_id": 910001,
                                                "sku": "API-DEMO-001",
                                                "name": "Teszt USB billentyűzet",
                                                "quantity": "2",
                                                "unit_net_price": "1000.0000",
                                                "unit_gross_price": "1270.0000",
                                                "vat_rate": "27.00"
                                            }
                                        ],
                                        "total_net": "2000.00",
                                        "total_gross": "2540.00",
                                        "customer": {
                                            "type": "guest",
                                            "external_id": -7,
                                            "name": "Teszt Vásárló",
                                            "email": "vasarlo@example.test",
                                            "billing_address": "1111 Budapest, Teszt utca 1.",
                                            "shipping_address": "1111 Budapest, Minta utca 2.",
                                            "contact_name": "Teszt Kapcsolattartó",
                                            "phone": "+3612345678"
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/orders/{externalOrder}": {
            "get": {
                "tags": [
                    "Rendelések"
                ],
                "summary": "Saját rendelés állapota",
                "operationId": "get_orders_externalOrder",
                "description": "Külön orders:read / orders:write jog; tesztben orders:test. Élesben csak a beküldő webshop rendelései. A teszt nem ment adatot.",
                "responses": {
                    "200": {
                        "description": "Aktuális rendelésállapot; tesztben állandó minta.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/WebshopOrderResponse"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "409": {
                        "$ref": "#/components/responses/Error"
                    },
                    "413": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/RateLimited"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    },
                    "503": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "parameters": [
                    {
                        "name": "externalOrder",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "maxLength": 80,
                            "pattern": "^[A-Za-z0-9_-]+$"
                        },
                        "example": "SHOP-123"
                    }
                ]
            }
        },
        "/orders/{externalOrder}/payment-events": {
            "post": {
                "tags": [
                    "Rendelések"
                ],
                "summary": "Fizetési esemény rögzítése",
                "operationId": "post_orders_externalOrder_payment_events",
                "description": "Külön orders:read / orders:write jog; tesztben orders:test. Élesben csak a beküldő webshop rendelései. A teszt nem ment adatot.",
                "responses": {
                    "200": {
                        "description": "Ismételt kérés vagy fizetési esemény fogadva; tesztben nincs mentés.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "oneOf": [
                                        {
                                            "$ref": "#/components/schemas/WebshopOrderResponse"
                                        },
                                        {
                                            "$ref": "#/components/schemas/WebshopOrderTestAcknowledgement"
                                        }
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "404": {
                        "$ref": "#/components/responses/Error"
                    },
                    "409": {
                        "$ref": "#/components/responses/Error"
                    },
                    "413": {
                        "$ref": "#/components/responses/Error"
                    },
                    "422": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/RateLimited"
                    },
                    "500": {
                        "$ref": "#/components/responses/Error"
                    },
                    "503": {
                        "$ref": "#/components/responses/Error"
                    },
                    "423": {
                        "description": "A szolgáltató csak olvasható módot állított be. A kérés nincs mentve; feloldás után azonos külső azonosítókkal újraküldhető.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "message",
                                        "code"
                                    ],
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        },
                                        "code": {
                                            "type": "string",
                                            "enum": [
                                                "organization_read_only"
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/WebshopPaymentInput"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "externalOrder",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "maxLength": 80,
                            "pattern": "^[A-Za-z0-9_-]+$"
                        },
                        "example": "SHOP-123"
                    }
                ]
            }
        }
    },
    "components": {
        "securitySchemes": {
            "bearerAuth": {
                "type": "http",
                "scheme": "bearer",
                "description": "Csak a kulcsot adja meg, Bearer előtag nélkül."
            }
        },
        "parameters": {
            "page": {
                "name": "page",
                "in": "query",
                "required": false,
                "description": "Egész szám.",
                "schema": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 1000000,
                    "default": 1
                }
            },
            "per_page": {
                "name": "per_page",
                "in": "query",
                "required": false,
                "description": "Egész szám.",
                "schema": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 100,
                    "default": 50
                }
            },
            "after": {
                "name": "after",
                "in": "query",
                "required": false,
                "description": "Egész szám.",
                "schema": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991,
                    "default": 0
                }
            },
            "until": {
                "name": "until",
                "in": "query",
                "required": false,
                "description": "Lapozáskor az első meta.until; elhagyva az aktuális kurzor.",
                "schema": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                }
            },
            "limit": {
                "name": "limit",
                "in": "query",
                "required": false,
                "description": "Egész szám.",
                "schema": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 100,
                    "default": 50
                }
            },
            "sku": {
                "name": "sku",
                "in": "query",
                "required": false,
                "description": "Pontos cikkszám, URL-kódolva.",
                "schema": {
                    "type": "string",
                    "maxLength": 255
                },
                "example": "API-DEMO-001"
            },
            "required_sku": {
                "name": "sku",
                "in": "query",
                "required": true,
                "description": "Pontos cikkszám, URL-kódolva.",
                "schema": {
                    "type": "string",
                    "maxLength": 255
                },
                "example": "API-DEMO-001"
            },
            "product": {
                "name": "product",
                "in": "path",
                "required": true,
                "schema": {
                    "type": "integer",
                    "minimum": 1
                },
                "example": 910001
            },
            "document": {
                "name": "document",
                "in": "path",
                "required": true,
                "schema": {
                    "type": "integer",
                    "minimum": 1
                },
                "example": 940001
            },
            "group": {
                "name": "group",
                "in": "path",
                "required": true,
                "schema": {
                    "type": "integer",
                    "minimum": 1
                },
                "example": 920001
            }
        },
        "schemas": {
            "VariantGroup": {
                "type": "object",
                "required": [
                    "id",
                    "name",
                    "short_description",
                    "category_id",
                    "brand",
                    "manufacturer",
                    "description",
                    "description_format",
                    "attribute_names",
                    "variants"
                ],
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "name": {
                        "type": "string"
                    },
                    "short_description": {
                        "type": "string",
                        "nullable": true
                    },
                    "category_id": {
                        "type": "integer",
                        "nullable": true,
                        "description": "A gyűjtő önálló webshopos kategóriájának azonosítója a /categories listában. Nem módosítja a változatok raktári kategóriáit.",
                        "example": 900002
                    },
                    "brand": {
                        "type": "string",
                        "nullable": true,
                        "readOnly": true,
                        "description": "A kiinduló változatból átvett márka megnevezése, nem azonosító. A gyűjtőnél nem szerkeszthető.",
                        "example": "API-demó"
                    },
                    "manufacturer": {
                        "type": "string",
                        "nullable": true,
                        "readOnly": true,
                        "description": "A kiinduló változatból átvett gyártó megnevezése, nem azonosító. A gyűjtőnél nem szerkeszthető.",
                        "example": "API-demó"
                    },
                    "description": {
                        "type": "string",
                        "nullable": true
                    },
                    "description_format": {
                        "type": "string",
                        "enum": [
                            "html"
                        ]
                    },
                    "attribute_names": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    },
                    "variants": {
                        "type": "array",
                        "items": {
                            "type": "object",
                            "required": [
                                "product_id",
                                "sku",
                                "attribute_values",
                                "product_url"
                            ],
                            "properties": {
                                "product_id": {
                                    "type": "integer"
                                },
                                "sku": {
                                    "type": "string"
                                },
                                "attribute_values": {
                                    "type": "object",
                                    "additionalProperties": {
                                        "type": "string"
                                    }
                                },
                                "product_url": {
                                    "type": "string",
                                    "format": "uri"
                                }
                            }
                        }
                    }
                },
                "description": "Nem készletezett webshopos gyűjtő, önálló kategóriával és a kiinduló változatból átvett márkával, gyártóval. Nincs saját sku, prices vagy quantity mezője. Az árak a variants.product_id alapján a /products/{product}, a készlet a /stocks/{product} végpontról érkezik. Az attribútumokat név szerint párosítsa az attribute_names sorrendjében."
            },
            "Product": {
                "type": "object",
                "required": [
                    "id",
                    "sku",
                    "barcode",
                    "name",
                    "short_description",
                    "description",
                    "description_format",
                    "category_id",
                    "brand",
                    "manufacturer",
                    "measurement_unit",
                    "image",
                    "prices",
                    "documents",
                    "variant_group"
                ],
                "properties": {
                    "id": {
                        "type": "integer",
                        "example": 910001
                    },
                    "sku": {
                        "type": "string",
                        "example": "API-DEMO-001"
                    },
                    "barcode": {
                        "type": "string",
                        "nullable": true
                    },
                    "name": {
                        "type": "string",
                        "example": "Teszt USB billentyűzet"
                    },
                    "short_description": {
                        "type": "string",
                        "nullable": true
                    },
                    "description": {
                        "type": "string",
                        "nullable": true
                    },
                    "description_format": {
                        "type": "string",
                        "enum": [
                            "html"
                        ]
                    },
                    "category_id": {
                        "type": "integer",
                        "nullable": true
                    },
                    "brand": {
                        "type": "string",
                        "nullable": true
                    },
                    "manufacturer": {
                        "type": "string",
                        "nullable": true
                    },
                    "measurement_unit": {
                        "type": "string",
                        "nullable": true
                    },
                    "image": {
                        "type": "object",
                        "nullable": true,
                        "required": [
                            "url",
                            "version"
                        ],
                        "properties": {
                            "url": {
                                "type": "string",
                                "format": "uri"
                            },
                            "version": {
                                "type": "string",
                                "nullable": true
                            }
                        }
                    },
                    "prices": {
                        "type": "object",
                        "required": [
                            "currency",
                            "tax_included",
                            "retail",
                            "discount",
                            "vat_rate"
                        ],
                        "properties": {
                            "currency": {
                                "type": "string",
                                "enum": [
                                    "HUF"
                                ]
                            },
                            "tax_included": {
                                "type": "boolean",
                                "enum": [
                                    false
                                ]
                            },
                            "retail": {
                                "type": "string",
                                "nullable": true,
                                "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                                "example": "10000.0000"
                            },
                            "discount": {
                                "type": "string",
                                "nullable": true,
                                "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                                "example": "10000.0000",
                                "description": "Aktuális legjobb nettó webshopos akciós ár, nem halmozott. Null: az akciót törölni kell. 0.0000: valódi nulla. Az időablakot a szerver már érvényesítette."
                            },
                            "vat_rate": {
                                "type": "string",
                                "nullable": true,
                                "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                                "example": "27.00"
                            }
                        }
                    },
                    "documents": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/ProductDocument"
                        }
                    },
                    "variant_group": {
                        "type": "object",
                        "nullable": true,
                        "required": [
                            "id",
                            "name",
                            "attribute_values",
                            "url"
                        ],
                        "properties": {
                            "id": {
                                "type": "integer"
                            },
                            "name": {
                                "type": "string"
                            },
                            "attribute_values": {
                                "type": "object",
                                "additionalProperties": {
                                    "type": "string"
                                }
                            },
                            "url": {
                                "type": "string",
                                "format": "uri"
                            }
                        }
                    }
                }
            },
            "ProductDocument": {
                "type": "object",
                "required": [
                    "id",
                    "name",
                    "size_bytes",
                    "sha256",
                    "updated_at",
                    "download_url"
                ],
                "properties": {
                    "id": {
                        "type": "integer",
                        "minimum": 1,
                        "example": 940001
                    },
                    "name": {
                        "type": "string",
                        "example": "Használati útmutató"
                    },
                    "size_bytes": {
                        "type": "integer",
                        "minimum": 0
                    },
                    "sha256": {
                        "type": "string",
                        "pattern": "^[a-f0-9]{64}$"
                    },
                    "updated_at": {
                        "type": "string",
                        "format": "date-time"
                    },
                    "download_url": {
                        "type": "string",
                        "format": "uri"
                    }
                }
            },
            "ProductDocumentsResponse": {
                "type": "object",
                "required": [
                    "data"
                ],
                "properties": {
                    "data": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/ProductDocument"
                        }
                    }
                }
            },
            "Category": {
                "type": "object",
                "required": [
                    "id",
                    "parent_id",
                    "name",
                    "slug"
                ],
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "parent_id": {
                        "type": "integer",
                        "nullable": true
                    },
                    "name": {
                        "type": "string"
                    },
                    "slug": {
                        "type": "string",
                        "nullable": true
                    }
                }
            },
            "CustomerGroup": {
                "type": "object",
                "required": [
                    "id",
                    "name"
                ],
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "name": {
                        "type": "string",
                        "maxLength": 100
                    }
                }
            },
            "Stock": {
                "type": "object",
                "required": [
                    "id",
                    "sku",
                    "measurement_unit",
                    "quantity_scale",
                    "quantity",
                    "reserved_quantity",
                    "available_quantity"
                ],
                "properties": {
                    "id": {
                        "type": "integer",
                        "example": 910001
                    },
                    "sku": {
                        "type": "string",
                        "example": "API-DEMO-001"
                    },
                    "measurement_unit": {
                        "type": "string",
                        "nullable": true
                    },
                    "quantity_scale": {
                        "type": "integer",
                        "minimum": 0
                    },
                    "quantity": {
                        "type": "string",
                        "nullable": false,
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "example": "10"
                    },
                    "reserved_quantity": {
                        "type": "string",
                        "nullable": false,
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "example": "3"
                    },
                    "available_quantity": {
                        "type": "string",
                        "nullable": false,
                        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
                        "example": "7"
                    }
                }
            },
            "Change": {
                "type": "object",
                "required": [
                    "sequence",
                    "resource",
                    "resource_id",
                    "operation"
                ],
                "properties": {
                    "sequence": {
                        "type": "integer"
                    },
                    "resource": {
                        "type": "string",
                        "enum": [
                            "products",
                            "categories",
                            "stocks",
                            "variant_groups"
                        ]
                    },
                    "resource_id": {
                        "type": "integer"
                    },
                    "operation": {
                        "type": "string",
                        "enum": [
                            "upsert",
                            "remove"
                        ]
                    }
                }
            },
            "Error": {
                "type": "object",
                "required": [
                    "message"
                ],
                "properties": {
                    "message": {
                        "type": "string"
                    },
                    "errors": {
                        "type": "object",
                        "additionalProperties": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "Webhook": {
                "type": "object",
                "required": [
                    "id",
                    "type",
                    "webshop_id",
                    "cursor",
                    "changes_url",
                    "occurred_at"
                ],
                "properties": {
                    "id": {
                        "type": "string",
                        "example": "DEMO-WEBSHOP:3"
                    },
                    "type": {
                        "type": "string",
                        "enum": [
                            "catalog.changed"
                        ]
                    },
                    "webshop_id": {
                        "type": "string",
                        "example": "DEMO-WEBSHOP"
                    },
                    "cursor": {
                        "type": "integer"
                    },
                    "changes_url": {
                        "type": "string",
                        "format": "uri"
                    },
                    "occurred_at": {
                        "type": "string",
                        "format": "date-time",
                        "nullable": true
                    }
                }
            },
            "OrderStatusWebhook": {
                "type": "object",
                "required": [
                    "id",
                    "type",
                    "webshop_id",
                    "revision",
                    "occurred_at",
                    "order"
                ],
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "webshop_id:order:order_id:revision; újrapróbáláskor változatlan."
                    },
                    "type": {
                        "type": "string",
                        "enum": [
                            "order.status_changed"
                        ]
                    },
                    "webshop_id": {
                        "type": "string"
                    },
                    "revision": {
                        "type": "integer",
                        "minimum": 1
                    },
                    "occurred_at": {
                        "type": "string",
                        "format": "date-time"
                    },
                    "order": {
                        "type": "object",
                        "required": [
                            "order_id",
                            "external_order_id",
                            "number",
                            "status",
                            "order_status"
                        ],
                        "properties": {
                            "order_id": {
                                "type": "integer"
                            },
                            "external_order_id": {
                                "type": "string"
                            },
                            "number": {
                                "type": "string"
                            },
                            "status": {
                                "type": "string",
                                "enum": [
                                    "draft",
                                    "confirmed",
                                    "reserved",
                                    "partially_fulfilled",
                                    "fulfilled",
                                    "cancelled"
                                ]
                            },
                            "order_status": {
                                "type": "string",
                                "nullable": true,
                                "description": "Céges üzleti státuszkulcs, például at_delivery, completed vagy cancelled."
                            }
                        }
                    }
                }
            },
            "ProductResponse": {
                "type": "object",
                "required": [
                    "data"
                ],
                "properties": {
                    "data": {
                        "$ref": "#/components/schemas/Product"
                    },
                    "test_mode": {
                        "type": "boolean",
                        "description": "Csak a tesztválaszban."
                    }
                }
            },
            "ProductList": {
                "type": "object",
                "required": [
                    "data",
                    "links",
                    "meta"
                ],
                "properties": {
                    "data": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/Product"
                        }
                    },
                    "test_mode": {
                        "type": "boolean",
                        "description": "Csak a tesztválaszban."
                    },
                    "links": {
                        "type": "object",
                        "required": [
                            "first",
                            "last",
                            "prev",
                            "next"
                        ],
                        "properties": {
                            "first": {
                                "type": "string",
                                "nullable": true
                            },
                            "last": {
                                "type": "string",
                                "nullable": true
                            },
                            "prev": {
                                "type": "string",
                                "nullable": true
                            },
                            "next": {
                                "type": "string",
                                "nullable": true
                            }
                        }
                    },
                    "meta": {
                        "type": "object",
                        "required": [
                            "current_page",
                            "from",
                            "last_page",
                            "path",
                            "per_page",
                            "to",
                            "total",
                            "links"
                        ],
                        "properties": {
                            "current_page": {
                                "type": "integer"
                            },
                            "from": {
                                "type": "integer",
                                "nullable": true
                            },
                            "last_page": {
                                "type": "integer"
                            },
                            "path": {
                                "type": "string"
                            },
                            "per_page": {
                                "type": "integer"
                            },
                            "to": {
                                "type": "integer",
                                "nullable": true
                            },
                            "total": {
                                "type": "integer"
                            },
                            "links": {
                                "type": "array",
                                "items": {
                                    "type": "object",
                                    "properties": {
                                        "url": {
                                            "type": "string",
                                            "nullable": true
                                        },
                                        "label": {
                                            "type": "string"
                                        },
                                        "active": {
                                            "type": "boolean"
                                        },
                                        "page": {
                                            "type": "integer",
                                            "nullable": true
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            },
            "CategoryResponse": {
                "type": "object",
                "required": [
                    "data"
                ],
                "properties": {
                    "data": {
                        "$ref": "#/components/schemas/Category"
                    },
                    "test_mode": {
                        "type": "boolean",
                        "description": "Csak a tesztválaszban."
                    }
                }
            },
            "CategoryList": {
                "type": "object",
                "required": [
                    "data",
                    "links",
                    "meta"
                ],
                "properties": {
                    "data": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/Category"
                        }
                    },
                    "test_mode": {
                        "type": "boolean",
                        "description": "Csak a tesztválaszban."
                    },
                    "links": {
                        "type": "object",
                        "required": [
                            "first",
                            "last",
                            "prev",
                            "next"
                        ],
                        "properties": {
                            "first": {
                                "type": "string",
                                "nullable": true
                            },
                            "last": {
                                "type": "string",
                                "nullable": true
                            },
                            "prev": {
                                "type": "string",
                                "nullable": true
                            },
                            "next": {
                                "type": "string",
                                "nullable": true
                            }
                        }
                    },
                    "meta": {
                        "type": "object",
                        "required": [
                            "current_page",
                            "from",
                            "last_page",
                            "path",
                            "per_page",
                            "to",
                            "total",
                            "links"
                        ],
                        "properties": {
                            "current_page": {
                                "type": "integer"
                            },
                            "from": {
                                "type": "integer",
                                "nullable": true
                            },
                            "last_page": {
                                "type": "integer"
                            },
                            "path": {
                                "type": "string"
                            },
                            "per_page": {
                                "type": "integer"
                            },
                            "to": {
                                "type": "integer",
                                "nullable": true
                            },
                            "total": {
                                "type": "integer"
                            },
                            "links": {
                                "type": "array",
                                "items": {
                                    "type": "object",
                                    "properties": {
                                        "url": {
                                            "type": "string",
                                            "nullable": true
                                        },
                                        "label": {
                                            "type": "string"
                                        },
                                        "active": {
                                            "type": "boolean"
                                        },
                                        "page": {
                                            "type": "integer",
                                            "nullable": true
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            },
            "StockResponse": {
                "type": "object",
                "required": [
                    "data"
                ],
                "properties": {
                    "data": {
                        "$ref": "#/components/schemas/Stock"
                    },
                    "test_mode": {
                        "type": "boolean",
                        "description": "Csak a tesztválaszban."
                    },
                    "calculated_at": {
                        "type": "string",
                        "format": "date-time"
                    }
                }
            },
            "StockList": {
                "type": "object",
                "required": [
                    "data",
                    "links",
                    "meta"
                ],
                "properties": {
                    "data": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/Stock"
                        }
                    },
                    "test_mode": {
                        "type": "boolean",
                        "description": "Csak a tesztválaszban."
                    },
                    "calculated_at": {
                        "type": "string",
                        "format": "date-time"
                    },
                    "links": {
                        "type": "object",
                        "required": [
                            "first",
                            "last",
                            "prev",
                            "next"
                        ],
                        "properties": {
                            "first": {
                                "type": "string",
                                "nullable": true
                            },
                            "last": {
                                "type": "string",
                                "nullable": true
                            },
                            "prev": {
                                "type": "string",
                                "nullable": true
                            },
                            "next": {
                                "type": "string",
                                "nullable": true
                            }
                        }
                    },
                    "meta": {
                        "type": "object",
                        "required": [
                            "current_page",
                            "from",
                            "last_page",
                            "path",
                            "per_page",
                            "to",
                            "total",
                            "links"
                        ],
                        "properties": {
                            "current_page": {
                                "type": "integer"
                            },
                            "from": {
                                "type": "integer",
                                "nullable": true
                            },
                            "last_page": {
                                "type": "integer"
                            },
                            "path": {
                                "type": "string"
                            },
                            "per_page": {
                                "type": "integer"
                            },
                            "to": {
                                "type": "integer",
                                "nullable": true
                            },
                            "total": {
                                "type": "integer"
                            },
                            "links": {
                                "type": "array",
                                "items": {
                                    "type": "object",
                                    "properties": {
                                        "url": {
                                            "type": "string",
                                            "nullable": true
                                        },
                                        "label": {
                                            "type": "string"
                                        },
                                        "active": {
                                            "type": "boolean"
                                        },
                                        "page": {
                                            "type": "integer",
                                            "nullable": true
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            },
            "VariantGroupResponse": {
                "type": "object",
                "required": [
                    "data"
                ],
                "properties": {
                    "data": {
                        "$ref": "#/components/schemas/VariantGroup"
                    },
                    "test_mode": {
                        "type": "boolean",
                        "description": "Csak a tesztválaszban."
                    }
                }
            },
            "VariantGroupList": {
                "type": "object",
                "required": [
                    "data",
                    "links",
                    "meta"
                ],
                "properties": {
                    "data": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/VariantGroup"
                        }
                    },
                    "test_mode": {
                        "type": "boolean",
                        "description": "Csak a tesztválaszban."
                    },
                    "links": {
                        "type": "object",
                        "required": [
                            "first",
                            "last",
                            "prev",
                            "next"
                        ],
                        "properties": {
                            "first": {
                                "type": "string",
                                "nullable": true
                            },
                            "last": {
                                "type": "string",
                                "nullable": true
                            },
                            "prev": {
                                "type": "string",
                                "nullable": true
                            },
                            "next": {
                                "type": "string",
                                "nullable": true
                            }
                        }
                    },
                    "meta": {
                        "type": "object",
                        "required": [
                            "current_page",
                            "from",
                            "last_page",
                            "path",
                            "per_page",
                            "to",
                            "total",
                            "links"
                        ],
                        "properties": {
                            "current_page": {
                                "type": "integer"
                            },
                            "from": {
                                "type": "integer",
                                "nullable": true
                            },
                            "last_page": {
                                "type": "integer"
                            },
                            "path": {
                                "type": "string"
                            },
                            "per_page": {
                                "type": "integer"
                            },
                            "to": {
                                "type": "integer",
                                "nullable": true
                            },
                            "total": {
                                "type": "integer"
                            },
                            "links": {
                                "type": "array",
                                "items": {
                                    "type": "object",
                                    "properties": {
                                        "url": {
                                            "type": "string",
                                            "nullable": true
                                        },
                                        "label": {
                                            "type": "string"
                                        },
                                        "active": {
                                            "type": "boolean"
                                        },
                                        "page": {
                                            "type": "integer",
                                            "nullable": true
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            },
            "CustomerGroupResponse": {
                "type": "object",
                "required": [
                    "data"
                ],
                "properties": {
                    "data": {
                        "$ref": "#/components/schemas/CustomerGroup"
                    },
                    "test_mode": {
                        "type": "boolean",
                        "description": "Csak a tesztválaszban."
                    }
                }
            },
            "CustomerGroupList": {
                "type": "object",
                "required": [
                    "data",
                    "links",
                    "meta"
                ],
                "properties": {
                    "data": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/CustomerGroup"
                        }
                    },
                    "test_mode": {
                        "type": "boolean",
                        "description": "Csak a tesztválaszban."
                    },
                    "links": {
                        "type": "object",
                        "required": [
                            "first",
                            "last",
                            "prev",
                            "next"
                        ],
                        "properties": {
                            "first": {
                                "type": "string",
                                "nullable": true
                            },
                            "last": {
                                "type": "string",
                                "nullable": true
                            },
                            "prev": {
                                "type": "string",
                                "nullable": true
                            },
                            "next": {
                                "type": "string",
                                "nullable": true
                            }
                        }
                    },
                    "meta": {
                        "type": "object",
                        "required": [
                            "current_page",
                            "from",
                            "last_page",
                            "path",
                            "per_page",
                            "to",
                            "total",
                            "links"
                        ],
                        "properties": {
                            "current_page": {
                                "type": "integer"
                            },
                            "from": {
                                "type": "integer",
                                "nullable": true
                            },
                            "last_page": {
                                "type": "integer"
                            },
                            "path": {
                                "type": "string"
                            },
                            "per_page": {
                                "type": "integer"
                            },
                            "to": {
                                "type": "integer",
                                "nullable": true
                            },
                            "total": {
                                "type": "integer"
                            },
                            "links": {
                                "type": "array",
                                "items": {
                                    "type": "object",
                                    "properties": {
                                        "url": {
                                            "type": "string",
                                            "nullable": true
                                        },
                                        "label": {
                                            "type": "string"
                                        },
                                        "active": {
                                            "type": "boolean"
                                        },
                                        "page": {
                                            "type": "integer",
                                            "nullable": true
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            },
            "TestWebhook": {
                "type": "object",
                "required": [
                    "id",
                    "type",
                    "webshop_id",
                    "cursor",
                    "changes_url",
                    "occurred_at",
                    "test_mode"
                ],
                "properties": {
                    "id": {
                        "type": "string",
                        "example": "test:DEMO-WEBSHOP:DEMO-EVENT"
                    },
                    "type": {
                        "type": "string",
                        "enum": [
                            "catalog.test"
                        ]
                    },
                    "webshop_id": {
                        "type": "string",
                        "example": "DEMO-WEBSHOP"
                    },
                    "cursor": {
                        "type": "integer",
                        "enum": [
                            3
                        ]
                    },
                    "changes_url": {
                        "type": "string",
                        "format": "uri",
                        "description": "A konfigurált API-domain /api/v1/test/changes végpontja."
                    },
                    "occurred_at": {
                        "type": "string",
                        "format": "date-time",
                        "nullable": true
                    },
                    "test_mode": {
                        "type": "boolean",
                        "enum": [
                            true
                        ]
                    }
                }
            },
            "ChangeResponse": {
                "type": "object",
                "required": [
                    "data",
                    "meta"
                ],
                "properties": {
                    "data": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/Change"
                        }
                    },
                    "test_mode": {
                        "type": "boolean"
                    },
                    "meta": {
                        "type": "object",
                        "required": [
                            "next_cursor",
                            "until",
                            "has_more",
                            "current_cursor",
                            "scanned_at"
                        ],
                        "properties": {
                            "next_cursor": {
                                "type": "integer"
                            },
                            "until": {
                                "type": "integer"
                            },
                            "has_more": {
                                "type": "boolean"
                            },
                            "current_cursor": {
                                "type": "integer"
                            },
                            "scanned_at": {
                                "type": "string",
                                "format": "date-time",
                                "nullable": true
                            }
                        }
                    }
                }
            },
            "WebshopOrderInput": {
                "type": "object",
                "required": [
                    "external_order_id",
                    "ordered_at",
                    "currency",
                    "price_base",
                    "payment_method",
                    "shipping_method",
                    "customer",
                    "lines",
                    "total_net",
                    "total_gross"
                ],
                "properties": {
                    "external_order_id": {
                        "type": "string",
                        "maxLength": 80,
                        "pattern": "^[A-Za-z0-9_-]+$",
                        "example": "SHOP-123"
                    },
                    "ordered_at": {
                        "type": "string",
                        "format": "date-time"
                    },
                    "currency": {
                        "type": "string",
                        "enum": [
                            "HUF"
                        ]
                    },
                    "price_base": {
                        "type": "string",
                        "enum": [
                            "net",
                            "gross"
                        ]
                    },
                    "payment_method": {
                        "type": "string",
                        "enum": [
                            "cod",
                            "card",
                            "banktransfer",
                            "cash",
                            "credit_card",
                            "paypal",
                            "stripe"
                        ],
                        "description": "card = fizetés az üzletben; stripe = online Stripe."
                    },
                    "shipping_method": {
                        "type": "string",
                        "enum": [
                            "personal",
                            "GLS",
                            "GLS_droppoint",
                            "MPL",
                            "MPL_droppoint",
                            "DPD",
                            "DPD_droppoint",
                            "DHL",
                            "DHL_droppoint",
                            "PACKETA",
                            "PACKETA_droppoint",
                            "FOXPOST",
                            "FOXPOST_droppoint",
                            "no_shipping"
                        ]
                    },
                    "customer": {
                        "type": "object",
                        "required": [
                            "type",
                            "name",
                            "email",
                            "billing_address"
                        ],
                        "properties": {
                            "type": {
                                "type": "string",
                                "enum": [
                                    "registered",
                                    "guest"
                                ],
                                "example": "registered"
                            },
                            "external_id": {
                                "type": "integer",
                                "format": "int64",
                                "minimum": -9223372036854775808,
                                "maximum": 9223372036854775807,
                                "description": "Szigorúan JSON integer, signed PHP64 (-9223372036854775808..9223372036854775807); 0 és negatív is. String, float (123.0), exponenciális szám (1e3), boolean és túlcsordulás tiltott. Registered esetén kötelező/nem null, guest esetén elhagyható/null.",
                                "example": 0,
                                "nullable": true
                            },
                            "name": {
                                "type": "string",
                                "maxLength": 255
                            },
                            "email": {
                                "type": "string",
                                "format": "email",
                                "maxLength": 255
                            },
                            "billing_address": {
                                "type": "string",
                                "maxLength": 2000
                            },
                            "shipping_address": {
                                "type": "string",
                                "nullable": true,
                                "maxLength": 2000
                            },
                            "phone": {
                                "type": "string",
                                "nullable": true,
                                "maxLength": 40
                            },
                            "tax_number": {
                                "type": "string",
                                "nullable": true,
                                "maxLength": 32
                            },
                            "contact_name": {
                                "type": "string",
                                "nullable": true,
                                "maxLength": 255
                            },
                            "external_groups": {
                                "type": "array",
                                "maxItems": 20,
                                "description": "Opcionális webshopos csoportinformáció, nem raktári besorolás. Csak rendelési pillanatkép; nem ír át ügyfelet vagy árakat. Elhagyható/üres lista, de nem null. id egyedi a listán belül, numerikus azonosítót is stringként küldjön.",
                                "items": {
                                    "type": "object",
                                    "additionalProperties": false,
                                    "required": [
                                        "id",
                                        "name"
                                    ],
                                    "properties": {
                                        "id": {
                                            "type": "string",
                                            "maxLength": 100,
                                            "minLength": 1,
                                            "example": "shop-vip"
                                        },
                                        "name": {
                                            "type": "string",
                                            "maxLength": 100,
                                            "minLength": 1,
                                            "example": "Webshop VIP"
                                        }
                                    }
                                }
                            }
                        },
                        "additionalProperties": false,
                        "description": "Registered: ügyféltörzs azonosítása tenant + webshop + external_id szerint; email alapján nincs összevonás, meglévő törzsadat automatikus felülírása nélkül. Guest: nincs Customers-törzsadat. Számlázási/szállítási/kontakt adatok minden rendelésen fagyasztott pillanatképek.",
                        "oneOf": [
                            {
                                "type": "object",
                                "required": [
                                    "type",
                                    "external_id"
                                ],
                                "properties": {
                                    "type": {
                                        "type": "string",
                                        "enum": [
                                            "registered"
                                        ]
                                    },
                                    "external_id": {
                                        "type": "integer",
                                        "format": "int64",
                                        "minimum": -9223372036854775808,
                                        "maximum": 9223372036854775807,
                                        "description": "Szigorúan JSON integer, signed PHP64 (-9223372036854775808..9223372036854775807); 0 és negatív is. String, float (123.0), exponenciális szám (1e3), boolean és túlcsordulás tiltott. Registered esetén kötelező/nem null, guest esetén elhagyható/null.",
                                        "example": 0,
                                        "nullable": false
                                    }
                                }
                            },
                            {
                                "type": "object",
                                "required": [
                                    "type"
                                ],
                                "properties": {
                                    "type": {
                                        "type": "string",
                                        "enum": [
                                            "guest"
                                        ]
                                    }
                                }
                            }
                        ]
                    },
                    "lines": {
                        "type": "array",
                        "minItems": 1,
                        "maxItems": 200,
                        "items": {
                            "type": "object",
                            "required": [
                                "product_id",
                                "sku",
                                "name",
                                "quantity",
                                "unit_net_price",
                                "unit_gross_price",
                                "vat_rate"
                            ],
                            "properties": {
                                "product_id": {
                                    "type": "integer",
                                    "minimum": 1,
                                    "example": 910001
                                },
                                "sku": {
                                    "type": "string",
                                    "maxLength": 100,
                                    "example": "API-DEMO-001"
                                },
                                "name": {
                                    "type": "string",
                                    "maxLength": 255
                                },
                                "quantity": {
                                    "type": "string",
                                    "pattern": "^[0-9]+(?:\\.[0-9]{1,3})?$",
                                    "example": "2"
                                },
                                "unit_net_price": {
                                    "type": "string",
                                    "pattern": "^[0-9]+(?:\\.[0-9]{1,4})?$",
                                    "example": "1000.0000"
                                },
                                "unit_gross_price": {
                                    "type": "string",
                                    "pattern": "^[0-9]+(?:\\.[0-9]{1,4})?$",
                                    "example": "1270.0000"
                                },
                                "vat_rate": {
                                    "type": "string",
                                    "pattern": "^[0-9]+(?:\\.[0-9]{1,2})?$",
                                    "example": "27.00"
                                }
                            },
                            "additionalProperties": false
                        }
                    },
                    "total_net": {
                        "type": "string",
                        "pattern": "^[0-9]+(?:\\.[0-9]{1,2})?$",
                        "example": "2000.00"
                    },
                    "total_gross": {
                        "type": "string",
                        "pattern": "^[0-9]+(?:\\.[0-9]{1,2})?$",
                        "example": "2540.00"
                    },
                    "charges": {
                        "type": "array",
                        "maxItems": 20,
                        "items": {
                            "type": "object",
                            "required": [
                                "name",
                                "net",
                                "gross",
                                "vat_rate"
                            ],
                            "properties": {
                                "name": {
                                    "type": "string",
                                    "maxLength": 120
                                },
                                "net": {
                                    "type": "string",
                                    "pattern": "^[0-9]+(?:\\.[0-9]{1,2})?$",
                                    "example": "2540.00"
                                },
                                "gross": {
                                    "type": "string",
                                    "pattern": "^[0-9]+(?:\\.[0-9]{1,2})?$",
                                    "example": "2540.00"
                                },
                                "vat_rate": {
                                    "type": "string",
                                    "pattern": "^[0-9]+(?:\\.[0-9]{1,2})?$",
                                    "example": "27.00"
                                }
                            },
                            "additionalProperties": false
                        }
                    },
                    "note": {
                        "type": "string",
                        "nullable": true,
                        "maxLength": 5000
                    }
                }
            },
            "WebshopPaymentInput": {
                "type": "object",
                "required": [
                    "event_id",
                    "sequence",
                    "payment_version",
                    "currency",
                    "payment_status",
                    "paid_amount",
                    "refunded_amount"
                ],
                "properties": {
                    "event_id": {
                        "type": "string",
                        "maxLength": 100,
                        "pattern": "^[A-Za-z0-9_-]+$"
                    },
                    "sequence": {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 4294967295
                    },
                    "payment_version": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 4294967295
                    },
                    "currency": {
                        "type": "string",
                        "enum": [
                            "HUF"
                        ]
                    },
                    "payment_status": {
                        "type": "string",
                        "maxLength": 32,
                        "example": "paid",
                        "description": "Élesben céges fizetési státuszkulcs; unknown jelentésű nem küldhető. Tesztben csak rendszerkulcs (unknown nélkül)."
                    },
                    "paid_amount": {
                        "type": "string",
                        "pattern": "^[0-9]+(?:\\.[0-9]{1,2})?$",
                        "example": "2540.00"
                    },
                    "refunded_amount": {
                        "type": "string",
                        "pattern": "^[0-9]+(?:\\.[0-9]{1,2})?$",
                        "example": "0.00"
                    },
                    "paid_at": {
                        "type": "string",
                        "format": "date-time",
                        "nullable": true,
                        "description": "Rögzített fizetésnél kötelező."
                    },
                    "payment_transaction_id": {
                        "type": "string",
                        "nullable": true,
                        "maxLength": 255
                    }
                }
            },
            "WebshopOrder": {
                "type": "object",
                "required": [
                    "id",
                    "external_order_id",
                    "number",
                    "status",
                    "order_status",
                    "payment_status",
                    "payment_state",
                    "payment_method",
                    "shipping_method",
                    "currency",
                    "price_base",
                    "total_net",
                    "total_gross",
                    "paid_amount",
                    "refunded_amount",
                    "payment_version",
                    "payment_sequence",
                    "updated_at"
                ],
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "external_order_id": {
                        "type": "string"
                    },
                    "number": {
                        "type": "string"
                    },
                    "status": {
                        "type": "string",
                        "enum": [
                            "draft",
                            "confirmed",
                            "reserved",
                            "partially_fulfilled",
                            "fulfilled",
                            "cancelled"
                        ]
                    },
                    "order_status": {
                        "type": "string",
                        "nullable": true
                    },
                    "payment_status": {
                        "type": "string",
                        "maxLength": 32,
                        "description": "Céges törzsadatkulcs, egyedi is lehet."
                    },
                    "payment_state": {
                        "type": "string",
                        "enum": [
                            "unknown",
                            "unpaid",
                            "pending",
                            "partially_paid",
                            "paid",
                            "failed",
                            "partially_refunded",
                            "refunded",
                            "storno"
                        ],
                        "description": "A státusz pénzügyi jelentése, rendszerkulccsal."
                    },
                    "payment_method": {
                        "type": "string",
                        "nullable": true
                    },
                    "shipping_method": {
                        "type": "string",
                        "nullable": true
                    },
                    "currency": {
                        "type": "string",
                        "enum": [
                            "HUF"
                        ]
                    },
                    "price_base": {
                        "type": "string",
                        "enum": [
                            "net",
                            "gross"
                        ]
                    },
                    "total_net": {
                        "type": "string",
                        "pattern": "^[0-9]+(?:\\.[0-9]{1,2})?$",
                        "example": "2540.00"
                    },
                    "total_gross": {
                        "type": "string",
                        "pattern": "^[0-9]+(?:\\.[0-9]{1,2})?$",
                        "example": "2540.00"
                    },
                    "paid_amount": {
                        "type": "string",
                        "pattern": "^[0-9]+(?:\\.[0-9]{1,2})?$",
                        "example": "2540.00"
                    },
                    "refunded_amount": {
                        "type": "string",
                        "pattern": "^[0-9]+(?:\\.[0-9]{1,2})?$",
                        "example": "2540.00"
                    },
                    "payment_version": {
                        "type": "integer"
                    },
                    "payment_sequence": {
                        "type": "integer"
                    },
                    "updated_at": {
                        "type": "string",
                        "format": "date-time",
                        "nullable": true
                    }
                }
            },
            "WebshopOrderResponse": {
                "type": "object",
                "required": [
                    "data"
                ],
                "properties": {
                    "data": {
                        "$ref": "#/components/schemas/WebshopOrder"
                    },
                    "test_mode": {
                        "type": "boolean"
                    },
                    "persisted": {
                        "type": "boolean"
                    }
                }
            },
            "WebshopOrderTestAcknowledgement": {
                "type": "object",
                "required": [
                    "test_mode",
                    "persisted",
                    "data"
                ],
                "properties": {
                    "test_mode": {
                        "type": "boolean",
                        "enum": [
                            true
                        ]
                    },
                    "persisted": {
                        "type": "boolean",
                        "enum": [
                            false
                        ]
                    },
                    "data": {
                        "type": "object",
                        "required": [
                            "external_order_id",
                            "accepted"
                        ],
                        "properties": {
                            "external_order_id": {
                                "type": "string"
                            },
                            "accepted": {
                                "type": "boolean",
                                "enum": [
                                    true
                                ]
                            }
                        }
                    }
                }
            }
        },
        "responses": {
            "Error": {
                "description": "Sikertelen kérés: message és opcionális errors.",
                "content": {
                    "application/json": {
                        "schema": {
                            "$ref": "#/components/schemas/Error"
                        }
                    }
                }
            },
            "RateLimited": {
                "description": "Kérési korlát elérve. Várjon a Retry-After szerinti másodpercig.",
                "headers": {
                    "Retry-After": {
                        "schema": {
                            "type": "integer"
                        }
                    },
                    "X-RateLimit-Limit": {
                        "schema": {
                            "type": "integer"
                        }
                    },
                    "X-RateLimit-Remaining": {
                        "schema": {
                            "type": "integer"
                        }
                    }
                },
                "content": {
                    "application/json": {
                        "schema": {
                            "$ref": "#/components/schemas/Error"
                        }
                    }
                }
            }
        }
    }
}