Skip to content
Translated page. The English version is the source of truth.

Orchestrator — ایک ہی کال میں بیچ آرڈرز

ایک ہی درخواست میں 100 تک پتے بھیجیں اور Netts کو ہر ایک کے لیے مکمل تسلسل خود انجام دینے دیں: ضرورت پڑنے پر ایڈریس کو فعال (activate) کرنا، بینڈوڈتھ کم ہونے پر اس میں اضافہ کرنا، اور پھر انرجی کرایہ پر دینا — بڑی مقداروں کو خودکار طور پر ٹکڑوں (chunks) میں تقسیم کرتے ہوئے۔

آپ کو ٹریکنگ کی کے ساتھ فوری طور پر 202 Accepted ملتا ہے اور کبھی بھی کنکشن پر انتظار نہیں کرنا پڑتا۔ اس کے بعد اسٹیٹس اینڈ پوائنٹ سے پیش رفت معلوم کی جا سکتی ہے۔

اسے کیوں استعمال کریں

نئے ایڈریس کے لیے انرجی کا آرڈر دینے کے لیے عام طور پر درست ترتیب میں تین الگ الگ کالز درکار ہوتی ہیں، اور ان کے درمیان آپ کی اپنی ری ٹرائی لاجک ہونی چاہیے۔ آرکیسٹریٹر اسے ایک ہی درخواست میں سمیٹ دیتا ہے اور ہر ایڈریس کے لیے یہ تسلسل چلاتا ہے:

probe → activation (if the address is not active) → bandwidth (if free < 400) → energy

ایکٹیویشن یا بینڈوڈتھ میں ناکامی اس ایڈریس کے لیے انرجی کے آرڈر کو نہیں روکتی، اور کسی ایک ایڈریس کی ناکامی دوسرے پتوں پر کبھی اثر انداز نہیں ہوتی۔

اینڈ پوائنٹ کا بنیادی یو آر ایل

https://netts.io/apiv2/orchestrator

درخواست کے ہیڈرز

ہیڈرلازمیتفصیل
Content-Typeہاںapplication/json
X-API-KEYہاںآپ کی API کی جو Netts ڈیش بورڈ سے حاصل کی گئی ہو
X-Real-IPہاںآپ کی وائٹ لسٹ سے IP ایڈریس
X-Idempotency-Keyہاں*اس آرڈر کے لیے آپ کی کی، 12–128 حروف پر مشتمل A-Z a-z 0-9 . _ : -

* یا تو X-Idempotency-Key ہیڈر یا پھر باڈی میں clientRequestId فیلڈ کا ہونا لازمی ہے۔ اگر آپ دونوں میں سے کوئی بھی نہیں بھیجتے ہیں، تو درخواست 5010 کے ساتھ مسترد کر دی جاتی ہے۔

یہ کی پورے آرڈر کی شناخت کرتی ہے۔ اسی کی کے ساتھ درخواست دہرانے پر دوسرا آرڈر بنانے کے بجائے اصل نتیجہ واپس ملتا ہے — دیکھیے Idempotency۔


آرڈر بنائیں — POST /apiv2/orchestrator

درخواست کی باڈی

json
{
    "clientRequestId": "my-batch-2026-01-01-001",
    "defaults": {
        "bandwidth": true,
        "bandwidthAmount": 400,
        "bandwidthPeriod": "1h",
        "check": true,
        "trx_send": false
    },
    "items": [
        { "receiveAddress": "TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE", "amount": 65000 },
        { "receiveAddress": "TXXxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "amount": 131000 },
        { "receiveAddress": "TYYyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy", "amount": 61000, "bandwidth": false }
    ]
}

اولین سطح کی فیلڈز

فیلڈقسملازمیتفصیل
itemsarrayہاں1 سے 100 پتے۔ ایک ہی آرڈر کے اندر ڈپلیکیٹس مسترد کر دیے جاتے ہیں۔
clientRequestIdstringنہیںآپ کا آرڈر ریفرنس، 8–128 حروف پر مشتمل A-Z a-z 0-9 . _ : -۔ ہیڈر نہ ہونے کی صورت میں idempotency کی کے طور پر بھی کام کرتا ہے۔
defaultsobjectنہیںایسی اقدار جو ہر اس آئٹم پر لاگو ہوتی ہیں جو انہیں اوور رائیڈ نہیں کرتا۔

آئٹم کی فیلڈز

receiveAddress اور amount کے علاوہ ہر فیلڈ کو defaults میں بھی سیٹ کیا جا سکتا ہے۔ آئٹم پر موجود قدر ڈیفالٹ پر فوقیت رکھتی ہے۔

فیلڈقسمڈیفالٹتفصیل
receiveAddressstringانرجی وصول کرنے والا TRON ایڈریس
amountintاس ایڈریس کے لیے Energy، 61 000 … 50 000 000
bandwidthbooltrueکم ہونے پر اس ایڈریس کے لیے بینڈوڈتھ کا آرڈر دیں
bandwidthAmountint400400 یا 5000
bandwidthPeriodstring1h5m یا 1h
checkboolنیچے دیکھیںپہلے مفت بینڈوڈتھ چیک کریں اور اگر کافی ہو تو آرڈر چھوڑ دیں
trx_sendboolfalseبینڈوڈتھ سروس کو بغیر کسی تبدیلی کے منتقل کیا گیا
activationbooltrueاگر ایڈریس فعال نہیں ہے تو اسے فعال کریں۔ اس ایڈریس کے لیے مرحلہ چھوڑنے کے لیے false سیٹ کریں جس کے بارے میں آپ جانتے ہیں کہ وہ پہلے سے فعال ہے۔

check ڈیفالٹ طور پر true ہوتا ہے جب bandwidthAmount کی قدر 400 ہو، بصورت دیگر false ہوتا ہے — عام طور پر 5 000 یونٹس کا آرڈر دینے کا مطلب یہ ہوتا ہے کہ آپ انہیں ہر حال میں چاہتے ہیں قطع نظر اس کے کہ وہاں پہلے سے کیا موجود ہے۔

مقداریں فی ایڈریس ہیں۔ ایک ہی درخواست میں مختلف مقداروں کو آزادانہ طور پر ملایا جا سکتا ہے؛ واحد حد کل رقم کی ہے۔

حدود

حدقدر
پتے فی آرڈر100
انرجی فی ایڈریس61 000 … 50 000 000
کل انرجی فی آرڈر50 000 000
زیرِ عمل آرڈرز فی اکاؤنٹ3
زیرِ عمل پتے فی اکاؤنٹ300
قبولیت کے لیے کم از کم بیلنس4 TRX

50 000 000 کی حد درخواست میں موجود تمام پتوں کے مجموعے پر لاگو ہوتی ہے، نہ کہ ہر ایک پر الگ الگ۔

رسپانس — قبول شدہ (202، کوڈ 10202)

json
{
    "detail": {
        "code": 10202,
        "status": "accepted",
        "msg": "Order accepted for processing",
        "data": {
            "idempotencyKey": "my-batch-2026-01-01-001",
            "requestId": 1234,
            "itemsAccepted": 3,
            "statusUrl": "/apiv2/orchestrator/status/my-batch-2026-01-01-001",
            "items": [
                {
                    "deliveryKey": 5001,
                    "trackingId": "my-batch-2026-01-01-001:TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE",
                    "receiveAddress": "TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE",
                    "amount": 65000,
                    "energyChunks": 1,
                    "activation": "planned",
                    "bandwidth": "planned",
                    "status": "queued"
                }
            ]
        }
    }
}

202 کا مطلب ہے قطار میں شامل (queued)، مکمل نہیں ہوا۔ ابھی تک کوئی فیس نہیں کٹی ہے۔ نتیجے کے لیے statusUrl کو پول کریں۔

trackingId جوڑا ہے idempotency key + address کا — یعنی آپ کے آرڈر کے اندر ایک ایڈریس کی شناخت۔ اسے اپنے لاگز اور ریکونسیلیشن میں استعمال کریں۔

مثال

bash
curl -X POST https://netts.io/apiv2/orchestrator \
  -H "Content-Type: application/json" \
  -H "X-API-KEY: your_api_key" \
  -H "X-Real-IP: your_whitelisted_ip" \
  -H "X-Idempotency-Key: my-batch-2026-01-01-001" \
  -d '{
        "items": [
          {"receiveAddress": "TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE", "amount": 65000}
        ]
      }'

پیش رفت چیک کریں — GET /apiv2/orchestrator/status/{idempotencyKey}

پورے آرڈر کے بجائے ایک ایڈریس حاصل کرنے کے لیے ?address=T… شامل کریں۔

json
{
    "detail": {
        "code": 10000,
        "status": "processing",
        "data": {
            "idempotencyKey": "my-batch-2026-01-01-001",
            "requestId": 1234,
            "clientRequestId": "my-batch-2026-01-01-001",
            "summary": {
                "total": 3, "queued": 1, "processing": 1, "completed": 1,
                "partial": 0, "failed": 0, "insufficient_balance": 0,
                "credentials_revoked": 0, "cancelled": 0
            },
            "items": [
                {
                    "deliveryKey": 5001,
                    "trackingId": "my-batch-2026-01-01-001:TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE",
                    "receiveAddress": "TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE",
                    "status": "completed",
                    "energy": {
                        "requested": 65000,
                        "delegated": 65000,
                        "status": "done",
                        "chunks": { "total": 1, "done": 1 },
                        "orderIds": ["1Hxxxxxxxxxx"],
                        "hashes": ["0000000000000000000000000000000000000000000000000000000000000000"]
                    },
                    "activation": { "status": "not_needed", "orderId": null, "hash": null },
                    "bandwidth": {
                        "status": "enough", "orderId": "B1Hxxxxxxxxxxxxxx",
                        "amount": 400, "period": "1h", "hashes": [], "skipReason": null
                    },
                    "attempts": 1,
                    "startedAt": "2026-01-01T00:00:00+00:00",
                    "finishedAt": "2026-01-01T00:00:03+00:00"
                }
            ]
        }
    }
}

ایک نامعلوم کی، یا کسی دوسرے اکاؤنٹ کی کی، 404 لوٹاتی ہے۔

ایڈریس اسٹیٹس کی اقدار

اسٹیٹسمفہوم
queuedاٹھائے جانے کا منتظر
processingجاری ہے
completedتمام مطلوبہ Energy ڈیلیگیٹ کر دی گئی
partialکچھ حصے ڈیلیور ہو گئے، کچھ ناکام رہے
failedکچھ بھی ڈیلیور نہیں ہوا
insufficient_balanceروک دیا گیا — آپ کا بیلنس کم از کم حد سے کم ہو گیا
credentials_revokedآرڈر کے دوران آپ کی API کی ہٹا دی گئی یا غیر فعال کر دی گئی
cancelledآپ کی منسوخی کی درخواست پر قطار سے ہٹا دیا گیا

مرحلے کی اسٹیٹس اقدار

مرحلہاقدار
activationnot_needed, done, failed, skipped, skipped_unavailable
bandwidthenough, done, failed, skipped
energydone, partial, failed

bandwidth.skipReason کے ذریعے skipped کی وضاحت ملتی ہے: option_off (آپ نے اسے غیر فعال کیا تھا)، energy_gt_600000 (بڑے انرجی آرڈرز کو بینڈوڈتھ میں اضافے کی ضرورت نہیں ہوتی)۔

ڈیلیگیشن ہیشز

energy.hashes آپ کی ترسیل کا ثبوت ہے۔ جب انرجی کسی بیرونی فراہم کنندہ سے آتی ہے تو آرڈر کے وقت ہیش معلوم نہیں ہوتا — یہ تقریباً ایک منٹ بعد درج کیا جاتا ہے، اور ایڈریس کو اس وقت تک مکمل نہیں دکھایا جاتا جب تک کہ ہیشز اکٹھے نہ ہو جائیں یا انتظار کا وقت ختم نہ ہو جائے۔ completed میں موجود ایڈریس جس کا ہیش موجود ہو، مکمل طور پر طے پا چکا ہے۔


منسوخ کریں — POST /apiv2/orchestrator/cancel/{idempotencyKey}

ہر اس ایڈریس کو قطار سے ہٹا دیتا ہے جسے ابھی تک اٹھایا نہیں گیا ہے۔

json
{
    "detail": {
        "code": 10005,
        "status": "cancelled",
        "msg": "Order cancelled: 7 addresses removed from queue",
        "data": { "cancelled": 7 }
    }
}

جو پتے پہلے ہی processing میں ہیں انہیں نہیں روکا جاتا: ممکن ہے ان کی کچھ انرجی کی ادائیگی پہلے ہی ہو چکی ہو۔ منسوخی بقیہ حصے کے لیے بہترین ممکنہ کوشش (best-effort) ہے۔


Idempotency

آرڈر کی شناخت آپ کی کی کے ذریعے کی جاتی ہے — X-Idempotency-Key ہیڈر، یا ہیڈر نہ ہونے کی صورت میں clientRequestId۔

درخواست دہرانانتیجہ
وہی کی، وہی باڈیاصل آرڈر اور originalAcceptedAt کے ساتھ 208 — کوئی دوسرا آرڈر نہیں
وہی کی، مختلف باڈی409 4090 IDEMPOTENCY_CONFLICT

لہذا آپ کی جانب سے نیٹ ورک ٹائم آؤٹ کی صورت میں من و عن دوبارہ کوشش کرنا محفوظ ہے۔ پہلے سے استعمال شدہ کی کے تحت پے لوڈ کو تبدیل کرنا خاموشی سے لاگو ہونے کے بجائے مسترد کر دیا جاتا ہے۔

آرڈر کے اندر، ہر ایڈریس کی اپنی اندرونی کی ہوتی ہے، اس لیے دہرائی جانے والی کال کبھی بھی کسی ایک ایڈریس سے دو بار کٹوتی نہیں کرتی۔


بلنگ

آرکیسٹریٹر خود کوئی فیس وصول نہیں کرتا۔ ہر مرحلے کا بل اس سروس کے ذریعے لگایا جاتا ہے جو اسے انجام دیتی ہے، اس کی عام قیمت پر:

مرحلہکٹوتی کا طریقہ
Activationالگ کٹوتی، آرڈر نمبر A…
Bandwidthالگ کٹوتی، آرڈر نمبر B1H… — صرف اس صورت میں جب واقعی ڈیلیگیٹ کیا گیا ہو
Energyفی ٹکڑا (chunk) ایک کٹوتی، آرڈر نمبر 1H…

کافی مفت بینڈوڈتھ کے ساتھ check: true کی کوئی لاگت نہیں ہوتی — اسٹیٹس enough ہوتا ہے اور کوئی آرڈر نہیں دیا جاتا۔ بڑی انرجی کی مقداریں بینڈوڈتھ کو مکمل طور پر چھوڑ دیتی ہیں۔

اگر بیچ کے درمیان میں آپ کا بیلنس ختم ہو جاتا ہے، تو بقیہ پتے بغیر کوشش کیے insufficient_balance پر ختم ہو جاتے ہیں۔


ایرر کوڈ ریفرنس

کوڈتفصیلHTTP اسٹیٹس
10202آرڈر قبول کر لیا گیا / پہلے ہی قبول شدہ202 / 208
10000اسٹیٹس واپس آ گیا200
10005آرڈر منسوخ کر دیا گیا200
5004غلط فیلڈ: ایڈریس فارمیٹ، amount حد سے باہر، bandwidthAmount 400/5000 نہیں ہے، bandwidthPeriod 5m/1h نہیں ہے، باڈی JSON آبجیکٹ نہیں ہے400
5005items غائب یا خالی ہے400
5006ایک آرڈر میں ڈپلیکیٹ receiveAddress400
5009خراب ساخت والا X-Idempotency-Key یا clientRequestId400
5010نہ تو X-Idempotency-Key اور نہ ہی clientRequestId فراہم کیا گیا400
5012درخواست میں کل انرجی 50 000 000 سے زیادہ ہے400
-1غلط API کی / IP وائٹ لسٹ میں نہیں ہے401
1004بیلنس 4 TRX کی کم از کم حد سے کم ہے402
-1آرڈر نہیں ملا (یا آپ کا نہیں ہے)404
4090IDEMPOTENCY_CONFLICT — وہی کی، مختلف باڈی409
4220درخواست کی تصدیق ناکام ہو گئی (تفصیلات data.errors میں)422
429 / 5011بہت زیادہ آرڈرز، پتے یا ٹکڑے زیرِ عمل ہیں429
5003آرڈر قبول نہیں کیا گیا تھا — سروس عارضی طور پر دستیاب نہیں ہے، دوبارہ کوشش کرنا محفوظ ہے503

بنانے کے وقت 503 ایرر محفوظ ناکامی (fail-secure) ہے: کچھ بھی محفوظ نہیں کیا گیا اور کوئی کٹوتی نہیں ہوئی۔

شرح کی حدود (Rate Limits)

فی سورس IP محدود:

مدتحد
1 سیکنڈ20 درخواستیں

شرح کی حد سے تجاوز (429)

json
{ "message": "API rate limit exceeded" }

نوٹس

  • 202 ترسیل کی رسید نہیں ہے۔ اسے "queued" سمجھیں۔ نتیجہ اسٹیٹس اینڈ پوائنٹ میں ملتا ہے۔
  • پتے متوازی طور پر چلتے ہیں، ایک آرڈر کے اندر ایک وقت میں 5 تک، تاکہ بڑا بیچ کسی ایک سست ایڈریس کی وجہ سے نہ رکے۔ تکمیل کی ترتیب کی ضمانت نہیں ہے۔
  • ٹکڑوں میں تقسیم خودکار ہے: 1 000 000 سے زیادہ مقداروں کو برابر حصوں میں تقسیم کیا جاتا ہے، جن میں سے ہر ایک اپنا الگ انرجی آرڈر بن جاتا ہے۔ energy.orderIds اور energy.hashes ان تمام کو درج کرتے ہیں۔
  • مجموعی طور پر آرکیسٹریٹر آرڈرز کے لیے کوئی ویب ہک نہیں ہے۔ ہر انرجی ڈیلیگیشن اب بھی معمول کا delegation.confirmed ویب ہک پیدا کرتی ہے، دیکھیے Webhooks۔
  • متعلقہ اینڈ پوائنٹس: Activator، Bandwidth، Order 1H۔