本文へスキップ

アップロード ​

再開可能なアップロード:アップロードセッションを作成し、バイトを一括またはパートに分けて送信し、完了させて、その完了ジョブを追跡します。

このグループの操作と、それぞれのアクセスルール、再試行ルール、パラメーター、レスポンスです。すべてのリクエストにはキーを付けます:Authorization: Bearer <key>(「認証」を参照)。

操作 ​

受信済みパートの一覧表示 ​

GET HEAD /api/v1/repositories/{repository}/uploads/{id}/parts

アクセス: リポジトリ権限:upload.read; ファイルキー:write · 再試行: 再試行しても安全(読み取り)

partBytes(アップロードの作成時に確定したこのアップロードのパートサイズ。8MiBで、10,000パートを超えるファイルでは倍にします。短くなるのは最後のパートだけです)と、保存済みのパートをインデックス、サイズ、SHA-256とともに返します。中断したマルチパートアップロードを再開する前にこれを読み取り、不足しているパートだけをputUploadPartで送信してください。参照できるのはアップロードの作成者のみで、他の人には404になります。

パラメーター

名前場所型必須ルール
repositoryパスstringはい^[a-z0-9][a-z0-9_-]{0,63}$に一致
idパスstring (uuid)はい—

レスポンス 200

フィールド型必須ルール
partBytesintegerいいえ8388608~1073741824; 最後のパートを除き、すべてのパートがこのサイズです。
itemsobjectの配列いいえ—
items[].indexintegerはい0~9999
items[].sizeintegerはい1~1073741824
items[].sha256stringはいSHA-256:小文字の16進数字64桁

レスポンス: 200, 400, 401, 403, 404, 409, 422, 503, 507

例

bash
curl -X GET "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/uploads/$ID/parts" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

パートのアップロード ​

PUT /api/v1/repositories/{repository}/uploads/{id}/parts/{index}

アクセス: リポジトリ権限:upload.write; ファイルキー:write · 再試行: アップロードを再取得してから判断

リクエストボディを、保留中のマルチパートアップロードのパートindex(0から開始)として保存します。長さはpartBytes(listUploadPartsで取得)とちょうど同じでなければならず、最後のパートは残りのバイト数にします。X-Content-SHA256にはこれらのバイトの小文字16進表記のSHA-256を指定する必要があり、そうでない場合は422になります。パートは任意の順序で到着してかまいませんが、1つのアップロードが同時に処理できるリクエストは1つです(同時に送ると503 busy)。同じハッシュでパートを再送しても安全ですが、保存済みのインデックスに別のハッシュで送ると409 part_mismatchになります。すべてのパートが保存されたら、completeUploadまたはenqueueCompletionを呼び出してください。

パラメーター

名前場所型必須ルール
repositoryパスstringはい^[a-z0-9][a-z0-9_-]{0,63}$に一致
idパスstring (uuid)はい—
indexパスintegerはい0~9999
X-Content-SHA256ヘッダーstringはいSHA-256:小文字の16進数字64桁

リクエスト本文 (application/octet-stream)

レスポンス: 204, 400, 401, 403, 404, 405, 409, 422, 503, 507

例

bash
curl -X PUT "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/uploads/$ID/parts/$INDEX" \
  -H "Authorization: Bearer $ARKVORY_TOKEN" \
  -H "X-Content-SHA256: $X_CONTENT_SHA256" \
  -H "Content-Type: application/octet-stream" \
  --data-binary @file

アップロードのバックグラウンドでの完了 ​

POST /api/v1/repositories/{repository}/uploads/{id}/complete-async

アクセス: リポジトリ権限:upload.complete; ファイルキー:write · 再試行: ジョブを再取得してから判断

リクエスト内で処理する代わりに、保留中のアップロードの完了をワーカーサービス用にキューへ登録し、ジョブを202ですぐに返します。進行状況はgetCompletionJobで確認します。同じアップロードに対して再度呼び出すと同じジョブが返り、一時的な理由で失敗したジョブは再びキューに入ります。ジョブがキューに入っていても、アーティファクトが公開されたとは限りません。公開されたことを示すのはcompletedだけです。アップロードがもう保留中でない場合は409 upload_state、呼び出し元の未完了ジョブが100件、またはサーバー全体で10,000件に達している場合は507 queue_fullになります。

パラメーター

名前場所型必須ルール
repositoryパスstringはい^[a-z0-9][a-z0-9_-]{0,63}$に一致
idパスstring (uuid)はい—

レスポンス 202

フィールド型必須ルール
idstring (uuid)はい—
uploadIdstring (uuid)はい—
repositorystringはい—
ownerstringはい—
statusstringはい次のいずれか:queued, running, completed, failed
generationintegerはい0~2147483647
attemptsintegerはい0以上
credentialIdstring (uuid)いいえジョブを開始したマネージドキーのID(任意)。シークレットは決して含まれません。
errorCodestringはいnullも可

レスポンス: 202, 400, 401, 403, 404, 405, 409, 422, 503, 507

例

bash
curl -X POST "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/uploads/$ID/complete-async" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

完了ジョブの取得 ​

GET HEAD /api/v1/jobs/{id}

アクセス: リポジトリ権限:job.read; ファイルキー:write · 再試行: 再試行しても安全(読み取り)

enqueueCompletionでキューに登録された完了ジョブの状態を返します。状態はqueued、running、completed(アップロードが公開済み)、failed(errorCodeを伴う)のいずれかで、試行回数も含まれます。ワーカーは間隔を延ばしながら最大5回試行しますが、integrity_mismatchのようなエラーは即座に失敗します。参照できるのはジョブの作成者のみで、他の人には404になります。

パラメーター

名前場所型必須ルール
idパスstring (uuid)はい—

レスポンス 200

フィールド型必須ルール
idstring (uuid)はい—
uploadIdstring (uuid)はい—
repositorystringはい—
ownerstringはい—
statusstringはい次のいずれか:queued, running, completed, failed
generationintegerはい0~2147483647
attemptsintegerはい0以上
credentialIdstring (uuid)いいえジョブを開始したマネージドキーのID(任意)。シークレットは決して含まれません。
errorCodestringはいnullも可

レスポンス: 200, 400, 401, 403, 404, 409, 422, 503, 507

例

bash
curl -X GET "$ARKVORY_URL/api/v1/jobs/$ID" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

アップロードセッションの作成 ​

POST /api/v1/repositories/{repository}/uploads

アクセス: リポジトリ権限:upload.create; ファイルキー:write · 再試行: 同じIdempotency-Keyを使えば再試行しても安全

name、size(10進数の文字列)、sha256、および任意のlabelsとmetadataで記述される1つのファイルのために、アップロードを予約します。201とセッション(pending、有効期間は7日間)およびそのLocationを返します。Idempotency-Key(英字、数字、_.:-からなる1〜128文字)は必須です。同じキーで同じ記述を送ると同じセッションが返り、記述が異なる場合は409 idempotency_mismatchになります。サイズはリポジトリのクォータとサーバーの容量に対してただちに予約されます(507)。その後、putUploadContentでバイト列全体を送信するか、putUploadPartでパートごとに送信してcompleteUploadで完了します。

パラメーター

名前場所型必須ルール
repositoryパスstringはい^[a-z0-9][a-z0-9_-]{0,63}$に一致
Idempotency-Keyヘッダーstringはい128文字以内

リクエスト本文 (application/json)

フィールド型必須ルール
namestringはい1~240文字
sizestringはい10進数字で表した整数(文字列として送信)
sha256stringはいSHA-256:小文字の16進数字64桁
labelsstringの配列いいえ32個以内の要素; 各要素:64文字以内
metadatastringのマップいいえ32個以内のエントリ

レスポンス 201

フィールド型必須ルール
idstring (uuid)はい—
repositorystringはい—
statusstringはい次のいずれか:pending, available, cancelled
createdAtstring (date-time)はい—
expiresAtstring (date-time)はい—
descriptorobjectはい—
descriptor.namestringはい1~240文字
descriptor.sizestringはい10進数字で表した整数(文字列として送信)
descriptor.sha256stringはいSHA-256:小文字の16進数字64桁
descriptor.labelsstringの配列いいえ32個以内の要素; 各要素:64文字以内
descriptor.metadatastringのマップいいえ32個以内のエントリ

レスポンス: 201, 400, 401, 403, 404, 405, 409, 413, 415, 422, 503, 507

例

bash
curl -X POST "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/uploads" \
  -H "Authorization: Bearer $ARKVORY_TOKEN" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"name":"<name>","size":"1024","sha256":"<sha256: SHA-256>"}'

アップロードの取得 ​

GET HEAD /api/v1/repositories/{repository}/uploads/{id}

アクセス: リポジトリ権限:upload.read; ファイルキー:write · 再試行: 再試行しても安全(読み取り)

セッションを、status(pending、公開後はavailable、cancelled)、有効期限、宣言されたディスクリプターとともに返します。putUploadContentやcompleteUploadの応答が失われた場合は、まずこれを読み取ってください。availableであれば、アーティファクトは同じIDで公開されています。参照できるのはアップロードの作成者のみで、他の人には404になります。

パラメーター

名前場所型必須ルール
repositoryパスstringはい^[a-z0-9][a-z0-9_-]{0,63}$に一致
idパスstring (uuid)はい—

レスポンス 200

フィールド型必須ルール
idstring (uuid)はい—
repositorystringはい—
statusstringはい次のいずれか:pending, available, cancelled
createdAtstring (date-time)はい—
expiresAtstring (date-time)はい—
descriptorobjectはい—
descriptor.namestringはい1~240文字
descriptor.sizestringはい10進数字で表した整数(文字列として送信)
descriptor.sha256stringはいSHA-256:小文字の16進数字64桁
descriptor.labelsstringの配列いいえ32個以内の要素; 各要素:64文字以内
descriptor.metadatastringのマップいいえ32個以内のエントリ

レスポンス: 200, 400, 401, 403, 404, 409, 422, 503, 507

例

bash
curl -X GET "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/uploads/$ID" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

アップロードのキャンセル ​

DELETE /api/v1/repositories/{repository}/uploads/{id}

アクセス: リポジトリ権限:upload.cancel; ファイルキー:write · 再試行: アップロードを再取得してから判断

保留中のアップロードをキャンセルし、ステータスcancelledで返します。公開済みのアップロードはキャンセルできません(409 upload_state)。受信済みのバイトはただちに非表示になりますが、リポジトリの物理クリーンアップ(setCleanup、既定ではオフ)が猶予期間の経過後に削除するまで、クォータ上は予約されたままです。

パラメーター

名前場所型必須ルール
repositoryパスstringはい^[a-z0-9][a-z0-9_-]{0,63}$に一致
idパスstring (uuid)はい—

レスポンス 200

フィールド型必須ルール
idstring (uuid)はい—
repositorystringはい—
statusstringはい次のいずれか:pending, available, cancelled
createdAtstring (date-time)はい—
expiresAtstring (date-time)はい—
descriptorobjectはい—
descriptor.namestringはい1~240文字
descriptor.sizestringはい10進数字で表した整数(文字列として送信)
descriptor.sha256stringはいSHA-256:小文字の16進数字64桁
descriptor.labelsstringの配列いいえ32個以内の要素; 各要素:64文字以内
descriptor.metadatastringのマップいいえ32個以内のエントリ

レスポンス: 200, 400, 401, 403, 404, 405, 409, 422, 503, 507

例

bash
curl -X DELETE "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/uploads/$ID" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

ファイル全体を1回のリクエストでアップロード ​

PUT /api/v1/repositories/{repository}/uploads/{id}/content

アクセス: リポジトリ権限:upload.write, upload.complete; ファイルキー:write · 再試行: アップロードを再取得してから判断

リクエストボディをストリームとして、保留中のアップロードの完全な内容として受け取り、宣言されたサイズおよびSHA-256と照合して(不一致の場合は422)アーティファクトを公開します。応答は、ステータスavailableのアップロードです。リクエストが中断した場合、再開できるものは残りません。getUploadでアップロードを読み取ってから、ファイルを先頭のバイトから送り直してください。すでにパートがあるアップロードには使用できません(409 upload_state)。また、1回のリクエストはサーバーのアップロード期限(既定は30分)内に完了する必要があるため、大きなファイルはパートに分けて送信してください。

パラメーター

名前場所型必須ルール
repositoryパスstringはい^[a-z0-9][a-z0-9_-]{0,63}$に一致
idパスstring (uuid)はい—

リクエスト本文 (application/octet-stream)

レスポンス 200

フィールド型必須ルール
idstring (uuid)はい—
repositorystringはい—
statusstringはい次のいずれか:pending, available, cancelled
createdAtstring (date-time)はい—
expiresAtstring (date-time)はい—
descriptorobjectはい—
descriptor.namestringはい1~240文字
descriptor.sizestringはい10進数字で表した整数(文字列として送信)
descriptor.sha256stringはいSHA-256:小文字の16進数字64桁
descriptor.labelsstringの配列いいえ32個以内の要素; 各要素:64文字以内
descriptor.metadatastringのマップいいえ32個以内のエントリ

レスポンス: 200, 400, 401, 403, 404, 405, 409, 422, 503, 507

例

bash
curl -X PUT "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/uploads/$ID/content" \
  -H "Authorization: Bearer $ARKVORY_TOKEN" \
  -H "Content-Type: application/octet-stream" \
  --data-binary @file

アップロードの完了 ​

POST /api/v1/repositories/{repository}/uploads/{id}/complete

アクセス: リポジトリ権限:upload.complete; ファイルキー:write · 再試行: アップロードを再取得してから判断

保存済みのパートを順に結合し、ファイル全体を宣言されたサイズおよびSHA-256と照合してアーティファクトを公開します。ステータスavailableのアップロードを返します。公開済みのアップロードに対して再度呼び出すと同じ結果が返るため、応答が失われた完了処理の復旧にも使えます。パートが不足している場合は409 parts_incomplete、内容が一致しない場合は422になります。リクエストがタイムアウトするおそれのある非常に大きなファイルには、代わりにenqueueCompletionを使用してください。

パラメーター

名前場所型必須ルール
repositoryパスstringはい^[a-z0-9][a-z0-9_-]{0,63}$に一致
idパスstring (uuid)はい—

レスポンス 200

フィールド型必須ルール
idstring (uuid)はい—
repositorystringはい—
statusstringはい次のいずれか:pending, available, cancelled
createdAtstring (date-time)はい—
expiresAtstring (date-time)はい—
descriptorobjectはい—
descriptor.namestringはい1~240文字
descriptor.sizestringはい10進数字で表した整数(文字列として送信)
descriptor.sha256stringはいSHA-256:小文字の16進数字64桁
descriptor.labelsstringの配列いいえ32個以内の要素; 各要素:64文字以内
descriptor.metadatastringのマップいいえ32個以内のエントリ

レスポンス: 200, 400, 401, 403, 404, 405, 409, 422, 503, 507

例

bash
curl -X POST "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/uploads/$ID/complete" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

Arkvory · ProAnimaStudio