Skip to main content
Drives

アップロード URL の取得

Drive 内の対象ファイルのアップロード URL を取得します。

Drive は現在 Beta 機能です。API 定義、レスポンス構造、動作は変更される可能性があります。ドキュメントの更新を確認し、本番環境で使用する前に互換性を検証してください。
POST /api/v1/forward/drives/upload-url

リクエストヘッダー

Header必須説明
AuthorizationはいBearer <PAT or SAT>
Content-Typeはいapplication/json
Idempotency-Keyいいえ同じリクエストのリトライでは元の値を再利用します。冪等リトライを参照してください。

クエリパラメーター

パラメーター型必須説明
identity_idstringはい現在の認証範囲内の Identity ID。必ず 1 回だけ指定します。Identity レベルの SAT は、紐付けられた Identity のみを選択できます。

リクエストボディのパラメーター

パラメーター型必須説明
pathstringはい対象ファイルの相対パス。ルートは指定できません。同じパスへのアップロードは既存の内容を上書きします。
content_typestringいいえファイルの MIME タイプ。前後の空白除去後で最大 255 バイト、有効なメディアタイプで、制御文字を含まないこと。省略または空の場合、アップロードの Content-Type を制限しません。

パスのルール

  • projects/reports など、有効な UTF-8 の相対パスを使用します。/projects/reports や C:/projects/reports などの絶対パスは使用できません。
  • ディレクトリは / で区切ります。先頭・末尾・連続する /、バックスラッシュ、. および .. のパス要素は使用できません。
  • 先頭・末尾の空白、制御文字、%(projects%2Freports のようなエスケープ済み文字列を含む)は使用できません。

リクエスト例

curl --silent --show-error --fail-with-body -X POST \
  "https://api.qoder.com/api/v1/forward/drives/upload-url?identity_id=idn_xxx" \
  -H "Authorization: Bearer $QODER_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "path": "projects/readme.md",
    "content_type": "text/markdown"
  }'

レスポンス例

HTTP 200 OK
{
  "url": "https://storage.example.com/signed-upload-url",
  "method": "PUT",
  "headers": {
    "Content-Type": "text/markdown"
  },
  "expires_at": "2026-09-07T02:15:00Z"
}

レスポンスフィールド

フィールド型説明
urlstring署名付き URL。
methodstring常に PUT。
headersobject署名付き URL の使用時に必要なヘッダー。不要な場合は {}。
expires_atstringRFC 3339 形式の有効期限。発行後 15 分間有効です。

冪等リトライ

この API は任意で Idempotency-Key を受け付けます。リトライ時は認証範囲、Identity、キー、リクエストボディの元の内容を同一にしてください。再送レスポンスには Idempotency-Replayed: true が含まれます。署名付き URL を更新するにはヘッダーを省略するか新しい値を使用します。再送では有効期限は延長されません。

エラー

HTTPCode発生条件
400invalid_drive_path対象ファイルのパスまたは Identity 識別子の形式が無効です。
400invalid_content_typeMIME タイプが無効、255 バイト超過、または制御文字を含んでいます。
400—リクエストボディが有効な JSON でない、フィールドの型が誤っている、または不明なフィールドを含んでいます。
400invalid_identity_ididentity_id が未指定、空、または複数回指定されています。
401—認証情報が未指定または無効です。Service Account Key は事前に SAT と交換してください。
403identity_mismatchIdentity レベルの SAT で別の Identity を選択しています。
404identity_not_found現在の認証範囲内に Identity が見つかりません。
409idempotency_key_reused同じキーが異なるリクエストボディに使用されています。
409idempotency_key_in_progress同じキーのリクエストを処理中です。リトライ間隔は Retry-After を参照してください。
413—リクエストボディがサービスの制限を超えています。
500—内部サーバーエラー。
503drive_unavailableDrive のストレージ、署名、または依存機能が一時的に利用できません。
503idempotency_unavailable冪等性ストレージが一時的に利用できません。

HTTP エラーレスポンス

{
  "type": "error",
  "request_id": "req_xxx",
  "error": {
    "type": "invalid_request_error",
    "code": "invalid_drive_path",
    "message": "Invalid Drive path."
  }
}

レスポンスフィールド

フィールド型説明
typestring常に error。
request_idstringリクエスト追跡 ID。利用可能な場合に返されます。
error.typestringエラーの分類。例:invalid_request_error、authentication_error、permission_error、not_found_error、conflict_error、api_error。
error.codestring業務エラーコード。一部の共通エラーでは返されません。
error.messagestringエラーの説明。
冪等性エラーでは error オブジェクトのみが返され、リクエスト追跡 ID は error.request_id に格納されます。署名付き URL のストレージサービスエラーは別のレスポンス形式を使用します。 入口での認証エラーは、異なるレスポンス構造になる場合があります。

関連情報