كل معامل، والرد المباشر، وكل حالات النجاح والخطأ الموثّقة — على شاشة واحدة.
getNumber
V1
GET / POST
شراء رقم هاتف لخدمة/دولة محددة.
يقبل قيمًا مفصولة بفواصل — ميزة حصرية في Tiger SMS.
تُقبل لكن يجري تجاهلها حاليًا (لا توجد قاعدة تحقّق، وتُسقَط بصمت، ولا يُعاد أي خطأ): operator, phoneException, minPrice.
لا يُدعم التحديد التلقائي للدولة (مثل `country=any`): يجب أن يكون `country` رمزًا رقميًا للدولة — وأي دولة غير رقمية أو غير معروفة تُعيد BAD_COUNTRY.
في هذه الطريقة تُدعَم القوائم المفصولة بفواصل في providerIds/exceptProviderIds فقط. أما `service`/`country` في المستوى الأعلى فلا تقبل هنا قوائم مفصولة بفواصل — وهذه الإمكانية ستتوفّر قريبًا في طرق جلب الأسعار (getPrices/getFreePrices/getPricesV2/getPricesV3) فقط.
يتصرّف getNumberTest تمامًا مثل getNumber، لكنه الطريقة المُوثَّقة لتمرير activationType/testParams بشكل صريح.
هذا طلب حقيقي — فالاستدعاء الناجح قد يخصم من رصيدك أو يغيّر عملية تفعيل جارية.
يقبل قيمًا مفصولة بفواصل — ميزة حصرية في Tiger SMS.
يؤدي أي رمز service/country غير معروف أو محذوف إلى إرجاع BAD_SERVICE/BAD_COUNTRY. أما الرمز الصالح الذي لا يوجد له ببساطة أي خيار معروض لهذا الزوج فيعطي مع ذلك نتيجة فارغة (يُحذف المفتاح).
القوائم المفصولة بفواصل (عند تفعيلها): يُتحقَّق من صحة كل عنصر بالطريقة نفسها المتّبعة مع القيمة المفردة؛ وإذا لم يكن أيٌّ من الرموز المذكورة موجودًا، يُعاد BAD_SERVICE/BAD_COUNTRY.
cost doubles as the recommended maxPrice for getNumber: purchases are captured at the actual (usually lower) price while avoiding NO_NUMBERS/WRONG_MAX_PRICE when the cheapest bucket dries up. saleAveragePrice (getFreePrices/getPricesV2, getOffers prices.default/avg, getPricesV3) remains an alternative recommendation. Your personal contract price, when set, still overrides cost.
قائمة المزوّدين العامة (id/name/numbers_count/delivery_percent/number_lifetime، بدون السعر).
With both service and country set, the list is filtered to providers that actually serve that pair's price buckets — coherent with getPricesV3 and getNumber providerIds.
Price/count map with a per-provider price breakdown.
يقبل قيمًا مفصولة بفواصل — ميزة حصرية في Tiger SMS.
خلافًا لجميع طرق JSON الأخرى في هذه العائلة، يُعيد الخطأ الداخلي غير المتوقّع هنا استجابة BAD_ACTION النصّية العادية بدلًا من جسم JSON — وهذا مقصود حتى لا يتلقّى العميل الذي يحلّل JSON جسم JSON ناقص التكوين مطلقًا.
القوائم المفصولة بفواصل (قريبًا): تُفعَّل عندما يحتوي service أو country على فاصلة؛ ويجري التحقّق من كل عنصر بالطريقة نفسها المتّبعة مع القيمة المفردة، مع حدّ أقصى قدره 50 عنصرًا لكل قائمة و100 تركيبة country×service إجمالًا.
Combined price+stock showcase: default/avg/retail/min price, counts and the full price-bucket map, by service and country.
Requires the same price-bucket data as getFreePrices/getPricesV3 — when that data isn't available for this account, this method returns an empty `data: {}` rather than falling back to catalog prices.
There is no `counts.physical` field: our provider module does not currently expose a physical stock figure separate from `counts.total`, and this method does not invent one. It may be added later if that data becomes available.
Never exposes providers, cost, or purchase price — none of those exist in this response by design.
List of currently active activations for the key owner.
لا تُرجع خطأً أبدًا عند حدوث فشل غير متوقع (النهج نفسه المتّبع في getServicesList/getCountries) — بل تتراجع إلى قائمة فارغة `data: []` مع بقاء الحالة "success".
قيم activationStatus: 1=WAIT_CODE, 2=WAIT_ACCEPTING, 3=WAIT_NEXT_SMS, 6=OK, 7=REFUND, 8=CANCEL — هذا الترقيم خاص بنا وقد يختلف عن واجهات SMS API أخرى استخدمتها من قبل.
استقبل الرسائل النصية الواردة مباشرةً على نقطة نهاية HTTPS الخاصة بك فور وصولها، بدلًا من الاستعلام المتكرّر عبر getStatus/getStatusV2.
مثال على الحمولة (payload)
POSTapplication/json
يُرسَل طلب POST واحد لكل مقطع SMS مستلَم إلى عنوان URL الذي سجّلته. ولا تُعدّ الاستجابة مقبولة إلا إذا كانت HTTP 200؛ ولا تُتَّبع عمليات إعادة التوجيه.
activationId معرّف التفعيل، وهو نفس قيمة المعامل `id` المستخدَم في getStatus/getStatusV2.
service رمز الخدمة (بنمط sms_activate) الذي اشتُري الرقم من أجله.
code مقطع الرمز المستخرج من الرسالة النصية، وهو القيمة نفسها التي يعيدها getStatus بعد النقطتين (:).
text النص الكامل للرسالة النصية إذا وفّره المزوّد، وإلا فهو مطابق لـ `code`.
country رمز الدولة الرقمي (sms_activate_code)، أو null إذا لم يكن محددًا لدولة التفعيل.
receivedAt طابع زمني بصيغة ISO 8601 (UTC) لوقت استلام الرسالة النصية.
التحقق من التوقيع
X-SignatureHMAC-SHA256
قيمة HMAC-SHA256 بالنظام الست عشري للجسم الخام لطلب JSON، باستخدام مفتاح webhook السري الخاص بك. أعد حسابها بالطريقة نفسها على جانبك وقارِن القيمتين قبل الوثوق بالبيانات المرسَلة.
سياسة إعادة المحاولة
ما يصل إلى 3 محاولات إجمالًا: الفواصل بينها 5 ثوانٍ، ثم 30 ثانية، ثم 120 ثانية. وتنتهي مهلة كل محاولة بعد 10 ثوانٍ. وإذا فشلت جميع المحاولات، يُسقَط الحدث بصمت — فلا توجد قائمة انتظار للرسائل غير المُسلَّمة ولا تنبيهات.
يجب أن تكون نقطة النهاية لديك عنوان URL عامًّا عبر HTTPS؛ أما العناوين الخاصة وعناوين loopback و link-local وغيرها من العناوين الداخلية فتُرفَض عند حفظ العنوان وفي كل محاولة تسليم أيضًا (يُعاد تحليل DNS ويُثبَّت لكل طلب لمنع هجمات إعادة الربط DNS rebinding).
يُنشأ مفتاح التوقيع السري تلقائيًا مرة واحدة ويُحفظ لكل حساب على حدة؛ ويبقى المفتاح نفسه لجميع عمليات الإرسال إلى أن يغيّره فريق الدعم.