REST APIでファイルを安全に移動する
REST APIでファイルをアトミックに移動し、スコープ、ロック、名前の競合に対処してから、ルート固有の読み取りで変わらないIDと移動後の親を確認します。
最終確認日
スクリーンショットは英語版の画面です。
PUT /api/files/:id/moveはファイルのIDやバージョンを変えずに親を変更します。移動先がフォルダーの場合はfolder_idにそのIDを、ワークスペースのルートの場合はnullを指定してください。同じアトミックなリクエストで名前も変更する場合に限りnameを追加します。

始める前に
- フルアクセスのREST APIキーを使用してください。読み取り専用およびアップロード専用キーではファイルを移動できません。
- ワークスペースのロールに
upload_filesが必要です。nameも指定するリクエストにはrename_filesが必要です。 - ファイルID、現在のフォルダー、移動先フォルダーを記録してください。自動処理のテストには不要になってもよいファイルを選んでください。
- 移動先は同じワークスペースに属し、呼び出し元が参照できる必要があります。
手順
- まずファイルと移動先を読み取ってください。変更操作を送る前にファイルID、現在の親、正確な移動先IDを記録します。
- 移動先を指定するJSONを用意してください。例:
{"folder_id":"folder_destination"}。ルートには{"folder_id":null}を使用し、移動と名前の変更を同時に行う場合は"name":"renamed.pdf"を追加してください。 PUT /api/files/file_id/moveをAuthorization: Bearer $DOSYA_API_KEYとContent-Type: application/jsonとともに送信してください。レスポンスが失われた場合、確認せずに再試行しないでください。- HTTP 200を確認し、
{ "ok": true, "name": "…" }を読み取ります。400は既にそのフォルダーにあることを示す場合があり、403は権限またはロックによる拒否、404は利用できない対象、409は同じフォルダー内の名前の競合を示します。 GET /api/files/file_idを送信し、同じIDに意図したfolder_idと、指定した場合は新しい名前が表示されることを確認してください。変更操作でX-D1-Bookmarkが返された場合は引き継ぎます。ただしD1を使う読み取りの順序付けに限られ、ファイルのコンテンツのメタデータはワークスペースリポジトリから取得される場合があります。- 後続の処理がファイルがどのフォルダーに属するかに依存する場合は、移動元と移動先の両方の親を一覧表示してください。元の親にIDがなく、移動先にIDがあることを確認してから続行します。

期待される結果
APIはok: trueとともに200を返し、ルート固有のメタデータ読み取りでは元のファイルIDが選択した親の下に表示されます。同時に名前を変更した場合、確認結果に指定した名前が表示されます。
トラブルシューティング
409が返る場合 別のnameを選ぶか、移動先の既存項目との競合を解消してから再試行してください。
403が返る場合 upload_filesを確認し、同時に名前を変更する場合はrename_filesを追加して、ロック状態を確認してください。APIキーのスコープを変更してもワークスペースのロールやロックは回避できません。
レスポンスが失われた場合 別の変更操作を送る前にファイルを読み取ってください。移動ルートに冪等性キーはありません。移動先を確認できれば最初のリクエストは既に確定しています。
関連ガイド
この記事は役に立ちましたか?
評価の結果を読み込んでいます…
投票すると、回答を変更できるように、必要な投票用Cookieが最長180日間保存されます。
質問と回答
このガイドの手順について質問できます。質問は確認後に公開されます。
公開の質問には、アカウントの詳細、認証情報、非公開ファイルを含めないでください。これらについては 非公開サポート をご利用ください。
質問を読み込んでいます…
dosyaアカウントにサインインすると、質問を投稿できます。