ファイル箱では、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からファイルを參照することができません。