アカウントと文書へのアクセス
ご利用の API アカウントが所有する番号ポータビリティプロジェクトから、既存の添付ファイルをダウンロードします。許可された IP アドレスから、有効な API アカウントを使用して HTTPS で接続してください。プロジェクトが削除されていないことが必要です。文書 ID はそのプロジェクト内で検索されます。どこからでも公開アクセスできるダウンロードリンクではありません。
文書を特定する
プロジェクト詳細のレスポンスを確認し、次のリスト内のエントリを使用してください:uploads。各エントリには、数値の id、元のファイル名、保存されている拡張子、および相対 URL である download_url が含まれます。プロジェクトの uniqueid と、そのアップロード ID を使用してください。プロジェクトの数値行 ID や、電話番号の行 ID は使用しないでください。
返された相対 URL の解決には、設定済みの信頼できる API ホストだけを使用してください。ダウンロードにも同じアカウント認証が必要です。文書のメタデータがあっても、認証なしでアクセスできるようにはなりません。
リクエストを送信してレスポンスを保存する
次の変数を設定してください:PROJECT_ID と DOCUMENT_ID。値には、ご利用のアカウントのプロジェクトの値を指定します。プロジェクト 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 アップロード経路と、レビュー済みのポータルおよび従来のアップロード書き込み処理は、文書のバイト列をエスケープして保存します。このダウンロード処理では、そのエスケープを元に戻します。実際のハンドラーを使用したオフラインテストでは、この保存形式のすべてのバイト値と、文字としてのバックスラッシュが保持されています。
これは、過去のすべてのレコードや外部からインポートされたすべてのレコードについて保証するものではありません。ハンドラーは常に保存された BLOB をデコードし、想定されるエスケープを行わずにレコードがインポートされたかどうかは検出しません。また、レコードに保存済みの BLOB がない場合も、ファイルパスへのフォールバックは行いません。このようなレコードでは、バイト列が変化したり空になったりする可能性があります。顧客の文書を変更したり、メタデータがあることをファイルの取得可能性の証拠とみなしたりせず、結果を確認し、問題のある添付ファイルの調査をサポートに依頼してください。
現在のポータルは、まずこの API ルートを使用し、それに加えてローカルでのフォールバック処理も行います。ポータルでダウンロードに成功しても、すべての従来のレコードをこの API から直接ダウンロードできることの証明にはなりません。
エラーと処理の影響
プロジェクトが存在しない、削除されている、またはご利用のアカウントの所有ではない場合は、プロジェクトが見つからないことを示すメッセージとともに API コード 404 が返されます。所有するプロジェクト内に該当するアップロードがない場合は、文書が見つからないことを示すメッセージとともに API コード 404 が返されます。API のエラーボディと HTTP ステータスの両方を確認してください。レコードが存在していても、利用可能な保存バイト列がない場合、このハンドラーには、その状態を確実に示す専用の「見つからない」レスポンスはありません。
レビュー済みのこのエンドポイントは、添付ファイルを読み取ります。文書のアップロード、変更、削除、番号ポータビリティ申請の送信、またはアカウントからの料金の引き落としは行いません。番号ポータビリティの添付ファイルには、本人確認、請求、または権限付与に関する情報が含まれる場合があります。権限が認められたアカウントの業務フロー内でのみ扱い、公開ログ、分析データ、およびドキュメントのスクリーンショットには含めないでください。