অ্যাকাউন্ট ও নথিতে প্রবেশাধিকার
আপনার 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 স্ট্যাটাস দুটোই পড়ুন। কোনো রেকর্ড বিদ্যমান থাকলেও তাতে ব্যবহারযোগ্য সংরক্ষিত বাইট না থাকলে এই হ্যান্ডলারে তার জন্য নির্দিষ্ট ও নির্ভরযোগ্য ‘পাওয়া যায়নি’ প্রতিক্রিয়া নেই।
পর্যালোচিত এন্ডপয়েন্ট একটি সংযুক্তি পড়ে। এটি কোনো নথি আপলোড, পরিবর্তন বা মুছে ফেলে না, নম্বর পোর্টিংয়ের অনুরোধ জমা দেয় না এবং অ্যাকাউন্ট থেকে অর্থ কাটে না। নম্বর পোর্টিংয়ের সংযুক্তিতে পরিচয়, বিলিং বা অনুমোদনসংক্রান্ত তথ্য থাকতে পারে: এগুলো শুধু অনুমোদিত অ্যাকাউন্টের কার্যপ্রবাহের মধ্যে রাখুন এবং সর্বজনীন লগ, অ্যানালিটিক্স ও ডকুমেন্টেশনের স্ক্রিনশটে রাখবেন না।