GET /apiv2/pricing
عالمگیر قیمتوں کا اینڈپوائنٹ جو متحرک ادوار کے ساتھ ایک ہی رسپانس میں تمام سروس کی قیمتیں واپس کرتا ہے۔
تکمیل کے دوران قیمت تبدیل ہو سکتی ہے
اس اینڈپوائنٹ کی طرف سے واپس کی جانے والی قیمت آرڈر پروسیسنگ کے دوران تبدیل ہو سکتی ہے۔ ایک Energy فراہم کنندہ ڈیلیگیشن کی درخواست مسترد کر سکتا ہے، ایسی صورت میں Netts خودکار طور پر آرڈر کو اگلے دستیاب فراہم کنندہ کی طرف بھیج دیتا ہے۔ Netts نہ صرف سب سے زیادہ مسابقتی قیمت پیش کرنے کے لیے پرعزم ہے، بلکہ قابل اعتماد Energy کی فراہمی کو یقینی بنانے کے لیے بھی کوشاں ہے — اس لیے کوئی آرڈر کوٹ کی گئی قیمت سے زیادہ قیمت پر مکمل ہو سکتا ہے۔ یہ صرف 300,000 Energy یونٹس اور اس سے زیادہ کے آرڈرز پر لاگو ہوتا ہے۔
تجویز کردہ
یہ تجویز کردہ قیمتوں کا اینڈپوائنٹ ہے۔ یہ پرانے /apiv2/prices اینڈپوائنٹ کی جگہ لیتا ہے جسے منسوخ کر دیا جائے گا۔
اینڈپوائنٹ URL
GET https://netts.io/apiv2/pricingدرخواست کے ہیڈرز
| ہیڈر | لازمی | تفصیل | اقدار |
|---|---|---|---|
| X-API-KEY | ہاں | آپ کی API کلید | سٹرنگ |
| X-Real-IP | ہاں | وائٹ لسٹ سے IP ایڈریس | IP ایڈریس |
| X-Format | نہیں | رسپانس فارمیٹ (طے شدہ: مکمل JSON) | now, compact, short, short1h, count |
استفسار کے پیرامیٹرز
| پیرامیٹر | قسم | طے شدہ | تفصیل |
|---|---|---|---|
| services | سٹرنگ | all | شامل کرنے کے لیے سروسز کا کوما سے الگ کردہ فلٹر |
دستیاب سروسز
| سروس | تفصیل |
|---|---|
energy_1h | 1 گھنٹے کی Energy ڈیلیگیشن کی قیمتیں |
energy_5m | 5 منٹ کی Energy ڈیلیگیشن کی قیمتیں |
host | Host Energy ڈیلیگیشن کی شرحیں |
aml | AML ایڈریس چیک کی قیمتیں |
bandwidth | Bandwidth کرایہ کی قیمتیں — آپٹ اِن: صرف اس وقت واپس کی جاتی ہیں جب واضح طور پر ?services=bandwidth کے ذریعے درخواست کی جائے (طے شدہ رسپانس کا حصہ نہیں ہے) |
درخواستوں کی مثالیں
cURL — مکمل رسپانس
curl -X GET https://netts.io/apiv2/pricing \
-H "X-API-KEY: your_api_key" \
-H "X-Real-IP: your_whitelisted_ip"cURL — سروسز کے لحاظ سے فلٹر کریں
# Only energy 1h prices
curl -X GET "https://netts.io/apiv2/pricing?services=energy_1h" \
-H "X-API-KEY: your_api_key" \
-H "X-Real-IP: your_whitelisted_ip"
# Energy 1h + AML
curl -X GET "https://netts.io/apiv2/pricing?services=energy_1h,aml" \
-H "X-API-KEY: your_api_key" \
-H "X-Real-IP: your_whitelisted_ip"
# Host prices only
curl -X GET "https://netts.io/apiv2/pricing?services=host" \
-H "X-API-KEY: your_api_key" \
-H "X-Real-IP: your_whitelisted_ip"
# Bandwidth rental prices (opt-in — must be requested explicitly)
curl -X GET "https://netts.io/apiv2/pricing?services=bandwidth" \
-H "X-API-KEY: your_api_key" \
-H "X-Real-IP: your_whitelisted_ip"Python
import requests
url = "https://netts.io/apiv2/pricing"
headers = {
"X-API-KEY": "your_api_key",
"X-Real-IP": "your_whitelisted_ip"
}
response = requests.get(url, headers=headers)
data = response.json()
if data.get("success"):
print(f"API version: {data['version']}")
print(f"TRX/USD rate: {data['data']['trx_rate_usd']}")
services = data["data"]["services"]
for svc_name, svc_data in services.items():
pricing_type = svc_data.get("pricing_type")
print(f"\n--- {svc_name} ({pricing_type}) ---")
if pricing_type == "periodic":
for period in svc_data["periods"]:
marker = " <-- current" if period["is_current"] else ""
print(f" {period['label']}: {period['price']} {svc_data['unit']}{marker}")
elif pricing_type == "flat_rates":
for rate, price in svc_data["rates"].items():
print(f" {rate}: {price} {svc_data['unit']}")
elif pricing_type == "provider_based":
for name, info in svc_data["providers"].items():
status = "available" if info["available"] else "unavailable"
print(f" {name}: {info['price']} {svc_data['unit']} - {status}")Python — سروسز کو فلٹر کریں
params = {"services": "energy_1h,aml"}
response = requests.get(url, headers=headers, params=params)رسپانس کا ڈھانچہ
اوپری سطح کے فیلڈز
| فیلڈ | قسم | تفصیل |
|---|---|---|
| success | بولین | کامیاب درخواستوں کے لیے true |
| version | سٹرنگ | API ورژن (مثلاً "2.1") |
| timestamp | سٹرنگ | سرور کا وقت ISO 8601 UTC میں |
| data | آبجیکٹ | رسپانس پے لوڈ |
ڈیٹا فیلڈز
| فیلڈ | قسم | تفصیل |
|---|---|---|
| data.trx_rate_usd | نمبر | موجودہ TRX/USD تبادلہ کی شرح |
| data.units_meta | آبجیکٹ | مشین کے پڑھنے کے قابل یونٹ کی تبدیلی کی معلومات |
| data.services | آبجیکٹ | قیمتوں کے ڈیٹا کے ساتھ درخواست کردہ سروسز کا نقشہ |
یونٹس کا میٹا ڈیٹا
کلائنٹس کو پروگرام کے ذریعے یونٹس کے درمیان تبدیل کرنے کی اجازت دیتا ہے:
{
"units_meta": {
"sun": {"base": "trx", "multiplier": 1000000},
"trx": {"base": "trx", "multiplier": 1},
"usdt": {"base": "usdt", "multiplier": 1}
}
}SUN سے TRX میں تبدیل کرنے کے لیے: trx_price = sun_price / units_meta.sun.multiplier
سروس کے مشترکہ فیلڈز
ہر سروس میں یہ فیلڈز شامل ہیں:
| فیلڈ | قسم | تفصیل |
|---|---|---|
| unit | سٹرنگ | قیمت کی اکائی (sun, trx, usdt) |
| pricing_type | سٹرنگ | اس سروس کا تجزیہ کیسے کریں (نیچے دیکھیں) |
| description | سٹرنگ | انسان کے پڑھنے کے قابل تفصیل |
| cache_ttl | انٹیجر | یہ ڈیٹا کتنی بار ریفریش ہوتا ہے (سیکنڈز) |
قیمتوں کی اقسام
pricing_type فیلڈ کلائنٹس کو بتاتا ہے کہ ہر سروس کا تجزیہ کیسے کیا جائے:
| قسم | ڈھانچہ | اس کے ذریعے استعمال شدہ |
|---|---|---|
periodic | وقت پر مبنی قیمتوں کے ساتھ periods[] اری | energy_1h, energy_5m |
flat_rates | مخصوص ریٹ کیز کے ساتھ rates{} آبجیکٹ | host |
provider_based | فراہم کنندہ کے ڈیٹا کے ساتھ providers{} آبجیکٹ | aml |
tiered_by_amount_and_period | رقم کی حد کے لحاظ سے tiers[]، ہر ایک periods[] کے ساتھ | bandwidth |
سروس: energy_1h / energy_5m
pricing_type: periodic
| فیلڈ | قسم | تفصیل |
|---|---|---|
| current_period | سٹرنگ | فی الوقت فعال مدت کا سلگ |
| periods[] | اری | قیمتوں کے تمام ادوار (متحرک، ڈیٹا بیس سے لوڈ کردہ) |
| periods[].id | سٹرنگ | منفرد مدت شناخت کنندہ (سلگ) |
| periods[].label | سٹرنگ | انسان کے پڑھنے کے قابل مدت کا نام |
| periods[].start | سٹرنگ | مدت شروع ہونے کا وقت (HH:MM UTC) |
| periods[].end | سٹرنگ | مدت ختم ہونے کا وقت (HH:MM UTC) |
| periods[].is_current | بولین | آیا یہ مدت فی الوقت فعال ہے |
| periods[].price | انٹیجر | قیمت فی Energy یونٹ SUN میں |
| periods[].tiers | اری|خالی | والیوم پر مبنی قیمتوں کے درجات (درجات دیکھیں) |
متحرک ادوار
ادوار کی تعداد، ان کے اوقات کی حدود، لیبلز اور قیمتیں سبھی متحرک ہیں اور سرور سائیڈ پر سنبھالی جاتی ہیں۔ مدت کے IDs یا گنتی کو ہارڈ کوڈ نہ کریں۔ ہمیشہ periods اری پر تکرار کریں۔
سروس: host
pricing_type: flat_rates
| فیلڈ | قسم | تفصیل |
|---|---|---|
| rates.standard_65k | نمبر | 65k Energy کے لیے معیاری شرح (TRX) |
| rates.standard_131k_initial | نمبر | 131k Energy کے لیے معیاری شرح، ابتدائی ایکٹیویشن (TRX) |
| rates.frequent_65k | نمبر | 65k Energy کے لیے بار بار کی شرح (TRX) |
| rates.frequent_131k | نمبر | 131k Energy کے لیے بار بار کی شرح (TRX) |
سروس: aml
pricing_type: provider_based
| فیلڈ | قسم | تفصیل |
|---|---|---|
| providers | آبجیکٹ | AML فراہم کنندگان کا نقشہ (متحرک، تبدیل ہو سکتا ہے) |
| providers[name].price | نمبر | USDT میں قیمت چیک کریں |
| providers[name].price_trx | نمبر | موجودہ شرح پر TRX میں تبدیل شدہ قیمت چیک کریں |
| providers[name].available | بولین | آیا فراہم کنندہ کے پاس دستیاب کوٹہ موجود ہے |
متحرک فراہم کنندگان
AML فراہم کنندگان ڈیٹا بیس سے لوڈ کیے جاتے ہیں۔ نئے فراہم کنندگان ظاہر ہو سکتے ہیں یا موجودہ غیر دستیاب ہو سکتے ہیں۔ ہمیشہ providers آبجیکٹ پر تکرار کریں۔
سروس: bandwidth
pricing_type: tiered_by_amount_and_period
آپٹ اِن اور رسائی
Bandwidth کی قیمتیں صرف اس وقت واپس کی جاتی ہیں جب واضح طور پر ?services=bandwidth کے ذریعے درخواست کی جائے — یہ طے شدہ رسپانس کا حصہ نہیں ہے۔ Bandwidth کرایہ کا اینڈپوائنٹ بذات خود درخواست پر دستیاب ہے؛ رسائی کے لیے سپورٹ سے رابطہ کریں۔ دیکھیے Bandwidth rental۔
Bandwidth کرایہ کی قیمت آرڈر کی رقم (یونٹ ٹیئر)، کرایہ کی مدت (مثلاً 5m / 1h)، دن کے وقت کی ونڈو (UTC) اور ہفتے کے دن پر منحصر ہوتی ہے۔ بنیادی قیمتیں SUN فی یونٹ میں ہیں؛ بنیادی قیمت کے علاوہ، مقررہ اضافی سرچارجز (TRX میں) لاگو ہو سکتے ہیں — تمام اقدار رسپانس میں واپس کی جاتی ہیں۔
رسپانس ایک سہولت کا منظر (tiers — موجودہ ونڈو/دن کے لیے قیمتیں) اور مکمل گرڈ (windows + schedule — ہر کاروباری دن میں ہر ونڈو) دونوں فراہم کرتا ہے۔
موافق فارمیٹ — ہارڈ کوڈ نہ کریں
قیمتوں کا گرڈ مکمل طور پر ڈیٹا پر مبنی ہے اور کسی بھی وقت تبدیل ہو سکتا ہے: ٹائم ونڈوز کی تعداد، ان کے لیبلز، ان کے شروع/اختتام کے اوقات، کرایہ کی ادوار کا سیٹ (نئے ادوار شامل کیے جا سکتے ہیں یا ہٹائے جا سکتے ہیں)، رقم کے درجات، ہفتے کے دن کی تفصیل اور خود قیمتیں۔ کلائنٹس کو واپس آنے والے اریز (windows, schedule, tiers, periods) پر تکرار کرنی چاہیے اور قدر کے لحاظ سے میچ کرنا چاہیے — کبھی بھی مقررہ تعداد، مقررہ لیبلز، مقررہ اوقات یا مقررہ مدت کے ids کا قیاس نہ کریں۔ اس طرح لکھا گیا کوڈ اس وقت بھی کام کرتا رہتا ہے جب شیڈول تبدیل ہوتا ہے۔
| فیلڈ | قسم | تفصیل |
|---|---|---|
| unit | سٹرنگ | sun_per_unit |
| window | سٹرنگ | موجودہ وقت کی ونڈو کا لیبل (UTC) |
| current_day_of_week | انٹیجر | موجودہ ہفتے کا دن، ISO 1=پیر … 7=اتوار (UTC) |
| tiers[] | اری | موجودہ ونڈو/دن کے لیے رقم کے درجات (سہولت؛ وہی ساخت جو schedule کے اندر ہے) |
| windows[] | اری | تمام وقتی ونڈوز کی ڈائرکٹری (بڑھ/گھٹ/تبدیل ہو سکتی ہے) |
| windows[].label | سٹرنگ | ونڈو کا لیبل |
| windows[].start / .end | سٹرنگ | ونڈو کا آغاز/اختتام HH:MM UTC (ایک ونڈو آدھی رات کو پار کر سکتی ہے، یعنی start > end) |
| schedule[] | اری | مکمل گرڈ — فی (ہفتے کا دن × ونڈو) ایک اندراج |
| schedule[].day_of_week | انٹیجر | ISO ہفتے کا دن 1…7 |
| schedule[].window | سٹرنگ | ونڈو لیبل (windows[].label سے ملتا ہے) |
| schedule[].period_start / .period_end | سٹرنگ | HH:MM UTC |
| schedule[].is_current | بولین | ابھی فعال حصے کے لیے true |
| schedule[].tiers[] | اری | اس حصے کے لیے رقم کے درجات |
| tiers[].amount_min | انٹیجر | ٹیئر کی نچلی حد (شامل ہے) |
| tiers[].amount_max | انٹیجر|خالی | ٹیئر کی بالائی حد (خارج ہے)۔ null = لامحدود |
| tiers[].periods[] | اری | ٹیئر کے اندر کرایہ کی مدت کے لحاظ سے قیمتیں |
| tiers[].periods[].id | سٹرنگ | کرایہ کی مدت کا id (مثلاً 5m, 1h) — تبدیل/بڑھ سکتا ہے |
| tiers[].periods[].rental_seconds | انٹیجر | مدت کی لمبائی سیکنڈز میں |
| tiers[].periods[].price | انٹیجر | قیمت فی Bandwidth یونٹ SUN میں |
| surcharges | آبجیکٹ | کلائنٹ کی قیمت میں مقررہ اضافے (TRX) — نیچے دیکھیں |
| limits | آبجیکٹ | آرڈر کی حدود: min_units, max_units |
سرچارجز
| فیلڈ | قسم | تفصیل |
|---|---|---|
| surcharges.small_order_threshold_units | انٹیجر | اس قدر سے کم amount والے آرڈرز پر چھوٹے آرڈر کا سرچارج لگتا ہے |
| surcharges.small_order_surcharge_trx | نمبر | چھوٹے ڈیلیگیشن آرڈرز کے لیے شامل کیا گیا (TRX) — آن چین ڈیلیگیشن + ریکلیم کا معاوضہ |
| surcharges.trx_send_surcharge_trx | نمبر | اس وقت شامل کیا گیا (TRX) جب آرڈر TRX بھیج کر پورا کیا جائے — TRX منتقلی کا معاوضہ |
مثال کے طور پر رسپانس
{
"bandwidth": {
"unit": "sun_per_unit",
"pricing_type": "tiered_by_amount_and_period",
"description": "Bandwidth delegation rental",
"cache_ttl": 30,
"window": "<current window label>",
"current_day_of_week": 7,
"tiers": [
{
"amount_min": 400,
"amount_max": 1000,
"periods": [
{"id": "5m", "rental_seconds": 300, "price": "<price_sun>"},
{"id": "1h", "rental_seconds": 3600, "price": "<price_sun>"}
]
},
{"amount_min": 1000, "amount_max": 3000, "periods": ["..."]},
{"amount_min": 3000, "amount_max": null, "periods": ["..."]}
],
"windows": [
{"label": "<window label>", "start": "01:00", "end": "09:00"},
{"label": "<window label>", "start": "14:00", "end": "00:00"}
],
"schedule": [
{
"day_of_week": 1,
"window": "<window label>",
"period_start": "01:00",
"period_end": "09:00",
"is_current": false,
"tiers": [
{"amount_min": 400, "amount_max": 1000, "periods": [
{"id": "5m", "rental_seconds": 300, "price": "<price_sun>"},
{"id": "1h", "rental_seconds": 3600, "price": "<price_sun>"}
]}
]
}
],
"surcharges": {
"small_order_threshold_units": 1000,
"small_order_surcharge_trx": "<trx>",
"trx_send_surcharge_trx": "<trx>"
},
"limits": {"min_units": 400, "max_units": 5000}
}
}schedule میں ہر (ہفتے کا دن × ونڈو) کے امتزاج کے لیے ایک اندراج ہوتا ہے — قیمتوں کا مکمل کیلنڈر دکھانے کے لیے اس پر تکرار کریں۔ بالکل ایک اندراج میں is_current: true ہوتا ہے۔
کلائنٹ لاجک (آرڈر کی قیمت کا حساب لگائیں)
"اس وقت کی قیمت" کے لیے tiers استعمال کریں۔ کسی دوسرے وقت کے لیے قیمت تلاش کرنے کے لیے، ہفتے کے دن + اس ونڈو کے لحاظ سے مماثل schedule اندراج منتخب کریں جس کے [period_start, period_end) میں وہ وقت شامل ہو (یاد رکھیں کہ جب start > end ہو تو ایک ونڈو آدھی رات کو پار کر سکتی ہے)، پھر اس کے tiers کا استعمال کریں۔
# price for the current moment:
for tier in bandwidth.tiers:
if tier.amount_min <= amount < (tier.amount_max or infinity):
for p in tier.periods:
if p.id == requested_period: # match by value, not by index
base_trx = (p.price / units_meta.sun.multiplier) * amount
if amount < surcharges.small_order_threshold_units:
base_trx += surcharges.small_order_surcharge_trx # delegation orders
# TRX-send fulfillment branch instead:
# trx_branch_trx = base_trx_for_smallest_tier_shortest_period + surcharges.trx_send_surcharge_trx
# price for an arbitrary weekday/time: same logic, but first select the schedule[] entry
# where day_of_week matches and the time falls in [period_start, period_end).مرکزی اور متحرک
Bandwidth کی قیمتیں، ونڈوز، ہفتے کے دنوں کی تفصیل اور سرچارجز سرور سائیڈ (DB) پر سنبھالے جاتے ہیں اور تبدیل ہو سکتے ہیں۔ ہمیشہ رسپانس سے windows، schedule، tiers اور periods پر تکرار کریں اور قدر کے لحاظ سے مماثل کریں — گنتی، لیبلز، اوقات یا مدت کے ids کو ہارڈ کوڈ نہ کریں۔ SUB-user مارک اپ Bandwidth پر لاگو نہیں ہوتے ہیں۔
درجات
فی الوقت تمام ادوار کے لیے tiers کی ویلیو null ہے۔ جب حجم پر مبنی قیمتوں کا تعین فعال ہو جائے گا، تو اس فیلڈ میں ٹیئر آبجیکٹس کی ایک اری شامل ہوگی:
{
"tiers": [
{
"min_energy": 0,
"max_energy": 64999,
"price": "<price_sun>",
"label": "standard"
},
{
"min_energy": 65000,
"max_energy": 130999,
"price": "<price_sun>",
"label": "65k"
},
{
"min_energy": 131000,
"max_energy": 131000,
"price": "<price_sun>",
"label": "131k"
},
{
"min_energy": 131001,
"max_energy": null,
"price": "<price_sun>",
"label": "bulk"
}
]
}درجات کا خاکہ
| فیلڈ | قسم | تفصیل |
|---|---|---|
| min_energy | انٹیجر | اس ٹیئر کے لیے کم از کم Energy کی رقم (شامل ہے) |
| max_energy | انٹیجر|خالی | اس ٹیئر کے لیے زیادہ سے زیادہ Energy کی رقم (شامل ہے)۔ null = لامحدود |
| price | انٹیجر | اس ٹیئر کے لیے SUN میں قیمت فی Energy یونٹ |
| label | سٹرنگ | ٹیئر کا شناخت کنندہ |
کلائنٹ لاجک
if tiers != null:
find the tier where min_energy <= order_amount <= max_energy
use that tier's price
else:
use the flat price field for all order amountsمختصر رسپانس فارمیٹس
مختصر متنی رسپانسز حاصل کرنے کے لیے X-Format ہیڈر کا استعمال کریں۔ یہ energy_1h سے موجودہ فعال مدت کی قیمت واپس کرتے ہیں۔
X-Format: now / compact / short
curl -H "X-API-KEY: your_key" -H "X-Format: now" https://netts.io/apiv2/pricing<Period>: price=<N> sun, 65k=<X.XXX> TRX (<X.XX>$), 131k=<X.XXX> TRX (<X.XX>$), 1m=<X.XXX> TRX (<X.XX>$)X-Format: short1h
وہی لیکن بغیر مدت کے لیبل اور فی یونٹ قیمت کے۔
curl -H "X-API-KEY: your_key" -H "X-Format: short1h" https://netts.io/apiv2/pricing65k=<X.XXX> TRX (<X.XX>$), 131k=<X.XXX> TRX (<X.XX>$), 1m=<X.XXX> TRX (<X.XX>$)X-Format: count
1، 2، 3، 5، 10، 20 آرڈرز کے لیے بلک آرڈر کی قیمتیں۔
curl -H "X-API-KEY: your_key" -H "X-Format: count" https://netts.io/apiv2/pricing1-<X.XXX> TRX (<X.XX>$), 2-<X.XXX> TRX (<X.XX>$), ...حساب کا فارمولا
TRX cost = (price_sun / units_meta.sun.multiplier) x energy_amount
USD cost = TRX_cost x trx_rate_usdSUB-User مارک اپ
SUB-users خودکار طور پر اپنے پیرنٹ کا مارک اپ لاگو ہونے کے ساتھ قیمتیں وصول کرتے ہیں۔ API ہمیشہ تصدیق شدہ صارف کے لیے حتمی قیمت واپس کرتا ہے — کلائنٹ سائیڈ پر کسی حساب کتاب کی ضرورت نہیں ہے۔
خرابی کے رسپانسز
خرابیاں مختلف فارمیٹس کے ساتھ دو تہوں سے آ سکتی ہیں۔ آپ کے کلائنٹ کو دونوں کو سنبھالنا چاہیے۔
ایپلیکیشن کی خرابیاں (API سے)
ایپلیکیشن لیول کی خرابیاں معیاری success/error فارمیٹ استعمال کرتی ہیں:
غلط سروس (400)
{
"success": false,
"error": {
"code": 4002,
"message": "Unknown services: invalid_service"
}
}تصدیق کی خرابی (401)
جب API کلید غائب ہو یا IP وائٹ لسٹ میں نہ ہو تو ایپلیکیشن کے ذریعے واپس کیا جاتا ہے:
{
"detail": {
"code": -1,
"msg": "Invalid API key or IP not in whitelist"
}
}مختلف فارمیٹ
تصدیقی خرابیاں FastAPI کا مقامی detail فارمیٹ استعمال کرتی ہیں، نہ کہ success/error کا ڈھانچہ۔ اس کی وجہ یہ ہے کہ خرابی درخواست کے ایپلیکیشن لاجک تک پہنچنے سے پہلے ہی سامنے آ جاتی ہے۔
صارف نہیں ملا (404)
{
"detail": {
"code": -1,
"msg": "User not found"
}
}اندرونی سرور کی خرابی (500)
{
"success": false,
"error": {
"code": 5001,
"message": "Failed to retrieve pricing data"
}
}گیٹ وے کی خرابیاں (Kong سے)
یہ خرابیاں ایپلیکیشن تک درخواست پہنچنے سے پہلے API گیٹ وے کے ذریعے واپس کی جاتی ہیں۔ وہ Kong کا اپنا فارمیٹ استعمال کرتی ہیں:
شرح کی حد سے تجاوز کر گیا (429)
{
"message": "API rate limit exceeded"
}گیٹ وے ٹائم آؤٹ (504)
{
"message": "An invalid response was received from the upstream server"
}خرابی کے کوڈز کا حوالہ
| کوڈ | تفصیل | HTTP اسٹیٹس | ماخذ |
|---|---|---|---|
-1 | API کلید فراہم نہیں کی گئی | 401 | App |
-1 | غلط API کلید یا IP وائٹ لسٹ میں نہیں ہے | 401 | App |
-1 | صارف نہیں ملا | 404 | App |
4002 | ?services= پیرامیٹر میں نامعلوم سروس | 400 | App |
5000 | اندرونی سرور کی خرابی | 500 | App |
5001 | قیمتوں کا ڈیٹا حاصل کرنے میں ناکامی | 500 | App |
5002 | کمپیکٹ فارمیٹ کے لیے قیمت کا ڈیٹا دستیاب نہیں ہے | 500 | App |
- | API کی شرح کی حد سے تجاوز کر گیا | 429 | Kong |
کلائنٹ کے لیے خرابی کو سنبھالنے کا تجویز کردہ طریقہ
response = requests.get(url, headers=headers)
data = response.json()
if response.status_code == 200 and data.get("success"):
# Success — process data
services = data["data"]["services"]
elif response.status_code == 429:
# Kong rate limit — back off and retry
retry_after = response.headers.get("Retry-After", "60")
time.sleep(int(retry_after))
elif "detail" in data:
# FastAPI auth/validation error
detail = data["detail"]
if isinstance(detail, dict):
print(f"Error {detail.get('code')}: {detail.get('msg')}")
else:
print(f"Error: {detail}")
elif "error" in data:
# Application error
err = data["error"]
print(f"Error {err.get('code')}: {err.get('message')}")
else:
print(f"Unexpected response: {response.status_code}")/apiv2/prices سے منتقلی
| پہلو | /apiv2/prices (پرانا) | /apiv2/pricing (نیا) |
|---|---|---|
| ادوار | 5 مقررہ | ڈیٹا بیس سے متحرک |
| قیمت کے درجات | 3 ہارڈ کوڈڈ | ایک قیمت + مستقبل کے tiers |
| دورانیے کی اقسام | دستیاب نہیں | energy_5m |
| AML قیمتیں | الگ اینڈپوائنٹ | ?services=aml کے ذریعے شامل |
| Host قیمتیں | رسپانس میں ملی جلی | الگ host سروس |
| سروس فلٹرنگ | دستیاب نہیں | ?services= پیرامیٹر |
| یونٹ کی تبدیلی | غیر دستاویزی | رسپانس میں units_meta |
| کیشے کی معلومات | غیر دستاویزی | cache_ttl فی سروس |
| رسپانس کا فارمیٹ | {"status": "success", ...} | {"success": true, "version": "2.1", "data": {...}} |
شرح کی حدود
وہی شرح کی حدود لاگو ہوتی ہیں جو /apiv2/prices کے لیے ہیں (Kong گیٹ وے میں ترتیب دی گئی ہیں)۔
نوٹس
- Energy کی تمام قیمتیں SUN میں ہیں — تبدیلی کے لیے
units_metaاستعمال کریں - Host کی قیمتیں TRX میں ہیں
- AML کی قیمتیں USDT میں ہیں جن میں TRX کی تبدیلی شامل ہے
- تمام اوقات UTC میں ہیں
- ڈیٹا کتنی بار ریفریش ہوتا ہے یہ جاننے کے لیے فی سروس
cache_ttlکا استعمال کریں - ہر سروس کا تجزیہ کرنے کا طریقہ طے کرنے کے لیے
pricing_typeکا استعمال کریں - ادوار، فراہم کنندگان، شرحیں اور تمام اقدار متحرک ہیں — انہیں ہارڈ کوڈ نہ کریں
- Bandwidth کی قیمتوں کا تعین آپٹ اِن ہے (
?services=bandwidth)،surchargesکے ساتھtiered_by_amount_and_periodاستعمال کرتا ہے، اور SUB-user مارک اپ کے تابع نہیں ہے