גישה לחשבון ולמסמך
הורידו קובץ מצורף קיים מפרויקט ניוד שבבעלות חשבון ה־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 והן את כותרות התשובה. שגיאות אימות או חיפוש עלולות להחזיר תשובת API בפורמט JSON במקום קובץ. אל תראו בכל גוף תשובה שאינו ריק או בכל קובץ פלט שנשמר הוכחה להורדת PDF מוצלחת.
- אם גוף התשובה הוא שגיאה בפורמט JSON, בדקו את
status.codeואתstatus.msg. שמרו את פלט השגיאה בנפרד מהמסמך הצפוי. - ודאו שהקובץ שהתקבל אינו ריק ושהוא נפתח כסוג הקובץ הצפוי. אם המקור שמור אצלכם, השוו את סכום הביקורת שלו לזה של העותק לפני שתסתמכו על העותק.
- אם התוצאה ריקה, לא תקינה או שונה מהמקור, עצרו ובקשו מהתמיכה לבדוק את הקובץ המצורף המאוחסן. הורדות חוזרות אינן מתקנות את האחסון.
תאימות לאחסון הישן
מסלול ההעלאה הנוכחי של ה־API ורכיבי כתיבת ההעלאות שנבדקו בפורטל ובמערכת הישנה מאחסנים את בתי המסמך לאחר החלת תווי מילוט. הורדה זו מבטלת את החלת תווי המילוט. בדיקות לא מקוונות של רכיב הטיפול בפועל משמרות את כל ערכי הבתים ואת הלוכסנים ההפוכים המילוליים בפורמט אחסון זה.
אין בכך הבטחה לגבי כל רשומה היסטורית או רשומה שיובאה ממקור חיצוני. רכיב הטיפול תמיד מפענח את גוש הנתונים הבינארי המאוחסן ואינו מזהה אם רשומה יובאה ללא תווי המילוט הצפויים. הוא גם אינו עובר לנתיב קובץ כחלופה כאשר אין ברשומה גוש נתונים בינארי מאוחסן. רשומות כאלה עלולות להפיק בתים ששונו או פלט בתים ריק. בדקו את התוצאה ובקשו מהתמיכה לחקור קובץ מצורף שנפגע, במקום לשנות מסמך של לקוח או להניח שהמטא־נתונים שלו מוכיחים שהקובץ זמין.
הפורטל הנוכחי משתמש תחילה בנתיב API זה, ויש בו גם טיפול מקומי נוסף בחלופות גיבוי. הורדה מוצלחת דרך הפורטל אינה מוכיחה שאפשר להוריד כל רשומה ישנה ישירות דרך API זה.
שגיאות והשפעות
פרויקט חסר, מחוק או שאינו בבעלות החשבון מחזיר קוד API 404 עם הודעה שהפרויקט לא נמצא. העלאה חסרה בתוך פרויקט שבבעלות החשבון מחזירה קוד API 404 עם הודעה שהמסמך לא נמצא. קראו את גופי שגיאות ה־API וגם את סטטוס ה־HTTP. לרשומה קיימת שאין בה בתים מאוחסנים שמישים אין ברכיב טיפול זה תשובת ״לא נמצא״ ייעודית ומהימנה.
נקודת הקצה שנבדקה קוראת קובץ מצורף אחד. היא אינה מעלה, משנה או מסירה מסמך, אינה מגישה בקשת ניוד ואינה מחייבת את החשבון. קבצים מצורפים לניוד עשויים להכיל מידע על זהות, חיוב או הרשאה: שמרו אותם במסגרת תהליכי העבודה המורשים של החשבון, ואל תכללו אותם ביומנים ציבוריים, בנתוני ניתוח שימוש או בצילומי מסך לתיעוד.