{
    "info": {
        "name": "WeSIMTech B2B Reseller API v6.0.0",
        "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
        "description": "config/b2b_api_reference.php kaynağından üretildi. base_url ve api_key değişkenlerini doldurun."
    },
    "auth": {
        "type": "bearer",
        "bearer": [
            {
                "key": "token",
                "value": "{{api_key}}",
                "type": "string"
            }
        ]
    },
    "variable": [
        {
            "key": "base_url",
            "value": "https://your-domain.example/api/v1"
        },
        {
            "key": "api_key",
            "value": "wsm_test_REPLACE_ME"
        },
        {
            "key": "id",
            "value": "EU-42_3_30"
        },
        {
            "key": "reference",
            "value": "B2B-REPLACE"
        },
        {
            "key": "iccid",
            "value": "8944500000000000001"
        }
    ],
    "item": [
        {
            "name": "1. Bağlantı ve meta",
            "description": "Entegrasyona buradan başlayın: servis sağlığı, anahtar testi, yetki kataloğu, webhook olayları ve ağ kaynaklarının işlem desteği.",
            "item": [
                {
                    "name": "GET /health — Servis canlılığı",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{base_url}}/health",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "health"
                            ],
                            "query": []
                        },
                        "description": "Kimlik istemez. Yük dengeleyici ve izleme araçları içindir.\n\nKimlik istemez.",
                        "auth": {
                            "type": "noauth"
                        }
                    }
                },
                {
                    "name": "GET /health/ready — Hazırlık kontrolü",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{base_url}}/health/ready",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "health",
                                "ready"
                            ],
                            "query": []
                        },
                        "description": "Veritabanı, şema, katalog ve kuyrukların ayrıntılı durumunu döner.\n\nYetki: health:read"
                    }
                },
                {
                    "name": "POST /auth/test — Anahtar ve bağlantı testi",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{base_url}}/auth/test",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "auth",
                                "test"
                            ],
                            "query": []
                        },
                        "description": "Anahtarın ortamını, yetkilerini, HMAC ve IP allowlist durumunu doğrular. Entegrasyonun ilk çağrısı.\n\nYetki: health:test",
                        "body": {
                            "mode": "raw",
                            "raw": "{}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                },
                {
                    "name": "GET /meta/scopes — Yetki (scope) kataloğu",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{base_url}}/meta/scopes",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "meta",
                                "scopes"
                            ],
                            "query": []
                        },
                        "description": "Modül bazında tüm yetkiler ve risk seviyeleri. Kimlik istemez.\n\nKimlik istemez.",
                        "auth": {
                            "type": "noauth"
                        }
                    }
                },
                {
                    "name": "GET /meta/events — Webhook olay kataloğu",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{base_url}}/meta/events",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "meta",
                                "events"
                            ],
                            "query": []
                        },
                        "description": "Abone olunabilen tüm webhook olayları ve anlamları. Kimlik istemez.\n\nKimlik istemez.",
                        "auth": {
                            "type": "noauth"
                        }
                    }
                },
                {
                    "name": "GET /meta/integration — Makine okunur entegrasyon sözleşmesi",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{base_url}}/meta/integration",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "meta",
                                "integration"
                            ],
                            "query": []
                        },
                        "description": "Ortam, temel URL, imza kuralları ve marka bağlantıları.\n\nYetki: health:read"
                    }
                },
                {
                    "name": "GET /meta/capabilities — Ağ kaynağı işlem matrisi",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{base_url}}/meta/capabilities",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "meta",
                                "capabilities"
                            ],
                            "query": []
                        },
                        "description": "Her ağ kaynağı (paketteki `provider`) için sipariş, yükleme, iptal, askıya alma ve devam desteği. Desteklenmeyen işlem talep anında 422 action_not_supported döner.\n\nYetki: catalog:read"
                    }
                },
                {
                    "name": "GET /providers/esimaccess/capabilities — eSIMAccess yetenekleri (eski)",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{base_url}}/providers/esimaccess/capabilities",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "providers",
                                "esimaccess",
                                "capabilities"
                            ],
                            "query": []
                        },
                        "description": "Geriye dönük uyumluluk içindir; yeni entegrasyonlar GET /meta/capabilities kullanmalıdır. Yanıt aynıdır.\n\nYetki: catalog:read"
                    }
                },
                {
                    "name": "GET /usage — Anahtar kullanım ve limit durumu",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{base_url}}/usage",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "usage"
                            ],
                            "query": []
                        },
                        "description": "Anahtarın dakikalık/günlük kullanımı, son 24 saatin hata oranı ve gecikmesi.\n\nYetki: usage:read"
                    }
                }
            ]
        },
        {
            "name": "2. Hesap, bakiye ve cari",
            "description": "Harcanabilir tutar = cüzdan bakiyesi + kullanılabilir cari. Cari yalnız hesabınızda cari satış izni açık ve bloke yoksa kullanılır. Canlı sipariş ve yükleme tutarı bu tutardan kilitli işlemle düşülür; yetmezse 402 insufficient_balance döner ve işlem oluşmaz. Tüm tutarlar hesabınızın para birimindedir.",
            "item": [
                {
                    "name": "GET /account — Hesap profili",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{base_url}}/account",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "account"
                            ],
                            "query": []
                        },
                        "description": "Şirket, para birimi, ortamlar ve cari izin durumu. Bakiye için account:balance gerekir.\n\nYetki: account:read"
                    }
                },
                {
                    "name": "GET /account/balance — Bakiye ve cari özeti",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{base_url}}/account/balance",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "account",
                                "balance"
                            ],
                            "query": []
                        },
                        "description": "`available_to_spend` alım yapabileceğiniz en yüksek tutardır. `wallet_balance` negatifse fark kullanılan caridir. `credit_limit`, `credit_used`, `available` alanları v1 ilk sürüm uyumluluğu içindir.\n\nYetki: account:balance"
                    }
                },
                {
                    "name": "GET /account/ledger — Cüzdan defteri",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{base_url}}/account/ledger",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "account",
                                "ledger"
                            ],
                            "query": [
                                {
                                    "key": "limit",
                                    "value": "25",
                                    "description": "1–100, varsayılan 25.",
                                    "disabled": true
                                },
                                {
                                    "key": "before_id",
                                    "value": "4410",
                                    "description": "Önceki sayfanın pagination.next_cursor değeri.",
                                    "disabled": true
                                }
                            ]
                        },
                        "description": "Tüm para hareketleri (yükleme, sipariş, iade, cari düzeltmesi), yeniden eskiye. Kayıtlar hash zinciriyle değiştirilemez saklanır.\n\nYetki: account:balance"
                    }
                }
            ]
        },
        {
            "name": "3. Katalog (tüm ağ kaynakları)",
            "description": "Tüm tedarikçilerden gelen satılabilir ürünler, sizin fiyatınızla. `price` ödeyeceğiniz birim fiyattır (hesap para biriminde); `recommended_retail_price` önerilen son kullanıcı fiyatıdır. Kataloğu `updated_since` ile artımlı senkronlayın. Varyantlar (`is_variant`) aynı ürünün farklı operatör/hız seçenekleridir; `product_key` ile gruplayın.",
            "item": [
                {
                    "name": "GET /packages — Paket listesi",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{base_url}}/packages",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "packages"
                            ],
                            "query": [
                                {
                                    "key": "country",
                                    "value": "DE",
                                    "description": "ISO 3166-1 alfa-2 (örn. TR).",
                                    "disabled": true
                                },
                                {
                                    "key": "region",
                                    "value": "EU",
                                    "description": "Bölge kodu ya da adı (GET /regions).",
                                    "disabled": true
                                },
                                {
                                    "key": "type",
                                    "value": "local",
                                    "description": "local | regional | global",
                                    "disabled": true
                                },
                                {
                                    "key": "q",
                                    "value": "10GB",
                                    "description": "Ad, paket kodu ya da ülke adında arama.",
                                    "disabled": true
                                },
                                {
                                    "key": "min_data_mb",
                                    "value": "1024",
                                    "description": "En az veri (MB).",
                                    "disabled": true
                                },
                                {
                                    "key": "max_data_mb",
                                    "value": "20480",
                                    "description": "En çok veri (MB).",
                                    "disabled": true
                                },
                                {
                                    "key": "min_days",
                                    "value": "7",
                                    "description": "En az kullanım süresi (gün).",
                                    "disabled": true
                                },
                                {
                                    "key": "max_days",
                                    "value": "30",
                                    "description": "En çok kullanım süresi (gün).",
                                    "disabled": true
                                },
                                {
                                    "key": "unlimited",
                                    "value": "false",
                                    "description": "true: yalnız sınırsız; false: sınırsızlar hariç.",
                                    "disabled": true
                                },
                                {
                                    "key": "include_variants",
                                    "value": "true",
                                    "description": "Varsayılan true. false yalnız ana ürünleri döner.",
                                    "disabled": true
                                },
                                {
                                    "key": "updated_since",
                                    "value": "2026-10-01T00:00:00Z",
                                    "description": "ISO 8601; bu andan sonra değişen paketler (artımlı senkron).",
                                    "disabled": true
                                },
                                {
                                    "key": "limit",
                                    "value": "50",
                                    "description": "1–100, varsayılan 50.",
                                    "disabled": true
                                },
                                {
                                    "key": "cursor",
                                    "value": "2048",
                                    "description": "Önceki sayfanın pagination.next_cursor değeri.",
                                    "disabled": true
                                }
                            ]
                        },
                        "description": "İmleçle sayfalı. İlk sayfada `pagination.total` toplam paket sayısını verir. `country` ülkenin yerel paketlerini ve ülkeyi kapsayan bölgesel/küresel paketleri döner.\n\nYetki: catalog:read"
                    }
                },
                {
                    "name": "GET /packages/{id} — Paket ayrıntısı",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{base_url}}/packages/{{id}}",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "packages",
                                "{{id}}"
                            ],
                            "query": []
                        },
                        "description": "Paket kodu (`package_id`) ya da iç kimlikle. Satıştan kalkmış bir kod yerine geçen pakete yönlenirse yanıtta `replaced_package_id` eski kodu verir; kataloğunuzu güncelleyin.\n\nYetki: catalog:read"
                    }
                },
                {
                    "name": "GET /countries — Ülkeler",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{base_url}}/countries",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "countries"
                            ],
                            "query": []
                        },
                        "description": "Yerel paketi olan ülkeler ve paket sayıları.\n\nYetki: catalog:read"
                    }
                },
                {
                    "name": "GET /regions — Bölgeler ve küresel paketler",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{base_url}}/regions",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "regions"
                            ],
                            "query": []
                        },
                        "description": "Bölgesel/küresel paket grupları; kodu GET /packages?region=… ile kullanın.\n\nYetki: catalog:read"
                    }
                }
            ]
        },
        {
            "name": "4. Fiyat teklifi ve sipariş",
            "description": "Önerilen akış: POST /quotes ile fiyatı ve bakiye yeterliliğini görün → aynı fiyatı max_unit_price olarak göndererek POST /orders → webhook (order.delivered) ya da GET /orders/{reference} ile profilleri alın. Canlı sipariş tutarı sipariş anında düşülür; teslim edilemeyen adet otomatik iade edilir. Test anahtarıyla verilen siparişler ücretlendirilmez ve anında sahte profillerle teslim edilir.",
            "item": [
                {
                    "name": "POST /quotes — Fiyat teklifi",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{base_url}}/quotes",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "quotes"
                            ],
                            "query": []
                        },
                        "description": "Bağlayıcı değildir (5 dk). `funds.sufficient` bu siparişin şu anki bakiyenizle verilip verilemeyeceğini gösterir.\n\nYetki: catalog:read",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"package_id\": \"EU-42_3_30\",\n    \"quantity\": 2\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                },
                {
                    "name": "POST /orders — Sipariş oluştur",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            },
                            {
                                "key": "Idempotency-Key",
                                "value": "{{$guid}}"
                            }
                        ],
                        "url": {
                            "raw": "{{base_url}}/orders",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "orders"
                            ],
                            "query": []
                        },
                        "description": "Canlıda tutar bakiye + cariden düşülür ve sipariş tedarikçiye kuyruklanır (status=queued). Bakiye yetmezse 402 döner; sipariş oluşmaz. Fiyat değiştiyse ve max_* gönderdiyseniz 409 price_changed döner. Test anahtarında `test_scenario: \"insufficient_balance\"` 402 yolunu denemenizi sağlar.\n\nYetki: orders:create",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"package_id\": \"EU-42_3_30\",\n    \"quantity\": 2,\n    \"client_reference\": \"ERP-1001\",\n    \"max_unit_price\": 10.55\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                },
                {
                    "name": "GET /orders — Sipariş listesi",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{base_url}}/orders",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "orders"
                            ],
                            "query": [
                                {
                                    "key": "status",
                                    "value": "delivered",
                                    "description": "created | queued | processing | delivered | partially_delivered | failed | cancelled | refunded",
                                    "disabled": true
                                },
                                {
                                    "key": "limit",
                                    "value": "25",
                                    "description": "1–100, varsayılan 25.",
                                    "disabled": true
                                },
                                {
                                    "key": "before_id",
                                    "value": "180",
                                    "description": "Önceki sayfanın next_cursor değeri.",
                                    "disabled": true
                                }
                            ]
                        },
                        "description": "Yeniden eskiye, imleçle sayfalı.\n\nYetki: orders:read"
                    }
                },
                {
                    "name": "GET /orders/{reference} — Sipariş ayrıntısı ve profiller",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{base_url}}/orders/{{reference}}",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "orders",
                                "{{reference}}"
                            ],
                            "query": []
                        },
                        "description": "Teslim edilen HER eSIM `profiles` dizisindedir (aktivasyon kodu/LPA dahil). `iccid` ve `activation_code` yalnız birinci profili gösterir (eski uyumluluk). `partially_delivered`: eksik adet bedeli iade edilmiştir.\n\nYetki: orders:read"
                    }
                },
                {
                    "name": "POST /orders/{reference}/cancel — Siparişi iptal et",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{base_url}}/orders/{{reference}}/cancel",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "orders",
                                "{{reference}}",
                                "cancel"
                            ],
                            "query": []
                        },
                        "description": "Siparişin TÜM profilleri için iptal talebi açar. Tedarikçi iptali kabul ederse her profilin birim bedeli bir kez iade edilir (esim.cancelled webhook'u; tümü iptal olursa order.cancelled). Kullanılmaya başlanmış eSIM'i tedarikçi reddedebilir. Desteklemeyen ağ kaynağında 422 action_not_supported.\n\nYetki: orders:cancel",
                        "body": {
                            "mode": "raw",
                            "raw": "{}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                }
            ]
        },
        {
            "name": "5. eSIM yaşam döngüsü",
            "description": "Teslim edilen profillerin durumu, kullanımı, cihazı ve olay geçmişi. Durumlar tedarikçi webhook'ları ve periyodik senkronla güncellenir; POST /refresh anlık senkron ister.",
            "item": [
                {
                    "name": "GET /esims — eSIM listesi",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{base_url}}/esims",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "esims"
                            ],
                            "query": [
                                {
                                    "key": "status",
                                    "value": "activated",
                                    "description": "provisioning | ready | installed | activated | suspended | exhausted | expired | cancelled",
                                    "disabled": true
                                },
                                {
                                    "key": "provider",
                                    "value": "esimaccess",
                                    "description": "Ağ kaynağı kodu.",
                                    "disabled": true
                                },
                                {
                                    "key": "limit",
                                    "value": "50",
                                    "description": "1–200, varsayılan 50.",
                                    "disabled": true
                                },
                                {
                                    "key": "offset",
                                    "value": "0",
                                    "description": "Atlanacak kayıt.",
                                    "disabled": true
                                }
                            ]
                        },
                        "description": "Hesaptaki tüm profiller.\n\nYetki: esims:read"
                    }
                },
                {
                    "name": "GET /esims/{iccid} — eSIM ayrıntısı",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{base_url}}/esims/{{iccid}}",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "esims",
                                "{{iccid}}"
                            ],
                            "query": []
                        },
                        "description": "Aktivasyon/kurulum durumu, kullanım, geçerlilik ve ağ bilgisi.\n\nYetki: esims:read"
                    }
                },
                {
                    "name": "POST /esims/{iccid}/refresh — Anlık senkron",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{base_url}}/esims/{{iccid}}/refresh",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "esims",
                                "{{iccid}}",
                                "refresh"
                            ],
                            "query": []
                        },
                        "description": "Profili tedarikçiden yeniden çeker ve güncel hâlini döner.\n\nYetki: esims:sync",
                        "body": {
                            "mode": "raw",
                            "raw": "{}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                },
                {
                    "name": "GET /esims/{iccid}/usage — Veri kullanımı",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{base_url}}/esims/{{iccid}}/usage",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "esims",
                                "{{iccid}}",
                                "usage"
                            ],
                            "query": []
                        },
                        "description": "Güncel kullanım ve son 100 ölçüm.\n\nYetki: esims:usage"
                    }
                },
                {
                    "name": "GET /esims/{iccid}/device — Cihaz bilgisi",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{base_url}}/esims/{{iccid}}/device",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "esims",
                                "{{iccid}}",
                                "device"
                            ],
                            "query": []
                        },
                        "description": "Tedarikçi bildirdiyse EID/IMEI, marka, model.\n\nYetki: esims:device"
                    }
                },
                {
                    "name": "GET /esims/{iccid}/installation — Kurulum bilgisi",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{base_url}}/esims/{{iccid}}/installation",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "esims",
                                "{{iccid}}",
                                "installation"
                            ],
                            "query": []
                        },
                        "description": "Aktivasyon kodu (LPA), SM-DP+ adresi ve kurulum durumu; son kullanıcıya QR/kurulum bağlantısı üretmek içindir.\n\nYetki: esims:installation"
                    }
                },
                {
                    "name": "GET /esims/{iccid}/events — Olay geçmişi",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{base_url}}/esims/{{iccid}}/events",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "esims",
                                "{{iccid}}",
                                "events"
                            ],
                            "query": []
                        },
                        "description": "Durum değişiklikleri (status.changed) ve kaynakları.\n\nYetki: esims:events"
                    }
                },
                {
                    "name": "POST /esims/{iccid}/suspend — Askıya al",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{base_url}}/esims/{{iccid}}/suspend",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "esims",
                                "{{iccid}}",
                                "suspend"
                            ],
                            "query": []
                        },
                        "description": "Desteklenen ağ kaynaklarında eSIM'i askıya alır (esim.suspended webhook'u). Desteklenmiyorsa 422 action_not_supported; talep kuyruğa alınmaz.\n\nYetki: esims:suspend",
                        "body": {
                            "mode": "raw",
                            "raw": "{}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                },
                {
                    "name": "POST /esims/{iccid}/resume — Askıdan çıkar",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{base_url}}/esims/{{iccid}}/resume",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "esims",
                                "{{iccid}}",
                                "resume"
                            ],
                            "query": []
                        },
                        "description": "Desteklenen ağ kaynaklarında askıdaki eSIM'i yeniden açar.\n\nYetki: esims:resume",
                        "body": {
                            "mode": "raw",
                            "raw": "{}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                }
            ]
        },
        {
            "name": "6. Yükleme (top-up) ve işlem durumu",
            "description": "Var olan eSIM'e ek paket. Yükleme ÜCRETLİDİR: tutar talep anında bakiye + cariden düşülür. Tedarikçi reddederse tutar bir kez otomatik iade edilir (topup.failed). Sonuç belirsizse (tedarikçi zaman aşımı) işlem `under_review` olur ve uzlaştırılana kadar iade edilmez; böylece aynı yükleme hem uygulanıp hem iade edilmez.",
            "item": [
                {
                    "name": "GET /esims/{iccid}/topup-options — Yükleme seçenekleri",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{base_url}}/esims/{{iccid}}/topup-options",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "esims",
                                "{{iccid}}",
                                "topup-options"
                            ],
                            "query": []
                        },
                        "description": "Bu eSIM'e uygulanabilen paketler ve sizin fiyatınız (hesap para biriminde).\n\nYetki: topups:read"
                    }
                },
                {
                    "name": "POST /esims/{iccid}/topups — Yükleme yap",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            },
                            {
                                "key": "Idempotency-Key",
                                "value": "{{$guid}}"
                            }
                        ],
                        "url": {
                            "raw": "{{base_url}}/esims/{{iccid}}/topups",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "esims",
                                "{{iccid}}",
                                "topups"
                            ],
                            "query": []
                        },
                        "description": "Fiyat sunucuda yeniden hesaplanır (gönderdiğiniz tutara güvenilmez). Bakiye yetmezse 402; işlem oluşmaz. Sonuç webhook (topup.completed / topup.failed) ya da GET /actions/{id} ile izlenir.\n\nYetki: topups:create",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"package_code\": \"TOPUP_EU_1GB_7\",\n    \"max_price\": 2.4\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                },
                {
                    "name": "GET /actions/{id} — İşlem durumu",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{base_url}}/actions/{{id}}",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "actions",
                                "{{id}}"
                            ],
                            "query": []
                        },
                        "description": "Yükleme, iptal, askıya alma talebinin durumu: queued → processing → succeeded | failed | under_review. `refunded` tahsil edilen ya da iptalde iade edilecek tutarın iade edilip edilmediğini gösterir.\n\nYetki: esims:read"
                    }
                }
            ]
        },
        {
            "name": "7. Webhook",
            "description": "Olaylar HTTPS adresinize POST edilir. Başlıklar: X-WSM-Event, X-WSM-Event-Id, X-WSM-Timestamp, X-WSM-Signature: sha256=HMAC_SHA256(secret, timestamp + \".\" + ham_gövde). İmzayı sabit zamanlı karşılaştırın, 5 dakikadan eski zaman damgasını reddedin, X-WSM-Event-Id ile tekilleştirin. 2xx dışı yanıt üstel geri çekilmeyle tekrar denenir.",
            "item": [
                {
                    "name": "GET /webhooks — Webhook adresleri",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{base_url}}/webhooks",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "webhooks"
                            ],
                            "query": []
                        },
                        "description": "Bu ortamdaki kayıtlı adresler ve sağlık durumları.\n\nYetki: webhooks:read"
                    }
                },
                {
                    "name": "POST /webhooks — Webhook ekle",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{base_url}}/webhooks",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "webhooks"
                            ],
                            "query": []
                        },
                        "description": "Yalnız herkese açık HTTPS adres (yerel/özel IP reddedilir). `secret` YALNIZ BU YANITTA döner; saklayın.\n\nYetki: webhooks:manage",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"url\": \"https://hooks.travel.example/wesim\",\n    \"events\": [\n        \"order.delivered\",\n        \"order.partially_delivered\",\n        \"order.failed\",\n        \"topup.completed\",\n        \"topup.failed\",\n        \"esim.cancelled\"\n    ]\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                },
                {
                    "name": "POST /webhooks/{id}/disable — Webhook kapat",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{base_url}}/webhooks/{{id}}/disable",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "webhooks",
                                "{{id}}",
                                "disable"
                            ],
                            "query": []
                        },
                        "description": "Adrese gönderimi durdurur.\n\nYetki: webhooks:manage",
                        "body": {
                            "mode": "raw",
                            "raw": "{}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                },
                {
                    "name": "GET /webhooks/{id}/deliveries — Teslim geçmişi",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{base_url}}/webhooks/{{id}}/deliveries",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "webhooks",
                                "{{id}}",
                                "deliveries"
                            ],
                            "query": [
                                {
                                    "key": "limit",
                                    "value": "25",
                                    "description": "1–100, varsayılan 25.",
                                    "disabled": true
                                }
                            ]
                        },
                        "description": "Son gönderimler, deneme sayısı ve son HTTP durumu.\n\nYetki: webhooks:read"
                    }
                },
                {
                    "name": "POST /webhooks/{id}/test — Deneme olayı gönder",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{base_url}}/webhooks/{{id}}/test",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "webhooks",
                                "{{id}}",
                                "test"
                            ],
                            "query": []
                        },
                        "description": "integration.test olayını kuyruğa alır; imza doğrulamanızı sınamak içindir.\n\nYetki: webhooks:test",
                        "body": {
                            "mode": "raw",
                            "raw": "{}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                }
            ]
        },
        {
            "name": "8. Marka (white-label)",
            "description": "Son kullanıcıya gösterdiğiniz kurulum sayfaları ve e-postalar için marka manifesti.",
            "item": [
                {
                    "name": "GET /brand — Marka manifesti",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{base_url}}/brand",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "brand"
                            ],
                            "query": []
                        },
                        "description": "Ad, logo, renkler, destek ve yasal bağlantılar. Uygulamanızda önbelleğe alın.\n\nYetki: brand:read"
                    }
                },
                {
                    "name": "POST /brand — Marka güncelle",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{base_url}}/brand",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "brand"
                            ],
                            "query": []
                        },
                        "description": "Gönderilen alanlar güncellenir; renkler #RRGGBB biçimindedir.\n\nYetki: brand:manage",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"brand_name\": \"Travel Co eSIM\",\n    \"primary_color\": \"#0E7490\",\n    \"support_email\": \"help@travel.example\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                }
            ]
        }
    ]
}
