ファイル箱では、2つのAPIをご用意しております。
- ClientGateway(クライアントゲートウェイ) - 一般的な操作+ファイルの閲覧
- FileCache(ファイルキャッシュ) - ファイルの操作
こちらは、それぞれのAPIのSwaggerドキュメントとなります。:
- クライアントゲートウェイ*: https://clientgateway.cloudfile.jp/swagger
- ファイルキャッシュ: https://filecache01.cloudfile.jp/swagger
*クライアントゲートウェイのSwaggerドキュメントでは、リクエストとレスポンスのボディでのJSONのプロパティ名がキャメルケース(camelCase)で表示されますが、APIを利用すると、パスカルケース(PascalCase)です。
■API認証
上記2つのAPIの認証方法の詳細は、ファイル箱のAPIの認証方法 をご参照ください。
なお、FileCache(ファイルキャッシュ) - ファイルの操作 には、OAuth認証により、Bearerアクセストークンが必要です。
APIを利用する例として、ファイルのダウンロード/アップロードの使用例をご案内いたします。
■ファイルのダウンロード
条件例:
==========================================
ウェブ管理画面のURLが、cloudfile.jp から始まるURLを利用している。
ユーザ名demo@tsukaeru.net が、共有フォルダ「demo - Home Folder」の中の「Documentation\API.pdf」ファイルを開きたい。
アクセストークンは既に取得しており、アクセストークンは「aedc6.XXXXXX.bc76bcd25」であるとする。
==========================================
1. シェアをのリストを取得する
まずは、こちら からユーザーの共有フォルダ(以下シェアとします)を調べます。
以下レスポンス結果:
curl --request GET \ --url https://clientgateway.cloudfile.jp/api/users/demo@tsukaeru.net/shares \ --header 'Authorization: Bearer aedc6.XXXXXX.bc76bcd25' { "Data": [ { "ShareAssociationType": 2, "Id": "02a8d989567e4c4c8085637c7aa24569", "CompanyId": "28ac608f-7bc7-4bda-9a30-b17f7a38bf22", "Name": "demo - Home folder", "ShareDefault": { "ShareCategory": 0 }, "ShareTick": 4654805, "SpaceUsage": { "DiskUsage": 443851649653, "HistoryUsage": 2492305, "DeletedUsage": 0 }, "ShareType": 0, "ShareIds": [], "TimeStamps": { "CreateTime": 0, "CreatedBy": "Admin", "UpdateTime": 637975163199430212, "UpdatedBy": "demo@tsukaeru.net", "DeleteTime": 0, "DeletedBy": "Admin" } }, { "ShareAssociationType": 2, "Id": "09d8d6687f2048d3957cba15c3874113", "CompanyId": "28ac608f-7bc7-4bda-9a30-b17f7a38bf22", "Name": "Other", "ShareDefault": { "Owner": "admin@tsukaeru.net", "ShareCategory": 0 }, "ShareTick": 0, "SpaceUsage": { "DiskUsage": 0, "HistoryUsage": 0, "DeletedUsage": 0 }, "ShareType": 0, "ShareIds": [], "TimeStamps": { "CreateTime": 637910305752536237, "CreatedBy": "admin@tsukaeru.net", "UpdateTime": 0, "DeleteTime": 0 } } ], "Message": "Ok." }
レスポンス結果は、ユーザがアクセス権限を持つシェアのメタデータになります。
このレスポンス結果の「Name」の中から対象のシェアを探し、シェアの "Id"を確認します。
上記のレスポンス結果の場合、「demo - Home Folder」 のシェアのIdは、「02a8d989567e4c4c8085637c7aa24569」となります。
2. シェアの中身を取得する
次に、こちら より、シェアの中身のデータから「Documentation」というフォルダを確認します。
以下レスポンス結果:
curl --request GET \ --url https://clientgateway.cloudfile.jp/api/shares/02a8d989567e4c4c8085637c7aa24569/children \ --header 'Authorization: Bearer aedc6.XXXXXX.bc76bcd25' { "Data": [ { "IsSubshare": false, "User": "demo@tsukaeru.net", "IsFile": false, "FileLock": { "IsLocked": false, "LockTime": 0 }, "InternalName": "271391b5c94243a6887dc8894595eba4", "ShareId": "02a8d989567e4c4c8085637c7aa24569", "Tick": 3, "SubShareIds": [], "ShareTick": 4189056, "ParrentId": "02a8d989567e4c4c8085637c7aa24569", "EndOfFile": 0, "PublicName": "Documentation", "CreationTime": "2022-06-14T22:50:12.596771Z", "LastAccessTime": "2022-06-14T22:50:12.596771Z", "LastWriteTime": "2022-06-14T22:50:12.596771Z", "Attributes": 16, "Deleted": false }, { "IsSubshare": false, "UploadName": "5f30e77d3e2f434abce0923e96db1b62", "User": "demo@tsukaeru.net", "IsFile": true, "FileLock": { "IsLocked": false, "LockTime": 0 }, "InternalName": "a2d2b5c5cdf6471686c7000f7fba8eb9", "ShareId": "02a8d989567e4c4c8085637c7aa24569", "Tick": 2, "SubShareIds": [], "ShareTick": 988555, "ParrentId": "02a8d989567e4c4c8085637c7aa24569", "EndOfFile": 7836969, "PublicName": "php.zip", "CreationTime": "2022-06-17T00:27:29.6670491Z", "LastAccessTime": "2022-06-17T00:27:29.6670492Z", "LastWriteTime": "2022-06-17T00:27:32.7227076Z", "Attributes": 32, "Deleted": false } ], "Message": "Ok." }
レスポンス結果の「PublicName」の中から「Documentation」フォルダを探し、「Documentation」フォルダの "InternalName"を確認します。
上記のレスポンス結果の場合、「Documentation」フォルダのInternalNameは「271391b5c94243a6887dc8894595eba4」となります。
3. フォルダの中身を取得する
次に、こちら より、フォルダの中身のデータから「API.pdf」ファイルを確認します。
以下レスポンス結果:
curl --request GET \ --url https://clientgateway.cloudfile.jp/api/shares/02a8d989567e4c4c8085637c7aa24569/virtualfiles/271391b5c94243a6887dc8894595eba4/children \ --header 'Authorization: Bearer aedc6.XXXXXX.bc76bcd25' { "Data": [ { "IsSubshare": false, "User": "demo@tsukaeru.net", "IsFile": false, "FileLock": { "IsLocked": false, "LockTime": 0 }, "InternalName": "b609204a6ed5443a8644d20e38e17fe3", "ShareId": "02a8d989567e4c4c8085637c7aa24569", "Tick": 1, "SubShareIds": [], "ShareTick": 985119, "ParrentId": "271391b5c94243a6887dc8894595eba4", "EndOfFile": 0, "PublicName": "Other folder", "CreationTime": "2022-06-14T22:50:48.4141003Z", "LastAccessTime": "2022-06-14T22:50:48.4141003Z", "LastWriteTime": "2022-06-14T22:50:48.4141003Z", "Attributes": 16, "Deleted": false }, { "IsSubshare": false, "UploadName": "7bf8fbe91fcf49d181e60476686863f2", "User": "demo@tsukaeru.net", "IsFile": true, "FileLock": { "IsLocked": false, "LockTime": 0 }, "InternalName": "341dcae77da6449682cb4f2e29efeb44", "ShareId": "02a8d989567e4c4c8085637c7aa24569", "Tick": 2, "SubShareIds": [], "ShareTick": 985098, "ParrentId": "271391b5c94243a6887dc8894595eba4", "EndOfFile": 989827, "PublicName": "API.pdf", "CreationTime": "2022-06-14T22:50:27.7332305Z", "LastAccessTime": "2022-06-14T22:50:27.7332305Z", "LastWriteTime": "2021-10-19T06:10:22.6930352Z", "Attributes": 32, "Deleted": false } ], "Message": "Ok." }
レスポンス結果の「PublicName」の中から「API.pdf」ファイルを探し、「API.pdf」ファイルの「UploadName」を確認します。ファイルのInternalNameはユニークなIdとなります。
4. ファイルをダウンロードする
ファイルのダウンロードは、こちら の「ファイルキャッシュAPI」によって行います。
ステップ1~ステップ3で調べたシェアIdとファイルのUploadNameを使用して、こちら の「GETリクエスト」でダウンロードすることができます。
※「GETリクエスト」 のversionIdは、ステップ3で確認したファイルのUploadNameになります。
以下レスポンス結果:
curl --request GET \ --url https://filecache01.cloudfile.jp/api/shares/02a8d989567e4c4c8085637c7aa24569/files/7bf8fbe91fcf49d181e60476686863f2 \ --header 'Authorization: Bearer aedc6.XXXXXX.bc76bcd25' \ --output 'API.pdf' % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 966k 100 966k 0 0 1030k 0 --:--:-- --:--:-- --:--:-- 1029k
■ファイルのアップロード
条件例:
==========================================
ウェブ管理画面のURLが、cloudfile.jp から始まるURLを利用している。
ユーザ名demo@tsukaeru.net が、共有フォルダ「demo - Home Folder」の中に、
「文書」フォルダ作成して、
250バイトの 「lorem.txt」ファイルをアップロードしたい。
==========================================
ファイルをアップロードするには、アップロード先のメタデータが必要となります。
以下の手順でメタデータを収集していきます。
1. フォルダを作成する
まず、「文書」フォルダを作成します。
フォルダの作成には、こちら のファイルキャッシュAPIを使います。
以下レスポンス結果:
curl --request POST \ --url https://filecache01.cloudfile.jp/api/shares/02a8d989567e4c4c8085637c7aa24569/files \ --header 'Authorization: Bearer aedc6.XXXXXX.bc76bcd25' \ --header 'Content-Type: application/json' \ --data '{ "RfVirtualFile": { "ShareId": "02a8d989567e4c4c8085637c7aa24569", "ShareTick": 0, "ParrentId": "271391b5c94243a6887dc8894595eba4", "EndOfFile": 0, "PublicName": "文書", "CreationTime": "2022-09-15T05:12:43.473Z", "LastAccessTime": "2022-09-15T05:12:43.474Z", "LastWriteTime": "2022-09-15T05:12:43.474Z", "Attributes": 16 }, "TransmitId": "3e84cc22-4127-4527-8a19-185a6cb70d30", "ClientJournalEventType": 0, "DeviceId": "TestClient" }' { "Code": 1, "Data": { "ClientJournalEvent": { "TransmitId": "3e84cc22-4127-4527-8a19-185a6cb70d30", "UserOrigin": "demo@tsukaeru.net", "ClientJournalEventType": 0, "ShareTick": 5021302, "TransmitCounter": 0, "TransmitTimeout": "2022-09-15T05:51:18.0735966Z", "RfVirtualFile": { "ShareId": "02a8d989567e4c4c8085637c7aa24569", "SubShareIds": [], "InternalName": "d9ce0f90f5d54963b24fa259b2f43bbf", "Tick": 1, "ShareTick": 5021302, "UpdateTick": 5021302, "CreateTick": 5021302, "ParrentId": "271391b5c94243a6887dc8894595eba4", "NoOfChildren": 0, "EndOfFile": 0, "AllocationSize": 0, "CreationTime": "2022-09-15T05:12:43.473Z", "LastAccessTime": "2022-09-15T05:12:43.474Z", "LastWriteTime": "2022-09-15T05:12:43.474Z", "Attributes": 16, "Local": false, "User": "demo@tsukaeru.net", "Deleted": false, "IsOffline": false, "HasHistory": false, "PublicName": "文書", "DeleteTimestamp": 0, "IsFile": false, "RetensionTimestamp": 0, "InRetension": false, "FileLock": { "IsLocked": false, "LockTime": 0 } }, "CreateTick": 5021302, "DeviceId": "TestClient" } }, "Message": "File created succesfully." }
(リクエストボディの見方につきましては、Swagger公式ドキュメントをご参照ください。)
2. ファイルのメタデータをアップロードする
「lorem.txt」ファイル内容をアップロードする前に、こちら より「lorem.txt」ファイルのメタデータを作成します。
リクエスト先は、上記ステップ1のフォルダの作成と同じです。
以下レスポンス結果:
curl --request POST \ --url https://filecache01.cloudfile.jp/api/shares/02a8d989567e4c4c8085637c7aa24569/files \ --header 'Authorization: Bearer aedc6.XXXXXX.bc76bcd25' \ --header 'Content-Type: application/json' \ --data '{ "RfVirtualFile": { "ShareId": "02a8d989567e4c4c8085637c7aa24569", "ShareTick": 0, "ParrentId": "271391b5c94243a6887dc8894595eba4", "EndOfFile": 250, "PublicName": "lorem.txt", "CreationTime": "2022-09-15T05:12:43.473Z", "LastAccessTime": "2022-09-15T05:12:43.474Z", "LastWriteTime": "2022-09-15T05:12:43.474Z", "Attributes": 128 }, "TransmitId": "2c6381ac-6484-45cb-8fd4-becfc5af62e1", "ClientJournalEventType": 0, "DeviceId": "TestClient" }' { "Code": 1, "Data": { "Url": "https://filecache01.cloudfile.jp/api/upload/7VrnbX5OnJLt6oyYfZwWPflMoobQgJuV" }, "Message": "'PUT' the content of your file to the supplied url and provide a Content-Range header." }
レスポンスから、「lorem.txt」ファイル内容をアップロードする先のURLが返ってきます。
※ファイルが0KBではない場合のみ上記の方法で、アップロード先のURLを確認します。
0KBのファイルを作成する場合は、フォルダの作成と同じくすぐに新しいファイルのメタデータが返されます。
3. ファイル内容をアップロードする
ステップ2で取得したURLへ、こちら より「PUTリクエスト」によりファイルの内容をアップロードします。
以下レスポンス結果:
curl --request PUT \ --url https://filecache01.cloudfile.jp/api/upload/7VrnbX5OnJLt6oyYfZwWPflMoobQgJuV \ --header 'Authorization: Bearer aedc6.XXXXXX.bc76bcd25' \ --header 'Content-Range: bytes 0-249/250' \ --data 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam egestas magna sed dui posuere, sed facilisis nibh malesuada. Pellentesque quis nunc quis quam congue posuere placerat nec justo. Praisent congue eu mauris in eleifend. Quisque massa nunc.' { "Code": 1, "Data": { "ClientJournalEvent": { "TransmitId": "2c6381ac-6484-45cb-8fd4-becfc5af62e1", "UserOrigin": "demo@tsukaeru.net", "ClientJournalEventType": 0, "ShareTick": 5020404, "TransmitCounter": 0, "TransmitTimeout": "2022-09-15T05:48:13.8681754Z", "RfVirtualFile": { "ShareId": "02a8d989567e4c4c8085637c7aa24569", "SubShareIds": [], "UploadName": "c7af5b7b619f4cffa7cd4190c49397a5", "InternalName": "4c376527202442b19e8c90849d85189d", "Tick": 1, "ShareTick": 5020404, "UpdateTick": 5020404, "CreateTick": 5020404, "ParrentId": "271391b5c94243a6887dc8894595eba4", "NoOfChildren": 0, "EndOfFile": 250, "AllocationSize": 0, "CreationTime": "2022-09-15T05:12:43.473Z", "LastAccessTime": "2022-09-15T05:12:43.474Z", "LastWriteTime": "2022-09-15T05:12:43.474Z", "Attributes": 32, "Local": false, "User": "demo@tsukaeru.net", "Deleted": false, "IsOffline": false, "HasHistory": false, "PublicName": "lorem.txt", "DeleteTimestamp": 0, "IsFile": true, "RetensionTimestamp": 0, "InRetension": false, "FileLock": { "IsLocked": false, "LockTime": 0 } }, "CreateTick": 5020404, "DeviceId": "TestClient" } }, "Message": "File created succesfully." }
注意点:
- データをアップロードする際、Content-Rangeヘッダが必須となります。
- 1回のリクエストの大きさに制限がございます。1回につき約150MBまで送信可能です。150MB以上の場合は、ファイルを分けて、複数回のリクエストでアップロードする必要がございます。
- ファイルを分けた場合は、分けた部分を順番通りに送信してください。最後のデータをアップロードするリクエストに対してだけ、ファイルのメタデータのレスポンスが返ってきます。分割したファイルが順番通りにされなかった場合、部分データにはアクセス不可能であるため、クライアントやAPIからファイルを参照することができません。