{
    "info": {
        "name": "Kopazar B2B API v2.3",
        "description": "Kopazar B2B API ile e-pin ve gold ürünlerini kendi sisteminizden satabilir, fiyat ve stok seviyelerini çekebilir, siparişlerinizi izleyebilirsiniz. REST + JSON; tüm istek gövdeleri `application/json`.\n\n### Hızlı başlangıç\n1. **Başvuru:** [API başvuru formu](https://www.kopazar.com/user-webapi-form) → onay sonrası kullanıcı adı, parola ve Client ID verilir.\n2. **Token:** `POST /token` → `access_token` (1 saat). Her istekte `Authorization: Bearer <token>`.\n3. **Katalog & fiyat:** `/pricelist` (tek çağrı) veya `/categorylist` → `/epinlist` / `/goldlist`.\n4. **Stok:** `/stock-all` (periyodik senkron) veya `/stock` / `/stock-multi`. Stok yalnız **var/yok** olarak döner (0 yok · 1 var); adet asla verilmez.\n5. **Sipariş:** `/epinbuy` (kodlar yanıtta anında) · `/goldbuy` (operatör onayı, `pending`). `transid` ile idempotent.\n6. **Takip:** `/order-status` (kodları yeniden verir) veya webhook.\n\n### Scope'lar\n| Scope | Açtığı uçlar |\n|---|---|\n| `me` | /me, /limits, /ip-manage, /rotate-key, /usage-stats, /webhook-* |\n| `epin` | /epinbuy + katalog, stok, sipariş sorgu/iptal |\n| `gold` | /goldbuy + katalog, stok, sipariş sorgu/iptal |\n| `price` | yalnız /pricelist, /categorylist, /epinlist, /goldlist (fiyat-görüntüleme hesapları) |\n\n### Sandbox\nHesabınız sandbox modundaysa `/epinbuy` ve `/goldbuy` gerçek sipariş oluşturmaz, bakiye düşmez; `sandbox-e-1-XXXXXXXX` biçiminde sipariş no ve `TEST-XXXXX-XXXXX-XXXXX` kodlar döner. `/order-status` ve `/order-cancel` bu id'lerle çalışır. Sandbox modunu panelden açıp kapatırsınız.\n\n### Webhook (sipariş durumu bildirimi)\nPanelde tanımlı URL'inize `POST`, gövde JSON:\n```json\n{\"event\":\"order.status\",\"transid\":\"ORDER-2026-000124\",\"order_id\":2231764,\"order_type\":\"gold\",\"status\":\"success\",\"timestamp\":\"2026-10-02 22:45:10\"}\n```\nBaşlıklar: `X-Kopazar-Timestamp` (unix saniye) · `X-Kopazar-Signature` = `hex( HMAC-SHA256( timestamp + \".\" + rawBody , clientsalt ) )` · `X-Kopazar-Client` (client id).\nDoğrulama: imzayı aynı formülle üretip **sabit zamanlı** karşılaştırın; 5 dakikadan eski timestamp'i reddedin; `2xx` dönün. Başarısız teslimat 1-2-4-8-16 dk aralıkla yeniden denenir (yalnız `2xx` yanıt başarı sayılır). Webhook her API siparişi için gönderilir: anında teslim edilen e-pinlerde siparişten hemen sonra, gold ve sanal/top-up ürünlerde sipariş sonuçlanınca (`success` / `cancel`).\n\n### Görünürlük\nAPI yalnız sitede satışta olan ürünleri döner: aktif bir kategoride listelenen aktif e-pinler ve gold satışı açık kategorilerdeki aktif gold ürünleri. Sitede görünmeyen bir ürün listelerde yer almaz; `stock` ve satın alma uçları \"Urun satista degil\" döner.\n\n### Hata modeli ve limitler\nTüm yanıtlar `success` alanı taşır; hata durumunda `success:false` ve açıklayıcı `message`. Çoğu hata HTTP 200 ile döner — **daima `success` alanına bakın**, dallanma için `error_code` kullanın. Limitler: varsayılan 60 istek/dk, 1000/saat, 10 satın alma/dk (hesap bazlı değiştirilebilir); geçersiz uç denemeleri IP başına 10/dk ile sınırlıdır (429).\n\n\n### Hata kodları\nHer hata yanıtında `error_code` (sabit anahtar) bulunur; `message` insan için açıklamadır.\n\n| error_code | Anlamı |\n|---|---|\n| `AUTH_TOKEN_MISSING` / `AUTH_TOKEN_EXPIRED` / `AUTH_TOKEN_INVALID` | Token yok / süresi dolmuş / geçersiz → `/token` ile yenileyin |\n| `AUTH_TOKEN_REVOKED` | `/rotate-key` ya da şifre değişimi sonrası token iptal edildi → `/token` ile yeniden giriş yapın |\n| `ACCOUNT_DISABLED` | API hesabı veya üyelik pasif → destekle iletişime geçin |\n| `AUTH_CREDENTIALS` / `AUTH_LOCKED` | Kullanıcı adı-parola-clientid hatalı / çok deneme, geçici kilit |\n| `AUTH_IP_DENIED` / `AUTH_IP_REQUIRED` | IP beyaz listesinde değil / beyaz liste boş — panelden (API Ayarları > Güvenlik) sunucu IP'nizi girmeden istek yapılamaz |\n| `AUTH_SCOPE_DENIED` / `VALIDATION_SCOPE` | Token'ın scope'u bu uca yetmiyor / scope tanımsız |\n| `PRICE_ONLY_ACCOUNT` | Hesap yalnız fiyat görüntüleyebilir |\n| `RATE_LIMITED` | İstek limiti aşıldı (Retry-After) |\n| `INVALID_OPERATION` / `SERVICE_DISABLED` | Geçersiz uç / API geçici kapalı |\n| `VALIDATION` / `VALIDATION_DATE` | Eksik ya da hatalı parametre / tarih |\n| `PRODUCT_NOT_FOUND` / `PRODUCT_NOT_FOR_SALE` | Ürün yok / sitede satışta değil |\n| `OUT_OF_STOCK` / `QUANTITY_LIMIT` | Stok yetersiz / adet sınırı (min, max, günlük) |\n| `BALANCE_INSUFFICIENT` / `SALES_LIMIT_EXCEEDED` / `PURCHASE_BANNED` | Bakiye yetersiz / günlük-aylık satış limiti / hesapta alım yasağı |\n| `DUPLICATE_TRANSID` | Aynı transid ile sipariş zaten var (yanıtta `order_id`) |\n| `LOCKED_RETRY` | Aynı işlem şu an işleniyor, kısa süre sonra tekrar deneyin |\n| `ORDER_NOT_FOUND` / `ORDER_NOT_CANCELLABLE` | Sipariş yok / iptal edilemez |\n| `WEBHOOK_URL_MISSING` / `WEBHOOK_URL_BLOCKED` / `WEBHOOK_ERROR` | Webhook URL yok / özel IP / teslim hatası |\n| `METHOD_NOT_ALLOWED` / `UNSUPPORTED_CONTENT_TYPE` / `PAYLOAD_TOO_LARGE` | Geçit: yanlış HTTP metodu / Content-Type JSON değil / gövde 64 KB üstü |\n| `UPSTREAM_ERROR` | Geçit ana sunucuya ulaşamadı (502), tekrar deneyin |\n| `NOT_APPLICABLE` / `UPSTREAM_ERROR` | Bu ürün için işlem gerekmiyor / dış doğrulama servisine ulaşılamadı |\n| `INTERNAL_ERROR` / `ERROR` | Sunucu hatası / sınıflandırılmamış |\n\nDestek: destek@kopazar.com · Panel: [API ayarları](https://www.kopazar.com/user-webapi-setting)",
        "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
    },
    "auth": {
        "type": "bearer",
        "bearer": [
            {
                "key": "token",
                "value": "{{accessToken}}",
                "type": "string"
            }
        ]
    },
    "variable": [
        {
            "key": "baseUrl",
            "value": "https://api.kopazar.com/webapi"
        },
        {
            "key": "accessToken",
            "value": ""
        },
        {
            "key": "refreshToken",
            "value": ""
        }
    ],
    "item": [
        {
            "name": "1 · Kimlik",
            "description": "Token alma ve yenileme",
            "item": [
                {
                    "name": "Erişim token'ı al",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/token",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "token"
                            ]
                        },
                        "description": "Bayi kimlik bilgileriyle 1 saat geçerli JWT erişim token'ı ve yenileme token'ı üretir. Her istekte `Authorization: Bearer <access_token>` başlığı gönderilir.\n\n**Scope:** virgülle ayrılmış: `gold`, `epin`, `me`, `price`. Yalnız ihtiyaç duyduğunuz scope'ları isteyin. `price` yalnız fiyat-görüntüleme hesapları içindir (sadece `/pricelist`).\n\n**Güvenlik:** 5 başarısız denemede kullanıcı/IP geçici kilitlenir. IP beyaz listesi **zorunludur**: panelde (API Ayarları > Güvenlik) en az bir sunucu IP'si tanımlı olmadan token alınamaz; yalnız o IP'lerden istek kabul edilir.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"username\": \"bayi_kullanici\",\n    \"password\": \"••••••••\",\n    \"clientid\": \"171542\",\n    \"scope\": \"me,epin,gold\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        },
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "event": [
                        {
                            "listen": "test",
                            "script": {
                                "type": "text/javascript",
                                "exec": [
                                    "var j = pm.response.json();",
                                    "if (j.success && j.access_token) { pm.collectionVariables.set(\"accessToken\", j.access_token); pm.collectionVariables.set(\"refreshToken\", j.refresh_token); }"
                                ]
                            }
                        }
                    ]
                },
                {
                    "name": "Token yenile",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/refresh-token",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "refresh-token"
                            ]
                        },
                        "description": "Yenileme token'ı ile yeni bir erişim token'ı üretir. Scope değişmez. Yalnız POST gövdesinden kabul edilir; erişim token'ı yenileme için kullanılamaz. Hesap pasifse (`ACCOUNT_DISABLED`) ya da `/rotate-key` / şifre değişimiyle token iptal edildiyse (`AUTH_TOKEN_REVOKED`) `/token` ile yeniden giriş yapın.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"refresh_token\": \"eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9...\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        },
                        "auth": {
                            "type": "noauth"
                        }
                    }
                }
            ]
        },
        {
            "name": "2 · Katalog & Fiyat",
            "description": "Kategoriler, ürünler, fiyat listesi",
            "item": [
                {
                    "name": "Kategori listesi",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/categorylist",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "categorylist"
                            ]
                        },
                        "description": "Aktif ürün kategorilerini döner. **Scope:** `price`, `gold` veya `epin`.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"producttype\": \"epin\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                },
                {
                    "name": "E-pin ürünleri",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/epinlist",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "epinlist"
                            ]
                        },
                        "description": "Aktif e-pin ürünlerini (id, ad, fiyat) döner. **Scope:** `price` veya `epin`.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"category_id\": 606\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                },
                {
                    "name": "Gold ürünleri",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/goldlist",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "goldlist"
                            ]
                        },
                        "description": "Aktif gold ürünlerini (id, kategori, ad, fiyat) döner. **Scope:** `price` veya `gold`.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"category_id\": 694\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                },
                {
                    "name": "Fiyat listesi",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/pricelist",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "pricelist"
                            ]
                        },
                        "description": "Tüm aktif ürünlerin güncel fiyatını tek çağrıda döner. Fiyat-görüntüleme (`price` scope) hesaplarında yalnız size tanımlanan kategori/ürünler listelenir. Her ürün için `in_stock` (1 = stokta var, 0 = yok) döner; stok adedi dönmez. Gold satırlarında `buy_price`/`buy_active` (oyuncudan alış fiyatı, sitedeki 'Bize Sat' ile aynı) da yer alır. Fiyat-only hesaplar stok durumunu bu alandan alır (ayrı `/stock` çağrısı gerekmez). **Scope:** `price`, `gold` veya `epin`.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"category_id\": 606\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                }
            ]
        },
        {
            "name": "3 · Stok",
            "description": "Stok var/yok (adet verilmez)",
            "item": [
                {
                    "name": "Tek ürün stok",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/stock",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "stock"
                            ]
                        },
                        "description": "Bir ürünün stok durumunu, fiyatını ve sipariş sınırlarını döner. **Scope:** `gold` veya `epin`.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"product_type\": \"epin\",\n    \"product_id\": 262\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                },
                {
                    "name": "Toplu stok (≤50)",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/stock-multi",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "stock-multi"
                            ]
                        },
                        "description": "Tek istekte en fazla 50 ürünün stok durumunu döner. **Scope:** `gold` veya `epin`.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"products\": [\n        {\n            \"product_type\": \"epin\",\n            \"product_id\": 262\n        },\n        {\n            \"product_type\": \"gold\",\n            \"product_id\": 13\n        }\n    ]\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                },
                {
                    "name": "Tüm ürünlerin stok durumu",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/stock-all",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "stock-all"
                            ]
                        },
                        "description": "Aktif tüm ürünlerin stok durumunu (var/yok) tek çağrıda döner; periyodik senkron için önerilen uç. **Scope:** `gold` veya `epin`.",
                        "body": {
                            "mode": "raw",
                            "raw": "[]",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                }
            ]
        },
        {
            "name": "4 · Sipariş",
            "description": "Satın alma, durum sorgu, iptal",
            "item": [
                {
                    "name": "Top-up kullanıcı doğrulama",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/check-user",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "check-user"
                            ]
                        },
                        "description": "Doğrudan yükleme (top-up) ürünlerinde, siparişten **önce** oyuncu/kullanıcı bilgisini doğrular; yanlış hesaba yükleme riskini azaltır. Alanlar `epinbuy` ile aynıdır: ürünün `fields` listesindeki her kod için `extra_<kod>` gönderilir (ör. `extra_joygameusername`). Desteklenen sağlayıcıda `valid` ve bulunan kullanıcı bilgisi döner; ön doğrulama olmayan ürün/sağlayıcıda `supported:false` döner ve sipariş yine verilebilir. **Scope:** `epin`.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"product_epin_id\": 13,\n    \"extra_joygameusername\": \"oyuncu_adi\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                },
                {
                    "name": "E-pin satın al",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/epinbuy",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "epinbuy"
                            ]
                        },
                        "description": "E-pin satın alır. Normal e-pinlerde kodlar **yanıtta anında** teslim edilir; sanal/top-up ürünlerde `status: pending` döner, sonuç `order-status` veya webhook ile izlenir. **Scope:** `epin`.\n\n**Idempotency:** `transid` sizin tekil işlem kimliğinizdir (≤70 karakter). Aynı `transid` ile tekrar istek yeni sipariş OLUŞTURMAZ; mevcut `order_id` ile `success:false` döner. Ağ hatasında aynı `transid` ile güvenle tekrar deneyin.\n\n**Sandbox:** hesabınız sandbox modundaysa gerçek sipariş ve bakiye hareketi olmaz; `sandbox-…` id ve `TEST-…` kodlar döner.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"product_epin_id\": 262,\n    \"quantity\": 1,\n    \"transid\": \"ORDER-2026-000123\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                },
                {
                    "name": "Gold satın al",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/goldbuy",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "goldbuy"
                            ]
                        },
                        "description": "Gold siparişi oluşturur. Teslimat operatör onayıyla tamamlanır; `status: pending` ile döner, sonuç `order-status` veya webhook ile izlenir. **Scope:** `gold`.\n\n**Idempotency:** `transid` sizin tekil işlem kimliğinizdir (≤70 karakter). Aynı `transid` ile tekrar istek yeni sipariş OLUŞTURMAZ; mevcut `order_id` ile `success:false` döner. Ağ hatasında aynı `transid` ile güvenle tekrar deneyin.\n\n**Sandbox:** hesabınız sandbox modundaysa gerçek sipariş ve bakiye hareketi olmaz; `sandbox-…` id ve `TEST-…` kodlar döner.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"product_gold_id\": 13,\n    \"quantity\": 2,\n    \"customerchar\": \"KnightAhmet\",\n    \"transid\": \"ORDER-2026-000124\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                },
                {
                    "name": "Sipariş durumu ve kodlar",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/order-status",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "order-status"
                            ]
                        },
                        "description": "Sipariş durumunu ve (e-pin ise) teslim edilmiş kodları döner. `order_id` **veya** `transid` ile sorgulanır. Yalnız kendi siparişleriniz görünür. **Scope:** `gold` veya `epin`.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"transid\": \"ORDER-2026-000123\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                },
                {
                    "name": "Sipariş listesi (tarih aralığı)",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/order-list",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "order-list"
                            ]
                        },
                        "description": "API siparişlerinizi tarih aralığına göre sayfalı listeler (kod içermez; kodlar için `order-status`). Tarih verilmezse **son 24 saat** döner. Verilirse `YYYY-MM-DD`, aralık en fazla **30 gün**; `end_date` boşsa `start_date` günü. Sayfa başına en fazla 100 kayıt. **Scope:** `gold` veya `epin`.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"start_date\": \"2026-10-01\",\n    \"end_date\": \"2026-10-03\",\n    \"page\": 1,\n    \"limit\": 50\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                },
                {
                    "name": "Sipariş iptal",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/order-cancel",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "order-cancel"
                            ]
                        },
                        "description": "Yalnız **henüz işleme alınmamış** (`pending`) gold siparişleri iptal edilir; bakiye iade edilir. Teslim edilmiş e-pin siparişleri iptal **edilemez**. **Scope:** `gold` veya `epin`.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"order_id\": 2231764\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                }
            ]
        },
        {
            "name": "5 · Webhook",
            "description": "Bildirim testi ve kayıtları",
            "item": [
                {
                    "name": "Webhook testi gönder",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/webhook-test",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "webhook-test"
                            ]
                        },
                        "description": "Panelde tanımlı webhook (ping) URL'inize gerçek bildirimle **aynı imza şemasıyla** `event: \"test\"` gönderir. Yerel/özel IP'lere gönderim engellidir. **Scope:** `me`."
                    }
                },
                {
                    "name": "Webhook teslimat kayıtları",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/webhook-logs",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "webhook-logs"
                            ]
                        },
                        "description": "Webhook teslimat denemelerini sayfalı listeler (en fazla 100/sayfa). **Scope:** `me`.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"page\": 1,\n    \"limit\": 50\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                }
            ]
        },
        {
            "name": "6 · Hesap",
            "description": "Bakiye ve limitler",
            "item": [
                {
                    "name": "Hesap bilgisi ve bakiye",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/me",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "me"
                            ]
                        },
                        "description": "Bayi hesabının ad/soyad, maskeli e-posta/GSM ve kullanılabilir bakiyesini döner. **Scope:** `me`."
                    }
                },
                {
                    "name": "Limitler ve kullanım",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/limits",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "limits"
                            ]
                        },
                        "description": "Hesabınıza tanımlı istek limitleri ile günlük/aylık satış limitlerini ve kullanımını döner. **Scope:** `me`."
                    }
                }
            ]
        },
        {
            "name": "7 · Hesap Yönetimi",
            "description": "IP listesi, anahtar yenileme, istatistik",
            "item": [
                {
                    "name": "IP beyaz listesi",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/ip-manage",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "ip-manage"
                            ]
                        },
                        "description": "Hesabınızın 4 slotluk IP beyaz listesini yönetir. Liste doluysa token ve tüm çağrılar yalnız bu IP'lerden kabul edilir. **Scope:** `me`.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"action\": \"add\",\n    \"ip\": \"203.0.113.10\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                },
                {
                    "name": "Client secret / salt yenile",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/rotate-key",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "rotate-key"
                            ]
                        },
                        "description": "Client secret ve webhook imza anahtarını (salt) yeniler. **Dikkat:** eski webhook imzaları geçersiz olur; bayi tarafındaki doğrulama anahtarını güncelleyin. Mevcut tüm erişim ve yenileme token'ları da anında iptal edilir (`AUTH_TOKEN_REVOKED`); `/token` ile yeniden giriş yapın. **Scope:** `me`.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"confirm\": true\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                },
                {
                    "name": "Kullanım istatistikleri",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{baseUrl}}/usage-stats",
                            "host": [
                                "{{baseUrl}}"
                            ],
                            "path": [
                                "usage-stats"
                            ]
                        },
                        "description": "Seçilen dönem için API çağrı istatistiklerinizi (toplam, uç bazlı, günlük) ve limitlerinizi döner. **Scope:** `me`.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"period\": \"week\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                }
            ]
        }
    ]
}