@agentunion/fastaun-browser 0.4.13 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +536 -386
- package/_packed_docs/CHANGELOG-validators.md +144 -0
- package/_packed_docs/CHANGELOG.md +536 -386
- package/_packed_docs/INDEX.md +159 -84
- package/_packed_docs/KITE_DOCS_GUIDE.md +48 -31
- package/_packed_docs/agent.md/SCHEMA.md +2 -0
- package/_packed_docs/agent.md/examples/codeagent-claudecode.md +2 -0
- package/_packed_docs/agent.md/examples/human-developer.md +2 -0
- package/_packed_docs/agent.md/examples/openclaw-lobster.md +2 -0
- package/_packed_docs/agent.md/examples/signed-openclaw-lobster.md +2 -0
- package/_packed_docs/agent.md//350/277/234/347/250/213agent.md/347/274/223/345/255/230/344/270/216etag/351/200/217/344/274/240/346/226/271/346/241/210.md +2 -0
- package/_packed_docs/cli/AUN-CLI/350/256/276/350/256/241/346/226/207/346/241/243.md +266 -686
- package/_packed_docs/cli/CLI/346/211/213/345/206/214.md +331 -0
- package/_packed_docs/design/2026-05-22-aun-rpc-trace-enhancement.md +2 -0
- package/_packed_docs/design/AUNClient/346/213/206/345/210/206/351/207/215/346/236/204/346/211/247/350/241/214/346/226/271/346/241/210.md +2 -0
- package/_packed_docs/design/E2EE_V2/347/256/200/345/214/226/344/270/2721DH/345/212/240Per-AID_Wrap/346/226/271/346/241/210.md +2 -0
- package/_packed_docs/design//350/267/250/350/257/255/350/250/200/345/256/271/345/231/250E2E/346/265/213/350/257/225/346/226/271/346/241/210.md +2 -0
- package/_packed_docs/protocol/00-/346/200/273/350/247/210/344/270/216/345/210/206/345/261/202.md +2 -0
- package/_packed_docs/protocol/00A-/350/256/276/350/256/241/345/216/237/345/210/231-/344/270/272Agent/350/200/214/347/224/237.md +2 -0
- package/_packed_docs/protocol/01-/350/272/253/344/273/275/344/270/216/345/207/255/350/257/201/345/215/217/350/256/256-auth.md +2 -0
- package/_packed_docs/protocol/02-/350/257/201/344/271/246/344/270/216/344/277/241/344/273/273/344/275/223/347/263/273.md +2 -0
- package/_packed_docs/protocol/03-Gateway-/350/277/236/346/216/245/346/250/241/345/274/217.md +2 -0
- package/_packed_docs/protocol/04-Peer-/345/255/220/345/215/217/350/256/256.md +2 -0
- package/_packed_docs/protocol/05-Relay-/345/255/220/345/215/217/350/256/256.md +2 -0
- package/_packed_docs/protocol/07-/351/224/231/350/257/257/347/240/201/344/270/216/347/212/266/346/200/201/346/234/272.md +2 -0
- package/_packed_docs/protocol/08-AUN-E2EE-Group.md +296 -900
- package/_packed_docs/protocol/08-AUN-E2EE.md +2 -0
- package/_packed_docs/protocol/09-/345/256/211/345/205/250/350/200/203/350/231/221.md +2 -0
- package/_packed_docs/protocol/10-Group-/345/255/220/345/215/217/350/256/256.md +66 -173
- package/_packed_docs/protocol/11-Storage-/345/255/220/345/215/217/350/256/256.md +55 -0
- package/_packed_docs/protocol/12-Stream-/345/255/220/345/215/217/350/256/256.md +2 -0
- package/_packed_docs/protocol/13-Agent/350/241/214/344/270/272/350/247/204/350/214/203.md +2 -0
- package/_packed_docs/protocol/14-/344/272/244/344/272/222/346/234/272/345/210/266-/345/223/215/345/272/224/346/250/241/345/274/217/344/270/216/350/207/252/344/270/273/346/250/241/345/274/217.md +2 -0
- package/_packed_docs/protocol/15-/347/246/273/347/272/277/346/216/250/351/200/201/351/200/232/347/237/245/345/215/217/350/256/256.md +2 -0
- package/_packed_docs/protocol/16-/347/263/273/347/273/237/347/233/256/345/275/225/344/277/235/346/212/244/346/226/271/346/241/210.md +177 -0
- package/_packed_docs/protocol/README.md +4 -1
- package/_packed_docs/protocol/agent.md/SCHEMA.md +2 -0
- package/_packed_docs/protocol/agent.md/examples/codeagent-claudecode.md +2 -0
- package/_packed_docs/protocol/agent.md/examples/human-developer.md +2 -0
- package/_packed_docs/protocol/agent.md/examples/openclaw-lobster.md +2 -0
- package/_packed_docs/protocol/aun-docs-guide.md +2 -0
- package/_packed_docs/protocol/index.md +10 -3
- package/_packed_docs/protocol//350/215/211/346/241/210-agent.md/347/255/276/345/220/215/345/215/217/350/256/256.md +2 -0
- package/_packed_docs/protocol//350/215/211/346/241/210-/346/213/222/347/273/235/344/277/241/345/217/267/345/215/217/350/256/256.md +2 -0
- package/_packed_docs/protocol//351/231/204/345/275/225A-/346/234/257/350/257/255/350/241/250.md +2 -0
- package/_packed_docs/protocol//351/231/204/345/275/225B-/346/211/251/345/261/225/346/200/247/346/214/207/345/215/227.md +2 -0
- package/_packed_docs/protocol//351/231/204/345/275/225C-/347/247/201/351/222/245/347/256/241/347/220/206/344/270/216/350/272/253/344/273/275/346/201/242/345/244/215.md +2 -0
- package/_packed_docs/protocol//351/231/204/345/275/225D-Root_CA_/346/262/273/347/220/206/346/234/272/345/210/266.md +2 -0
- package/_packed_docs/protocol//351/231/204/345/275/225E-Root_CA_/345/207/206/345/205/245/346/265/201/347/250/213.md +2 -0
- package/_packed_docs/protocol//351/231/204/345/275/225F-Issuer_CA_/347/224/263/350/257/267/346/265/201/347/250/213.md +2 -0
- package/_packed_docs/protocol//351/231/204/345/275/225G-AID_/345/255/244/345/204/277/351/242/204/351/230/262/344/270/216/346/225/221/346/217/264/346/234/272/345/210/266.md +2 -0
- package/_packed_docs/protocol//351/231/204/345/275/225H-Identity/346/234/215/345/212/241/345/256/236/347/216/260/346/214/207/345/215/227.md +2 -0
- package/_packed_docs/protocol//351/231/204/345/275/225I-/350/267/250/345/237/237/346/266/210/346/201/257/350/267/257/347/224/261/345/256/236/347/216/260/346/214/207/345/215/227.md +2 -0
- package/_packed_docs/protocol//351/231/204/345/275/225J-/345/256/242/346/210/267/347/253/257/346/216/245/345/205/245/347/244/272/344/276/213.md +2 -0
- package/_packed_docs/protocol//351/231/204/345/275/225K-Agent_Web/345/217/221/347/216/260/345/215/217/350/256/256.md +2 -0
- package/_packed_docs/protocol//351/231/204/345/275/225L-E2EE/345/256/236/347/216/260/346/214/207/345/215/227.md +2 -0
- package/_packed_docs/protocol//351/231/204/345/275/225M-JWT/350/256/244/350/257/201/345/256/236/347/216/260/346/214/207/345/215/227.md +2 -0
- package/_packed_docs/protocol//351/231/204/345/275/225N-/345/210/206/345/270/203/345/274/217Trace/345/215/217/350/256/256.md +2 -0
- package/_packed_docs/sdk/01-/345/277/253/351/200/237/345/274/200/345/247/213.md +2 -0
- package/_packed_docs/sdk/02-WebSocket/345/215/217/350/256/256.md +2 -0
- package/_packed_docs/sdk/03-/346/240/270/345/277/203/346/246/202/345/277/265.md +2 -0
- package/_packed_docs/sdk/04-/350/277/236/346/216/245/344/270/216/350/256/244/350/257/201.md +2 -0
- package/_packed_docs/sdk/05-E2EE/345/212/240/345/257/206/351/200/232/344/277/241.md +6 -252
- package/_packed_docs/sdk/06-API/346/211/213/345/206/214.md +219 -177
- package/_packed_docs/sdk/07-/351/224/231/350/257/257/345/244/204/347/220/206.md +4 -1
- package/_packed_docs/sdk/08-/346/234/200/344/275/263/345/256/236/350/267/265.md +2 -0
- package/_packed_docs/sdk/09-collab-rpc-manual.md +581 -0
- package/_packed_docs/sdk/09-custody-api-manual.md +2 -0
- package/_packed_docs/sdk/09-group-rpc-manual.md +301 -634
- package/_packed_docs/sdk/09-message-rpc-manual.md +2 -0
- package/_packed_docs/sdk/09-meta-rpc-manual.md +2 -0
- package/_packed_docs/sdk/09-payload-reference.md +2 -0
- package/_packed_docs/sdk/09-proxy-rpc-manual.md +2 -0
- package/_packed_docs/sdk/09-storage-rpc-manual.md +984 -274
- package/_packed_docs/sdk/09-stream-rpc-manual.md +2 -0
- package/_packed_docs/sdk/AUN_DOCS_GUIDE.md +36 -23
- package/_packed_docs/sdk/E2EE_V2/346/266/210/346/201/257/351/200/232/344/277/241/346/227/266/345/272/217/345/233/276.md +2 -0
- package/_packed_docs/sdk/INDEX.md +47 -30
- package/_packed_docs/sdk/Notify/351/200/232/347/237/245/346/226/271/346/241/210.md +2 -0
- package/_packed_docs/sdk/README.md +17 -15
- package/dist/aid-store.d.ts +25 -0
- package/dist/aid-store.d.ts.map +1 -1
- package/dist/aid-store.js +89 -8
- package/dist/aid-store.js.map +1 -1
- package/dist/bundle.js +19615 -16870
- package/dist/client/delivery.d.ts +15 -2
- package/dist/client/delivery.d.ts.map +1 -1
- package/dist/client/delivery.js +303 -54
- package/dist/client/delivery.js.map +1 -1
- package/dist/client/group-state.d.ts.map +1 -1
- package/dist/client/group-state.js +36 -14
- package/dist/client/group-state.js.map +1 -1
- package/dist/client/lifecycle.js +2 -2
- package/dist/client/lifecycle.js.map +1 -1
- package/dist/client/rpc-pipeline.d.ts +2 -0
- package/dist/client/rpc-pipeline.d.ts.map +1 -1
- package/dist/client/rpc-pipeline.js +235 -82
- package/dist/client/rpc-pipeline.js.map +1 -1
- package/dist/client/v2-e2ee.d.ts +14 -1
- package/dist/client/v2-e2ee.d.ts.map +1 -1
- package/dist/client/v2-e2ee.js +300 -121
- package/dist/client/v2-e2ee.js.map +1 -1
- package/dist/client.d.ts +36 -4
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +460 -57
- package/dist/client.js.map +1 -1
- package/dist/collab/client.d.ts +47 -0
- package/dist/collab/client.d.ts.map +1 -0
- package/dist/collab/client.js +136 -0
- package/dist/collab/client.js.map +1 -0
- package/dist/collab/errors.d.ts +16 -0
- package/dist/collab/errors.d.ts.map +1 -0
- package/dist/collab/errors.js +60 -0
- package/dist/collab/errors.js.map +1 -0
- package/dist/collab/index.d.ts +4 -0
- package/dist/collab/index.d.ts.map +1 -0
- package/dist/collab/index.js +4 -0
- package/dist/collab/index.js.map +1 -0
- package/dist/collab/types.d.ts +111 -0
- package/dist/collab/types.d.ts.map +1 -0
- package/dist/collab/types.js +2 -0
- package/dist/collab/types.js.map +1 -0
- package/dist/crypto.d.ts +6 -0
- package/dist/crypto.d.ts.map +1 -1
- package/dist/crypto.js +6 -0
- package/dist/crypto.js.map +1 -1
- package/dist/errors.d.ts +0 -20
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +9 -37
- package/dist/errors.js.map +1 -1
- package/dist/facades.d.ts +94 -0
- package/dist/facades.d.ts.map +1 -0
- package/dist/facades.js +389 -0
- package/dist/facades.js.map +1 -0
- package/dist/group-fs.d.ts +120 -0
- package/dist/group-fs.d.ts.map +1 -0
- package/dist/group-fs.js +539 -0
- package/dist/group-fs.js.map +1 -0
- package/dist/group-id.d.ts +9 -12
- package/dist/group-id.d.ts.map +1 -1
- package/dist/group-id.js +41 -63
- package/dist/group-id.js.map +1 -1
- package/dist/group-resources.d.ts +98 -0
- package/dist/group-resources.d.ts.map +1 -0
- package/dist/group-resources.js +635 -0
- package/dist/group-resources.js.map +1 -0
- package/dist/index.d.ts +8 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -1
- package/dist/index.js.map +1 -1
- package/dist/keystore/index.d.ts +2 -54
- package/dist/keystore/index.d.ts.map +1 -1
- package/dist/keystore/indexeddb-identity-store.d.ts +3 -0
- package/dist/keystore/indexeddb-identity-store.d.ts.map +1 -1
- package/dist/keystore/indexeddb-identity-store.js +65 -0
- package/dist/keystore/indexeddb-identity-store.js.map +1 -1
- package/dist/keystore/indexeddb-shared.d.ts +3 -17
- package/dist/keystore/indexeddb-shared.d.ts.map +1 -1
- package/dist/keystore/indexeddb-shared.js +4 -47
- package/dist/keystore/indexeddb-shared.js.map +1 -1
- package/dist/keystore/indexeddb-token-store.d.ts +1 -64
- package/dist/keystore/indexeddb-token-store.d.ts.map +1 -1
- package/dist/keystore/indexeddb-token-store.js +45 -774
- package/dist/keystore/indexeddb-token-store.js.map +1 -1
- package/dist/logger.d.ts +2 -0
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +4 -0
- package/dist/logger.js.map +1 -1
- package/dist/register-flow.d.ts +1 -0
- package/dist/register-flow.d.ts.map +1 -1
- package/dist/register-flow.js +3 -0
- package/dist/register-flow.js.map +1 -1
- package/dist/service-proxy.d.ts +1 -0
- package/dist/service-proxy.d.ts.map +1 -1
- package/dist/service-proxy.js +15 -3
- package/dist/service-proxy.js.map +1 -1
- package/dist/storage/errors.d.ts +28 -0
- package/dist/storage/errors.d.ts.map +1 -0
- package/dist/storage/errors.js +65 -0
- package/dist/storage/errors.js.map +1 -0
- package/dist/storage/index.d.ts +2 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +2 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/lowlevel.d.ts +322 -0
- package/dist/storage/lowlevel.d.ts.map +1 -0
- package/dist/storage/lowlevel.js +471 -0
- package/dist/storage/lowlevel.js.map +1 -0
- package/dist/storage/types.d.ts +59 -0
- package/dist/storage/types.d.ts.map +1 -0
- package/dist/storage/types.js +113 -0
- package/dist/storage/types.js.map +1 -0
- package/dist/storage/vfs.d.ts +166 -0
- package/dist/storage/vfs.d.ts.map +1 -0
- package/dist/storage/vfs.js +457 -0
- package/dist/storage/vfs.js.map +1 -0
- package/dist/tools/cross-sdk-agent.d.ts +3 -0
- package/dist/tools/cross-sdk-agent.d.ts.map +1 -0
- package/dist/tools/cross-sdk-agent.js +1376 -0
- package/dist/tools/cross-sdk-agent.js.map +1 -0
- package/dist/transport.d.ts +5 -0
- package/dist/transport.d.ts.map +1 -1
- package/dist/transport.js +125 -12
- package/dist/transport.js.map +1 -1
- package/dist/types.d.ts +39 -56
- package/dist/types.d.ts.map +1 -1
- package/dist/v2/session/session.d.ts +2 -0
- package/dist/v2/session/session.d.ts.map +1 -1
- package/dist/v2/session/session.js +58 -22
- package/dist/v2/session/session.js.map +1 -1
- package/dist/v2/state/commitment.d.ts +1 -1
- package/dist/v2/state/commitment.d.ts.map +1 -1
- package/dist/v2/state/commitment.js +5 -3
- package/dist/v2/state/commitment.js.map +1 -1
- package/dist/validators.d.ts +35 -0
- package/dist/validators.d.ts.map +1 -0
- package/dist/validators.js +127 -0
- package/dist/validators.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/package.json +44 -44
|
@@ -12,37 +12,37 @@
|
|
|
12
12
|
| [storage.delete_object](#storagedelete_object) | 删除对象 |
|
|
13
13
|
| [storage.list_objects](#storagelist_objects) | 列举对象 |
|
|
14
14
|
| [storage.list_prefixes](#storagelist_prefixes) | 列举子目录 |
|
|
15
|
-
| [storage.get_quota](#storageget_quota) | 查询配额 |
|
|
16
|
-
| [storage.get_limits](#storageget_limits) | 查询上传限制 |
|
|
17
|
-
| [storage.check_upload](#storagecheck_upload) | 上传预检(秒传检测 + 超限检测) |
|
|
18
|
-
|
|
19
|
-
### 目录树方法
|
|
20
|
-
|
|
21
|
-
| 方法 | 说明 |
|
|
22
|
-
|------|------|
|
|
23
|
-
| [storage.create_folder](#storagecreate_folder) | 创建目录 |
|
|
24
|
-
| [storage.get_folder](#storageget_folder) | 查询目录 |
|
|
25
|
-
| [storage.list_children](#storagelist_children) | 列出目录子节点 |
|
|
26
|
-
| [storage.rename_folder](#storagerename_folder) | 重命名目录 |
|
|
27
|
-
| [storage.move_folder](#storagemove_folder) | 移动目录 |
|
|
28
|
-
| [storage.delete_folder](#storagedelete_folder) | 删除目录 |
|
|
29
|
-
| [storage.resolve_path](#storageresolve_path) | 按路径解析节点 |
|
|
30
|
-
|
|
31
|
-
### 对象管理方法
|
|
32
|
-
|
|
33
|
-
| 方法 | 说明 |
|
|
34
|
-
|------|------|
|
|
35
|
-
| [storage.move_object](#storagemove_object) | 移动或重命名对象 |
|
|
36
|
-
| [storage.copy_object](#storagecopy_object) | 复制对象 |
|
|
37
|
-
| [storage.batch_delete](#storagebatch_delete) | 批量删除对象/目录 |
|
|
38
|
-
| [storage.batch_head_object](#storagebatch_head_object) | 批量查询对象元数据 |
|
|
39
|
-
| [storage.set_object_meta](#storageset_object_meta) | 更新对象元数据 |
|
|
40
|
-
| [storage.get_object_url](#storageget_object_url) | 获取稳定对象 URL |
|
|
41
|
-
| [storage.append_object](#storageappend_object) | 追加写对象 |
|
|
42
|
-
|
|
43
|
-
### 数据面协调方法
|
|
44
|
-
|
|
45
|
-
| 方法 | 说明 |
|
|
15
|
+
| [storage.get_quota](#storageget_quota) | 查询配额 |
|
|
16
|
+
| [storage.get_limits](#storageget_limits) | 查询上传限制 |
|
|
17
|
+
| [storage.check_upload](#storagecheck_upload) | 上传预检(秒传检测 + 超限检测) |
|
|
18
|
+
|
|
19
|
+
### 目录树方法
|
|
20
|
+
|
|
21
|
+
| 方法 | 说明 |
|
|
22
|
+
|------|------|
|
|
23
|
+
| [storage.create_folder](#storagecreate_folder) | 创建目录 |
|
|
24
|
+
| [storage.get_folder](#storageget_folder) | 查询目录 |
|
|
25
|
+
| [storage.list_children](#storagelist_children) | 列出目录子节点 |
|
|
26
|
+
| [storage.rename_folder](#storagerename_folder) | 重命名目录 |
|
|
27
|
+
| [storage.move_folder](#storagemove_folder) | 移动目录 |
|
|
28
|
+
| [storage.delete_folder](#storagedelete_folder) | 删除目录 |
|
|
29
|
+
| [storage.resolve_path](#storageresolve_path) | 按路径解析节点 |
|
|
30
|
+
|
|
31
|
+
### 对象管理方法
|
|
32
|
+
|
|
33
|
+
| 方法 | 说明 |
|
|
34
|
+
|------|------|
|
|
35
|
+
| [storage.move_object](#storagemove_object) | 移动或重命名对象 |
|
|
36
|
+
| [storage.copy_object](#storagecopy_object) | 复制对象 |
|
|
37
|
+
| [storage.batch_delete](#storagebatch_delete) | 批量删除对象/目录 |
|
|
38
|
+
| [storage.batch_head_object](#storagebatch_head_object) | 批量查询对象元数据 |
|
|
39
|
+
| [storage.set_object_meta](#storageset_object_meta) | 更新对象元数据 |
|
|
40
|
+
| [storage.get_object_url](#storageget_object_url) | 获取稳定对象 URL |
|
|
41
|
+
| [storage.append_object](#storageappend_object) | 追加写对象 |
|
|
42
|
+
|
|
43
|
+
### 数据面协调方法
|
|
44
|
+
|
|
45
|
+
| 方法 | 说明 |
|
|
46
46
|
|------|------|
|
|
47
47
|
| [storage.create_upload_session](#storagecreate_upload_session) | 申请上传 URL |
|
|
48
48
|
| [storage.complete_upload](#storagecomplete_upload) | 确认上传完成 |
|
|
@@ -52,15 +52,76 @@
|
|
|
52
52
|
|
|
53
53
|
| 方法 | 说明 |
|
|
54
54
|
|------|------|
|
|
55
|
-
| [storage.create_share_link](#storagecreate_share_link) | 创建分享链接 |
|
|
56
|
-
| [storage.list_share_links](#storagelist_share_links) | 列举分享链接 |
|
|
57
|
-
| [storage.revoke_share_link](#storagerevoke_share_link) | 撤销分享链接 |
|
|
58
|
-
| [storage.get_by_share](#storageget_by_share) | 通过分享短码读取对象 |
|
|
55
|
+
| [storage.create_share_link](#storagecreate_share_link) | 创建分享链接 |
|
|
56
|
+
| [storage.list_share_links](#storagelist_share_links) | 列举分享链接 |
|
|
57
|
+
| [storage.revoke_share_link](#storagerevoke_share_link) | 撤销分享链接 |
|
|
58
|
+
| [storage.get_by_share](#storageget_by_share) | 通过分享短码读取对象 |
|
|
59
|
+
|
|
60
|
+
### POSIX VFS 方法
|
|
61
|
+
|
|
62
|
+
> 在对象存储之上提供 Linux 文件系统语义(`ls/find/df/stat/lstat/mkdir/touch/rm/mv/cp/mount`)。节点类型:`file` / `dir` / `symlink` / `mount`。
|
|
63
|
+
|
|
64
|
+
| 方法 | 说明 |
|
|
65
|
+
|------|------|
|
|
66
|
+
| [storage.fs.list](#storagefslist) | 列目录(ls) |
|
|
67
|
+
| [storage.fs.find](#storagefsfind) | 递归查找(find,支持 name/type/size/mtime 过滤) |
|
|
68
|
+
| [storage.fs.df](#storagefsdf) | 配额/用量报告(df) |
|
|
69
|
+
| [storage.fs.stat](#storagefsstat) | 查节点(stat,跟随末级软链) |
|
|
70
|
+
| [storage.fs.lstat](#storagefslstat) | 查节点(lstat,不跟随软链) |
|
|
71
|
+
| [storage.fs.mkdir](#storagefsmkdir) | 建目录(mkdir) |
|
|
72
|
+
| [storage.fs.touch](#storagefstouch) | 创建空文件或更新时间戳(touch) |
|
|
73
|
+
| [storage.fs.remove](#storagefsremove) | 删除文件/目录/软链(rm) |
|
|
74
|
+
| [storage.fs.rename](#storagefsrename) | 同 owner 内移动/改名(mv) |
|
|
75
|
+
| [storage.fs.copy](#storagefscopy) | 复制对象或软链(cp) |
|
|
76
|
+
| [storage.fs.mount](#storagefsmount) | 挂载卷或他人子树 |
|
|
77
|
+
| [storage.fs.approve](#storagefsapprove) | 源 owner 批准待审挂载 |
|
|
78
|
+
| [storage.fs.reject](#storagefsreject) | 拒绝待审挂载 |
|
|
79
|
+
| [storage.fs.unmount](#storagefsunmount) | 卸载挂载点 |
|
|
80
|
+
| [storage.fs.invalidate_membership](#storagefsinvalidate_membership) | 群成员变更时失效群挂载 |
|
|
81
|
+
|
|
82
|
+
### 软链方法
|
|
83
|
+
|
|
84
|
+
| 方法 | 说明 |
|
|
85
|
+
|------|------|
|
|
86
|
+
| [storage.create_symlink](#storagecreate_symlink) | 创建软链 |
|
|
87
|
+
| [storage.readlink](#storagereadlink) | 读软链 target |
|
|
88
|
+
| [storage.atomic_repoint](#storageatomic_repoint) | 原子重指 target(CAS 乐观锁) |
|
|
89
|
+
| [storage.rename_symlink](#storagerename_symlink) | 改软链 key(target 不变) |
|
|
90
|
+
| [storage.delete_symlink](#storagedelete_symlink) | 删软链记录(不动 target) |
|
|
91
|
+
|
|
92
|
+
### ACL / 权限方法
|
|
93
|
+
|
|
94
|
+
> 统一权限求值顺序(硬顺序):公开位 → token → ACL(最近祖先前缀)→ 角色 → owner → 拒绝。
|
|
95
|
+
>
|
|
96
|
+
> AID storage 的 `storage.set_acl/remove_acl` 面向具体 AID,当前主要用于写/删除授权;直接读授权不通过 ACL 下发,读访问应使用 `storage.create_share_link` / `storage.get_by_share`,撤销分享使用 `storage.revoke_share_link`。`role:*` 伪主体只允许可信 group 内部门面管理,客户端不得直接对 `group_aid` 空间设置角色 ACL;群自有区 admin 写授权使用 `group.fs.set_acl/remove_acl`。
|
|
97
|
+
|
|
98
|
+
| 方法 | 说明 |
|
|
99
|
+
|------|------|
|
|
100
|
+
| [storage.set_acl](#storageset_acl) | 授予路径前缀 ACL |
|
|
101
|
+
| [storage.remove_acl](#storageremove_acl) | 移除 ACL 授权 |
|
|
102
|
+
| [storage.list_acl](#storagelist_acl) | 列出路径 ACL |
|
|
103
|
+
| [storage.set_visibility](#storageset_visibility) | 切换公开/私有 |
|
|
104
|
+
| [storage.check_access](#storagecheck_access) | 非抛错的访问探测 |
|
|
105
|
+
| [storage.issue_token](#storageissue_token) | 签发路径访问 token |
|
|
106
|
+
| [storage.revoke_token](#storagerevoke_token) | 吊销 token |
|
|
107
|
+
| [storage.list_tokens](#storagelist_tokens) | 列出 token |
|
|
108
|
+
|
|
109
|
+
### 卷方法
|
|
110
|
+
|
|
111
|
+
| 方法 | 说明 |
|
|
112
|
+
|------|------|
|
|
113
|
+
| [storage.volume.create](#storagevolumecreate) | 创建/upsert 配额卷 |
|
|
114
|
+
| [storage.volume.renew](#storagevolumerenew) | 续期卷 |
|
|
115
|
+
| [storage.volume.expire_due](#storagevolumeexpire_due) | 过期到期卷并失效其挂载 |
|
|
59
116
|
|
|
60
117
|
---
|
|
61
118
|
|
|
62
119
|
> `object_key` 当前仅支持 ASCII 安全字符集合 `[A-Za-z0-9._/-]`,且不允许空路径段、`..`、反斜杠转义后的非法段。
|
|
63
120
|
|
|
121
|
+
## SDK 封装状态
|
|
122
|
+
|
|
123
|
+
Python / Go / TypeScript / JavaScript SDK 均提供 storage low-level 与 VFS 门面。普通应用优先使用 SDK VFS:`write_bytes` / `upload_file` 会先 `check_upload`,小对象走 `put_object`,大对象走 `create_upload_session` → HTTP PUT → `complete_upload`,秒传路径用 `complete_upload(skip_blob=true)`;`read_bytes` / `download_file` 优先尝试 inline `get_object`,超限时回退 `create_download_ticket`;`touch` 直接封装 `storage.fs.touch`。需要精确控制 ACL、token、软链、卷、批量操作或 URL 字段时,再直接调用本手册中的 `storage.*` RPC。
|
|
124
|
+
|
|
64
125
|
## storage.put_object
|
|
65
126
|
|
|
66
127
|
上传小对象(内容 base64 编码通过 RPC 传输)。
|
|
@@ -84,7 +145,7 @@
|
|
|
84
145
|
|
|
85
146
|
| 字段 | 类型 | 说明 |
|
|
86
147
|
|------|------|------|
|
|
87
|
-
| `url` | string | **AID 风格 URL(默认/推荐)**:`https://{owner_aid}/
|
|
148
|
+
| `url` | string | **AID 风格 URL(默认/推荐)**:`https://{owner_aid}/{object_key}`,经 NameService fallback 302 跳转到 storage 服务 |
|
|
88
149
|
| `logical_url` | string | 直链 URL:`https://storage.{issuer}/{user}/{object_key}`,直达 storage 服务,无跳转 |
|
|
89
150
|
| `owner_aid` | string | 所有者 AID |
|
|
90
151
|
| `bucket` | string | 存储桶 |
|
|
@@ -281,9 +342,9 @@ for obj in result["items"]:
|
|
|
281
342
|
|
|
282
343
|
---
|
|
283
344
|
|
|
284
|
-
## storage.get_quota
|
|
285
|
-
|
|
286
|
-
查询存储配额。
|
|
345
|
+
## storage.get_quota
|
|
346
|
+
|
|
347
|
+
查询存储配额。
|
|
287
348
|
|
|
288
349
|
### 参数
|
|
289
350
|
|
|
@@ -298,193 +359,193 @@ for obj in result["items"]:
|
|
|
298
359
|
| `owner_aid` | string | 所有者 AID |
|
|
299
360
|
| `used_bytes` | integer | 已使用空间(字节) |
|
|
300
361
|
| `object_count` | integer | 对象数量 |
|
|
301
|
-
| `quota_bytes` | integer | 配额上限(字节),0 表示无限制 |
|
|
302
|
-
|
|
303
|
-
---
|
|
304
|
-
|
|
305
|
-
## storage.create_folder
|
|
306
|
-
|
|
307
|
-
创建目录节点。目录和对象共用同一个 `bucket`,默认 bucket 为 `"default"`。
|
|
308
|
-
|
|
309
|
-
**参数**:
|
|
310
|
-
|
|
311
|
-
| 参数 | 类型 | 必填 | 说明 |
|
|
312
|
-
|------|------|------|------|
|
|
313
|
-
| `path` | string | 否 | 完整目录路径;提供时优先使用 |
|
|
314
|
-
| `name` | string | 否 | 目录名;未提供 `path` 时必填 |
|
|
315
|
-
| `parent_folder_id` | string | 否 | 父目录 ID |
|
|
316
|
-
| `parent_path` | string | 否 | 父目录路径,默认根目录 |
|
|
317
|
-
| `bucket` | string | 否 | 存储桶,默认 `"default"` |
|
|
318
|
-
| `owner_aid` | string | 否 | 所有者 AID,默认当前用户 |
|
|
319
|
-
| `mkdirs` | boolean | 否 | 是否递归创建父目录 |
|
|
320
|
-
| `metadata` | object | 否 | 目录元数据 |
|
|
321
|
-
| `conflict_policy` | string | 否 | `"reject"` / `"return_existing"` |
|
|
322
|
-
|
|
323
|
-
**响应**:返回 `folder`,同时在顶层展开 `folder_id`、`path`、`name`、`parent_folder_id`、`version` 等字段。
|
|
324
|
-
|
|
325
|
-
---
|
|
326
|
-
|
|
327
|
-
## storage.get_folder
|
|
328
|
-
|
|
329
|
-
查询目录节点。
|
|
330
|
-
|
|
331
|
-
**参数**:`folder_id` 或 `path` 至少提供一个;可选 `bucket`、`owner_aid`。
|
|
332
|
-
|
|
333
|
-
**响应**:同 `storage.create_folder` 的 `folder` 视图。
|
|
334
|
-
|
|
335
|
-
---
|
|
336
|
-
|
|
337
|
-
## storage.list_children
|
|
338
|
-
|
|
339
|
-
列出目录下的直接子目录和对象。
|
|
340
|
-
|
|
341
|
-
**参数**:
|
|
342
|
-
|
|
343
|
-
| 参数 | 类型 | 必填 | 说明 |
|
|
344
|
-
|------|------|------|------|
|
|
345
|
-
| `folder_id` / `path` | string | 否 | 目标目录;都不传表示根目录 |
|
|
346
|
-
| `type` | string | 否 | `"all"` / `"folder"` / `"object"`,默认 `"all"` |
|
|
347
|
-
| `bucket` | string | 否 | 存储桶,默认 `"default"` |
|
|
348
|
-
| `owner_aid` | string | 否 | 所有者 AID,默认当前用户 |
|
|
349
|
-
| `page` | integer | 否 | 页码,默认 1 |
|
|
350
|
-
| `size` | integer | 否 | 每页数量,最大受服务配置限制 |
|
|
351
|
-
| `order_by` | string | 否 | `"name"` / `"updated_at"` / `"size_bytes"` |
|
|
352
|
-
| `order` | string | 否 | `"asc"` / `"desc"` |
|
|
353
|
-
| `include_metadata` | boolean | 否 | 是否返回元数据,默认 `true` |
|
|
354
|
-
| `include_urls` | boolean | 否 | 是否返回 URL 字段,默认 `true` |
|
|
355
|
-
|
|
356
|
-
**响应**:`folder`、`items`、`total`、`page`、`size`、`next_marker`。`items[].node_type` 区分 `folder` / `object`。
|
|
357
|
-
|
|
358
|
-
---
|
|
359
|
-
|
|
360
|
-
## storage.rename_folder
|
|
361
|
-
|
|
362
|
-
重命名目录。根目录不可改名。
|
|
363
|
-
|
|
364
|
-
**参数**:`folder_id` 或 `path`,`new_name` 必填;可选 `bucket`、`owner_aid`、`expected_version`。
|
|
365
|
-
|
|
366
|
-
**响应**:更新后的 `folder` 视图。
|
|
367
|
-
|
|
368
|
-
---
|
|
369
|
-
|
|
370
|
-
## storage.move_folder
|
|
371
|
-
|
|
372
|
-
移动目录。不能移动到自身或自身子目录。
|
|
373
|
-
|
|
374
|
-
**参数**:`folder_id` 或 `path`,目标目录通过 `dst_parent_folder_id` 或 `dst_parent_path` 指定;可选 `new_name`、`bucket`、`owner_aid`、`expected_version`。
|
|
375
|
-
|
|
376
|
-
**响应**:更新后的 `folder` 视图。
|
|
377
|
-
|
|
378
|
-
---
|
|
379
|
-
|
|
380
|
-
## storage.delete_folder
|
|
381
|
-
|
|
382
|
-
删除目录。
|
|
383
|
-
|
|
384
|
-
**参数**:
|
|
385
|
-
|
|
386
|
-
| 参数 | 类型 | 必填 | 说明 |
|
|
387
|
-
|------|------|------|------|
|
|
388
|
-
| `folder_id` / `path` | string | 是 | 待删除目录 |
|
|
389
|
-
| `recursive` | boolean | 否 | 非空目录必须传 `true` |
|
|
390
|
-
| `dry_run` | boolean | 否 | 只预览将删除的目录/对象 |
|
|
391
|
-
| `bucket` | string | 否 | 存储桶,默认 `"default"` |
|
|
392
|
-
| `owner_aid` | string | 否 | 所有者 AID,默认当前用户 |
|
|
393
|
-
|
|
394
|
-
**响应**:`deleted_folders`、`deleted_objects`、`deleted_object_items`、`errors`;`dry_run=true` 时返回预览列表。
|
|
395
|
-
|
|
396
|
-
---
|
|
397
|
-
|
|
398
|
-
## storage.resolve_path
|
|
399
|
-
|
|
400
|
-
按路径解析目录或对象。
|
|
401
|
-
|
|
402
|
-
**参数**:`path` 必填;可选 `expected_type`(`"any"` / `"object"` / `"folder"`)、`bucket`、`owner_aid`。
|
|
403
|
-
|
|
404
|
-
**响应**:`type`、`folder_id` 或 `object_id`、`path`、`status`。
|
|
405
|
-
|
|
406
|
-
---
|
|
407
|
-
|
|
408
|
-
## storage.move_object
|
|
409
|
-
|
|
410
|
-
移动或重命名对象。
|
|
411
|
-
|
|
412
|
-
**参数**:对象选择器(`object_id` / `object_key` / `path`),目标目录 `dst_parent_folder_id` 或 `dst_parent_path`;可选 `new_name`、`conflict_policy`(`"reject"` / `"replace"` / `"keep_both"`)、`expected_version`。
|
|
413
|
-
|
|
414
|
-
**响应**:返回 `object`,同时在顶层展开对象视图字段。
|
|
415
|
-
|
|
416
|
-
---
|
|
417
|
-
|
|
418
|
-
## storage.copy_object
|
|
419
|
-
|
|
420
|
-
复制对象,底层内容按 CAS 引用计数复用。
|
|
421
|
-
|
|
422
|
-
**参数**:源对象选择器(`object_id` / `object_key` / `path`,也接受 `src_object_key` / `src_path`),目标 `dst_object_key` / `dst_path` 或目标父目录 + `new_name`;可选 `conflict_policy`、`copy_metadata`。
|
|
423
|
-
|
|
424
|
-
**响应**:新对象视图。
|
|
425
|
-
|
|
426
|
-
---
|
|
427
|
-
|
|
428
|
-
## storage.batch_delete
|
|
429
|
-
|
|
430
|
-
批量删除对象或目录。
|
|
431
|
-
|
|
432
|
-
**参数**:
|
|
433
|
-
|
|
434
|
-
| 参数 | 类型 | 必填 | 说明 |
|
|
435
|
-
|------|------|------|------|
|
|
436
|
-
| `items` | array | 否 | 每项含 `type`、`object_id` / `object_key` / `path` / `folder_id` |
|
|
437
|
-
| `object_keys` | string[] | 否 | 兼容简写,转为对象删除 |
|
|
438
|
-
| `recursive` | boolean | 否 | 删除目录时是否递归 |
|
|
439
|
-
| `dry_run` | boolean | 否 | 只预览 |
|
|
440
|
-
|
|
441
|
-
**响应**:`deleted`、`errors`、`deleted_count`、`summary`。
|
|
442
|
-
|
|
443
|
-
---
|
|
444
|
-
|
|
445
|
-
## storage.batch_head_object
|
|
446
|
-
|
|
447
|
-
批量查询对象元数据。
|
|
448
|
-
|
|
449
|
-
**参数**:`object_ids`、`paths` 至少提供一类;可选 `owner_aid`、`bucket`、`include_missing`、`include_metadata`、`include_urls`。
|
|
450
|
-
|
|
451
|
-
**响应**:`items` 和 `errors`。
|
|
452
|
-
|
|
453
|
-
---
|
|
454
|
-
|
|
455
|
-
## storage.set_object_meta
|
|
456
|
-
|
|
457
|
-
更新对象元数据和可选 MIME 类型。
|
|
458
|
-
|
|
459
|
-
**参数**:对象选择器,`metadata`;可选 `merge`(默认 `true`)、`content_type`、`expected_version`。
|
|
460
|
-
|
|
461
|
-
**响应**:更新后的对象视图。
|
|
462
|
-
|
|
463
|
-
---
|
|
464
|
-
|
|
465
|
-
## storage.get_object_url
|
|
466
|
-
|
|
467
|
-
获取稳定对象 URL。
|
|
468
|
-
|
|
469
|
-
**参数**:对象选择器;可选 `include_path_url`。
|
|
470
|
-
|
|
471
|
-
**响应**:`object_id`、`object_url`、`path_url`、`stable`。
|
|
472
|
-
|
|
473
|
-
---
|
|
474
|
-
|
|
475
|
-
## storage.append_object
|
|
476
|
-
|
|
477
|
-
向对象尾部追加 base64 内容;对象不存在时创建。
|
|
478
|
-
|
|
479
|
-
**参数**:与 `storage.put_object` 类似,`content` 必填;可选 `object_key` / `path` / `name`、`bucket`、`owner_aid`、`content_type`、`metadata`、`expected_version`、`is_private`。
|
|
480
|
-
|
|
481
|
-
**响应**:对象视图。
|
|
482
|
-
|
|
483
|
-
---
|
|
484
|
-
|
|
485
|
-
## storage.create_upload_session
|
|
486
|
-
|
|
487
|
-
获取上传用 presigned URL。
|
|
362
|
+
| `quota_bytes` | integer | 配额上限(字节),0 表示无限制 |
|
|
363
|
+
|
|
364
|
+
---
|
|
365
|
+
|
|
366
|
+
## storage.create_folder
|
|
367
|
+
|
|
368
|
+
创建目录节点。目录和对象共用同一个 `bucket`,默认 bucket 为 `"default"`。
|
|
369
|
+
|
|
370
|
+
**参数**:
|
|
371
|
+
|
|
372
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
373
|
+
|------|------|------|------|
|
|
374
|
+
| `path` | string | 否 | 完整目录路径;提供时优先使用 |
|
|
375
|
+
| `name` | string | 否 | 目录名;未提供 `path` 时必填 |
|
|
376
|
+
| `parent_folder_id` | string | 否 | 父目录 ID |
|
|
377
|
+
| `parent_path` | string | 否 | 父目录路径,默认根目录 |
|
|
378
|
+
| `bucket` | string | 否 | 存储桶,默认 `"default"` |
|
|
379
|
+
| `owner_aid` | string | 否 | 所有者 AID,默认当前用户 |
|
|
380
|
+
| `mkdirs` | boolean | 否 | 是否递归创建父目录 |
|
|
381
|
+
| `metadata` | object | 否 | 目录元数据 |
|
|
382
|
+
| `conflict_policy` | string | 否 | `"reject"` / `"return_existing"` |
|
|
383
|
+
|
|
384
|
+
**响应**:返回 `folder`,同时在顶层展开 `folder_id`、`path`、`name`、`parent_folder_id`、`version` 等字段。
|
|
385
|
+
|
|
386
|
+
---
|
|
387
|
+
|
|
388
|
+
## storage.get_folder
|
|
389
|
+
|
|
390
|
+
查询目录节点。
|
|
391
|
+
|
|
392
|
+
**参数**:`folder_id` 或 `path` 至少提供一个;可选 `bucket`、`owner_aid`。
|
|
393
|
+
|
|
394
|
+
**响应**:同 `storage.create_folder` 的 `folder` 视图。
|
|
395
|
+
|
|
396
|
+
---
|
|
397
|
+
|
|
398
|
+
## storage.list_children
|
|
399
|
+
|
|
400
|
+
列出目录下的直接子目录和对象。
|
|
401
|
+
|
|
402
|
+
**参数**:
|
|
403
|
+
|
|
404
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
405
|
+
|------|------|------|------|
|
|
406
|
+
| `folder_id` / `path` | string | 否 | 目标目录;都不传表示根目录 |
|
|
407
|
+
| `type` | string | 否 | `"all"` / `"folder"` / `"object"`,默认 `"all"` |
|
|
408
|
+
| `bucket` | string | 否 | 存储桶,默认 `"default"` |
|
|
409
|
+
| `owner_aid` | string | 否 | 所有者 AID,默认当前用户 |
|
|
410
|
+
| `page` | integer | 否 | 页码,默认 1 |
|
|
411
|
+
| `size` | integer | 否 | 每页数量,最大受服务配置限制 |
|
|
412
|
+
| `order_by` | string | 否 | `"name"` / `"updated_at"` / `"size_bytes"` |
|
|
413
|
+
| `order` | string | 否 | `"asc"` / `"desc"` |
|
|
414
|
+
| `include_metadata` | boolean | 否 | 是否返回元数据,默认 `true` |
|
|
415
|
+
| `include_urls` | boolean | 否 | 是否返回 URL 字段,默认 `true` |
|
|
416
|
+
|
|
417
|
+
**响应**:`folder`、`items`、`total`、`page`、`size`、`next_marker`。`items[].node_type` 区分 `folder` / `object`。
|
|
418
|
+
|
|
419
|
+
---
|
|
420
|
+
|
|
421
|
+
## storage.rename_folder
|
|
422
|
+
|
|
423
|
+
重命名目录。根目录不可改名。
|
|
424
|
+
|
|
425
|
+
**参数**:`folder_id` 或 `path`,`new_name` 必填;可选 `bucket`、`owner_aid`、`expected_version`。
|
|
426
|
+
|
|
427
|
+
**响应**:更新后的 `folder` 视图。
|
|
428
|
+
|
|
429
|
+
---
|
|
430
|
+
|
|
431
|
+
## storage.move_folder
|
|
432
|
+
|
|
433
|
+
移动目录。不能移动到自身或自身子目录。
|
|
434
|
+
|
|
435
|
+
**参数**:`folder_id` 或 `path`,目标目录通过 `dst_parent_folder_id` 或 `dst_parent_path` 指定;可选 `new_name`、`bucket`、`owner_aid`、`expected_version`。
|
|
436
|
+
|
|
437
|
+
**响应**:更新后的 `folder` 视图。
|
|
438
|
+
|
|
439
|
+
---
|
|
440
|
+
|
|
441
|
+
## storage.delete_folder
|
|
442
|
+
|
|
443
|
+
删除目录。
|
|
444
|
+
|
|
445
|
+
**参数**:
|
|
446
|
+
|
|
447
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
448
|
+
|------|------|------|------|
|
|
449
|
+
| `folder_id` / `path` | string | 是 | 待删除目录 |
|
|
450
|
+
| `recursive` | boolean | 否 | 非空目录必须传 `true` |
|
|
451
|
+
| `dry_run` | boolean | 否 | 只预览将删除的目录/对象 |
|
|
452
|
+
| `bucket` | string | 否 | 存储桶,默认 `"default"` |
|
|
453
|
+
| `owner_aid` | string | 否 | 所有者 AID,默认当前用户 |
|
|
454
|
+
|
|
455
|
+
**响应**:`deleted_folders`、`deleted_objects`、`deleted_object_items`、`errors`;`dry_run=true` 时返回预览列表。
|
|
456
|
+
|
|
457
|
+
---
|
|
458
|
+
|
|
459
|
+
## storage.resolve_path
|
|
460
|
+
|
|
461
|
+
按路径解析目录或对象。
|
|
462
|
+
|
|
463
|
+
**参数**:`path` 必填;可选 `expected_type`(`"any"` / `"object"` / `"folder"`)、`bucket`、`owner_aid`。
|
|
464
|
+
|
|
465
|
+
**响应**:`type`、`folder_id` 或 `object_id`、`path`、`status`。
|
|
466
|
+
|
|
467
|
+
---
|
|
468
|
+
|
|
469
|
+
## storage.move_object
|
|
470
|
+
|
|
471
|
+
移动或重命名对象。
|
|
472
|
+
|
|
473
|
+
**参数**:对象选择器(`object_id` / `object_key` / `path`),目标目录 `dst_parent_folder_id` 或 `dst_parent_path`;可选 `new_name`、`conflict_policy`(`"reject"` / `"replace"` / `"keep_both"`)、`expected_version`。
|
|
474
|
+
|
|
475
|
+
**响应**:返回 `object`,同时在顶层展开对象视图字段。
|
|
476
|
+
|
|
477
|
+
---
|
|
478
|
+
|
|
479
|
+
## storage.copy_object
|
|
480
|
+
|
|
481
|
+
复制对象,底层内容按 CAS 引用计数复用。
|
|
482
|
+
|
|
483
|
+
**参数**:源对象选择器(`object_id` / `object_key` / `path`,也接受 `src_object_key` / `src_path`),目标 `dst_object_key` / `dst_path` 或目标父目录 + `new_name`;可选 `conflict_policy`、`copy_metadata`。
|
|
484
|
+
|
|
485
|
+
**响应**:新对象视图。
|
|
486
|
+
|
|
487
|
+
---
|
|
488
|
+
|
|
489
|
+
## storage.batch_delete
|
|
490
|
+
|
|
491
|
+
批量删除对象或目录。
|
|
492
|
+
|
|
493
|
+
**参数**:
|
|
494
|
+
|
|
495
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
496
|
+
|------|------|------|------|
|
|
497
|
+
| `items` | array | 否 | 每项含 `type`、`object_id` / `object_key` / `path` / `folder_id` |
|
|
498
|
+
| `object_keys` | string[] | 否 | 兼容简写,转为对象删除 |
|
|
499
|
+
| `recursive` | boolean | 否 | 删除目录时是否递归 |
|
|
500
|
+
| `dry_run` | boolean | 否 | 只预览 |
|
|
501
|
+
|
|
502
|
+
**响应**:`deleted`、`errors`、`deleted_count`、`summary`。
|
|
503
|
+
|
|
504
|
+
---
|
|
505
|
+
|
|
506
|
+
## storage.batch_head_object
|
|
507
|
+
|
|
508
|
+
批量查询对象元数据。
|
|
509
|
+
|
|
510
|
+
**参数**:`object_ids`、`paths` 至少提供一类;可选 `owner_aid`、`bucket`、`include_missing`、`include_metadata`、`include_urls`。
|
|
511
|
+
|
|
512
|
+
**响应**:`items` 和 `errors`。
|
|
513
|
+
|
|
514
|
+
---
|
|
515
|
+
|
|
516
|
+
## storage.set_object_meta
|
|
517
|
+
|
|
518
|
+
更新对象元数据和可选 MIME 类型。
|
|
519
|
+
|
|
520
|
+
**参数**:对象选择器,`metadata`;可选 `merge`(默认 `true`)、`content_type`、`expected_version`。
|
|
521
|
+
|
|
522
|
+
**响应**:更新后的对象视图。
|
|
523
|
+
|
|
524
|
+
---
|
|
525
|
+
|
|
526
|
+
## storage.get_object_url
|
|
527
|
+
|
|
528
|
+
获取稳定对象 URL。
|
|
529
|
+
|
|
530
|
+
**参数**:对象选择器;可选 `include_path_url`。
|
|
531
|
+
|
|
532
|
+
**响应**:`object_id`、`object_url`、`path_url`、`stable`。
|
|
533
|
+
|
|
534
|
+
---
|
|
535
|
+
|
|
536
|
+
## storage.append_object
|
|
537
|
+
|
|
538
|
+
向对象尾部追加 base64 内容;对象不存在时创建。
|
|
539
|
+
|
|
540
|
+
**参数**:与 `storage.put_object` 类似,`content` 必填;可选 `object_key` / `path` / `name`、`bucket`、`owner_aid`、`content_type`、`metadata`、`expected_version`、`is_private`。
|
|
541
|
+
|
|
542
|
+
**响应**:对象视图。
|
|
543
|
+
|
|
544
|
+
---
|
|
545
|
+
|
|
546
|
+
## storage.create_upload_session
|
|
547
|
+
|
|
548
|
+
获取上传用 presigned URL。
|
|
488
549
|
|
|
489
550
|
### 参数
|
|
490
551
|
|
|
@@ -534,7 +595,7 @@ for obj in result["items"]:
|
|
|
534
595
|
| `content_type` | string | 否 | MIME 类型,默认 `"application/octet-stream"` |
|
|
535
596
|
| `is_private` | boolean | 否 | 是否私有,默认 `true` |
|
|
536
597
|
| `size_bytes` | integer | 否 | 预期文件大小(用于校验) |
|
|
537
|
-
| `skip_blob` | boolean | 否 | 秒传模式,默认 `false`;为 `true` 时跳过 blob 上传,必须提供 `sha256`,且当前 owner 已拥有相同内容 |
|
|
598
|
+
| `skip_blob` | boolean | 否 | 秒传模式,默认 `false`;为 `true` 时跳过 blob 上传,必须提供 `sha256`,且当前 owner 已拥有相同内容 |
|
|
538
599
|
| `expected_version` | integer | 否 | 乐观并发控制版本号 |
|
|
539
600
|
| `expire_in_seconds` | integer | 否 | 过期时间(秒) |
|
|
540
601
|
| `metadata` | object | 否 | 自定义元数据 |
|
|
@@ -543,7 +604,7 @@ for obj in result["items"]:
|
|
|
543
604
|
|
|
544
605
|
| 字段 | 类型 | 说明 |
|
|
545
606
|
|------|------|------|
|
|
546
|
-
| `url` | string | **AID 风格 URL(默认/推荐)**:`https://{owner_aid}/
|
|
607
|
+
| `url` | string | **AID 风格 URL(默认/推荐)**:`https://{owner_aid}/{object_key}`,经 NameService fallback 302 跳转 |
|
|
547
608
|
| `logical_url` | string | 直链 URL:`https://storage.{issuer}/{user}/{object_key}`,无跳转 |
|
|
548
609
|
| `owner_aid` | string | 所有者 AID |
|
|
549
610
|
| `bucket` | string | 存储桶 |
|
|
@@ -574,10 +635,11 @@ for obj in result["items"]:
|
|
|
574
635
|
|
|
575
636
|
| 字段 | 类型 | 说明 |
|
|
576
637
|
|------|------|------|
|
|
577
|
-
| `url` | string | **AID 风格 URL
|
|
578
|
-
| `logical_url` | string | 直链 URL:`https://storage.{issuer}/{user}/{object_key}`,直达 storage
|
|
579
|
-
| `download_url` | string |
|
|
580
|
-
| `expire_at` | integer |
|
|
638
|
+
| `url` | string | **AID 风格 URL(默认/推荐)**:public 文件为 `https://{owner_aid}/{object_key}`,private 文件为 `https://{owner_aid}/{object_key}?t={token}`。经 NameService fallback 302 跳转到 storage 服务,storage 实时鉴权后出文件(302 到 blob 后端,对客户端透明) |
|
|
639
|
+
| `logical_url` | string | 直链 URL:`https://storage.{issuer}/{user}/{object_key}`,直达 storage 服务,无 NameService 跳转 |
|
|
640
|
+
| `download_url` | string | 同 `url`(兼容旧客户端,格式已统一) |
|
|
641
|
+
| `expire_at` | integer | token 过期时间戳(Unix 秒),public 文件此字段无实际约束 |
|
|
642
|
+
| `token` | string | private 文件的不透明访问 token(10 位 Base62),public 文件无此字段 |
|
|
581
643
|
| `file_name` | string | 文件名(从 object_key 提取) |
|
|
582
644
|
| `size_bytes` | integer | 文件大小(字节) |
|
|
583
645
|
| `content_type` | string | MIME 类型 |
|
|
@@ -585,9 +647,7 @@ for obj in result["items"]:
|
|
|
585
647
|
| `version` | integer | 版本号 |
|
|
586
648
|
| `etag` | string | 实体标签 |
|
|
587
649
|
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
> 当前实现会对 BlobStore 返回的 loopback URL 做对外地址规范化:优先使用 `KITE_STORAGE_EXTERNAL_URL`,否则按 `storage.{issuer}` 形式改写。对外地址不可使用 `127.0.0.1` 或 `localhost`。
|
|
650
|
+
`url` 是推荐使用的干净链接。访问时 storage 服务实时鉴权:public 文件直接通过,private 文件需 `?t=` token 或 `Authorization: Bearer <AID JWT>` 头证明 owner 身份。鉴权通过后 storage 302 到 blob 后端完成实际下载,这一步对客户端完全透明。
|
|
591
651
|
|
|
592
652
|
---
|
|
593
653
|
|
|
@@ -650,25 +710,25 @@ print(f"配额: {limits['quota_used_bytes']}/{limits['quota_total_bytes']}")
|
|
|
650
710
|
|
|
651
711
|
## storage.check_upload
|
|
652
712
|
|
|
653
|
-
上传预检:一次调用同时回答"文件是否超限"和"当前 owner 是否可秒传"。客户端应在计算完文件 SHA-256 后、实际上传前调用。
|
|
654
|
-
|
|
655
|
-
> `check_upload` / `complete_upload(skip_blob=true)` 只允许复用当前 owner 已拥有的内容,避免跨 owner 暴露全局 CAS 存在性或跳过上传克隆他人私有内容。不同 owner 上传相同内容时,仍会在完成上传后归一到同一个 CAS blob,由服务端引用计数管理物理去重。
|
|
713
|
+
上传预检:一次调用同时回答"文件是否超限"和"当前 owner 是否可秒传"。客户端应在计算完文件 SHA-256 后、实际上传前调用。
|
|
714
|
+
|
|
715
|
+
> `check_upload` / `complete_upload(skip_blob=true)` 只允许复用当前 owner 已拥有的内容,避免跨 owner 暴露全局 CAS 存在性或跳过上传克隆他人私有内容。不同 owner 上传相同内容时,仍会在完成上传后归一到同一个 CAS blob,由服务端引用计数管理物理去重。
|
|
656
716
|
|
|
657
717
|
### 参数
|
|
658
718
|
|
|
659
|
-
| 参数 | 类型 | 必填 | 说明 |
|
|
660
|
-
|------|------|------|------|
|
|
661
|
-
| `sha256` | string | 是 | 文件内容的 SHA-256 hex(64 字符) |
|
|
662
|
-
| `size_bytes` | integer | 是 | 文件大小(字节) |
|
|
663
|
-
| `owner_aid` | string | 否 | 检查指定 owner 是否可秒传,默认当前用户;必须等于当前登录 AID |
|
|
719
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
720
|
+
|------|------|------|------|
|
|
721
|
+
| `sha256` | string | 是 | 文件内容的 SHA-256 hex(64 字符) |
|
|
722
|
+
| `size_bytes` | integer | 是 | 文件大小(字节) |
|
|
723
|
+
| `owner_aid` | string | 否 | 检查指定 owner 是否可秒传,默认当前用户;必须等于当前登录 AID |
|
|
664
724
|
|
|
665
725
|
### 响应
|
|
666
726
|
|
|
667
727
|
| 字段 | 类型 | 说明 |
|
|
668
728
|
|------|------|------|
|
|
669
729
|
| `within_limit` | boolean | 文件大小是否在限制内 |
|
|
670
|
-
| `exists` | boolean | 当前 owner 是否已拥有相同内容且 CAS blob 可用 |
|
|
671
|
-
| `skip_upload` | boolean | 是否可跳过上传(秒传) |
|
|
730
|
+
| `exists` | boolean | 当前 owner 是否已拥有相同内容且 CAS blob 可用 |
|
|
731
|
+
| `skip_upload` | boolean | 是否可跳过上传(秒传) |
|
|
672
732
|
|
|
673
733
|
### 使用场景
|
|
674
734
|
|
|
@@ -686,7 +746,7 @@ check = await client.call("storage.check_upload", {
|
|
|
686
746
|
if not check["within_limit"]:
|
|
687
747
|
print("文件超限,无法上传")
|
|
688
748
|
elif check["skip_upload"]:
|
|
689
|
-
# 秒传:当前 owner 已拥有相同内容,跳过上传直接 complete
|
|
749
|
+
# 秒传:当前 owner 已拥有相同内容,跳过上传直接 complete
|
|
690
750
|
await client.call("storage.complete_upload", {
|
|
691
751
|
"object_key": "my/file.bin",
|
|
692
752
|
"sha256": sha256,
|
|
@@ -729,13 +789,16 @@ else:
|
|
|
729
789
|
| 字段 | 类型 | 说明 |
|
|
730
790
|
|------|------|------|
|
|
731
791
|
| `share_id` | string | 10 位 Base62 分享短码 |
|
|
732
|
-
| `
|
|
733
|
-
| `
|
|
792
|
+
| `url` | string | **默认分享 URL(隐藏路径)**:`https://{owner_aid}/s/{share_id}`,最短直链 |
|
|
793
|
+
| `path_url` | string | **可选分享 URL(暴露路径)**:`https://{owner_aid}/{object_key}?t={share_id}`,可读性强 |
|
|
794
|
+
| `aid_share_url` | string | 同 `url`(兼容旧字段) |
|
|
795
|
+
| `share_url` | string | storage 直链:`https://storage.{issuer}/s/{share_id}`,兼容字段 |
|
|
734
796
|
| `expire_at` | integer | 过期时间戳(Unix 秒),`0` 表示永不过期 |
|
|
735
797
|
| `max_uses` | integer | 最大使用次数,`0` 表示无限制 |
|
|
736
798
|
| `allowed_aids` | string[] | 授权 AID 列表,`["*"]` 表示公开 |
|
|
737
799
|
|
|
738
|
-
>
|
|
800
|
+
> 两种格式都通过 `share_id` 定位到 `share_links` 记录鉴权。`url` 隐藏文件结构,`path_url` 暴露文件名便于识别,调用者按需选择。
|
|
801
|
+
> 访问 `url` 时经 NameService 302 跳转到 `storage.{issuer}/s/{share_id}`;访问 `path_url` 时经 NameService fallback 到 storage,由 `?t=` token 鉴权。
|
|
739
802
|
> share_id 指向 `(owner_aid, bucket, object_key)` 逻辑引用,非内容快照:对象改名/移动后原 share_id 失效,内容覆盖后下载到新内容。
|
|
740
803
|
|
|
741
804
|
### 示例
|
|
@@ -747,7 +810,7 @@ result = await client.call("storage.create_share_link", {
|
|
|
747
810
|
"expire_in_seconds": 3600,
|
|
748
811
|
"max_uses": 5,
|
|
749
812
|
})
|
|
750
|
-
share_url = result["
|
|
813
|
+
share_url = result["url"] # https://alice.agentid.pub/s/Ab3xK9mZ2q
|
|
751
814
|
```
|
|
752
815
|
|
|
753
816
|
---
|
|
@@ -774,8 +837,10 @@ share_url = result["aid_share_url"]
|
|
|
774
837
|
| 字段 | 类型 | 说明 |
|
|
775
838
|
|------|------|------|
|
|
776
839
|
| `share_id` | string | 分享短码 |
|
|
777
|
-
| `
|
|
778
|
-
| `
|
|
840
|
+
| `url` | string | 默认分享 URL(隐藏路径):`https://{owner_aid}/s/{share_id}` |
|
|
841
|
+
| `path_url` | string | 可选分享 URL(暴露路径):`https://{owner_aid}/{object_key}?t={share_id}` |
|
|
842
|
+
| `aid_share_url` | string | 同 `url`(兼容旧字段) |
|
|
843
|
+
| `share_url` | string | storage 直链(兼容) |
|
|
779
844
|
| `object_key` | string | 被分享对象路径 |
|
|
780
845
|
| `bucket` | string | 存储桶 |
|
|
781
846
|
| `allowed_aids` | string[] | 授权 AID 列表,`["*"]` 表示公开 |
|
|
@@ -786,9 +851,9 @@ share_url = result["aid_share_url"]
|
|
|
786
851
|
|
|
787
852
|
---
|
|
788
853
|
|
|
789
|
-
## storage.revoke_share_link
|
|
790
|
-
|
|
791
|
-
撤销分享链接。
|
|
854
|
+
## storage.revoke_share_link
|
|
855
|
+
|
|
856
|
+
撤销分享链接。
|
|
792
857
|
|
|
793
858
|
### 参数
|
|
794
859
|
|
|
@@ -803,25 +868,670 @@ share_url = result["aid_share_url"]
|
|
|
803
868
|
| `revoked` | boolean | 是否成功撤销 |
|
|
804
869
|
| `share_id` | string | 被撤销的分享短码 |
|
|
805
870
|
|
|
806
|
-
> 链接不存在或已撤销时返回通用错误(`-32000`)。
|
|
807
|
-
|
|
808
|
-
---
|
|
809
|
-
|
|
810
|
-
## storage.get_by_share
|
|
811
|
-
|
|
812
|
-
通过分享短码读取对象。公开分享无需额外授权;私有白名单分享需要请求者 AID 在 `allowed_aids` 内。
|
|
813
|
-
|
|
814
|
-
**参数**:
|
|
815
|
-
|
|
816
|
-
| 参数 | 类型 | 必填 | 说明 |
|
|
817
|
-
|------|------|------|------|
|
|
818
|
-
| `share_id` | string | 是 | 分享短码 |
|
|
819
|
-
|
|
820
|
-
**响应**:小对象返回 `content`;大对象返回 `download_url`。同时返回 `object_id`、`object_key`、`path`、`size_bytes`、`content_type`、`sha256`。
|
|
821
|
-
|
|
822
|
-
---
|
|
823
|
-
|
|
824
|
-
##
|
|
871
|
+
> 链接不存在或已撤销时返回通用错误(`-32000`)。
|
|
872
|
+
|
|
873
|
+
---
|
|
874
|
+
|
|
875
|
+
## storage.get_by_share
|
|
876
|
+
|
|
877
|
+
通过分享短码读取对象。公开分享无需额外授权;私有白名单分享需要请求者 AID 在 `allowed_aids` 内。
|
|
878
|
+
|
|
879
|
+
**参数**:
|
|
880
|
+
|
|
881
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
882
|
+
|------|------|------|------|
|
|
883
|
+
| `share_id` | string | 是 | 分享短码 |
|
|
884
|
+
|
|
885
|
+
**响应**:小对象返回 `content`;大对象返回 `download_url`。同时返回 `object_id`、`object_key`、`path`、`size_bytes`、`content_type`、`sha256`。
|
|
886
|
+
|
|
887
|
+
---
|
|
888
|
+
|
|
889
|
+
## storage.fs.list
|
|
890
|
+
|
|
891
|
+
列目录(POSIX `ls`)。混合返回子目录/对象/软链/可用挂载点,排序 dir < file < symlink < mount。群 owner 路径回退到 Group FS 子节点。
|
|
892
|
+
|
|
893
|
+
### 参数
|
|
894
|
+
|
|
895
|
+
| 参数 | 类型 | 必填 | 默认 | 说明 |
|
|
896
|
+
|------|------|------|------|------|
|
|
897
|
+
| `path` | string | 否 | `""` | 目录路径(空=根) |
|
|
898
|
+
| `owner_aid` | string | 否 | 当前用户 | 所有者 AID |
|
|
899
|
+
| `bucket` | string | 否 | `"default"` | 存储桶 |
|
|
900
|
+
| `page` | integer | 否 | `1` | 页码 |
|
|
901
|
+
| `size` | integer | 否 | `100` | 每页条数(受 `list_max_limit` 上限约束) |
|
|
902
|
+
| `marker` | string | 否 | — | 分页游标 |
|
|
903
|
+
| `token` | string | 否 | — | 访问 token |
|
|
904
|
+
|
|
905
|
+
### 响应
|
|
906
|
+
|
|
907
|
+
| 字段 | 类型 | 说明 |
|
|
908
|
+
|------|------|------|
|
|
909
|
+
| `nodes` | array | 节点列表,每项 `{type, node_type, name, path, mode, size, mtime, owner_principal}` |
|
|
910
|
+
| `items` | array | 同 `nodes`(兼容别名) |
|
|
911
|
+
| `total` | integer | 总数 |
|
|
912
|
+
| `page` / `size` | integer | 分页 |
|
|
913
|
+
| `next_marker` | string | 下一页游标 |
|
|
914
|
+
|
|
915
|
+
`type` 取值:`file` / `dir` / `symlink` / `mount`。
|
|
916
|
+
|
|
917
|
+
---
|
|
918
|
+
|
|
919
|
+
## storage.fs.find
|
|
920
|
+
|
|
921
|
+
递归查找(POSIX `find`),支持 name/type/size/mtime 过滤与分页。Group FS 与 `.collab` 注册表有回退。
|
|
922
|
+
|
|
923
|
+
### 参数
|
|
924
|
+
|
|
925
|
+
| 参数 | 类型 | 必填 | 默认 | 说明 |
|
|
926
|
+
|------|------|------|------|------|
|
|
927
|
+
| `path` | string | 是 | — | 起始目录 |
|
|
928
|
+
| `owner_aid` | string | 否 | 当前用户 | 所有者 AID |
|
|
929
|
+
| `bucket` | string | 否 | `"default"` | 存储桶 |
|
|
930
|
+
| `name` | string | 否 | — | 名称 glob(如 `*.md`) |
|
|
931
|
+
| `type` | string | 否 | — | 节点类型过滤:`f`/`d`/`l`(SDK 形参 `node_type`) |
|
|
932
|
+
| `size` | string | 否 | — | 大小表达式(如 `+1M`) |
|
|
933
|
+
| `mtime` | string | 否 | — | 修改时间表达式 |
|
|
934
|
+
| `page` | integer | 否 | `1` | 页码 |
|
|
935
|
+
| `page_size` | integer | 否 | `1000` | 每页条数 |
|
|
936
|
+
| `token` | string | 否 | — | 访问 token |
|
|
937
|
+
|
|
938
|
+
### 响应
|
|
939
|
+
|
|
940
|
+
同 `storage.fs.list`:`{nodes, items, total, page, size, next_marker}`。
|
|
941
|
+
|
|
942
|
+
---
|
|
943
|
+
|
|
944
|
+
## storage.fs.df
|
|
945
|
+
|
|
946
|
+
配额/用量报告(POSIX `df`),含每 owner 卷(过期卷重新计算)。
|
|
947
|
+
|
|
948
|
+
### 参数
|
|
949
|
+
|
|
950
|
+
| 参数 | 类型 | 必填 | 默认 | 说明 |
|
|
951
|
+
|------|------|------|------|------|
|
|
952
|
+
| `owner_aid` | string | 否 | 当前用户 | 所有者 AID |
|
|
953
|
+
| `bucket` | string | 否 | `"default"` | 存储桶 |
|
|
954
|
+
|
|
955
|
+
### 响应
|
|
956
|
+
|
|
957
|
+
| 字段 | 类型 | 说明 |
|
|
958
|
+
|------|------|------|
|
|
959
|
+
| `owner_aid` / `bucket` | string | 所有者 / 桶 |
|
|
960
|
+
| `used_bytes` | integer | 已用字节 |
|
|
961
|
+
| `object_count` | integer | 对象数 |
|
|
962
|
+
| `quota_bytes` | integer | 配额上限 |
|
|
963
|
+
| `avail_bytes` | integer | 剩余可用 |
|
|
964
|
+
| `volumes` | array | 每卷用量明细 |
|
|
965
|
+
|
|
966
|
+
---
|
|
967
|
+
|
|
968
|
+
## storage.fs.stat
|
|
969
|
+
|
|
970
|
+
查节点元数据(POSIX `stat`)。`follow_final=true`,解析末级软链 target。
|
|
971
|
+
|
|
972
|
+
### 参数
|
|
973
|
+
|
|
974
|
+
| 参数 | 类型 | 必填 | 默认 | 说明 |
|
|
975
|
+
|------|------|------|------|------|
|
|
976
|
+
| `path` | string | 是 | — | 节点路径 |
|
|
977
|
+
| `owner_aid` | string | 否 | 当前用户 | 所有者 AID |
|
|
978
|
+
| `bucket` | string | 否 | `"default"` | 存储桶 |
|
|
979
|
+
| `token` | string | 否 | — | 访问 token |
|
|
980
|
+
|
|
981
|
+
### 响应
|
|
982
|
+
|
|
983
|
+
fs 节点视图:`{type, node_type, name, path, mode, size, mtime, owner_principal, ...}`。
|
|
984
|
+
|
|
985
|
+
---
|
|
986
|
+
|
|
987
|
+
## storage.fs.lstat
|
|
988
|
+
|
|
989
|
+
查节点(POSIX `lstat`),**不跟随末级软链**——返回软链本身(携带 `dangling` 悬空标志),不返回 target。
|
|
990
|
+
|
|
991
|
+
### 参数
|
|
992
|
+
|
|
993
|
+
同 `storage.fs.stat`。
|
|
994
|
+
|
|
995
|
+
### 响应
|
|
996
|
+
|
|
997
|
+
fs 节点视图;若为软链,返回软链节点本身(含 `dangling` 标志)。
|
|
998
|
+
|
|
999
|
+
---
|
|
1000
|
+
|
|
1001
|
+
## storage.fs.mkdir
|
|
1002
|
+
|
|
1003
|
+
建目录(POSIX `mkdir`)。委托 `create_folder`。
|
|
1004
|
+
|
|
1005
|
+
### 参数
|
|
1006
|
+
|
|
1007
|
+
| 参数 | 类型 | 必填 | 默认 | 说明 |
|
|
1008
|
+
|------|------|------|------|------|
|
|
1009
|
+
| `path` | string | 是 | — | 目录路径 |
|
|
1010
|
+
| `owner_aid` | string | 否 | 当前用户 | 所有者 AID |
|
|
1011
|
+
| `bucket` | string | 否 | `"default"` | 存储桶 |
|
|
1012
|
+
| `parents` | boolean | 否 | `false` | 递归创建父目录(类 `mkdir -p`) |
|
|
1013
|
+
|
|
1014
|
+
### 响应
|
|
1015
|
+
|
|
1016
|
+
fs 目录节点视图。
|
|
1017
|
+
|
|
1018
|
+
---
|
|
1019
|
+
|
|
1020
|
+
## storage.fs.touch
|
|
1021
|
+
|
|
1022
|
+
创建空文件或刷新已有节点的修改时间(POSIX `touch`)。已存在的文件、目录或软链会更新时间戳;不存在时默认创建 0 字节私有文件;`no_create=true` 时不存在不创建并返回 `{touched:false, created:false}`。
|
|
1023
|
+
|
|
1024
|
+
### 参数
|
|
1025
|
+
|
|
1026
|
+
| 参数 | 类型 | 必填 | 默认 | 说明 |
|
|
1027
|
+
|------|------|------|------|------|
|
|
1028
|
+
| `path` | string | 是 | — | 目标路径 |
|
|
1029
|
+
| `owner_aid` | string | 否 | 当前用户 | 所有者 AID |
|
|
1030
|
+
| `bucket` | string | 否 | `"default"` | 存储桶 |
|
|
1031
|
+
| `parents` | boolean | 否 | `false` | 创建文件时是否递归创建父目录 |
|
|
1032
|
+
| `no_create` / `noCreate` | boolean | 否 | `false` | 目标不存在时不创建 |
|
|
1033
|
+
| `mtime` | integer | 否 | 当前时间 | Unix 秒或毫秒;小于 `10000000000` 按秒解释 |
|
|
1034
|
+
| `follow_symlinks` / `followSymlinks` | boolean | 否 | `false` | 目标为软链时是否跟随末级软链 |
|
|
1035
|
+
| `content_type` | string | 否 | `"application/octet-stream"` | 新建空文件的 MIME 类型 |
|
|
1036
|
+
| `metadata` | object | 否 | `{}` | 新建空文件的元数据 |
|
|
1037
|
+
| `expire_in_seconds` | integer | 否 | `0` | 新建空文件的过期秒数 |
|
|
1038
|
+
|
|
1039
|
+
### 响应
|
|
1040
|
+
|
|
1041
|
+
成功返回 fs 节点视图,并额外包含:
|
|
1042
|
+
|
|
1043
|
+
| 字段 | 类型 | 说明 |
|
|
1044
|
+
|------|------|------|
|
|
1045
|
+
| `touched` | boolean | 是否实际更新或创建 |
|
|
1046
|
+
| `created` | boolean | 是否新建了空文件 |
|
|
1047
|
+
|
|
1048
|
+
---
|
|
1049
|
+
|
|
1050
|
+
## storage.fs.remove
|
|
1051
|
+
|
|
1052
|
+
删除文件/目录/软链(POSIX `rm`,目录用 `recursive`)。**拒绝删除挂载点**(须先 unmount)。
|
|
1053
|
+
|
|
1054
|
+
### 参数
|
|
1055
|
+
|
|
1056
|
+
| 参数 | 类型 | 必填 | 默认 | 说明 |
|
|
1057
|
+
|------|------|------|------|------|
|
|
1058
|
+
| `path` | string | 是 | — | 节点路径 |
|
|
1059
|
+
| `owner_aid` | string | 否 | 当前用户 | 所有者 AID |
|
|
1060
|
+
| `bucket` | string | 否 | `"default"` | 存储桶 |
|
|
1061
|
+
| `recursive` | boolean | 否 | `false` | 递归删除目录 |
|
|
1062
|
+
|
|
1063
|
+
### 响应
|
|
1064
|
+
|
|
1065
|
+
| 字段 | 类型 | 说明 |
|
|
1066
|
+
|------|------|------|
|
|
1067
|
+
| `owner_aid` / `bucket` / `path` | string | 目标 |
|
|
1068
|
+
| `removed_count` | integer | 删除节点数 |
|
|
1069
|
+
| `deleted` | boolean | 是否删除成功 |
|
|
1070
|
+
|
|
1071
|
+
---
|
|
1072
|
+
|
|
1073
|
+
## storage.fs.rename
|
|
1074
|
+
|
|
1075
|
+
同 owner/bucket 内移动或改名(POSIX `mv`)。**跨 owner/bucket 被拒**;按节点类型分派到 move_folder / rename_symlink / move_object。
|
|
1076
|
+
|
|
1077
|
+
### 参数
|
|
1078
|
+
|
|
1079
|
+
| 参数 | 类型 | 必填 | 默认 | 说明 |
|
|
1080
|
+
|------|------|------|------|------|
|
|
1081
|
+
| `src` | string | 是 | — | 源路径 |
|
|
1082
|
+
| `dst` | string | 是 | — | 目标路径 |
|
|
1083
|
+
| `owner_aid` | string | 否 | 当前用户 | 所有者 AID |
|
|
1084
|
+
| `bucket` | string | 否 | `"default"` | 存储桶 |
|
|
1085
|
+
| `overwrite` | boolean | 否 | `false` | 覆盖已存在目标 |
|
|
1086
|
+
| `expected_version` | integer | 否 | — | 乐观锁版本号 |
|
|
1087
|
+
|
|
1088
|
+
### 响应
|
|
1089
|
+
|
|
1090
|
+
被重命名节点的 fs 节点视图。
|
|
1091
|
+
|
|
1092
|
+
---
|
|
1093
|
+
|
|
1094
|
+
## storage.fs.copy
|
|
1095
|
+
|
|
1096
|
+
复制对象或软链(POSIX `cp`,目录复制暂不支持)。CAS blob 引用计数复用,支持跨 owner 对象复制。
|
|
1097
|
+
|
|
1098
|
+
### 参数
|
|
1099
|
+
|
|
1100
|
+
| 参数 | 类型 | 必填 | 默认 | 说明 |
|
|
1101
|
+
|------|------|------|------|------|
|
|
1102
|
+
| `src` | string | 是 | — | 源路径 |
|
|
1103
|
+
| `dst` | string | 是 | — | 目标路径 |
|
|
1104
|
+
| `owner_aid` | string | 否 | 当前用户 | 源所有者 AID |
|
|
1105
|
+
| `bucket` | string | 否 | `"default"` | 源存储桶 |
|
|
1106
|
+
| `overwrite` | boolean | 否 | `false` | 覆盖已存在目标 |
|
|
1107
|
+
| `follow_symlinks` | boolean | 否 | `false` | 复制软链 target 而非软链本身 |
|
|
1108
|
+
| `dst_owner_aid` | string | 否 | 同源 | 目标所有者(SDK 形参 `dst_owner`) |
|
|
1109
|
+
| `dst_bucket` | string | 否 | 同源 | 目标存储桶 |
|
|
1110
|
+
|
|
1111
|
+
### 响应
|
|
1112
|
+
|
|
1113
|
+
被复制节点的 fs 节点视图。
|
|
1114
|
+
|
|
1115
|
+
---
|
|
1116
|
+
|
|
1117
|
+
## storage.fs.mount
|
|
1118
|
+
|
|
1119
|
+
挂载卷或他人子树进 owner 命名空间。`readonly` 默认 true;`require_approval=true` 时进入 pending 直到源 owner 批准。群成员卷挂载场景下,storage 通过 CA `aid_type=group` 识别群命名空间,命中 `/memberdata/` 时调 `group.check_membership` 实时校验成员身份。
|
|
1120
|
+
|
|
1121
|
+
### 参数
|
|
1122
|
+
|
|
1123
|
+
| 参数 | 类型 | 必填 | 默认 | 说明 |
|
|
1124
|
+
|------|------|------|------|------|
|
|
1125
|
+
| `mount_path` | string | 是 | — | 挂载点路径 |
|
|
1126
|
+
| `owner_aid` | string | 否 | 当前用户 | 命名空间所有者 |
|
|
1127
|
+
| `bucket` | string | 否 | `"default"` | 存储桶 |
|
|
1128
|
+
| `volume_id` | string | 否 | — | 挂载实体卷(与 source_* 互斥) |
|
|
1129
|
+
| `source_aid` | string | 否 | — | 虚拟卷源 AID(与 volume_id 互斥) |
|
|
1130
|
+
| `source_path` | string | 否 | — | 虚拟卷源路径 |
|
|
1131
|
+
| `source_bucket` | string | 否 | — | 虚拟卷源存储桶 |
|
|
1132
|
+
| `readonly` | boolean | 否 | `true` | 只读挂载 |
|
|
1133
|
+
| `require_approval` | boolean | 否 | `false` | 需源 owner 批准 |
|
|
1134
|
+
| `expires_at` | integer | 否 | — | 挂载过期时间 |
|
|
1135
|
+
|
|
1136
|
+
### 响应
|
|
1137
|
+
|
|
1138
|
+
| 字段 | 类型 | 说明 |
|
|
1139
|
+
|------|------|------|
|
|
1140
|
+
| `mount` | object | 挂载视图 |
|
|
1141
|
+
| `status` | string | `active`(直接生效)/ `pending`(待批准) |
|
|
1142
|
+
|
|
1143
|
+
> `status` 字段仅在直接调用 lowlevel RPC(`fs_mount`/`FSMount`/`fsMount` 原始返回)时可见。四语言 SDK 的高层 VFS 门面(`vfs.mount()`/`StorageVFS.Mount()`/`vfs.mount()`)会把响应解析为通用 NodeView,该视图不保留顶层 `status` 字段;需要判断是否 `pending` 时请改用 lowlevel 接口读取原始响应,或检查服务端在 `pending` 场景下额外写入的 `request_id`。
|
|
1144
|
+
|
|
1145
|
+
---
|
|
1146
|
+
|
|
1147
|
+
## storage.fs.approve
|
|
1148
|
+
|
|
1149
|
+
源 owner 批准 pending 挂载(重新校验源路径存在)。`mount_id` 或 `(owner_aid, bucket, mount_path)` 二选一定位。
|
|
1150
|
+
|
|
1151
|
+
### 参数
|
|
1152
|
+
|
|
1153
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
1154
|
+
|------|------|------|------|
|
|
1155
|
+
| `mount_id` | string | 否 | 挂载 ID(或用下方三元组定位) |
|
|
1156
|
+
| `owner_aid` | string | 否 | 命名空间所有者 |
|
|
1157
|
+
| `bucket` | string | 否 | 存储桶 |
|
|
1158
|
+
| `mount_path` | string | 否 | 挂载点路径 |
|
|
1159
|
+
|
|
1160
|
+
### 响应
|
|
1161
|
+
|
|
1162
|
+
| 字段 | 类型 | 说明 |
|
|
1163
|
+
|------|------|------|
|
|
1164
|
+
| `approved` | boolean | `true` |
|
|
1165
|
+
| `mount` | object | 挂载视图 |
|
|
1166
|
+
|
|
1167
|
+
---
|
|
1168
|
+
|
|
1169
|
+
## storage.fs.reject
|
|
1170
|
+
|
|
1171
|
+
源 owner 或挂载 owner 拒绝 pending 挂载。定位方式同 `fs.approve`。
|
|
1172
|
+
|
|
1173
|
+
### 响应
|
|
1174
|
+
|
|
1175
|
+
`{rejected: boolean, mount}`。
|
|
1176
|
+
|
|
1177
|
+
---
|
|
1178
|
+
|
|
1179
|
+
## storage.fs.unmount
|
|
1180
|
+
|
|
1181
|
+
卸载挂载点(仅 owner 可操作)。
|
|
1182
|
+
|
|
1183
|
+
### 参数
|
|
1184
|
+
|
|
1185
|
+
| 参数 | 类型 | 必填 | 默认 | 说明 |
|
|
1186
|
+
|------|------|------|------|------|
|
|
1187
|
+
| `mount_path` | string | 是 | — | 挂载点路径 |
|
|
1188
|
+
| `owner_aid` | string | 否 | 当前用户 | 命名空间所有者 |
|
|
1189
|
+
| `bucket` | string | 否 | `"default"` | 存储桶 |
|
|
1190
|
+
|
|
1191
|
+
### 响应
|
|
1192
|
+
|
|
1193
|
+
`{unmounted: boolean, owner_aid, bucket, path, mount_path}`。
|
|
1194
|
+
|
|
1195
|
+
---
|
|
1196
|
+
|
|
1197
|
+
## storage.fs.invalidate_membership
|
|
1198
|
+
|
|
1199
|
+
群成员变更/群解散时失效群挂载(仅群 owner 或内部调用者)。SDK 形参不带 owner/bucket。
|
|
1200
|
+
|
|
1201
|
+
### 参数
|
|
1202
|
+
|
|
1203
|
+
| 参数 | 类型 | 必填 | 默认 | 说明 |
|
|
1204
|
+
|------|------|------|------|------|
|
|
1205
|
+
| `group_id` | string | 是 | — | 群 ID |
|
|
1206
|
+
| `group_owner_aid` | string | 是 | — | 群 owner AID |
|
|
1207
|
+
| `member_aid` | string | 否 | — | 成员 AID(不传=全员) |
|
|
1208
|
+
| `reason` | string | 否 | `"membership_changed"` | `dissolved` / `membership_changed` |
|
|
1209
|
+
| `status` | string | 否 | — | `inactive` / `unavailable` |
|
|
1210
|
+
|
|
1211
|
+
### 响应
|
|
1212
|
+
|
|
1213
|
+
`{group_id, group_aid, group_owner_aid, member_aid, reason, status, invalidated}`(`invalidated`=失效挂载数)。
|
|
1214
|
+
|
|
1215
|
+
---
|
|
1216
|
+
|
|
1217
|
+
## storage.create_symlink
|
|
1218
|
+
|
|
1219
|
+
创建软链。target 受限于 owner 命名空间;拒绝同名 file/dir;父路径不可含软链前缀。
|
|
1220
|
+
|
|
1221
|
+
### 参数
|
|
1222
|
+
|
|
1223
|
+
| 参数 | 类型 | 必填 | 默认 | 说明 |
|
|
1224
|
+
|------|------|------|------|------|
|
|
1225
|
+
| `path` | string | 是 | — | 软链路径 |
|
|
1226
|
+
| `target` | string | 是 | — | 指向目标路径 |
|
|
1227
|
+
| `owner_aid` | string | 否 | 当前用户 | 所有者 AID |
|
|
1228
|
+
| `bucket` | string | 否 | `"default"` | 存储桶 |
|
|
1229
|
+
| `overwrite` | boolean | 否 | `false` | 覆盖已存在软链 |
|
|
1230
|
+
|
|
1231
|
+
### 响应
|
|
1232
|
+
|
|
1233
|
+
软链视图(含 `dangling` 悬空标志)。
|
|
1234
|
+
|
|
1235
|
+
---
|
|
1236
|
+
|
|
1237
|
+
## storage.readlink
|
|
1238
|
+
|
|
1239
|
+
读软链 target(owner 校验)。
|
|
1240
|
+
|
|
1241
|
+
### 参数
|
|
1242
|
+
|
|
1243
|
+
| 参数 | 类型 | 必填 | 默认 | 说明 |
|
|
1244
|
+
|------|------|------|------|------|
|
|
1245
|
+
| `path` | string | 是 | — | 软链路径 |
|
|
1246
|
+
| `owner_aid` | string | 否 | 当前用户 | 所有者 AID |
|
|
1247
|
+
| `bucket` | string | 否 | `"default"` | 存储桶 |
|
|
1248
|
+
|
|
1249
|
+
### 响应
|
|
1250
|
+
|
|
1251
|
+
软链视图 `{symlink, target, version, ...}`。
|
|
1252
|
+
|
|
1253
|
+
---
|
|
1254
|
+
|
|
1255
|
+
## storage.atomic_repoint
|
|
1256
|
+
|
|
1257
|
+
原子重指软链 target(乐观锁 CAS)。**collab commit / tag 并发正确性的底层核心**。
|
|
1258
|
+
|
|
1259
|
+
### 参数
|
|
1260
|
+
|
|
1261
|
+
| 参数 | 类型 | 必填 | 默认 | 说明 |
|
|
1262
|
+
|------|------|------|------|------|
|
|
1263
|
+
| `path` | string | 是 | — | 软链路径 |
|
|
1264
|
+
| `new_target` | string | 是 | — | 新 target |
|
|
1265
|
+
| `owner_aid` | string | 否 | 当前用户 | 所有者 AID |
|
|
1266
|
+
| `bucket` | string | 否 | `"default"` | 存储桶 |
|
|
1267
|
+
| `expected_version` | integer | 否 | — | CAS 期望版本(null=跳过 CAS) |
|
|
1268
|
+
|
|
1269
|
+
### 响应
|
|
1270
|
+
|
|
1271
|
+
**成功**:`{ok: true, ...软链视图}`(version+1)。
|
|
1272
|
+
**CAS 失败**:`{ok: false, current_version, current_target}`。
|
|
1273
|
+
|
|
1274
|
+
---
|
|
1275
|
+
|
|
1276
|
+
## storage.rename_symlink
|
|
1277
|
+
|
|
1278
|
+
改软链 key(同 owner/bucket 内移动/改名),target 不变。跨 owner 被拒。
|
|
1279
|
+
|
|
1280
|
+
### 参数
|
|
1281
|
+
|
|
1282
|
+
| 参数 | 类型 | 必填 | 默认 | 说明 |
|
|
1283
|
+
|------|------|------|------|------|
|
|
1284
|
+
| `path` | string | 是 | — | 原软链路径(SDK 形参 `path`/服务端 `src`) |
|
|
1285
|
+
| `new_path` | string | 是 | — | 新软链路径(服务端 `dst`) |
|
|
1286
|
+
| `owner_aid` | string | 否 | 当前用户 | 所有者 AID |
|
|
1287
|
+
| `bucket` | string | 否 | `"default"` | 存储桶 |
|
|
1288
|
+
| `overwrite` | boolean | 否 | `false` | 覆盖已存在 |
|
|
1289
|
+
| `expected_version` | integer | 否 | — | CAS 期望版本 |
|
|
1290
|
+
|
|
1291
|
+
### 响应
|
|
1292
|
+
|
|
1293
|
+
**成功**:`{ok: true, ...软链视图}`。
|
|
1294
|
+
**CAS 失败**:`{ok: false, current_version, current_path, current_target}`。
|
|
1295
|
+
|
|
1296
|
+
---
|
|
1297
|
+
|
|
1298
|
+
## storage.delete_symlink
|
|
1299
|
+
|
|
1300
|
+
删软链记录(不动 target 对象)。
|
|
1301
|
+
|
|
1302
|
+
### 参数
|
|
1303
|
+
|
|
1304
|
+
| 参数 | 类型 | 必填 | 默认 | 说明 |
|
|
1305
|
+
|------|------|------|------|------|
|
|
1306
|
+
| `path` | string | 是 | — | 软链路径 |
|
|
1307
|
+
| `owner_aid` | string | 否 | 当前用户 | 所有者 AID |
|
|
1308
|
+
| `bucket` | string | 否 | `"default"` | 存储桶 |
|
|
1309
|
+
|
|
1310
|
+
### 响应
|
|
1311
|
+
|
|
1312
|
+
`{deleted: boolean, owner_aid, bucket, path, symlink_id, target}`。
|
|
1313
|
+
|
|
1314
|
+
---
|
|
1315
|
+
|
|
1316
|
+
## storage.set_acl
|
|
1317
|
+
|
|
1318
|
+
授予路径前缀 ACL grant。普通 AID storage 的 `grantee_aid` 必须是具体 AID,主要用于授予写/删除权限;子路径默认继承(最近祖先覆盖)。读取不通过 AID ACL 直接授权,应用应改用 `storage.create_share_link` 并在需要时用 `storage.revoke_share_link` 撤销。
|
|
1319
|
+
|
|
1320
|
+
`role:*` 伪主体只允许可信 group 内部门面写入。客户端不能直接对 `group_aid` 空间调用 `storage.set_acl` 设置 `role:admin`;群自有区角色写授权统一使用 `group.fs.set_acl`。
|
|
1321
|
+
|
|
1322
|
+
### 参数
|
|
1323
|
+
|
|
1324
|
+
| 参数 | 类型 | 必填 | 默认 | 说明 |
|
|
1325
|
+
|------|------|------|------|------|
|
|
1326
|
+
| `path` | string | 是 | — | 授权路径前缀 |
|
|
1327
|
+
| `grantee_aid` | string | 是 | — | 被授权 AID;`role:*` 仅限 group 内部调用 |
|
|
1328
|
+
| `perms` | string | 是 | — | 权限位:`r`/`w`/`rw`/`rwx`(`rwx` 含删除) |
|
|
1329
|
+
| `owner_aid` | string | 否 | 当前用户 | 所有者 AID |
|
|
1330
|
+
| `bucket` | string | 否 | `"default"` | 存储桶 |
|
|
1331
|
+
| `expires_at` | integer | 否 | — | 授权过期时间 |
|
|
1332
|
+
| `max_uses` | integer | 否 | — | 最大使用次数 |
|
|
1333
|
+
|
|
1334
|
+
### 响应
|
|
1335
|
+
|
|
1336
|
+
ACL 视图。
|
|
1337
|
+
|
|
1338
|
+
---
|
|
1339
|
+
|
|
1340
|
+
## storage.remove_acl
|
|
1341
|
+
|
|
1342
|
+
移除路径 ACL 授权。对 AID storage,这是撤销写/删除授权的入口;读分享的撤销入口是 `storage.revoke_share_link`。群自有区角色写授权撤销使用 `group.fs.remove_acl`,不要由客户端直接调用 `storage.remove_acl` 操作 `role:*`。
|
|
1343
|
+
|
|
1344
|
+
### 参数
|
|
1345
|
+
|
|
1346
|
+
| 参数 | 类型 | 必填 | 默认 | 说明 |
|
|
1347
|
+
|------|------|------|------|------|
|
|
1348
|
+
| `path` | string | 是 | — | 授权路径前缀 |
|
|
1349
|
+
| `grantee_aid` | string | 是 | — | 被授权 AID |
|
|
1350
|
+
| `owner_aid` | string | 否 | 当前用户 | 所有者 AID |
|
|
1351
|
+
| `bucket` | string | 否 | `"default"` | 存储桶 |
|
|
1352
|
+
|
|
1353
|
+
### 响应
|
|
1354
|
+
|
|
1355
|
+
`{removed: boolean, owner_aid, bucket, path, grantee_aid}`。
|
|
1356
|
+
|
|
1357
|
+
---
|
|
1358
|
+
|
|
1359
|
+
## storage.list_acl
|
|
1360
|
+
|
|
1361
|
+
列出路径上的 ACL 授权(owner 校验)。
|
|
1362
|
+
|
|
1363
|
+
### 参数
|
|
1364
|
+
|
|
1365
|
+
| 参数 | 类型 | 必填 | 默认 | 说明 |
|
|
1366
|
+
|------|------|------|------|------|
|
|
1367
|
+
| `path` | string | 是 | — | 路径 |
|
|
1368
|
+
| `owner_aid` | string | 否 | 当前用户 | 所有者 AID |
|
|
1369
|
+
| `bucket` | string | 否 | `"default"` | 存储桶 |
|
|
1370
|
+
|
|
1371
|
+
### 响应
|
|
1372
|
+
|
|
1373
|
+
`{owner_aid, bucket, path, acls}`。
|
|
1374
|
+
|
|
1375
|
+
---
|
|
1376
|
+
|
|
1377
|
+
## storage.set_visibility
|
|
1378
|
+
|
|
1379
|
+
切换对象或目录的公开/私有(软链不支持)。`allow_roles` 是低层兼容字段,不能作为群自有区 admin 写授权入口;群自有区角色写授权必须使用 `group.fs.set_acl/remove_acl`。
|
|
1380
|
+
|
|
1381
|
+
### 参数
|
|
1382
|
+
|
|
1383
|
+
| 参数 | 类型 | 必填 | 默认 | 说明 |
|
|
1384
|
+
|------|------|------|------|------|
|
|
1385
|
+
| `path` | string | 是 | — | 路径 |
|
|
1386
|
+
| `visibility` | string | 是 | — | `public` / `private` |
|
|
1387
|
+
| `owner_aid` | string | 否 | 当前用户 | 所有者 AID |
|
|
1388
|
+
| `bucket` | string | 否 | `"default"` | 存储桶 |
|
|
1389
|
+
| `allow_roles` | array | 否 | — | 低层兼容字段,仅表示可见性读角色;不能用于群自有区写授权 |
|
|
1390
|
+
|
|
1391
|
+
### 响应
|
|
1392
|
+
|
|
1393
|
+
fs 节点视图(含 `allow_roles`)。
|
|
1394
|
+
|
|
1395
|
+
---
|
|
1396
|
+
|
|
1397
|
+
## storage.check_access
|
|
1398
|
+
|
|
1399
|
+
非抛错的访问探测——探测某操作在某路径是否放行(内部捕获 NotFound/Dangling/Permission)。
|
|
1400
|
+
|
|
1401
|
+
### 参数
|
|
1402
|
+
|
|
1403
|
+
| 参数 | 类型 | 必填 | 默认 | 说明 |
|
|
1404
|
+
|------|------|------|------|------|
|
|
1405
|
+
| `path` | string | 是 | — | 路径(服务端别名 `object_key`) |
|
|
1406
|
+
| `operation` | string | 否 | `"read"` | `read` / `write` / `delete`(服务端别名 `op`) |
|
|
1407
|
+
| `owner_aid` | string | 否 | 当前用户 | 所有者 AID |
|
|
1408
|
+
| `bucket` | string | 否 | `"default"` | 存储桶 |
|
|
1409
|
+
| `token` | string | 否 | — | 访问 token |
|
|
1410
|
+
| `follow_symlinks` | boolean | 否 | `true` | 跟随软链 |
|
|
1411
|
+
|
|
1412
|
+
### 响应
|
|
1413
|
+
|
|
1414
|
+
`{allowed: boolean, reason, message, requester_aid, owner_aid, bucket, path, operation}`。
|
|
1415
|
+
|
|
1416
|
+
---
|
|
1417
|
+
|
|
1418
|
+
## storage.issue_token
|
|
1419
|
+
|
|
1420
|
+
签发 hash 化的 bearer 访问 token,scope 到某路径。返回的明文 token 仅此一次可见。
|
|
1421
|
+
|
|
1422
|
+
### 参数
|
|
1423
|
+
|
|
1424
|
+
| 参数 | 类型 | 必填 | 默认 | 说明 |
|
|
1425
|
+
|------|------|------|------|------|
|
|
1426
|
+
| `path` | string | 是 | — | 授权路径(服务端别名 `object_key`) |
|
|
1427
|
+
| `owner_aid` | string | 否 | 当前用户 | 所有者 AID |
|
|
1428
|
+
| `bucket` | string | 否 | `"default"` | 存储桶 |
|
|
1429
|
+
| `expires_at` | integer | 否 | — | 过期时间 |
|
|
1430
|
+
| `max_reads` | integer | 否 | — | 最大读取次数(服务端别名 `max_uses`) |
|
|
1431
|
+
|
|
1432
|
+
### 响应
|
|
1433
|
+
|
|
1434
|
+
token 视图 + 明文 token(一次性返回)。
|
|
1435
|
+
|
|
1436
|
+
---
|
|
1437
|
+
|
|
1438
|
+
## storage.revoke_token
|
|
1439
|
+
|
|
1440
|
+
按明文 token 值吊销(内部 hash 后查找)。
|
|
1441
|
+
|
|
1442
|
+
### 参数
|
|
1443
|
+
|
|
1444
|
+
| 参数 | 类型 | 必填 | 默认 | 说明 |
|
|
1445
|
+
|------|------|------|------|------|
|
|
1446
|
+
| `path` | string | 是 | — | 路径(服务端别名 `object_key`) |
|
|
1447
|
+
| `token` | string | 是 | — | 要吊销的明文 token |
|
|
1448
|
+
| `owner_aid` | string | 否 | 当前用户 | 所有者 AID |
|
|
1449
|
+
| `bucket` | string | 否 | `"default"` | 存储桶 |
|
|
1450
|
+
|
|
1451
|
+
### 响应
|
|
1452
|
+
|
|
1453
|
+
`{revoked: boolean, owner_aid, bucket, path}`。
|
|
1454
|
+
|
|
1455
|
+
---
|
|
1456
|
+
|
|
1457
|
+
## storage.list_tokens
|
|
1458
|
+
|
|
1459
|
+
列出路径上的 token(owner 校验,不返回明文)。
|
|
1460
|
+
|
|
1461
|
+
### 参数
|
|
1462
|
+
|
|
1463
|
+
| 参数 | 类型 | 必填 | 默认 | 说明 |
|
|
1464
|
+
|------|------|------|------|------|
|
|
1465
|
+
| `path` | string | 是 | — | 路径 |
|
|
1466
|
+
| `owner_aid` | string | 否 | 当前用户 | 所有者 AID |
|
|
1467
|
+
| `bucket` | string | 否 | `"default"` | 存储桶 |
|
|
1468
|
+
|
|
1469
|
+
### 响应
|
|
1470
|
+
|
|
1471
|
+
token 列表(hash 摘要 + 元数据)。
|
|
1472
|
+
|
|
1473
|
+
---
|
|
1474
|
+
|
|
1475
|
+
## storage.volume.create
|
|
1476
|
+
|
|
1477
|
+
创建/upsert 配额卷(含 mount_point)。
|
|
1478
|
+
|
|
1479
|
+
### 参数
|
|
1480
|
+
|
|
1481
|
+
| 参数 | 类型 | 必填 | 默认 | 说明 |
|
|
1482
|
+
|------|------|------|------|------|
|
|
1483
|
+
| `size_bytes` | integer | 是 | — | 卷容量(>0) |
|
|
1484
|
+
| `owner_aid` | string | 否 | 当前用户 | 所有者 AID |
|
|
1485
|
+
| `bucket` | string | 否 | `"default"` | 存储桶 |
|
|
1486
|
+
| `volume_id` | string | 否 | 自动 | 卷 ID |
|
|
1487
|
+
| `used_bytes` | integer | 否 | — | 已用字节 |
|
|
1488
|
+
| `status` | string | 否 | `active` | `active` / `grace` / `expired` |
|
|
1489
|
+
| `mount_point` | string | 否 | — | 挂载点 |
|
|
1490
|
+
| `expires_at` | integer | 否 | — | 过期时间 |
|
|
1491
|
+
|
|
1492
|
+
### 响应
|
|
1493
|
+
|
|
1494
|
+
`{volume, ...卷视图}`。
|
|
1495
|
+
|
|
1496
|
+
---
|
|
1497
|
+
|
|
1498
|
+
## storage.volume.renew
|
|
1499
|
+
|
|
1500
|
+
续期卷过期时间/状态(owner 校验,owner 不符抛 PermissionError)。
|
|
1501
|
+
|
|
1502
|
+
### 参数
|
|
1503
|
+
|
|
1504
|
+
| 参数 | 类型 | 必填 | 默认 | 说明 |
|
|
1505
|
+
|------|------|------|------|------|
|
|
1506
|
+
| `volume_id` | string | 是 | — | 卷 ID(服务端别名 `id`) |
|
|
1507
|
+
| `expires_at` | integer | 是 | — | 新过期时间 |
|
|
1508
|
+
| `owner_aid` | string | 否 | 当前用户 | 所有者 AID |
|
|
1509
|
+
| `bucket` | string | 否 | `"default"` | 存储桶 |
|
|
1510
|
+
| `status` | string | 否 | — | 卷状态 |
|
|
1511
|
+
|
|
1512
|
+
### 响应
|
|
1513
|
+
|
|
1514
|
+
`{volume, ...卷视图}`。
|
|
1515
|
+
|
|
1516
|
+
---
|
|
1517
|
+
|
|
1518
|
+
## storage.volume.expire_due
|
|
1519
|
+
|
|
1520
|
+
过期所有到期卷并标记其挂载为 unavailable。
|
|
1521
|
+
|
|
1522
|
+
### 参数
|
|
1523
|
+
|
|
1524
|
+
| 参数 | 类型 | 必填 | 默认 | 说明 |
|
|
1525
|
+
|------|------|------|------|------|
|
|
1526
|
+
| `owner_aid` | string | 否 | 当前用户 | 所有者 AID |
|
|
1527
|
+
| `bucket` | string | 否 | `"default"` | 存储桶 |
|
|
1528
|
+
| `now` | integer | 否 | 当前时间 | 判定基准时间 |
|
|
1529
|
+
|
|
1530
|
+
### 响应
|
|
1531
|
+
|
|
1532
|
+
`{owner_aid, bucket, expired, mounts_unavailable, volumes, mounts}`。
|
|
1533
|
+
|
|
1534
|
+
## 错误码
|
|
825
1535
|
|
|
826
1536
|
| code | 说明 |
|
|
827
1537
|
|------|------|
|