開発者

GET/v3/lnp/project/{uniqueid}/document/{documentId}

番号ポータビリティプロジェクトの添付ファイルをダウンロードする

所有するプロジェクトの文書バイト列をダウンロードし、従来の保存形式との互換性を確認します。

このページの内容
  1. アカウントと文書へのアクセス
  2. 文書を特定する
  3. リクエストを送信してレスポンスを保存する
  4. バイナリレスポンスとヘッダー
  5. ダウンロードしたファイルを確認する
  6. 従来の保存形式との互換性
  7. エラーと処理の影響

アカウントと文書へのアクセス

ご利用の 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 を送信します。このヘッダーが規格に従ってエンコードされていることや、安全なローカルファイルパスであることは保証されません。保存先のファイル名はご自身で指定してください。

拡張子に基づくレスポンスの MIME タイプ
保存されている拡張子Content-Type
pdfapplication/pdf
pngimage/png
jpg, jpegimage/jpeg
docapplication/msword
その他の値application/octet-stream

拡張子の照合では大文字と小文字を区別しません。MIME タイプは保存されている拡張子に基づいて選択されます。内容の検査に基づくものではなく、文書が有効であることを保証するものでもありません。

ダウンロードしたファイルを確認する

  1. HTTP ステータスとレスポンスヘッダーの両方を確認してください。認証エラーや検索エラーの場合、ファイルではなく JSON 形式の API レスポンスが返ることがあります。ボディが空でないことや出力ファイルが保存されたことだけで、PDF のダウンロードに成功したと判断しないでください。
  2. ボディが JSON 形式のエラーの場合は、次の項目を確認してください:status.code と status.msg。エラー出力は、取得する文書とは別に保管してください。
  3. 取得したファイルが空でなく、想定した種類のファイルとして開けることを確認してください。元のファイルを保管している場合は、コピーを信頼して使用する前にチェックサムを比較してください。
  4. 取得結果が空、無効、または元のファイルと異なる場合は、作業を中止し、保存されている添付ファイルの確認をサポートに依頼してください。ダウンロードを繰り返しても、ストレージは修復されません。

従来の保存形式との互換性

現在の API アップロード経路と、レビュー済みのポータルおよび従来のアップロード書き込み処理は、文書のバイト列をエスケープして保存します。このダウンロード処理では、そのエスケープを元に戻します。実際のハンドラーを使用したオフラインテストでは、この保存形式のすべてのバイト値と、文字としてのバックスラッシュが保持されています。

これは、過去のすべてのレコードや外部からインポートされたすべてのレコードについて保証するものではありません。ハンドラーは常に保存された BLOB をデコードし、想定されるエスケープを行わずにレコードがインポートされたかどうかは検出しません。また、レコードに保存済みの BLOB がない場合も、ファイルパスへのフォールバックは行いません。このようなレコードでは、バイト列が変化したり空になったりする可能性があります。顧客の文書を変更したり、メタデータがあることをファイルの取得可能性の証拠とみなしたりせず、結果を確認し、問題のある添付ファイルの調査をサポートに依頼してください。

現在のポータルは、まずこの API ルートを使用し、それに加えてローカルでのフォールバック処理も行います。ポータルでダウンロードに成功しても、すべての従来のレコードをこの API から直接ダウンロードできることの証明にはなりません。

エラーと処理の影響

プロジェクトが存在しない、削除されている、またはご利用のアカウントの所有ではない場合は、プロジェクトが見つからないことを示すメッセージとともに API コード 404 が返されます。所有するプロジェクト内に該当するアップロードがない場合は、文書が見つからないことを示すメッセージとともに API コード 404 が返されます。API のエラーボディと HTTP ステータスの両方を確認してください。レコードが存在していても、利用可能な保存バイト列がない場合、このハンドラーには、その状態を確実に示す専用の「見つからない」レスポンスはありません。

レビュー済みのこのエンドポイントは、添付ファイルを読み取ります。文書のアップロード、変更、削除、番号ポータビリティ申請の送信、またはアカウントからの料金の引き落としは行いません。番号ポータビリティの添付ファイルには、本人確認、請求、または権限付与に関する情報が含まれる場合があります。権限が認められたアカウントの業務フロー内でのみ扱い、公開ログ、分析データ、およびドキュメントのスクリーンショットには含めないでください。