الوصول إلى الحساب والمستند
نزّل مرفقًا موجودًا من مشروع نقل أرقام يملكه حساب API الخاص بك. استخدم حساب API مفعّلًا عبر HTTPS من عنوان IP مسموح به. يجب ألا يكون المشروع محذوفًا. يُبحث عن معرّف المستند داخل ذلك المشروع؛ فهو ليس رابط تنزيل عامًا متاحًا على مستوى النظام.
تحديد المستند
اقرأ استجابة تفاصيل المشروع واستخدم أحد عناصر قائمة uploads الخاصة به. يتضمن العنصر المعرّف العددي id واسم الملف الأصلي والامتداد المخزّن والعنوان النسبي download_url. استخدم معرّف المشروع uniqueid ومعرّف الملف المرفوع المذكور، وليس معرّف صف المشروع العددي أو معرّف صف رقم هاتف.
حوّل عنوان URL النسبي المُعاد إلى عنوان كامل باستخدام مضيف API الموثوق الذي أعددته فقط. يتطلب التنزيل مصادقة الحساب نفسها؛ ولا تمنح البيانات الوصفية للمستند حق الوصول دون مصادقة.
إرسال الطلب وحفظ الاستجابة
اضبط PROJECT_ID وDOCUMENT_ID على قيم مأخوذة من مشروع حسابك. رمّز معرّف المشروع لاستخدامه في عنوان URL. يحفظ هذا المثال البايتات وترويسات الاستجابة كلًا على حدة، باستخدام اسم ثابت لملف الإخراج المحلي بدلًا من الوثوق باسم ملف المرفق.
curl --silent --show-error --user "$API_USER:$API_PASSWORD" \
--dump-header document-headers.txt \
--output porting-document.bin \
"https://api.multitel.net/v3/lnp/project/$PROJECT_ID/document/$DOCUMENT_ID"يستخدم الطلب GET دون متن. ويقرأ مرفقًا واحدًا كاملًا، دون تقسيم إلى صفحات خاص بنقطة النهاية، ودون غلاف JSON أو عقد موثّق لتنزيل نطاقات من الملف.
الاستجابة الثنائية والترويسات
عند النجاح، يحتوي المتن على بايتات المرفق المخزّنة بعد خطوة فك ترميز التخزين القديم، وليس على base64 ولا على كائن استجابة JSON. ترسل الطريقة ترويسة Content-Disposition لمرفق باستخدام اسم الملف المخزّن بعد إزالة علامات الاقتباس المزدوجة منه. لا تضمن الترويسة ترميزًا مطابقًا للمعايير أو مسار ملف محليًا آمنًا؛ اختر بنفسك اسم ملف الوجهة.
| الامتداد المخزّن | Content-Type |
|---|---|
| application/pdf | |
| png | image/png |
| jpg, jpeg | image/jpeg |
| doc | application/msword |
| قيم أخرى | application/octet-stream |
لا تميّز مطابقة الامتداد بين الأحرف الكبيرة والصغيرة. يُختار نوع MIME استنادًا إلى الامتداد المخزّن، وليس إلى فحص المحتوى، ولا يضمن هذا الاختيار صلاحية المستند.
التحقق من الملف المنزّل
- افحص حالة HTTP وترويسات الاستجابة معًا. قد تؤدي أخطاء المصادقة أو البحث إلى إرجاع استجابة بصيغة JSON من API بدلًا من ملف. لا تعتبر كل متن غير فارغ أو كل ملف إخراج محفوظ دليلًا على نجاح تنزيل ملف PDF.
- إذا كان المتن يتضمن خطأ بصيغة JSON، فافحص
status.codeوstatus.msg. احتفظ بمخرجات الأخطاء منفصلة عن المستند المتوقع. - تحقق من أن الملف الناتج غير فارغ وأنه يُفتح بالنوع المتوقع. إذا كنت تحتفظ بالأصل، فقارن المجموع الاختباري للأصل بالمجموع الاختباري للنسخة قبل الاعتماد عليها.
- إذا كانت النتيجة فارغة أو غير صالحة أو تختلف عن الأصل، فتوقف واطلب من الدعم فحص المرفق المخزّن. لا يؤدي تكرار التنزيل إلى إصلاح التخزين.
التوافق مع التخزين القديم
يخزّن مسار الرفع الحالي عبر API ومكونات كتابة الملفات المرفوعة في البوابة والأنظمة القديمة التي تمت مراجعتها بايتات المستندات بعد تطبيق محارف الإفلات عليها. يعكس هذا التنزيل عملية الإفلات تلك. تحافظ اختبارات المعالج الفعلي دون اتصال على جميع قيم البايتات والشرطات المائلة العكسية الحرفية لهذا التنسيق من التخزين.
لا يشكّل ذلك ضمانًا لكل سجل تاريخي أو مستورد من مصدر خارجي. يفك المعالج دائمًا ترميز الكتلة الثنائية المخزّنة، ولا يكتشف ما إذا كان السجل قد استُورد دون تطبيق الإفلات المتوقع. كما أنه لا يلجأ إلى مسار ملف بديل عندما لا يحتوي السجل على كتلة ثنائية مخزّنة. قد تُنتج هذه السجلات بايتات متغيّرة أو نتيجة فارغة. تحقق من النتيجة واطلب من الدعم التحقيق في المرفق المتأثر بدلًا من تعديل مستند عميل أو افتراض أن بياناته الوصفية تثبت توافر الملف.
تستخدم البوابة الحالية مسار API هذا أولًا، ولديها آليات محلية إضافية للتعامل مع البدائل عند التعذر. لا يثبت نجاح التنزيل من البوابة إمكانية تنزيل كل سجل قديم مباشرة عبر API هذه.
الأخطاء والآثار
إذا كان المشروع غير موجود أو محذوفًا أو لا يملكه الحساب، تُرجع API الرمز 404 مع رسالة تفيد بعدم العثور على المشروع. وإذا كان الملف المرفوع غير موجود داخل مشروع يملكه الحساب، تُرجع API الرمز 404 مع رسالة تفيد بعدم العثور على المستند. اقرأ متون أخطاء API إلى جانب حالة HTTP. لا يوفر هذا المعالج استجابة مخصصة وموثوقة تفيد بعدم العثور على سجل موجود لكنه يفتقر إلى بايتات مخزّنة قابلة للاستخدام.
تقرأ نقطة النهاية التي تمت مراجعتها مرفقًا واحدًا. ولا ترفع مستندًا أو تعدّله أو تزيله، ولا تقدّم طلب نقل أرقام أو تخصم من الحساب. قد تحتوي مرفقات نقل الأرقام على معلومات تتعلق بالهوية أو الفوترة أو التفويض: احصر استخدامها في مسارات العمل المصرّح بها للحساب، ولا تُدرجها في السجلات العامة أو بيانات التحليلات أو لقطات الشاشة الخاصة بالتوثيق.