खाते और दस्तावेज़ तक पहुँच
अपने API खाते के स्वामित्व वाली पोर्टिंग परियोजना से कोई मौजूदा संलग्न दस्तावेज़ डाउनलोड करें। किसी अनुमत आईपी पते से HTTPS पर सक्षम API खाते का उपयोग करें। परियोजना हटाई हुई नहीं होनी चाहिए। दस्तावेज़ की आईडी उसी परियोजना के भीतर खोजी जाती है; यह कोई वैश्विक सार्वजनिक डाउनलोड लिंक नहीं है।
दस्तावेज़ की पहचान करें
परियोजना के विवरण वाला उत्तर पढ़ें और उसकी इस सूची की किसी प्रविष्टि का उपयोग करें: uploads। प्रविष्टि में ये विवरण होते हैं: संख्यात्मक id, मूल फ़ाइल का नाम, संग्रहित एक्सटेंशन और सापेक्ष download_url। परियोजना का uniqueid और उस अपलोड की आईडी उपयोग करें, परियोजना की संख्यात्मक पंक्ति आईडी या किसी फ़ोन नंबर की पंक्ति आईडी नहीं।
लौटाए गए सापेक्ष यूआरएल को केवल अपने कॉन्फ़िगर किए हुए, विश्वसनीय API होस्ट के आधार पर पूर्ण पता बनाएँ। डाउनलोड के लिए उसी खाते का प्रमाणीकरण आवश्यक है; दस्तावेज़ का मेटाडेटा बिना प्रमाणीकरण के पहुँच नहीं देता।
अनुरोध भेजें और उत्तर सहेजें
इन दोनों में मान सेट करें: PROJECT_ID और DOCUMENT_ID। ये मान आपके खाते की परियोजना से होने चाहिए। परियोजना की आईडी को यूआरएल-एन्कोड करें। यह उदाहरण बाइट और उत्तर के हेडर अलग-अलग सहेजता है तथा संलग्न दस्तावेज़ के फ़ाइल नाम पर भरोसा करने के बजाय आउटपुट के लिए एक निश्चित स्थानीय नाम उपयोग करता है।
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 स्थिति, दोनों पढ़ें। जो रिकॉर्ड मौजूद है लेकिन जिसमें उपयोगी संग्रहित बाइट नहीं हैं, उसके लिए इस हैंडलर में अलग से कोई विश्वसनीय न-मिलने वाला उत्तर नहीं है।
समीक्षित एंडपॉइंट एक संलग्न दस्तावेज़ पढ़ता है। यह दस्तावेज़ अपलोड, संशोधित या हटाता नहीं है, पोर्टिंग अनुरोध जमा नहीं करता और खाते से राशि नहीं काटता। पोर्टिंग के संलग्न दस्तावेज़ों में पहचान, बिलिंग या प्राधिकरण संबंधी जानकारी हो सकती है: इन्हें केवल खाते की अधिकृत कार्यप्रक्रियाओं में रखें और सार्वजनिक लॉग, विश्लेषण प्रणालियों तथा दस्तावेज़ीकरण के स्क्रीनशॉट में शामिल न करें।