توثيق الواجهة البرمجية ودليل المطوّر
v1 · إصدار حيّالبدء السريع
يتم البدء باستقبال المدفوعات المشفّرة على موقعك في ثلاث خطوات: أنشئ مفتاح واجهة برمجية، وسجّل عناوين محافظ التحصيل، ثم افتح فاتورتك الأولى. ولأن النظام غير احتجازي، تنتقل التحصيلات مباشرة إلى محفظة تسيطر عليها أنت.
- لوحة التحكم ← مفاتيح API — سجّلوا الدخول وأنشئوا زوج المفاتيح (
KeyIdوSecret) من هناك. تُعرض قيمة Secret مرة واحدة فقط عند الإنشاء. - اللوحة ← الإعدادات أو
POST /v1/static-addresses— يسجّل العنوان الثابت لتحصيل الرموز مثل USDT (عنوان واحد لكل شبكة وأصل). - اللوحة ← الإعدادات أو
POST /v1/sweep-addresses— يسجّل المحفظة الرئيسية (عنوان التجميع) التي تُجمَّع فيها تحصيلات العملات الأصلية مثل TRX وBNB وGRAM. POST /v1/webhooks— يسجّل عنوان URL الذي نُشعِر عليه نظامك فور اكتمال الدفع.
توقيع الطلبات (HMAC)
تُوقَّع جميع طلبات HTTP بمعيار HMAC-SHA256. ويُحتسب التوقيع على جسم الطلب الخام (raw bytes)، فيبقى صالحاً حتى لو تغيّر ترتيب مفاتيح JSON.
METHOD \n PATH \n TIMESTAMP \n NONCE \n SHA256(raw_body)- X-Api-Key
- معرّف مفتاح الواجهة (pk_…)
- X-Timestamp
- طابعة زمنية Unix بالثواني (مع تسامح لساعة الخادم)
- X-Nonce
- سلسلة عشوائية فريدة (128 محرفاً كحد أقصى، تُستخدم مرة واحدة)
- X-Signature
- hex(hmac_sha256(secret, canonical))
يحمي الطلبَ مستويان: يجب أن تقع الطابعة الزمنية ضمن نطاق التسامح، وألا تُستخدم قيمة nonce إلا مرة واحدة. أما إعادة إرسال الطلب نفسه فتُرفض تلقائياً (HTTP 401).
X-Timestamp بالثواني بتوقيت Unix، ولا يتجاوز انحرافه عن وقت الخادم 300 ثانية. وX-Nonce فريد لكل طلب؛ ويُرفض أي nonce مستخدم لمدة 600 ثانية.
import hashlib, hmac, os, time, json, urllib.request KEY_ID = os.environ["COINZEN_KEY_ID"]SECRET = os.environ["COINZEN_SECRET"]BASE = "https://coinzen.cerceyn.com" def request(method: str, path: str, payload: dict | None = None) -> bytes: body = json.dumps(payload).encode() if payload is not None else b"" ts = str(int(time.time())) nonce = os.urandom(16).hex() canonical = "\n".join( [method.upper(), path, ts, nonce, hashlib.sha256(body).hexdigest()] ) signature = hmac.new(SECRET.encode(), canonical.encode(), hashlib.sha256).hexdigest() req = urllib.request.Request( BASE + path, data=body or None, method=method.upper(), headers={ "X-Api-Key": KEY_ID, "X-Timestamp": ts, "X-Nonce": nonce, "X-Signature": signature, "Content-Type": "application/json", }, ) with urllib.request.urlopen(req) as resp: return resp.read()نطاقات الصلاحية
لا يستطيع المفتاح استدعاء سوى النقاط التي تغطيها نطاقاته؛ ويعيد النظام 403 عند نقص النطاق. تُختار النطاقات عند إنشاء المفتاح من اللوحة.
| النطاق | ما يتيحه |
|---|---|
| invoices:read | قراءة الفواتير والأرصدة والأسعار وسجلات رصيد العمولة. |
| invoices:write | إنشاء الفواتير وإلغاؤها، وربط الإيداعات، وتغيير إعدادات رصيد العمولة. |
| webhooks:read | قراءة تسجيلات Webhook وسجل الإرسال. |
| webhooks:write | تسجيل Webhook وإيقافه، وإعادة إدراج الإرسال في الطابور. |
| addresses:write | إدارة العناوين الثابتة وعناوين التجميع. ويتطلب السرد هذا النطاق أيضًا. |
addresses:read. تفرض مسارات العناوين النطاق على مستوى الموجّه، لذا يتطلب السرد أيضًا addresses:write.حدود المعدل
تُطبَّق الحدود لكل تاجر ضمن نافذة منزلقة مدتها دقيقة. وعند تجاوزها يعود 429 مع ترويسة Retry-After.
- النقاط العامة — 120 طلب / دقيقة
- إنشاء الفاتورة — 30 طلب / دقيقة
منع التكرار (Idempotency)
ترويسة Idempotency-Key إلزامية في POST /v1/invoices. وبدونها يُرفض الطلب برمز 422. أنشئ قيمة جديدة وفريدة لكل طلب.
Idempotency-Key: 7f3c1e9a4b8d42f0a1c6e5b3d9074a2eإعادة إرسال المحتوى نفسه بالمفتاح نفسه لا تُنشئ فاتورة ثانية: يُعاد الرد الأول كما هو برمز حالته الأصلي. يمكنك إعادة المحاولة بأمان بعد انقطاع الاتصال.
409 idempotency_key_reused. تُحسب البصمة من أسلوب الطلب ومساره ومحتواه الخام — وتغيير ترتيب مفاتيح JSON يُعدّ محتوى مختلفًا.دورة حياة الفاتورة
يبدأ إنشاء الفاتورة آلة حالات. فإن لم تُحدَّد الشبكة والأصل، تبدأ الفاتورة بحالة selecting. وحين يختار العميل الشبكة والعملة في صفحة الدفع، تنتقل إلى pending ويُخصَّص لها عنوان دفع.
selecting→pending,expired,cancelledpending→confirming,partially_paid,expired,cancelledconfirming→paid,overpaid,failedpaid⇄overpaid— إذا أرسل العميل تحويلاً إضافياً على فاتورة مدفوعة، يُحدَّث المبلغ تلقائياً.
الحالات paid وoverpaid وexpired وcancelled وfailed نهائية. وعند حدوث إعادة تنظيم على السلسلة أو دفعة متأخرة، يحدّث النظام الحالة تلقائياً ويُبلغ نظامك عبر إشعار Webhook.
amount_exact بقيمة true، على العميل تحويل المبلغ الصافي المحدَّد تماماً، كي تتم المطابقة فوراً ودون لبس.الدفع برصيد
إن كنت تبيع رصيدًا، فالمبلغ الثابت نموذج غير مناسب: يجبر الدافع 5.188 إلى 5 فتبقى الفاتورة ناقصة. افتح الفاتورة بالخيار balance_payment: true فيُغلقها المبلغ الواصل — المبلغ المعروض اقتراح فقط، وصفحة الدفع تُبلّغ الدافع بذلك صراحةً.
احتسب الإضافة من received_amount في الويب هوك ومن received_fiat_amount المحسوب بالسعر المثبَّت، لا من fiat_amount. فإن طلبت الفاتورة 250 ليرة ووصل 5 USDT، فالمضاف هو قيمة هذه الـ5. وتُحتسب العمولة كذلك على المبلغ الواصل.
partially_paid. وتغيير الإعداد لاحقًا لا يمسّ الفواتير القائمة.في تحصيل التوكن يكون العنوان مشتركًا، والذي يربط الدفعة بالفاتورة هو المبلغ. فإن كانت عدّة فواتير رصيد مفتوحة في الوقت نفسه على الشبكة/الأصل ذاته، تعذّر نسب دفعة مُقرَّبة؛ ولا نخمّن — تنزل الدفعة في الإيداعات غير المطابَقة ويُرسَل الويب هوك deposit.unmatched. تربطها أنت بالفاتورة الصحيحة من اللوحة. لا يُستخدم مع فاتورة تعبئة الرصيد.
إشعارات Webhook
يُرسَل كل تغيّر في حالة الدفع فوراً إلى نقطة Webhook المسجّلة لديك. ويُوقَّع كل إشعار بمعيار HMAC-SHA256، فتتحقّق بثقة من سلامة البيانات ومن أنها صادرة عن Coinzen.
تُمنح قيمة Webhook Secret المستخدمة في التحقق (whsec_…) مرة واحدة عند تسجيل نقطة Webhook: من صفحة Webhook في لوحة التحكم، أو في حقل secret ضمن استجابة POST /v1/webhooks. وهي ليست قيمة Secret الخاصة بمفتاح API؛ فتلك توقّع الطلبات التي ترسلونها أنتم فقط. وإذا سجّلتم العنوان نفسه من جديد مُنحتم Webhook Secret جديدة وعُطّلت النقطة القديمة.
- X-Coinzen-Signature
- t=<unix>,v1=<hex hmac_sha256(secret, "<t>.<raw_body>")>
- X-Coinzen-Delivery
- معرّف التسليم الفريد (UUID)
- X-Coinzen-Event
- اسم الحدث المُطلَق (مثل invoice.paid)
import hashlib, hmac, time def verify(raw_body: bytes, header: str, secret: str, tolerance: int = 300) -> bool: """X-Coinzen-Signature: t=<unix>,v1=<hex>""" parts = dict(p.split("=", 1) for p in header.split(",")) t, v1 = parts["t"], parts["v1"] if abs(time.time() - int(t)) > tolerance: return False expected = hmac.new( secret.encode(), f"{t}.".encode() + raw_body, hashlib.sha256 ).hexdigest() return hmac.compare_digest(expected, v1)الأحداث المدعومة
invoice.pendinginvoice.confirminginvoice.partially_paidinvoice.paidinvoice.overpaidinvoice.expiredinvoice.cancelledpayment.reverteddeposit.unmatchedcredit.lowcredit.exhausted
آلية إعادة المحاولة
تجري المحاولة الأولى فور اكتمال الدفع. فإن لم يستجب خادمك بـ 200 OK، تُعاد المحاولة تلقائياً على سبع مراحل بفواصل 30 · 120 · 600 · 3600 · 21600 · 86400 ثانية. وإن أخفقت المحاولات جميعها، ينتقل السجل إلى حالة dead_letter ويمكن إعادته إلى الطابور بنقرة واحدة من لوحة التحكم.
عقد الأخطاء
تعود جميع الأخطاء بالبنية نفسها. حقل code ثابت ومخصص للمطابقة البرمجية، أما message فموجّه للقراءة البشرية وقد يتغيّر.
{ "error": { "code": "conflict", "subcode": "order_id_exists", "message": "bu order_id zaten kullanılmış", "details": { "order_id": "A-1042" } }}يضيّق حقل subcode رمز الفئة: order_id_exists بدلًا من conflict المجرّد. اقرأ subcode أولًا ثم عد إلى code عند غيابه؛ فالعقد يتوسّع ولا يضيق.
عند فشل الطلب في التحقق من البنية (حقل ناقص، نوع خاطئ، قيمة خارج النطاق) تكون قيمة code هي validation_error، ويربط details مسار كل حقل بنوع الخطأ: {"body.url": "url_scheme"}. النوع مخصّص للمطابقة برمجيًا (مثل missing وgreater_than)، أما الشرح ففي message.
| الرمز | HTTP | المعنى |
|---|---|---|
| validation_error | 422 | هناك خلل فيما أدخلته. يرجى مراجعة الحقول. |
| unauthenticated | 401 | البريد الإلكتروني أو كلمة المرور غير صحيحة. |
| forbidden | 403 | لا تملك صلاحية تنفيذ هذه العملية. |
| not_found | 404 | لم يُعثر على السجل المطلوب. |
| conflict | 409 | هذا السجل موجود بالفعل. |
| insufficient_credit | 402 | رصيد العمولة لديك غير كافٍ. أضف رصيداً من لوحة التحكم. |
| rate_limited | 429 | عدد الطلبات كبير جداً. انتظر قليلاً ثم أعد المحاولة. |
| unsupported_asset | 400 | هذا الاقتران بين الشبكة والأصل غير مدعوم. |
| upstream_error | 502 | تتعذّر حالياً الاتصال بخدمة سلسلة الكتل. أعد المحاولة بعد قليل. |
| stale_rate | 503 | انتهت صلاحية عرض السعر. اطلب عرضاً جديداً. |
| amount_space_exhausted | 503 | لم يبقَ مبلغ مميّز لهذا العنوان. أعد المحاولة بعد قليل. |
{"detail":"Not Found"} وتعود عندما لا يطابق أي مسار — أي أن المسار مكتوب خطأ؛ و{"detail":"Method Not Allowed"} وتعود عندما لا يدعم المسار طريقة HTTP المستخدمة؛ وخطأ الخادم غير المتوقع الذي يأتي برمز 500 ومحتوى ليس JSON.العمولة والرصيد
لا تقتطع Coinzen عمولتها من دفعة العميل إطلاقاً. فمدفوعات USDT وغيرها تصل إلى عنوانك مباشرة، ومفاتيح تلك المحفظة بحوزتك وحدك. أما رسوم الخدمة فتُخصم من رصيد العمولة الذي تشحنه مسبقاً، فيبقى تحصيلك كاملاً.
- السعر المعتاد 1%. وتحصل الحسابات الجديدة على 0.1% خلال أول 45 يوماً. ويمكنك الاطّلاع على سعرك الحالي في حقل
fee_bpsضمن استجابةGET /v1/credit(بنقاط الأساس: 10 = 0.1%، 100 = 1%). - لا تُحتسب العمولة إلا على الفواتير المكتملة بنجاح (
paidوoverpaid). - لا تُؤخذ أي عمولة على الفواتير الملغاة أو المنتهية أو الناقصة.
- عند نفاد رصيدك، تستمر معالجة الفواتير المفتوحة كالمعتاد؛ ولا يتلقّى تنبيه الرصيد (HTTP
402) سوى طلبات إنشاء الفواتير الجديدة.
نموذج الخصم على خطوتين
حين تُدفع الفاتورة، يُفتح قيد العمولة فوراً بحالة pending كي لا تتباطأ متابعة السلسلة، ويُعالَج دون الاعتماد على أي خدمة خارجية. ثم يجري تحويل سعر الصرف في الخلفية ويُخصم المبلغ الصافي من رصيدك.
وإن سُحبت الدفعة بسبب إعادة تنظيم على السلسلة، يُلغى خصم العمولة فوراً؛ وإن كان قد خُصم، يُعاد إلى رصيدك بقيد reversal.
شحن الرصيد
يمنحك استدعاء POST /v1/credit/deposit-addresses عنوان شحن USDT دائماً خاصاً بك. ويُضاف ما ترسله إلى هذا العنوان إلى رصيدك فور تأكيده على السلسلة — دون موافقة يدوية ودون انتظار.
التعبئة التلقائية
عند تفعيل هذه الخاصية، لا تتوقّف مبيعات متجرك حتى لو بلغ رصيدك صفراً. إذ تُحوَّل حصيلة فاتورتك الصغيرة التالية إلى رصيدك، فتستمر الخدمة دون انقطاع.
- لا تُؤخذ عمولة إضافية على الفاتورة المحوَّلة إلى الرصيد.
- يسري حد أعلى حمايةً لك (25 دولاراً افتراضياً). أما الفواتير التي تتجاوز الحد فلا تُحوَّل، فلا تتعرّض طلباتك الكبيرة للمخاطرة.
- يمكنك تفعيلها أو إيقافها وتحديد حدّك الأعلى في أي وقت عبر
PUT /v1/credit/autoأو من لوحة التحكم.
تنبيهات الرصيد
حين ينزل رصيدك دون العتبة الحرجة يُطلَق حدث credit.low، وعند نفاده يُطلَق credit.exhausted، فتعلم بالأمر مسبقاً.
الشبكات والأصول المدعومة
يلخّص الجدول التالي سجلّ الشبكات الحيّة. وللحصول على القائمة اللحظية، استخدم نقطة GET /v1/networks.
| الشبكة | الأصل | الخانات العشرية | نموذج التحصيل | عنوان العقد |
|---|---|---|---|---|
| TRON | TRX | 6 | عنوان ديناميكي لكل فاتورة | عملة أصلية |
| TRON | USDT | 6 | عنوان ثابت + مبلغ فريد | TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t |
| BSC | BNB | 18 | عنوان ديناميكي لكل فاتورة | عملة أصلية |
| BSC | USDT | 18 | عنوان ثابت + مبلغ فريد | 0x55d398326f99059fF775485246999027B3197955 |
| BSC | USDC | 18 | عنوان ثابت + مبلغ فريد | 0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d |
| TON | GRAM | 9 | عنوان ديناميكي لكل فاتورة | عملة أصلية |
| TON | USDT | 6 | عنوان ثابت + مبلغ فريد | EQCxE6mUtQJKFnGfaROTKOt1lZbDiiX1kCixRv7Nw2Id_sDs |
| Ethereum | USDT | 6 | عنوان ثابت + مبلغ فريد | 0xdAC17F958D2ee523a2206206994597C13D831ec7 |
| Ethereum | USDC | 6 | عنوان ثابت + مبلغ فريد | 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 |
| Solana | SOL | 9 | عنوان ديناميكي لكل فاتورة | عملة أصلية |
| Solana | USDT | 6 | عنوان ثابت + مبلغ فريد | Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB |
| Solana | USDC | 6 | عنوان ثابت + مبلغ فريد | EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v |
نقاط الواجهة البرمجية
| الطريقة | المسار | الوظيفة | نطاق الصلاحية |
|---|---|---|---|
| GET | /healthz | فحص سلامة الخدمة | public |
| GET | /readyz | حالة التبعيات والجاهزية | public |
| GET | /v1/networks | الشبكات والأصول المدعومة | public |
| POST | /v1/invoices | إنشاء فاتورة دفع | invoices:write |
| GET | /v1/invoices | سرد الفواتير (مع ترقيم الصفحات) | invoices:read |
| GET | /v1/invoices/{invoice_id} | جلب تفاصيل الفاتورة | invoices:read |
| POST | /v1/invoices/{invoice_id}/cancel | إلغاء الفاتورة | invoices:write |
| GET | /v1/rates | الحصول على عرض سعر قابل للتثبيت | invoices:read |
| GET | /v1/balances | أرصدة المحافظ بحسب الشبكة والأصل | invoices:read |
| GET | /v1/deposits/unmatched | سرد التحويلات الواردة غير المطابَقة | invoices:read |
| POST | /v1/deposits/{deposit_id}/attach | ربط تحويل وارد بفاتورة يدوياً | invoices:write |
| POST | /v1/static-addresses | تسجيل محفظة تحصيل ثابتة | addresses:write |
| GET | /v1/static-addresses | سرد العناوين الثابتة المسجّلة | addresses:write |
| DELETE | /v1/static-addresses/{address_id} | يحرّر العنوان الثابت. يُرفض الطلب ما دام هناك حجز مبلغ معلّق على العنوان. | addresses:write |
| POST | /v1/sweep-addresses | تسجيل محفظة تجميع للعملات الأصلية | addresses:write |
| GET | /v1/sweep-addresses | يسرد عناوين التجميع المُعرّفة لديك. | addresses:write |
| DELETE | /v1/sweep-addresses/{address_id} | يوقف تفعيل عنوان تجميع. | addresses:write |
| GET | /v1/credit | رصيد العمولة الحالي | invoices:read |
| GET | /v1/credit/entries | حركات الرصيد وسجلّ العمليات | invoices:read |
| GET | /v1/credit/deposit-addresses | يسرد عناوين شحن رصيد العمولة الخاصة بك. | invoices:read |
| POST | /v1/credit/deposit-addresses | الحصول على عنوان شحن الرصيد | invoices:write |
| PUT | /v1/credit/auto | تحديث إعداد التعبئة التلقائية | invoices:write |
| POST | /v1/webhooks | تسجيل نقطة Webhook | webhooks:write |
| GET | /v1/webhooks | يسرد نقاط Webhook المسجّلة لديك. | webhooks:read |
| DELETE | /v1/webhooks/{webhook_id} | يوقف تفعيل نقطة Webhook. تبقى سجلات الإرسال السابقة ويتوقف الإرسال الجديد. | webhooks:write |
| GET | /v1/webhooks/deliveries | سجلّ الإشعارات والتسليم | webhooks:read |
| POST | /v1/webhooks/deliveries/{delivery_id}/replay | إعادة إرسال إشعار فاشل | webhooks:write |
GET /openapi.json. ولا توجد واجهة تجربة تفاعلية: إذ يُحسب التوقيع لكل طلب على حدة، فالاستدعاءات من المتصفح لن تعيد سوى 401.بنية الطلبات
في ما يلي بنية الطلبات للنقاط التي تستدعيها في اليوم الأول. أما البنية الكاملة لكل النقاط فتُنشر بصيغة يقرأها الحاسوب على GET /openapi.json — استوردها إلى Postman أو ولّد منها عميلًا.
| الحقل | النوع | إلزامي | القيد | الوصف |
|---|---|---|---|---|
| network | string | نعم | tron | bsc | ethereum | ton | solana | معرّف الشبكة. |
| asset | string | نعم | 2–16 | رمز الأصل. يحوّله الخادم إلى أحرف كبيرة. |
| address | string | نعم | 20–128 | عنوان محفظتك. يُتحقق من صيغته وفق الشبكة. |
| الحقل | النوع | إلزامي | القيد | الوصف |
|---|---|---|---|---|
| network | string | نعم | tron | bsc | ethereum | ton | solana | معرّف الشبكة. |
| address | string | نعم | 20–128 | عنوان محفظتك. يُتحقق من صيغته وفق الشبكة. |
| الحقل | النوع | إلزامي | القيد | الوصف |
|---|---|---|---|---|
| url | string | نعم | — | عنوان HTTPS الذي تُرسل إليه الإشعارات. |
| events | string[] | لا | — | الأحداث المشترك بها. اتركها فارغة للاشتراك في جميعها. |
| الحقل | النوع | إلزامي | القيد | الوصف |
|---|---|---|---|---|
| network | string | لا | tron | bsc | ethereum | ton | solana | معرّف الشبكة. |
| asset | string | لا | 2–16 | رمز الأصل. يحوّله الخادم إلى أحرف كبيرة. |
| allowed_assets | string[] | لا | ≤ 32 | الأصول المعروضة على الدافع: USDT (على كل الشبكات) أو tron:USDT (شبكة واحدة). |
| amount | decimal | لا | > 0 | مبلغ العملة الرقمية مباشرةً. لا يُجمع مع fiat_amount. |
| fiat_amount | decimal | لا | > 0 | المبلغ بالعملة الورقية؛ ويُثبَّت السعر عند فتح الفاتورة. |
| fiat_currency | string | لا | 3–8 | رمز العملة الورقية. إلزامي عند إعطاء fiat_amount. |
| order_id | string | لا | ≤ 128 | مرجع طلبك الخاص. يجب أن يكون فريدًا داخل حساب التاجر. |
| expires_in | integer | لا | 60–86400 | مدة صلاحية الفاتورة بالثواني. |
| callback_url | string | لا | — | عنوان الإشعار لهذه الفاتورة فقط؛ ويحلّ محل نقطتك المسجّلة. |
| return_url | string | لا | — | العنوان الذي يُوجَّه إليه الدافع بعد اكتمال الدفع. |
| locale | string | لا | — | لغة صفحة الدفع. وعند غيابها تُعتمد لغة متصفح الدافع. |
| balance_payment | boolean | لا | — | الدفع برصيد. القيمة الافتراضية false. عند تفعيله تكتمل الفاتورة حتى لو أرسل الدافع أقل أو أكثر من المعروض، ويبلّغ الويب هوك بالمبلغ الواصل. يأتي الحدّ الأدنى من إعدادات المتجر. لا يُستخدم مع فاتورة تعبئة الرصيد. |
| metadata | object | لا | — | كائن حر. يعود كما هو في الاستجابات وإشعارات Webhook. |
| الحقل | النوع | إلزامي | القيد | الوصف |
|---|---|---|---|---|
| enabled | boolean | نعم | — | هل الشحن التلقائي لرصيد العمولة مفعّل. |
| max_amount | decimal | لا | > 0 | الحد الأعلى لعملية شحن تلقائي واحدة. |
معاملات الاستعلام
| الحقل | النوع | إلزامي | القيد | الوصف |
|---|---|---|---|---|
| from | string | نعم | 2–16 | رمز الأصل المصدر، مثل USDT. |
| to | string | نعم | 3–8 | العملة الورقية الهدف، مثل TRY. |
| الحقل | النوع | إلزامي | القيد | الوصف |
|---|---|---|---|---|
| status | string | لا | — | حالة الفاتورة — الثوابت الواردة في قسم دورة الحياة أعلاه. |
| network | string | لا | tron | bsc | ethereum | ton | solana | معرّف الشبكة. |
| created_after | datetime | لا | — | المُنشأة بعد هذا التاريخ. |
| created_before | datetime | لا | — | المُنشأة قبل هذا التاريخ. |
| limit | integer | لا | 1–200 | أقصى عدد من السجلات المُعادة. |
| cursor | datetime | لا | — | مؤشّر الترقيم: السجلات الأقدم من هذا التاريخ. أعد إرسال next_cursor من الاستجابة. |
| الحقل | النوع | إلزامي | القيد | الوصف |
|---|---|---|---|---|
| invoice_id | uuid | لا | — | يُرشِّح النتائج إلى فاتورة واحدة. |
| status | string | لا | — | حالة الإرسال: pending أو succeeded أو dead_letter. |
| limit | integer | لا | 1–200 | أقصى عدد من السجلات المُعادة. |
| الحقل | النوع | إلزامي | القيد | الوصف |
|---|---|---|---|---|
| kind | string | لا | — | نوع القيد: topup أو fee أو reversal أو adjustment. |
| status | string | لا | — | حالة القيد: pending أو applied أو void. |
| invoice_id | uuid | لا | — | يُرشِّح النتائج إلى فاتورة واحدة. |
| limit | integer | لا | 1–200 | أقصى عدد من السجلات المُعادة. |
| cursor | datetime | لا | — | مؤشّر الترقيم: السجلات الأقدم من هذا التاريخ. أعد إرسال next_cursor من الاستجابة. |
| الحقل | النوع | إلزامي | القيد | الوصف |
|---|---|---|---|---|
| include_resolved | boolean | لا | — | تضمين الإيداعات التي جرى ربطها بالفعل. |
| limit | integer | لا | 1–500 | أقصى عدد من السجلات المُعادة. |
| الحقل | النوع | إلزامي | القيد | الوصف |
|---|---|---|---|---|
| include_inactive | boolean | لا | — | تضمين العناوين التي جرى تحريرها. |