Skip to content

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.