{"openapi":"3.1.0","info":{"title":"OneForProxy Management API","description":"Programmatic access to your OneForProxy account: proxy credentials, IP whitelist,\nusage, wallet, traffic packages and subscriptions.\n\n**Authentication** — create an API key in the panel (Account → API keys) and send it\nas the `X-API-KEY` header. Keys carry full account permissions; there are no scopes.\n\n**Base URL** — `https://oneforproxy.com/api/v1`\n\n**Rate limit** — 120 requests per minute per account\n(shared by all of your API keys) — issuing more keys does not raise it.\nExceeding it returns `429` with `Retry-After: 60`. Panel (cookie) sessions are\nnot affected.\n\n**CSV exports** — endpoints ending in `.csv` stream UTF-8 (BOM) files, at most\n50 000 rows; a truncated export carries the `X-Truncated: 1` response header.\nCSV endpoints have their own budget of 5 requests per minute. On the usage exports\nthe date filters (`since`/`until`) are ISO-8601 UTC, default to the last 30 days,\nand may not span more than 366 days. The wallet ledger export lives at\n`/api/v1/wallet/transactions.csv`, accepts the same API key and takes optional\n`type`, `since` and `until` filters — it has **no** default window, so a plain\ncall returns your whole ledger up to the row cap.\n\n**Errors** — `401 invalid_api_key`, `403` (email not verified / CSRF on cookie\nsessions), `404` (unknown id), `409` (limit reached / duplicate), `429\nrate_limited`, `400` with a short machine-readable `detail` for invalid input.\n\nThe root `GET /balance` endpoint still works for older integrations but is\n**deprecated** — use `GET /api/v1/wallet/balance`, which also reports the\nremaining subscription allowance.\n\nThe panel's own endpoints (administration, billing back office) are intentionally\nabsent from this document.\n","version":"1.0.0"},"servers":[{"url":"https://oneforproxy.com"}],"paths":{"/api/v1/proxies/endpoints":{"get":{"tags":["Proxies"],"summary":"Endpoints","operationId":"endpoints_api_v1_proxies_endpoints_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Endpoints Api V1 Proxies Endpoints Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-public-api":true}},"/api/v1/proxies":{"get":{"tags":["Proxies"],"summary":"List Credentials","operationId":"list_credentials_api_v1_proxies_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Credentials Api V1 Proxies Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-public-api":true},"post":{"tags":["Proxies"],"summary":"Create Credential","operationId":"create_credential_api_v1_proxies_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCredentialIn"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Credential Api V1 Proxies Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-public-api":true}},"/api/v1/proxies/{credential_id}":{"patch":{"tags":["Proxies"],"summary":"Update Credential","description":"Etiket / GB tahsisi / bitiş tarihi (spec §5). Tahsis değişince `gw:allow_cred`\nyeniden yayınlanır; `gw:cred` cache'i de düşürülür (bitiş auth payload'ındadır).","operationId":"update_credential_api_v1_proxies__credential_id__patch","parameters":[{"name":"credential_id","in":"path","required":true,"schema":{"type":"integer","title":"Credential Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCredentialIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Update Credential Api V1 Proxies  Credential Id  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-public-api":true},"delete":{"tags":["Proxies"],"summary":"Delete Credential","operationId":"delete_credential_api_v1_proxies__credential_id__delete","parameters":[{"name":"credential_id","in":"path","required":true,"schema":{"type":"integer","title":"Credential Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Credential Api V1 Proxies  Credential Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-public-api":true}},"/api/v1/proxies/{credential_id}/reset-usage":{"post":{"tags":["Proxies"],"summary":"Reset Credential Usage","description":"`bytes_used = 0` (spec §5) — alt-kullanıcının kotası yenilenir, tahsis yayınlanır.","operationId":"reset_credential_usage_api_v1_proxies__credential_id__reset_usage_post","parameters":[{"name":"credential_id","in":"path","required":true,"schema":{"type":"integer","title":"Credential Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Reset Credential Usage Api V1 Proxies  Credential Id  Reset Usage Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-public-api":true}},"/api/v1/proxies/{credential_id}/rotate-password":{"post":{"tags":["Proxies"],"summary":"Rotate Password","operationId":"rotate_password_api_v1_proxies__credential_id__rotate_password_post","parameters":[{"name":"credential_id","in":"path","required":true,"schema":{"type":"integer","title":"Credential Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Rotate Password Api V1 Proxies  Credential Id  Rotate Password Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-public-api":true}},"/api/v1/proxies/{credential_id}/toggle":{"post":{"tags":["Proxies"],"summary":"Toggle Credential","operationId":"toggle_credential_api_v1_proxies__credential_id__toggle_post","parameters":[{"name":"credential_id","in":"path","required":true,"schema":{"type":"integer","title":"Credential Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Toggle Credential Api V1 Proxies  Credential Id  Toggle Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-public-api":true}},"/api/v1/proxies/ip-auth":{"get":{"tags":["IP whitelist"],"summary":"List Ip Auth","operationId":"list_ip_auth_api_v1_proxies_ip_auth_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Ip Auth Api V1 Proxies Ip Auth Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-public-api":true},"post":{"tags":["IP whitelist"],"summary":"Create Ip Auth","operationId":"create_ip_auth_api_v1_proxies_ip_auth_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateIpAuthIn"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Ip Auth Api V1 Proxies Ip Auth Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-public-api":true}},"/api/v1/proxies/ip-auth/{record_id}":{"delete":{"tags":["IP whitelist"],"summary":"Delete Ip Auth","operationId":"delete_ip_auth_api_v1_proxies_ip_auth__record_id__delete","parameters":[{"name":"record_id","in":"path","required":true,"schema":{"type":"integer","title":"Record Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Ip Auth Api V1 Proxies Ip Auth  Record Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-public-api":true}},"/api/v1/proxies/{credential_id}/test":{"post":{"tags":["Proxies"],"summary":"Test Credential","operationId":"test_credential_api_v1_proxies__credential_id__test_post","parameters":[{"name":"credential_id","in":"path","required":true,"schema":{"type":"integer","title":"Credential Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProxyTestIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Test Credential Api V1 Proxies  Credential Id  Test Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-public-api":true}},"/api/v1/wallet/balance":{"get":{"tags":["Wallet"],"summary":"Balance","description":"Cüzdan bakiyesi + kalan trafik hakkı (abonelik ve paket kotası ayrı ayrı).\n\n`plan_bytes_remaining` ve `quota_bytes_remaining` AYRI raporlanır: ikisi farklı\nkurallara tabidir (abonelik hakkı dönem sonunda devretmeden sıfırlanır, paket\nkotası kalıcıdır) ve tüketim sırası plan → kota → cüzdandır (§1.2).","operationId":"balance_api_v1_wallet_balance_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Balance Api V1 Wallet Balance Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-public-api":true}},"/api/v1/wallet/transactions":{"get":{"tags":["Wallet"],"summary":"Transactions","description":"Cüzdan hareketleri — core `/wallet/transactions` ile AYNI parametre/yanıt.","operationId":"transactions_api_v1_wallet_transactions_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Transactions Api V1 Wallet Transactions Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-public-api":true}},"/api/v1/usage/summary":{"get":{"tags":["Usage"],"summary":"Usage Summary","operationId":"usage_summary_api_v1_usage_summary_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Usage Summary Api V1 Usage Summary Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-public-api":true}},"/api/v1/usage/daily":{"get":{"tags":["Usage"],"summary":"Usage Daily","operationId":"usage_daily_api_v1_usage_daily_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":90,"minimum":1,"default":30,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Usage Daily Api V1 Usage Daily Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-public-api":true}},"/api/v1/usage/records":{"get":{"tags":["Usage"],"summary":"Usage Records","operationId":"usage_records_api_v1_usage_records_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Usage Records Api V1 Usage Records Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-public-api":true}},"/api/v1/usage/stats":{"get":{"tags":["Usage"],"summary":"Usage Stats","description":"İstek adedi, hata oranı, sonuç (outcome) dağılımı ve ülke kırılımı.","operationId":"usage_stats_api_v1_usage_stats_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":90,"minimum":1,"default":7,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Usage Stats Api V1 Usage Stats Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-public-api":true}},"/api/v1/usage/targets":{"get":{"tags":["Usage"],"summary":"Usage Targets","description":"En çok bağlanılan hedef host'lar (adet + byte).","operationId":"usage_targets_api_v1_usage_targets_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":90,"minimum":1,"default":7,"title":"Days"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Usage Targets Api V1 Usage Targets Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-public-api":true}},"/api/v1/usage/alerts":{"get":{"tags":["Usage"],"summary":"Get Usage Alerts","operationId":"get_usage_alerts_api_v1_usage_alerts_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Usage Alerts Api V1 Usage Alerts Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-public-api":true},"put":{"tags":["Usage"],"summary":"Put Usage Alerts","description":"Eşikleri yazar ve KULLANICININ kendi eşiğinden doğan durdurmayı kaldırır\n(admin tavanı kaldırılamaz — `clear_user_stop` yalnız `daily`/`monthly` reason'ı siler).","operationId":"put_usage_alerts_api_v1_usage_alerts_put","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageAlertsIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Put Usage Alerts Api V1 Usage Alerts Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-public-api":true}},"/api/v1/usage/records.csv":{"get":{"tags":["Usage"],"summary":"Usage Records Csv","description":"Ölçüm kayıtları (`by=user`: faturalanan satırlar, `by=credential`: trafik kırılımı).","operationId":"usage_records_csv_api_v1_usage_records_csv_get","parameters":[{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Since"}},{"name":"until","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Until"}},{"name":"by","in":"query","required":false,"schema":{"enum":["user","credential"],"type":"string","default":"user","title":"By"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-public-api":true}},"/api/v1/usage/daily.csv":{"get":{"tags":["Usage"],"summary":"Usage Daily Csv","description":"Günlük (UTC) toplam — `/usage/daily` ile AYNI eksen, tarih aralığıyla.\n\nCredential atıf satırları DIŞLANMAZ: `bytes_total` toplamı ancak tüm satırlar\nsayılınca o günün gerçek trafiğini verir (kullanıcı satırı yalnız atfedilemeyen\nkalanı taşır, §14/5); para alanları atıf satırlarında 0 olduğu için çift sayım\nolmaz. `ofp.services.usage.daily`/`window_totals` de aynı kuralı uygular.","operationId":"usage_daily_csv_api_v1_usage_daily_csv_get","parameters":[{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Since"}},{"name":"until","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Until"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-public-api":true}},"/api/v1/traffic-packages":{"get":{"tags":["Traffic packages"],"summary":"List Traffic Packages","operationId":"list_traffic_packages_api_v1_traffic_packages_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Traffic Packages Api V1 Traffic Packages Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-public-api":true}},"/api/v1/traffic-packages/{package_id}/purchase":{"post":{"tags":["Traffic packages"],"summary":"Purchase Traffic Package","operationId":"purchase_traffic_package_api_v1_traffic_packages__package_id__purchase_post","parameters":[{"name":"package_id","in":"path","required":true,"schema":{"type":"integer","title":"Package Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Purchase Traffic Package Api V1 Traffic Packages  Package Id  Purchase Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-public-api":true}},"/api/v1/subscriptions/plans":{"get":{"tags":["Subscriptions"],"summary":"List Subscription Plans","description":"Satın alınabilir aylık planlar (yalnız aktif olanlar, `sort_order` ile).","operationId":"list_subscription_plans_api_v1_subscriptions_plans_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Subscription Plans Api V1 Subscriptions Plans Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-public-api":true}},"/api/v1/subscriptions/me":{"get":{"tags":["Subscriptions"],"summary":"My Subscription","description":"Canlı abonelik (yoksa `null`) + son 12 geçmiş dönem.","operationId":"my_subscription_api_v1_subscriptions_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response My Subscription Api V1 Subscriptions Me Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-public-api":true}},"/api/v1/subscriptions":{"post":{"tags":["Subscriptions"],"summary":"Create Subscription","description":"Plana abone olur ve ilk dönemin ücretini cüzdandan tahsil eder (hold+capture).","operationId":"create_subscription_api_v1_subscriptions_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscribeIn"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-public-api":true}},"/api/v1/subscriptions/cancel":{"post":{"tags":["Subscriptions"],"summary":"Cancel Subscription","description":"`active` → dönem sonunda biter (GB dönem sonuna kadar kullanılır);\n`grace` → hemen sonlanır. **İade yoktur.**","operationId":"cancel_subscription_api_v1_subscriptions_cancel_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Cancel Subscription Api V1 Subscriptions Cancel Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-public-api":true}},"/api/v1/subscriptions/resume":{"post":{"tags":["Subscriptions"],"summary":"Resume Subscription","description":"İptal işaretini kaldırır (abonelik dönem sonunda yenilenmeye devam eder).","operationId":"resume_subscription_api_v1_subscriptions_resume_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Resume Subscription Api V1 Subscriptions Resume Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-public-api":true}},"/api/v1/dashboard/summary":{"get":{"tags":["Account"],"summary":"Dashboard Summary","operationId":"dashboard_summary_api_v1_dashboard_summary_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Dashboard Summary Api V1 Dashboard Summary Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-public-api":true}}},"components":{"schemas":{"CreateCredentialIn":{"properties":{"label":{"type":"string","title":"Label","default":""}},"type":"object","title":"CreateCredentialIn"},"CreateIpAuthIn":{"properties":{"ip":{"type":"string","title":"Ip"},"credential_id":{"type":"integer","title":"Credential Id"},"label":{"type":"string","title":"Label","default":""},"params":{"additionalProperties":true,"type":"object","title":"Params"}},"type":"object","required":["ip","credential_id"],"title":"CreateIpAuthIn"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ProxyTestIn":{"properties":{"protocol":{"type":"string","enum":["http","socks5","https"],"title":"Protocol","default":"http"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"},"session":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session"}},"type":"object","title":"ProxyTestIn"},"SubscribeIn":{"properties":{"plan_id":{"type":"integer","title":"Plan Id"}},"type":"object","required":["plan_id"],"title":"SubscribeIn"},"UpdateCredentialIn":{"properties":{"label":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Label"},"bytes_limit_gb":{"anyOf":[{"type":"number","maximum":1000000.0,"minimum":0.0},{"type":"null"}],"title":"Bytes Limit Gb"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"}},"type":"object","title":"UpdateCredentialIn","description":"KISMİ güncelleme: gönderilmeyen alan KORUNUR, açık `null` alanı temizler\n(sınırsız / süresiz). `bytes_limit_gb` kullanıcı biriminde (GB) gelir."},"UsageAlertsIn":{"properties":{"daily_gb":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Daily Gb"},"monthly_gb":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Monthly Gb"},"action":{"type":"string","enum":["notify","stop"],"title":"Action","default":"notify"},"warn_pct":{"type":"integer","maximum":99.0,"minimum":1.0,"title":"Warn Pct","default":80}},"type":"object","title":"UsageAlertsIn","description":"PUT gövdesi TAM DEĞİŞİMDİR: verilmeyen alan `null` sayılır (eşik kaldırılır)."},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}},"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-KEY"}}},"tags":[{"name":"Proxies","description":"Proxy credentials: create, update, rotate the password, reset usage, delete, and connection endpoints."},{"name":"IP whitelist","description":"Authenticate by source IP instead of username/password, per credential."},{"name":"Usage","description":"Traffic and connection statistics, usage alerts, and CSV exports of your own records."},{"name":"Wallet","description":"Wallet balance, remaining traffic allowance and the transaction ledger."},{"name":"Traffic packages","description":"One-off GB packages: catalogue and purchase from your wallet balance (quota top-up)."},{"name":"Subscriptions","description":"Monthly plans: catalogue, current subscription, subscribe, cancel and resume."},{"name":"Account","description":"Account overview: balance, allowance, credential and connection counters."}],"security":[{"ApiKeyAuth":[]}]}