{
    "format": "bot-manager-public-api-full-spec",
    "version": 1,
    "generated_at": "2026-09-27T12:17:48+00:00",
    "language": "az",
    "brand": "GMXAZ Bot",
    "documentation": {
        "version": "v1",
        "base_url": "https://gmx.az/api/v1",
        "currency": "USD",
        "currency_symbol": "$",
        "auth_header": "X-API-KEY",
        "idempotency_header": "X-Idempotency-Key",
        "request_id_header": "X-Request-Id",
        "rate_limit_per_minute": 60,
        "api_enabled": true,
        "require_ip_whitelist": false,
        "limits": {
            "max_per_page": 100,
            "max_voucher_qty": 500,
            "max_topup_qty": 1,
            "default_callback_mode": "legacy"
        },
        "endpoints": [
            {
                "id": "get-me",
                "group": "Hesab",
                "method": "GET",
                "path": "/getMe",
                "title": "API hesabını yoxla",
                "summary": "API istifadəçisini, balansı və valyutanı qaytarır.",
                "description": "API açarını və hesab vəziyyətini yoxlamaq üçün istifadə olunur.",
                "success_status": 200,
                "parameters": [],
                "request_example": null,
                "response_example": {
                    "success": true,
                    "data": {
                        "user_id": 579365494,
                        "username": "reseller_pro",
                        "balance": "1250.5000",
                        "currency": "USD",
                        "webhook_secret_configured": true
                    }
                },
                "errors": [
                    {
                        "code": "API_DISABLED",
                        "status": 503,
                        "description": "Public API admin tərəfindən deaktiv edilib."
                    },
                    {
                        "code": "API_KEY_MISSING",
                        "status": 401,
                        "description": "X-API-KEY başlığı göndərilməyib."
                    },
                    {
                        "code": "INVALID_API_KEY",
                        "status": 401,
                        "description": "API açarı yanlışdır, passivdir və ya müştəri passivdir."
                    },
                    {
                        "code": "IP_NOT_ALLOWED",
                        "status": 403,
                        "description": "Sorğu edən IP ünvanına icazə verilməyib."
                    },
                    {
                        "code": "RATE_LIMIT_EXCEEDED",
                        "status": 429,
                        "description": "Dəqiqəlik sorğu limiti keçilib."
                    }
                ],
                "url": "https://gmx.az/api/v1/getMe",
                "curl": "curl -s -X GET 'https://gmx.az/api/v1/getMe' \\\n  -H 'Accept: application/json' \\\n  -H 'X-API-KEY: YOUR_API_KEY'"
            },
            {
                "id": "games",
                "group": "Kataloq",
                "method": "GET",
                "path": "/games",
                "title": "Oyunları siyahıla",
                "summary": "Aktiv oyunları və kateqoriyaları qaytarır.",
                "description": "Oyunları tipə və ada görə süzmək mümkündür.",
                "success_status": 200,
                "parameters": [
                    {
                        "name": "type",
                        "location": "query",
                        "type": "string",
                        "required": false,
                        "description": "Məhsul növü filtri.",
                        "example": "topup",
                        "options": [
                            "voucher",
                            "topup"
                        ]
                    },
                    {
                        "name": "q",
                        "location": "query",
                        "type": "string",
                        "required": false,
                        "description": "Oyun adına görə axtarış.",
                        "example": "pubg",
                        "options": []
                    }
                ],
                "request_example": null,
                "response_example": {
                    "success": true,
                    "data": [
                        {
                            "id": 1,
                            "name": "PUBG Mobile",
                            "type": "TOPUP",
                            "categories": [
                                {
                                    "id": 10,
                                    "name": "Global",
                                    "per_page_count": 12
                                }
                            ]
                        }
                    ]
                },
                "errors": [
                    {
                        "code": "API_DISABLED",
                        "status": 503,
                        "description": "Public API admin tərəfindən deaktiv edilib."
                    },
                    {
                        "code": "API_KEY_MISSING",
                        "status": 401,
                        "description": "X-API-KEY başlığı göndərilməyib."
                    },
                    {
                        "code": "INVALID_API_KEY",
                        "status": 401,
                        "description": "API açarı yanlışdır, passivdir və ya müştəri passivdir."
                    },
                    {
                        "code": "IP_NOT_ALLOWED",
                        "status": 403,
                        "description": "Sorğu edən IP ünvanına icazə verilməyib."
                    },
                    {
                        "code": "RATE_LIMIT_EXCEEDED",
                        "status": 429,
                        "description": "Dəqiqəlik sorğu limiti keçilib."
                    },
                    {
                        "code": "VALIDATION_ERROR",
                        "status": 422,
                        "description": "type və ya q parametrinin formatı yanlışdır."
                    }
                ],
                "url": "https://gmx.az/api/v1/games",
                "curl": "curl -s -X GET 'https://gmx.az/api/v1/games?type=topup&q=pubg' \\\n  -H 'Accept: application/json' \\\n  -H 'X-API-KEY: YOUR_API_KEY'"
            },
            {
                "id": "categories",
                "group": "Kataloq",
                "method": "GET",
                "path": "/categories",
                "title": "Kateqoriyaları siyahıla",
                "summary": "Seçilmiş oyuna aid aktiv kateqoriyaları qaytarır.",
                "description": "game_id /games cavabındakı oyun ID-sidir.",
                "success_status": 200,
                "parameters": [
                    {
                        "name": "game_id",
                        "location": "query",
                        "type": "integer",
                        "required": true,
                        "description": "Aktiv oyun ID-si.",
                        "example": 1,
                        "options": []
                    }
                ],
                "request_example": null,
                "response_example": {
                    "success": true,
                    "data": [
                        {
                            "id": 10,
                            "name": "Global",
                            "per_page_count": 12
                        }
                    ]
                },
                "errors": [
                    {
                        "code": "API_DISABLED",
                        "status": 503,
                        "description": "Public API admin tərəfindən deaktiv edilib."
                    },
                    {
                        "code": "API_KEY_MISSING",
                        "status": 401,
                        "description": "X-API-KEY başlığı göndərilməyib."
                    },
                    {
                        "code": "INVALID_API_KEY",
                        "status": 401,
                        "description": "API açarı yanlışdır, passivdir və ya müştəri passivdir."
                    },
                    {
                        "code": "IP_NOT_ALLOWED",
                        "status": 403,
                        "description": "Sorğu edən IP ünvanına icazə verilməyib."
                    },
                    {
                        "code": "RATE_LIMIT_EXCEEDED",
                        "status": 429,
                        "description": "Dəqiqəlik sorğu limiti keçilib."
                    },
                    {
                        "code": "VALIDATION_ERROR",
                        "status": 422,
                        "description": "game_id göndərilməyib və ya tam ədəd deyil."
                    },
                    {
                        "code": "GAME_NOT_FOUND",
                        "status": 404,
                        "description": "Oyun tapılmadı və ya aktiv deyil."
                    }
                ],
                "url": "https://gmx.az/api/v1/categories",
                "curl": "curl -s -X GET 'https://gmx.az/api/v1/categories?game_id=1' \\\n  -H 'Accept: application/json' \\\n  -H 'X-API-KEY: YOUR_API_KEY'"
            },
            {
                "id": "products",
                "group": "Kataloq",
                "method": "GET",
                "path": "/products",
                "title": "Məhsulları siyahıla",
                "summary": "Aktiv məhsulları qiymət, stok və səhifələmə ilə qaytarır.",
                "description": "Filtrlər birlikdə istifadə edilə bilər.",
                "success_status": 200,
                "parameters": [
                    {
                        "name": "type",
                        "location": "query",
                        "type": "string",
                        "required": false,
                        "description": "vauçer və ya Top-up.",
                        "example": "topup",
                        "options": [
                            "voucher",
                            "topup"
                        ]
                    },
                    {
                        "name": "game",
                        "location": "query",
                        "type": "string",
                        "required": false,
                        "description": "Oyun adına görə qismən axtarış.",
                        "example": "PUBG",
                        "options": []
                    },
                    {
                        "name": "category",
                        "location": "query",
                        "type": "string",
                        "required": false,
                        "description": "Kateqoriya adına görə qismən axtarış.",
                        "example": "Global",
                        "options": []
                    },
                    {
                        "name": "game_id",
                        "location": "query",
                        "type": "integer",
                        "required": false,
                        "description": "Oyun ID-si.",
                        "example": 1,
                        "options": []
                    },
                    {
                        "name": "category_id",
                        "location": "query",
                        "type": "integer",
                        "required": false,
                        "description": "Kateqoriya ID-si.",
                        "example": 10,
                        "options": []
                    },
                    {
                        "name": "q",
                        "location": "query",
                        "type": "string",
                        "required": false,
                        "description": "Məhsul adına görə axtarış.",
                        "example": "60 UC",
                        "options": []
                    },
                    {
                        "name": "page",
                        "location": "query",
                        "type": "integer",
                        "required": false,
                        "description": "Səhifə nömrəsi.",
                        "example": 1,
                        "options": []
                    },
                    {
                        "name": "per_page",
                        "location": "query",
                        "type": "integer",
                        "required": false,
                        "description": "Səhifə ölçüsü. Maksimum: 100.",
                        "example": 50,
                        "options": []
                    }
                ],
                "request_example": null,
                "response_example": {
                    "success": true,
                    "data": [
                        {
                            "id": 91,
                            "name": "PUBG Mobile 60 UC",
                            "game_id": 1,
                            "game": "PUBG Mobile",
                            "category_id": 10,
                            "category": "Global",
                            "type": "TOPUP",
                            "fulfillment_type": "standard",
                            "is_qr_login": false,
                            "price": "0.8800",
                            "currency": "USD",
                            "stock_status": "INFINITE",
                            "stock_count": null,
                            "min_qty": 1,
                            "max_qty": 1,
                            "fields": [
                                {
                                    "key": "player_id",
                                    "label": "Oyunçu ID-si",
                                    "required": true
                                }
                            ],
                            "supports_player_validation": true
                        }
                    ],
                    "meta": {
                        "current_page": 1,
                        "last_page": 1,
                        "per_page": 50,
                        "total": 1
                    }
                },
                "errors": [
                    {
                        "code": "API_DISABLED",
                        "status": 503,
                        "description": "Public API admin tərəfindən deaktiv edilib."
                    },
                    {
                        "code": "API_KEY_MISSING",
                        "status": 401,
                        "description": "X-API-KEY başlığı göndərilməyib."
                    },
                    {
                        "code": "INVALID_API_KEY",
                        "status": 401,
                        "description": "API açarı yanlışdır, passivdir və ya müştəri passivdir."
                    },
                    {
                        "code": "IP_NOT_ALLOWED",
                        "status": 403,
                        "description": "Sorğu edən IP ünvanına icazə verilməyib."
                    },
                    {
                        "code": "RATE_LIMIT_EXCEEDED",
                        "status": 429,
                        "description": "Dəqiqəlik sorğu limiti keçilib."
                    },
                    {
                        "code": "VALIDATION_ERROR",
                        "status": 422,
                        "description": "Filtr və ya səhifələmə parametri yanlışdır."
                    }
                ],
                "url": "https://gmx.az/api/v1/products",
                "curl": "curl -s -X GET 'https://gmx.az/api/v1/products?type=topup&game=PUBG&category=Global&game_id=1&category_id=10&q=60+UC&page=1&per_page=50' \\\n  -H 'Accept: application/json' \\\n  -H 'X-API-KEY: YOUR_API_KEY'"
            },
            {
                "id": "validate-player",
                "group": "Yoxlama",
                "method": "POST",
                "path": "/validate-player",
                "title": "Oyunçu məlumatını yoxla",
                "summary": "Oyunçu və server məlumatlarını yoxlayır.",
                "description": "Məhsul üçün oyunçu yoxlamasının nəticəsini qaytarır.",
                "success_status": 200,
                "parameters": [
                    {
                        "name": "product_id",
                        "location": "body",
                        "type": "integer",
                        "required": true,
                        "description": "Top-up məhsulunun ID-si.",
                        "example": 91,
                        "options": []
                    },
                    {
                        "name": "player_id",
                        "location": "body",
                        "type": "string",
                        "required": true,
                        "description": "Oyunçu ID-si.",
                        "example": "51515969536",
                        "options": []
                    },
                    {
                        "name": "server_id",
                        "location": "body",
                        "type": "string",
                        "required": false,
                        "description": "Server və ya zona ID-si.",
                        "example": "1234",
                        "options": []
                    },
                    {
                        "name": "input_2...input_8",
                        "location": "body",
                        "type": "string",
                        "required": false,
                        "description": "Məhsulun sahələr siyahısına uyğun əlavə input_2...input_8 dəyərləri.",
                        "example": "Additional mapped values",
                        "options": []
                    }
                ],
                "request_example": {
                    "product_id": 91,
                    "player_id": "51515969536",
                    "server_id": "1234",
                    "input_3": "CharacterName"
                },
                "response_example": {
                    "success": true,
                    "data": {
                        "nickname": "PlayerOne",
                        "player_name": "PlayerOne",
                        "region": "TR",
                        "country": "TR",
                        "server": "1234",
                        "nickname_verified": true,
                        "validation_optional": false
                    }
                },
                "errors": [
                    {
                        "code": "API_DISABLED",
                        "status": 503,
                        "description": "Public API admin tərəfindən deaktiv edilib."
                    },
                    {
                        "code": "API_KEY_MISSING",
                        "status": 401,
                        "description": "X-API-KEY başlığı göndərilməyib."
                    },
                    {
                        "code": "INVALID_API_KEY",
                        "status": 401,
                        "description": "API açarı yanlışdır, passivdir və ya müştəri passivdir."
                    },
                    {
                        "code": "IP_NOT_ALLOWED",
                        "status": 403,
                        "description": "Sorğu edən IP ünvanına icazə verilməyib."
                    },
                    {
                        "code": "RATE_LIMIT_EXCEEDED",
                        "status": 429,
                        "description": "Dəqiqəlik sorğu limiti keçilib."
                    },
                    {
                        "code": "VALIDATION_ERROR",
                        "status": 422,
                        "description": "Sorğu gövdəsi yanlışdır."
                    },
                    {
                        "code": "PRODUCT_NOT_FOUND",
                        "status": 404,
                        "description": "Top-up məhsulu tapılmadı."
                    },
                    {
                        "code": "PLAYER_NOT_FOUND",
                        "status": 404,
                        "description": "Oyunçu yoxlanmadı."
                    }
                ],
                "url": "https://gmx.az/api/v1/validate-player",
                "curl": "curl -s -X POST 'https://gmx.az/api/v1/validate-player' \\\n  -H 'Accept: application/json' \\\n  -H 'X-API-KEY: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  --data '{\n    \"product_id\": 91,\n    \"player_id\": \"51515969536\",\n    \"server_id\": \"1234\",\n    \"input_3\": \"CharacterName\"\n}'"
            },
            {
                "id": "place-order",
                "group": "Sifarişlər",
                "method": "POST",
                "path": "/order",
                "title": "Sifariş yarat",
                "summary": "vauçer və ya Top-up sifarişi yaradır.",
                "description": "Bu sorğu faktiki maliyyə əməliyyatı yaradır. Təkrar sorğular üçün X-Idempotency-Key istifadə edin.",
                "success_status": 200,
                "side_effect": true,
                "warning": "Bu sorğu faktiki sifariş yaradır və balansdan məbləğ çıxır.",
                "parameters": [
                    {
                        "name": "X-Idempotency-Key",
                        "location": "header",
                        "type": "string",
                        "required": false,
                        "description": "Unikal təkrar cəhd açarı. Balansı dəyişən əməliyyatlarda tələb olunur; POST /order üçün client_order_id ehtiyat açar kimi istifadə edilə bilər.",
                        "example": "550e8400-e29b-41d4-a716-446655440000",
                        "options": []
                    },
                    {
                        "name": "product_id",
                        "location": "body",
                        "type": "integer",
                        "required": true,
                        "description": "Aktiv məhsul ID-si.",
                        "example": 91,
                        "options": []
                    },
                    {
                        "name": "qty",
                        "location": "body",
                        "type": "integer",
                        "required": false,
                        "description": "Vauçer üçün maksimum: 500; top-up üçün maksimum: 1.",
                        "example": 1,
                        "options": []
                    },
                    {
                        "name": "player_id",
                        "location": "body",
                        "type": "string",
                        "required": false,
                        "description": "Top-up məhsulu üçün məcburidir.",
                        "example": "51515969536",
                        "options": []
                    },
                    {
                        "name": "server_id",
                        "location": "body",
                        "type": "string",
                        "required": false,
                        "description": "Server və ya zona ID-si.",
                        "example": "1234",
                        "options": []
                    },
                    {
                        "name": "input_2...input_8",
                        "location": "body",
                        "type": "string",
                        "required": false,
                        "description": "Məhsulun sahələr siyahısına uyğun əlavə input_2...input_8 dəyərləri.",
                        "example": "Additional mapped values",
                        "options": []
                    },
                    {
                        "name": "client_order_id",
                        "location": "body",
                        "type": "string",
                        "required": false,
                        "description": "Sizin sifariş referansınız. POST /order sorğusunda X-Idempotency-Key göndərilməzsə, bu dəyər təkrar cəhd açarı kimi də istifadə olunur.",
                        "example": "client-order-10001",
                        "options": []
                    },
                    {
                        "name": "callback_url",
                        "location": "body",
                        "type": "string",
                        "required": false,
                        "description": "Təhlükəsiz HTTPS geri çağırış URL-si.",
                        "example": "https://customer.example/webhooks/bot-manager",
                        "options": []
                    },
                    {
                        "name": "callback_mode",
                        "location": "body",
                        "type": "string",
                        "required": false,
                        "description": "Geri çağırış formatı. Standart: legacy.",
                        "example": "legacy",
                        "options": [
                            "legacy",
                            "events"
                        ]
                    }
                ],
                "request_example": {
                    "product_id": 91,
                    "qty": 1,
                    "player_id": "51515969536",
                    "server_id": "1234",
                    "input_3": "CharacterName",
                    "client_order_id": "client-order-10001",
                    "callback_url": "https://customer.example/webhooks/bot-manager",
                    "callback_mode": "events"
                },
                "response_example": {
                    "success": true,
                    "data": {
                        "order_id": 8821,
                        "order_uuid": "a80f63d7-cabb-4e1d-a177-045f6467e7b2",
                        "client_order_id": "order-10001",
                        "product_id": 91,
                        "product_name": "PUBG Mobile 60 UC",
                        "product_type": "TOPUP",
                        "qty": 1,
                        "player_id": "51515969536",
                        "server_id": "1234",
                        "player_name": "PlayerOne",
                        "region": "TR",
                        "status": "PROCESSING",
                        "price": "0.8800",
                        "currency": "USD",
                        "delivery": null,
                        "manual_action_required": false,
                        "delivery_message": null,
                        "created_at": "2026-07-25T13:30:00+04:00",
                        "completed_at": null
                    }
                },
                "errors": [
                    {
                        "code": "API_DISABLED",
                        "status": 503,
                        "description": "Public API admin tərəfindən deaktiv edilib."
                    },
                    {
                        "code": "API_KEY_MISSING",
                        "status": 401,
                        "description": "X-API-KEY başlığı göndərilməyib."
                    },
                    {
                        "code": "INVALID_API_KEY",
                        "status": 401,
                        "description": "API açarı yanlışdır, passivdir və ya müştəri passivdir."
                    },
                    {
                        "code": "IP_NOT_ALLOWED",
                        "status": 403,
                        "description": "Sorğu edən IP ünvanına icazə verilməyib."
                    },
                    {
                        "code": "RATE_LIMIT_EXCEEDED",
                        "status": 429,
                        "description": "Dəqiqəlik sorğu limiti keçilib."
                    },
                    {
                        "code": "VALIDATION_ERROR",
                        "status": 422,
                        "description": "Sorğu gövdəsi sahələrindən biri yanlışdır."
                    },
                    {
                        "code": "PRODUCT_NOT_FOUND",
                        "status": 404,
                        "description": "Məhsul tapılmadı."
                    },
                    {
                        "code": "INVALID_QUANTITY",
                        "status": 422,
                        "description": "Say icazə verilən limiti keçir."
                    },
                    {
                        "code": "PLAYER_ID_REQUIRED",
                        "status": 422,
                        "description": "player_id sahəsi məcburidir."
                    },
                    {
                        "code": "SERVER_ID_REQUIRED",
                        "status": 422,
                        "description": "server_id sahəsi məcburidir."
                    },
                    {
                        "code": "PLAYER_NOT_FOUND",
                        "status": 404,
                        "description": "Oyunçu yoxlaması uğursuzdur."
                    },
                    {
                        "code": "INSUFFICIENT_FUNDS",
                        "status": 400,
                        "description": "Balans kifayət etmir."
                    },
                    {
                        "code": "OUT_OF_STOCK",
                        "status": 409,
                        "description": "Sifariş emal edilə bilmədi."
                    },
                    {
                        "code": "IDEMPOTENCY_KEY_REQUIRED",
                        "status": 422,
                        "description": "Bu əməliyyat üçün stabil idempotency açarı tələb olunur."
                    },
                    {
                        "code": "IDEMPOTENCY_KEY_INVALID",
                        "status": 422,
                        "description": "Idempotency açarı yanlışdır və ya 128 simvoldan uzundur."
                    },
                    {
                        "code": "IDEMPOTENCY_CONFLICT",
                        "status": 409,
                        "description": "Eyni açar fərqli sorğu ilə istifadə edilib."
                    },
                    {
                        "code": "CLIENT_ORDER_ID_CONFLICT",
                        "status": 409,
                        "description": "Eyni client_order_id artıq başqa sifarişə təyin edilib."
                    },
                    {
                        "code": "SECURITY_ERROR",
                        "status": 400,
                        "description": "Geri çağırış URL-si təhlükəsizlik qaydalarına uyğun deyil."
                    },
                    {
                        "code": "ORDER_FAILED",
                        "status": 409,
                        "description": "Sifariş emal edilə bilmədi."
                    }
                ],
                "url": "https://gmx.az/api/v1/order",
                "curl": "curl -s -X POST 'https://gmx.az/api/v1/order' \\\n  -H 'Accept: application/json' \\\n  -H 'X-API-KEY: YOUR_API_KEY' \\\n  -H 'X-Idempotency-Key: 550e8400-e29b-41d4-a716-446655440000' \\\n  -H 'Content-Type: application/json' \\\n  --data '{\n    \"product_id\": 91,\n    \"qty\": 1,\n    \"player_id\": \"51515969536\",\n    \"server_id\": \"1234\",\n    \"input_3\": \"CharacterName\",\n    \"client_order_id\": \"client-order-10001\",\n    \"callback_url\": \"https://customer.example/webhooks/bot-manager\",\n    \"callback_mode\": \"events\"\n}'"
            },
            {
                "id": "qr-login-status",
                "group": "Sifarişlər",
                "method": "GET",
                "path": "/order/{id}/qr-login/status",
                "title": "QR Login statusu",
                "summary": "Sizə aid sifarişin canlı QR Login icra statusunu alın.",
                "description": "QR mövcudluğunu, versiyanı, əməkdaş statusunu, bitmə vaxtını və hazırda mümkün əməliyyatları qaytarır.",
                "success_status": 200,
                "parameters": [
                    {
                        "name": "id",
                        "location": "path",
                        "type": "string",
                        "required": true,
                        "description": "Sifariş ID-si, order_uuid və ya client_order_id.",
                        "example": "8821",
                        "options": []
                    }
                ],
                "request_example": null,
                "response_example": {
                    "success": true,
                    "data": {
                        "order_id": 8821,
                        "order_status": "PROCESSING",
                        "session_status": "QR_READY",
                        "status_label": "QR code is ready.",
                        "has_qr": true,
                        "qr_version": 1,
                        "qr_image_url": "https://gmx.az/api/v1/order/8821/qr-login/preview?v=1",
                        "expires_at": "2026-08-17T16:30:00+04:00",
                        "can_mark_scanned": true,
                        "can_request_new_qr": true,
                        "can_submit_otp": false,
                        "is_final": false
                    }
                },
                "errors": [
                    {
                        "code": "API_DISABLED",
                        "status": 503,
                        "description": "Public API admin tərəfindən deaktiv edilib."
                    },
                    {
                        "code": "API_KEY_MISSING",
                        "status": 401,
                        "description": "X-API-KEY başlığı göndərilməyib."
                    },
                    {
                        "code": "INVALID_API_KEY",
                        "status": 401,
                        "description": "API açarı yanlışdır, passivdir və ya müştəri passivdir."
                    },
                    {
                        "code": "IP_NOT_ALLOWED",
                        "status": 403,
                        "description": "Sorğu edən IP ünvanına icazə verilməyib."
                    },
                    {
                        "code": "RATE_LIMIT_EXCEEDED",
                        "status": 429,
                        "description": "Dəqiqəlik sorğu limiti keçilib."
                    },
                    {
                        "code": "ORDER_NOT_FOUND",
                        "status": 404,
                        "description": "Sifariş tapılmadı və ya bu istifadəçiyə aid deyil."
                    }
                ],
                "url": "https://gmx.az/api/v1/order/{id}/qr-login/status",
                "curl": "curl -s -X GET 'https://gmx.az/api/v1/order/8821/qr-login/status' \\\n  -H 'Accept: application/json' \\\n  -H 'X-API-KEY: YOUR_API_KEY'"
            },
            {
                "id": "qr-login-preview",
                "group": "Sifarişlər",
                "method": "GET",
                "path": "/order/{id}/qr-login/preview",
                "title": "QR Login görüntüsü",
                "summary": "Hazırda aktiv olan QR şəklini alın.",
                "description": "QR aktiv olduğu müddətdə özəl JPEG faylı qaytarılır. Sorğunu eyni API açarı ilə autentifikasiya edin. Brauzerdə adi <img> teqi X-API-KEY başlığı göndərə bilmədiyi üçün şəkli autentifikasiyalı binary/blob sorğusu ilə alın və qaytarılan obyekt URL-sini göstərin.",
                "success_status": 200,
                "parameters": [
                    {
                        "name": "id",
                        "location": "path",
                        "type": "string",
                        "required": true,
                        "description": "Sifariş ID-si, order_uuid və ya client_order_id.",
                        "example": "8821",
                        "options": []
                    },
                    {
                        "name": "v",
                        "location": "query",
                        "type": "integer",
                        "required": false,
                        "description": "Opsional QR versiya cache-buster dəyəri.",
                        "example": 1,
                        "options": []
                    }
                ],
                "request_example": null,
                "response_example": "Binary image/jpeg cavabı.",
                "errors": [
                    {
                        "code": "API_DISABLED",
                        "status": 503,
                        "description": "Public API admin tərəfindən deaktiv edilib."
                    },
                    {
                        "code": "API_KEY_MISSING",
                        "status": 401,
                        "description": "X-API-KEY başlığı göndərilməyib."
                    },
                    {
                        "code": "INVALID_API_KEY",
                        "status": 401,
                        "description": "API açarı yanlışdır, passivdir və ya müştəri passivdir."
                    },
                    {
                        "code": "IP_NOT_ALLOWED",
                        "status": 403,
                        "description": "Sorğu edən IP ünvanına icazə verilməyib."
                    },
                    {
                        "code": "RATE_LIMIT_EXCEEDED",
                        "status": 429,
                        "description": "Dəqiqəlik sorğu limiti keçilib."
                    },
                    {
                        "code": "ORDER_NOT_FOUND",
                        "status": 404,
                        "description": "Sifariş tapılmadı və ya bu istifadəçiyə aid deyil."
                    }
                ],
                "url": "https://gmx.az/api/v1/order/{id}/qr-login/preview",
                "curl": "curl -s -X GET 'https://gmx.az/api/v1/order/8821/qr-login/preview?v=1' \\\n  -H 'Accept: application/json' \\\n  -H 'X-API-KEY: YOUR_API_KEY'"
            },
            {
                "id": "qr-login-scanned",
                "group": "Sifarişlər",
                "method": "POST",
                "path": "/order/{id}/qr-login/scanned",
                "title": "QR skanını təsdiqlə",
                "summary": "Müştərinin aktiv QR-ni skan etdiyini təyin edilmiş əməkdaşyə bildirin.",
                "description": "Yalnız müştəri QR-ni həqiqətən skan etdikdən sonra istifadə edin. Bu əməliyyat sifarişi özü tamamlamır.",
                "success_status": 200,
                "parameters": [
                    {
                        "name": "id",
                        "location": "path",
                        "type": "string",
                        "required": true,
                        "description": "Sifariş ID-si, order_uuid və ya client_order_id.",
                        "example": "8821",
                        "options": []
                    }
                ],
                "request_example": {},
                "response_example": {
                    "success": true,
                    "data": {
                        "session_status": "customer_scanned",
                        "has_qr": true
                    }
                },
                "errors": [
                    {
                        "code": "API_DISABLED",
                        "status": 503,
                        "description": "Public API admin tərəfindən deaktiv edilib."
                    },
                    {
                        "code": "API_KEY_MISSING",
                        "status": 401,
                        "description": "X-API-KEY başlığı göndərilməyib."
                    },
                    {
                        "code": "INVALID_API_KEY",
                        "status": 401,
                        "description": "API açarı yanlışdır, passivdir və ya müştəri passivdir."
                    },
                    {
                        "code": "IP_NOT_ALLOWED",
                        "status": 403,
                        "description": "Sorğu edən IP ünvanına icazə verilməyib."
                    },
                    {
                        "code": "RATE_LIMIT_EXCEEDED",
                        "status": 429,
                        "description": "Dəqiqəlik sorğu limiti keçilib."
                    },
                    {
                        "code": "ORDER_NOT_FOUND",
                        "status": 404,
                        "description": "Sifariş tapılmadı və ya bu istifadəçiyə aid deyil."
                    }
                ],
                "url": "https://gmx.az/api/v1/order/{id}/qr-login/scanned",
                "curl": "curl -s -X POST 'https://gmx.az/api/v1/order/8821/qr-login/scanned' \\\n  -H 'Accept: application/json' \\\n  -H 'X-API-KEY: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  --data '{}'"
            },
            {
                "id": "qr-login-new-qr",
                "group": "Sifarişlər",
                "method": "POST",
                "path": "/order/{id}/qr-login/new-qr",
                "title": "Yeni QR tələb et",
                "summary": "Hazırkı QR-ni etibarsız edib əvəzini tələb edin.",
                "description": "Göstərilən QR-nin vaxtı bitdikdə və ya skan olunmadıqda istifadə edin.",
                "success_status": 200,
                "parameters": [
                    {
                        "name": "id",
                        "location": "path",
                        "type": "string",
                        "required": true,
                        "description": "Sifariş ID-si, order_uuid və ya client_order_id.",
                        "example": "8821",
                        "options": []
                    }
                ],
                "request_example": {},
                "response_example": {
                    "success": true,
                    "data": {
                        "session_status": "awaiting_new_qr",
                        "has_qr": false
                    }
                },
                "errors": [
                    {
                        "code": "API_DISABLED",
                        "status": 503,
                        "description": "Public API admin tərəfindən deaktiv edilib."
                    },
                    {
                        "code": "API_KEY_MISSING",
                        "status": 401,
                        "description": "X-API-KEY başlığı göndərilməyib."
                    },
                    {
                        "code": "INVALID_API_KEY",
                        "status": 401,
                        "description": "API açarı yanlışdır, passivdir və ya müştəri passivdir."
                    },
                    {
                        "code": "IP_NOT_ALLOWED",
                        "status": 403,
                        "description": "Sorğu edən IP ünvanına icazə verilməyib."
                    },
                    {
                        "code": "RATE_LIMIT_EXCEEDED",
                        "status": 429,
                        "description": "Dəqiqəlik sorğu limiti keçilib."
                    },
                    {
                        "code": "ORDER_NOT_FOUND",
                        "status": 404,
                        "description": "Sifariş tapılmadı və ya bu istifadəçiyə aid deyil."
                    }
                ],
                "url": "https://gmx.az/api/v1/order/{id}/qr-login/new-qr",
                "curl": "curl -s -X POST 'https://gmx.az/api/v1/order/8821/qr-login/new-qr' \\\n  -H 'Accept: application/json' \\\n  -H 'X-API-KEY: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  --data '{}'"
            },
            {
                "id": "qr-login-otp",
                "group": "Sifarişlər",
                "method": "POST",
                "path": "/order/{id}/qr-login/otp",
                "title": "QR Login OTP göndər",
                "summary": "Təyin edilmiş əməkdaşnin tələb etdiyi birdəfəlik kodu göndərin.",
                "description": "OTP yalnız awaiting_otp mərhələsində qəbul edilir, DB-də saxlanmadan təyin edilmiş əməkdaşyə ötürülür.",
                "success_status": 200,
                "parameters": [
                    {
                        "name": "id",
                        "location": "path",
                        "type": "string",
                        "required": true,
                        "description": "Sifariş ID-si, order_uuid və ya client_order_id.",
                        "example": "8821",
                        "options": []
                    },
                    {
                        "name": "otp",
                        "location": "body",
                        "type": "string",
                        "required": true,
                        "description": "4-10 rəqəmli birdəfəlik kod.",
                        "example": "123456",
                        "options": []
                    }
                ],
                "request_example": {
                    "otp": "123456"
                },
                "response_example": {
                    "success": true,
                    "data": {
                        "session_status": "customer_scanned",
                        "has_qr": true
                    }
                },
                "errors": [
                    {
                        "code": "API_DISABLED",
                        "status": 503,
                        "description": "Public API admin tərəfindən deaktiv edilib."
                    },
                    {
                        "code": "API_KEY_MISSING",
                        "status": 401,
                        "description": "X-API-KEY başlığı göndərilməyib."
                    },
                    {
                        "code": "INVALID_API_KEY",
                        "status": 401,
                        "description": "API açarı yanlışdır, passivdir və ya müştəri passivdir."
                    },
                    {
                        "code": "IP_NOT_ALLOWED",
                        "status": 403,
                        "description": "Sorğu edən IP ünvanına icazə verilməyib."
                    },
                    {
                        "code": "RATE_LIMIT_EXCEEDED",
                        "status": 429,
                        "description": "Dəqiqəlik sorğu limiti keçilib."
                    },
                    {
                        "code": "VALIDATION_ERROR",
                        "status": 422,
                        "description": "OTP 4-10 rəqəmdən ibarət olmalıdır."
                    },
                    {
                        "code": "ORDER_NOT_FOUND",
                        "status": 404,
                        "description": "Sifariş tapılmadı və ya bu istifadəçiyə aid deyil."
                    }
                ],
                "url": "https://gmx.az/api/v1/order/{id}/qr-login/otp",
                "curl": "curl -s -X POST 'https://gmx.az/api/v1/order/8821/qr-login/otp' \\\n  -H 'Accept: application/json' \\\n  -H 'X-API-KEY: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  --data '{\n    \"otp\": \"123456\"\n}'"
            },
            {
                "id": "order-status",
                "group": "Sifarişlər",
                "method": "GET",
                "path": "/order/{id}",
                "title": "Sifariş statusunu al",
                "summary": "Sifarişi ID, UUID və ya client_order_id ilə tapır.",
                "description": "Sifarişin cari statusunu və mümkün təqdimat məlumatını qaytarır.",
                "success_status": 200,
                "parameters": [
                    {
                        "name": "id",
                        "location": "path",
                        "type": "string",
                        "required": true,
                        "description": "Sifariş ID-si, order_uuid və ya client_order_id.",
                        "example": "8821",
                        "options": []
                    }
                ],
                "request_example": null,
                "response_example": {
                    "success": true,
                    "data": {
                        "order_id": 8821,
                        "order_uuid": "a80f63d7-cabb-4e1d-a177-045f6467e7b2",
                        "client_order_id": "order-10001",
                        "product_id": 17,
                        "product_name": "Steam Wallet 10 USD",
                        "product_type": "VOUCHER",
                        "qty": 2,
                        "player_id": null,
                        "server_id": null,
                        "player_name": null,
                        "region": null,
                        "status": "COMPLETED",
                        "price": "19.9800",
                        "currency": "USD",
                        "delivery": [
                            "CODE-ONE-XXXX",
                            "CODE-TWO-XXXX"
                        ],
                        "manual_action_required": false,
                        "delivery_message": null,
                        "created_at": "2026-07-25T13:30:00+04:00",
                        "completed_at": "2026-07-25T13:31:10+04:00"
                    }
                },
                "errors": [
                    {
                        "code": "API_DISABLED",
                        "status": 503,
                        "description": "Public API admin tərəfindən deaktiv edilib."
                    },
                    {
                        "code": "API_KEY_MISSING",
                        "status": 401,
                        "description": "X-API-KEY başlığı göndərilməyib."
                    },
                    {
                        "code": "INVALID_API_KEY",
                        "status": 401,
                        "description": "API açarı yanlışdır, passivdir və ya müştəri passivdir."
                    },
                    {
                        "code": "IP_NOT_ALLOWED",
                        "status": 403,
                        "description": "Sorğu edən IP ünvanına icazə verilməyib."
                    },
                    {
                        "code": "RATE_LIMIT_EXCEEDED",
                        "status": 429,
                        "description": "Dəqiqəlik sorğu limiti keçilib."
                    },
                    {
                        "code": "ORDER_NOT_FOUND",
                        "status": 404,
                        "description": "Sifariş tapılmadı və ya bu istifadəçiyə aid deyil."
                    }
                ],
                "url": "https://gmx.az/api/v1/order/{id}",
                "curl": "curl -s -X GET 'https://gmx.az/api/v1/order/8821' \\\n  -H 'Accept: application/json' \\\n  -H 'X-API-KEY: YOUR_API_KEY'"
            },
            {
                "id": "order-status-legacy",
                "group": "Sifarişlər",
                "method": "GET",
                "path": "/order-status/{id}",
                "title": "Köhnə status ünvanı",
                "summary": "/order/{id} ünvanının uyğunluq variantıdır.",
                "description": "Yeni inteqrasiyalarda /order/{id} istifadə edin.",
                "success_status": 200,
                "parameters": [
                    {
                        "name": "id",
                        "location": "path",
                        "type": "string",
                        "required": true,
                        "description": "Sifariş ID-si, order_uuid və ya client_order_id.",
                        "example": "8821",
                        "options": []
                    }
                ],
                "request_example": null,
                "response_example": {
                    "success": true,
                    "data": {
                        "order_id": 8821,
                        "status": "COMPLETED",
                        "delivery": [
                            "CODE-ONE-XXXX"
                        ],
                        "manual_action_required": false,
                        "delivery_message": null
                    }
                },
                "errors": [
                    {
                        "code": "API_DISABLED",
                        "status": 503,
                        "description": "Public API admin tərəfindən deaktiv edilib."
                    },
                    {
                        "code": "API_KEY_MISSING",
                        "status": 401,
                        "description": "X-API-KEY başlığı göndərilməyib."
                    },
                    {
                        "code": "INVALID_API_KEY",
                        "status": 401,
                        "description": "API açarı yanlışdır, passivdir və ya müştəri passivdir."
                    },
                    {
                        "code": "IP_NOT_ALLOWED",
                        "status": 403,
                        "description": "Sorğu edən IP ünvanına icazə verilməyib."
                    },
                    {
                        "code": "RATE_LIMIT_EXCEEDED",
                        "status": 429,
                        "description": "Dəqiqəlik sorğu limiti keçilib."
                    },
                    {
                        "code": "ORDER_NOT_FOUND",
                        "status": 404,
                        "description": "Sifariş tapılmadı."
                    }
                ],
                "url": "https://gmx.az/api/v1/order-status/{id}",
                "curl": "curl -s -X GET 'https://gmx.az/api/v1/order-status/8821' \\\n  -H 'Accept: application/json' \\\n  -H 'X-API-KEY: YOUR_API_KEY'"
            },
            {
                "id": "orders",
                "group": "Sifarişlər",
                "method": "GET",
                "path": "/orders",
                "title": "Sifariş tarixçəsini al",
                "summary": "Cari API istifadəçisinin sifarişlərini qaytarır.",
                "description": "Müştəri yalnız öz sifarişlərini görə bilər.",
                "success_status": 200,
                "parameters": [
                    {
                        "name": "status",
                        "location": "query",
                        "type": "string",
                        "required": false,
                        "description": "Sifariş statusu.",
                        "example": "completed",
                        "options": [
                            "pending",
                            "processing",
                            "completed",
                            "failed",
                            "canceled",
                            "cancelled",
                            "refunded"
                        ]
                    },
                    {
                        "name": "type",
                        "location": "query",
                        "type": "string",
                        "required": false,
                        "description": "Məhsul tipi.",
                        "example": "voucher",
                        "options": [
                            "voucher",
                            "topup"
                        ]
                    },
                    {
                        "name": "page",
                        "location": "query",
                        "type": "integer",
                        "required": false,
                        "description": "Səhifə nömrəsi.",
                        "example": 1,
                        "options": []
                    },
                    {
                        "name": "per_page",
                        "location": "query",
                        "type": "integer",
                        "required": false,
                        "description": "Səhifə ölçüsü. Maksimum 100.",
                        "example": 50,
                        "options": []
                    }
                ],
                "request_example": null,
                "response_example": {
                    "success": true,
                    "data": [
                        {
                            "order_id": 8821,
                            "product_name": "Steam Wallet 10 USD",
                            "product_type": "VOUCHER",
                            "qty": 1,
                            "status": "COMPLETED",
                            "price": "9.9900",
                            "currency": "USD",
                            "delivery": [
                                "CODE-ONE-XXXX"
                            ],
                            "manual_action_required": false,
                            "delivery_message": null
                        }
                    ],
                    "meta": {
                        "current_page": 1,
                        "last_page": 1,
                        "per_page": 50,
                        "total": 1
                    }
                },
                "errors": [
                    {
                        "code": "API_DISABLED",
                        "status": 503,
                        "description": "Public API admin tərəfindən deaktiv edilib."
                    },
                    {
                        "code": "API_KEY_MISSING",
                        "status": 401,
                        "description": "X-API-KEY başlığı göndərilməyib."
                    },
                    {
                        "code": "INVALID_API_KEY",
                        "status": 401,
                        "description": "API açarı yanlışdır, passivdir və ya müştəri passivdir."
                    },
                    {
                        "code": "IP_NOT_ALLOWED",
                        "status": 403,
                        "description": "Sorğu edən IP ünvanına icazə verilməyib."
                    },
                    {
                        "code": "RATE_LIMIT_EXCEEDED",
                        "status": 429,
                        "description": "Dəqiqəlik sorğu limiti keçilib."
                    },
                    {
                        "code": "VALIDATION_ERROR",
                        "status": 422,
                        "description": "Filtr və ya səhifələmə parametri yanlışdır."
                    }
                ],
                "url": "https://gmx.az/api/v1/orders",
                "curl": "curl -s -X GET 'https://gmx.az/api/v1/orders?status=completed&type=voucher&page=1&per_page=50' \\\n  -H 'Accept: application/json' \\\n  -H 'X-API-KEY: YOUR_API_KEY'"
            },
            {
                "id": "redeem-check",
                "group": "Kod yoxlaması",
                "method": "POST",
                "path": "/redeem-check",
                "title": "Kodun istifadə məlumatını yoxla",
                "summary": "Kodu yoxlayır və nəticəyə uyğun məbləği balansdan tutur.",
                "description": "Bu sorğu faktiki balans əməliyyatı yarada bilər.",
                "success_status": 200,
                "side_effect": true,
                "warning": "Bu sorğu faktiki kod yoxlaması edir və balansdan ödəniş tuta bilər.",
                "parameters": [
                    {
                        "name": "X-Idempotency-Key",
                        "location": "header",
                        "type": "string",
                        "required": true,
                        "description": "Məcburi unikal təkrar cəhd açarı. Eyni kodla təkrar istifadə edilərsə əvvəlki nəticə qaytarılır, ikinci dəfə balans tutulmur və yuxarı səviyyəli xidmətə yeni yoxlama sorğusu göndərilmir.",
                        "example": "4d83ae61-b98b-4d4d-bf11-58f3bc028a71",
                        "options": []
                    },
                    {
                        "name": "code",
                        "location": "body",
                        "type": "string",
                        "required": true,
                        "description": "Yoxlanılacaq kod. 6-160 simvol.",
                        "example": "REDEEM-CODE-EXAMPLE",
                        "options": []
                    }
                ],
                "request_example": {
                    "code": "REDEEM-CODE-EXAMPLE"
                },
                "response_example": {
                    "success": true,
                    "data": {
                        "id": 142,
                        "status": "found",
                        "code_masked": "REDE********MPLE",
                        "charged_amount": "0.0500",
                        "charged_amount_text": "$ 0.05",
                        "balance": "1250.4500",
                        "balance_text": "$ 1250.45",
                        "currency_code": "USD",
                        "currency_symbol": "$",
                        "redemption_time": "2026-07-25 13:30:00",
                        "expiration_time": null,
                        "amount": 60,
                        "product_name": "PUBG Mobile 60 UC",
                        "player_id": "51515969536",
                        "player_name": "PlayerOne",
                        "created_at": "2026-07-25 13:30:02"
                    },
                    "meta": {
                        "idempotent_replay": false
                    }
                },
                "errors": [
                    {
                        "code": "API_DISABLED",
                        "status": 503,
                        "description": "Public API admin tərəfindən deaktiv edilib."
                    },
                    {
                        "code": "API_KEY_MISSING",
                        "status": 401,
                        "description": "X-API-KEY başlığı göndərilməyib."
                    },
                    {
                        "code": "INVALID_API_KEY",
                        "status": 401,
                        "description": "API açarı yanlışdır, passivdir və ya müştəri passivdir."
                    },
                    {
                        "code": "IP_NOT_ALLOWED",
                        "status": 403,
                        "description": "Sorğu edən IP ünvanına icazə verilməyib."
                    },
                    {
                        "code": "RATE_LIMIT_EXCEEDED",
                        "status": 429,
                        "description": "Dəqiqəlik sorğu limiti keçilib."
                    },
                    {
                        "code": "IDEMPOTENCY_KEY_REQUIRED",
                        "status": 422,
                        "description": "Bu əməliyyat üçün stabil idempotency açarı tələb olunur."
                    },
                    {
                        "code": "IDEMPOTENCY_KEY_INVALID",
                        "status": 422,
                        "description": "Idempotency açarı yanlışdır və ya 128 simvoldan uzundur."
                    },
                    {
                        "code": "IDEMPOTENCY_CONFLICT",
                        "status": 409,
                        "description": "Eyni açar fərqli sorğu ilə istifadə edilib."
                    },
                    {
                        "code": "VALIDATION_ERROR",
                        "status": 422,
                        "description": "Kod göndərilməyib və ya uzunluğu yanlışdır."
                    },
                    {
                        "code": "REDEEM_CHECK_FAILED",
                        "status": 422,
                        "description": "Kod yoxlaması uğursuz oldu."
                    }
                ],
                "url": "https://gmx.az/api/v1/redeem-check",
                "curl": "curl -s -X POST 'https://gmx.az/api/v1/redeem-check' \\\n  -H 'Accept: application/json' \\\n  -H 'X-API-KEY: YOUR_API_KEY' \\\n  -H 'X-Idempotency-Key: 4d83ae61-b98b-4d4d-bf11-58f3bc028a71' \\\n  -H 'Content-Type: application/json' \\\n  --data '{\n    \"code\": \"REDEEM-CODE-EXAMPLE\"\n}'"
            }
        ],
        "status_lifecycle": [
            {
                "status": "PENDING",
                "terminal": false,
                "description": "Sifariş emal gözləyir."
            },
            {
                "status": "PROCESSING",
                "terminal": false,
                "description": "Sifariş emal olunur."
            },
            {
                "status": "COMPLETED",
                "terminal": true,
                "description": "Sifariş tamamlanıb."
            },
            {
                "status": "FAILED",
                "terminal": true,
                "description": "Sifariş uğursuz olub."
            },
            {
                "status": "CANCELED",
                "terminal": true,
                "description": "Sifariş ləğv edilib."
            },
            {
                "status": "REFUNDED",
                "terminal": true,
                "description": "Məbləğ geri qaytarılıb."
            }
        ],
        "webhook": {
            "event": "order.status_changed",
            "events": [
                "order.status_changed",
                "qr_login.waiting_worker",
                "qr_login.worker_assigned",
                "qr_login.qr_ready",
                "qr_login.customer_scanned",
                "qr_login.new_qr_requested",
                "qr_login.otp_required",
                "qr_login.otp_submitted"
            ],
            "method": "POST",
            "content_type": "application/json",
            "headers": [
                {
                    "name": "X-EPINBULK-Signature-V2",
                    "description": "Tövsiyə edilən: sha256=HMAC_SHA256(timestamp + \".\" + event_id + \".\" + xam_json_gövdesi, webhook_məxfi_açarı). Yuxarıda göstərilən timestamp və event-id başlıqlarından istifadə edin."
                },
                {
                    "name": "X-EPINBULK-Signature-Version",
                    "description": "2"
                },
                {
                    "name": "X-EPINBULK-Signature",
                    "description": "sha256=HMAC_SHA256(xam_json_gövdesi, webhook_məxfi_açarı)"
                },
                {
                    "name": "X-EPINBULK-Timestamp",
                    "description": "ISO-8601 webhook göndərilmə vaxtı. V2 imzanı yoxlayarkən vaxtın təzəliyini də yoxlayın."
                },
                {
                    "name": "X-EPINBULK-Event-Id",
                    "description": "Unikal hadisə UUID-si."
                },
                {
                    "name": "X-EPINBULK-Event",
                    "description": "Actual event name: order.status_changed or qr_login.*"
                }
            ],
            "requirements": [
                "Yalnız HTTPS URL qəbul edilir.",
                "Yalnız 443 portu qəbul edilir.",
                "Şəxsi və yerli ünvanlar bloklanır.",
                "URL daxilində giriş məlumatı qəbul edilmir.",
                "Yönləndirmələr izlənmir.",
                "Server 2xx cavab qaytarmalıdır."
            ],
            "retry_schedule": [
                "1 → 1 dəqiqə",
                "2 → 5 dəqiqə",
                "3 → 15 dəqiqə",
                "4-6 → 60 dəqiqə",
                "7-20 → 6 saat"
            ],
            "max_attempts": 20,
            "legacy_example": {
                "event_id": "47c8c6ba-16a5-4089-9f62-7ae1e51d4c0f",
                "order_id": 8821,
                "client_order_id": "order-10001",
                "status": "COMPLETED",
                "product_name": "Steam Wallet 10 USD",
                "qty": 2,
                "player_id": null,
                "player_name": null,
                "server_id": null,
                "region": null,
                "price": "19.9800",
                "currency": "USD",
                "delivery": [
                    "CODE-ONE-XXXX",
                    "CODE-TWO-XXXX"
                ],
                "manual_action_required": false,
                "delivery_message": null,
                "timestamp": "2026-07-25T13:31:10+04:00"
            },
            "events_example": {
                "event_id": "47c8c6ba-16a5-4089-9f62-7ae1e51d4c0f",
                "event": "order.status_changed",
                "callback_mode": "events",
                "order_id": 8821,
                "client_order_id": "order-10001",
                "product_id": 91,
                "product_name": "PUBG Mobile 60 UC",
                "product_type": "TOPUP",
                "game_id": 1,
                "game_name": "PUBG Mobile",
                "player_id": "51515969536",
                "player_name": "PlayerOne",
                "server_id": "1234",
                "region": "TR",
                "qty": 1,
                "price": "0.8800",
                "currency": "USD",
                "delivery": [],
                "manual_action_required": false,
                "delivery_message": null,
                "status": "COMPLETED",
                "message": "Sifariş uğurla tamamlandı.",
                "timestamp": "2026-07-25T13:30:10+04:00"
            }
        },
        "error_catalog": [
            {
                "code": "API_DISABLED",
                "status": 503,
                "description": "Public API admin tərəfindən deaktiv edilib."
            },
            {
                "code": "API_KEY_MISSING",
                "status": 401,
                "description": "X-API-KEY başlığı göndərilməyib."
            },
            {
                "code": "CLIENT_ORDER_ID_CONFLICT",
                "status": 409,
                "description": "Eyni client_order_id artıq başqa sifarişə təyin edilib."
            },
            {
                "code": "GAME_NOT_FOUND",
                "status": 404,
                "description": "Oyun tapılmadı və ya aktiv deyil."
            },
            {
                "code": "IDEMPOTENCY_CONFLICT",
                "status": 409,
                "description": "Eyni açar fərqli sorğu ilə istifadə edilib."
            },
            {
                "code": "IDEMPOTENCY_KEY_INVALID",
                "status": 422,
                "description": "Idempotency açarı yanlışdır və ya 128 simvoldan uzundur."
            },
            {
                "code": "IDEMPOTENCY_KEY_REQUIRED",
                "status": 422,
                "description": "Bu əməliyyat üçün stabil idempotency açarı tələb olunur."
            },
            {
                "code": "INSUFFICIENT_FUNDS",
                "status": 400,
                "description": "Balans kifayət etmir."
            },
            {
                "code": "INVALID_API_KEY",
                "status": 401,
                "description": "API açarı yanlışdır, passivdir və ya müştəri passivdir."
            },
            {
                "code": "INVALID_QUANTITY",
                "status": 422,
                "description": "Say icazə verilən limiti keçir."
            },
            {
                "code": "IP_NOT_ALLOWED",
                "status": 403,
                "description": "Sorğu edən IP ünvanına icazə verilməyib."
            },
            {
                "code": "ORDER_FAILED",
                "status": 409,
                "description": "Sifariş emal edilə bilmədi."
            },
            {
                "code": "ORDER_NOT_FOUND",
                "status": 404,
                "description": "Sifariş tapılmadı və ya bu istifadəçiyə aid deyil."
            },
            {
                "code": "OUT_OF_STOCK",
                "status": 409,
                "description": "Sifariş emal edilə bilmədi."
            },
            {
                "code": "PLAYER_ID_REQUIRED",
                "status": 422,
                "description": "player_id sahəsi məcburidir."
            },
            {
                "code": "PLAYER_NOT_FOUND",
                "status": 404,
                "description": "Oyunçu yoxlanmadı."
            },
            {
                "code": "PRODUCT_NOT_FOUND",
                "status": 404,
                "description": "Top-up məhsulu tapılmadı."
            },
            {
                "code": "RATE_LIMIT_EXCEEDED",
                "status": 429,
                "description": "Dəqiqəlik sorğu limiti keçilib."
            },
            {
                "code": "REDEEM_CHECK_FAILED",
                "status": 422,
                "description": "Kod yoxlaması uğursuz oldu."
            },
            {
                "code": "SECURITY_ERROR",
                "status": 400,
                "description": "Geri çağırış URL-si təhlükəsizlik qaydalarına uyğun deyil."
            },
            {
                "code": "SERVER_ID_REQUIRED",
                "status": 422,
                "description": "server_id sahəsi məcburidir."
            },
            {
                "code": "VALIDATION_ERROR",
                "status": 422,
                "description": "type və ya q parametrinin formatı yanlışdır."
            }
        ],
        "common_error_shape": {
            "success": false,
            "error": {
                "code": "VALIDATION_ERROR",
                "message": "product_id sahəsi məcburidir.",
                "details": {
                    "max": 1
                }
            }
        },
        "changelog": [
            {
                "date": "2026-07-25",
                "title": "Canlı sorğu iş sahəsi",
                "description": "Canlı sorğu və cavab alətləri əlavə edildi."
            },
            {
                "date": "2026-07-25",
                "title": "Təhlükəsizlik yenilikləri",
                "description": "Geri çağırış və təkrar sorğu qoruması gücləndirildi."
            }
        ]
    }
}