Cloud strategy documents and historical archives¶
These interfaces store and retrieve private documents for the authenticated user. They do not execute strategies. Default OFF; live backend behavior remains UNVERIFIED.
| RPC | REST (POST) / CLI | MCP | Scope |
|---|---|---|---|
GetQuantCloudStrategies |
/api/get-quant-cloud-strategies / get-quant-cloud-strategies |
futu_get_quant_cloud_strategies |
acc:read |
CreateQuantCloudStrategies |
/api/create-quant-cloud-strategies / create-quant-cloud-strategies |
futu_create_quant_cloud_strategies |
qot:write + acc:read |
UpdateQuantCloudStrategy |
/api/update-quant-cloud-strategy / update-quant-cloud-strategy |
futu_update_quant_cloud_strategy |
qot:write + acc:read |
DeleteQuantCloudStrategies |
/api/delete-quant-cloud-strategies / delete-quant-cloud-strategies |
futu_delete_quant_cloud_strategies |
qot:write + acc:read |
GetQuantCloudArchives |
/api/get-quant-cloud-archives / get-quant-cloud-archives |
futu_get_quant_cloud_archives |
acc:read |
CreateQuantCloudArchives |
/api/create-quant-cloud-archives / create-quant-cloud-archives |
futu_create_quant_cloud_archives |
qot:write + acc:read |
UpdateQuantCloudArchive |
/api/update-quant-cloud-archive / update-quant-cloud-archive |
futu_update_quant_cloud_archive |
qot:write + acc:read |
DeleteQuantCloudArchives |
/api/delete-quant-cloud-archives / delete-quant-cloud-archives |
futu_delete_quant_cloud_archives |
qot:write + acc:read |
GetQuantCloudQuota |
/api/get-quant-cloud-quota / get-quant-cloud-quota |
futu_get_quant_cloud_quota |
acc:read |
All requests require extension_version: 1. Reads require the operator's desktop_phase2_reads opt-in; writes require both reads and writes opt-ins. Account-restricted keys cannot use these UID-wide document interfaces. CLI uses --rest-url (or --rest-port), --api-key, and --c2s-json; MCP needs --opend-rest-url and forwards the actual caller's key. Gateway and gRPC use the same typed request contract.
Reads return one page with raw cursor and field presence. strategy_ids / archive_ids and count accept at most 14 entries / rows; explicit zero count remains distinct from omission. Quota returns the server's remaining count, not an invented total or used count. Raw attribute bytes remain available separately from decoded attributes and decode status.
Every write requires an immutable intent_key. Strategy creation uses nonempty items, each with document_key, attribute_info (JSON byte array), and explicit prepare_import. False preserves an existing nonzero local strategy identity; true allocates and freezes a local import identity. Optional strategy_name explicitly changes the document name. Archive creation uses archive_key, attribute_info, and source; it never allocates execution identifiers. An update needs cloud_id and attribute bytes (plus archive source); deletion needs nonempty cloud_ids. Empty deletion is rejected.
Reuse the same intent after an uncertain result. The receipt separates ack_state, association_state, and readback_status. An acknowledged creation can still await reliable ID association. Readback success is not acknowledgement of a previously unknown write. Already-consumed local preparation identities cannot silently create a second cloud object under another intent. No automatic write retry or replacement occurs.
The operator may configure a local upload-policy XML path. The size limit applies to strategy attribute bytes only; equality to the limit is rejected. The policy snapshot reports its source and status. Historical archives retain their actual imported identities and are not an inventory of active strategy executions.
API-key-authenticated native binary WebSocket, REST WebSocket and gRPC subscriptions receive private change notifications containing invalidation metadata rather than strategy code. Explicit reads retrieve document content. These APIs do not provide compare-and-swap or exclusive ownership over documents concurrently edited by other clients.
The four create/update REST endpoints carrying attributes use a 10 MiB total JSON limit, including byte-array expansion and other fields; other endpoints retain their default limit. The upload policy separately checks strategy attribute bytes. The final serialized backend request must also be smaller than 1,024,000 bytes, including strategy batches and archives. These limits apply independently.