@wowok/agent-mcp 2.6.0 → 2.6.3
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/README.md +5 -3
- package/dist/customer/info-puzzle.d.ts +1 -1
- package/dist/customer/info-puzzle.js +4 -2
- package/dist/customer/risk-assessment.js +26 -4
- package/dist/customer/types.d.ts +2 -0
- package/dist/examples/guard-template-balance-check.json +38 -0
- package/dist/examples/guard-template-time-lock.json +39 -0
- package/dist/examples/machine-template-7node-rental.json +114 -0
- package/dist/examples/rental-ziroom-machine-create.json +137 -0
- package/dist/examples/rental-ziroom-permission-create.json +35 -0
- package/dist/examples/rental-ziroom-service-create.json +80 -0
- package/dist/examples/retail-myshop-service-create.json +88 -0
- package/dist/extensions/capability-manifest.d.ts +125 -0
- package/dist/extensions/capability-manifest.js +594 -0
- package/dist/extensions/constraint-registry.d.ts +24 -0
- package/dist/extensions/constraint-registry.js +196 -0
- package/dist/extensions/index.d.ts +12 -0
- package/dist/extensions/index.js +6 -0
- package/dist/extensions/metric-registry.d.ts +26 -0
- package/dist/extensions/metric-registry.js +257 -0
- package/dist/extensions/mode-evaluator.d.ts +15 -0
- package/dist/extensions/mode-evaluator.js +170 -0
- package/dist/extensions/modes.d.ts +2 -0
- package/dist/extensions/modes.js +493 -0
- package/dist/extensions/registry.d.ts +50 -0
- package/dist/extensions/registry.js +662 -0
- package/dist/extensions/types.d.ts +219 -0
- package/dist/extensions/types.js +1 -0
- package/dist/index.js +50 -0
- package/dist/knowledge/deployment-scanner.d.ts +3 -0
- package/dist/knowledge/deployment-scanner.js +64 -3
- package/dist/knowledge/fund-layer.d.ts +72 -0
- package/dist/knowledge/fund-layer.js +420 -0
- package/dist/knowledge/guard-render.d.ts +57 -0
- package/dist/knowledge/guard-render.js +700 -0
- package/dist/knowledge/guard-risk.d.ts +13 -0
- package/dist/knowledge/guard-risk.js +57 -0
- package/dist/knowledge/guard-submission-prompt.d.ts +31 -0
- package/dist/knowledge/guard-submission-prompt.js +171 -0
- package/dist/knowledge/guard-templates.js +278 -0
- package/dist/knowledge/machine-ledger.js +1 -1
- package/dist/knowledge/machine-render.d.ts +41 -0
- package/dist/knowledge/machine-render.js +565 -0
- package/dist/knowledge/machine-templates.js +24 -5
- package/dist/knowledge/reward-confirm.js +2 -2
- package/dist/knowledge/reward-puzzle.js +1 -1
- package/dist/knowledge/reward-risk.js +9 -9
- package/dist/knowledge/reward-templates.js +2 -2
- package/dist/knowledge/service-confirm.d.ts +15 -6
- package/dist/knowledge/service-confirm.js +119 -11
- package/dist/knowledge/service-context.js +1 -1
- package/dist/knowledge/service-ledger.js +1 -1
- package/dist/knowledge/service-risk.d.ts +1 -1
- package/dist/knowledge/service-risk.js +3 -3
- package/dist/knowledge/service-templates.js +2 -2
- package/dist/knowledge/service-translation.d.ts +1 -1
- package/dist/knowledge/service-translation.js +7 -7
- package/dist/knowledge/tool-constraints.js +6 -2
- package/dist/project/deployment-bridge.d.ts +1 -1
- package/dist/project/deployment-bridge.js +31 -7
- package/dist/project/deployment-doc.d.ts +3 -0
- package/dist/project/deployment-doc.js +76 -14
- package/dist/project/edit-planner.d.ts +123 -0
- package/dist/project/edit-planner.js +1371 -0
- package/dist/project/evaluation.d.ts +2 -0
- package/dist/project/evaluation.js +873 -88
- package/dist/project/graph-builder.d.ts +4 -1
- package/dist/project/graph-builder.js +132 -62
- package/dist/project/graph.d.ts +1 -0
- package/dist/project/handlers.d.ts +317 -6
- package/dist/project/handlers.js +1171 -19
- package/dist/project/stage-gate.d.ts +4 -0
- package/dist/project/stage-gate.js +64 -5
- package/dist/project/task-tracker.d.ts +26 -0
- package/dist/project/task-tracker.js +78 -0
- package/dist/safety/preview.js +16 -0
- package/dist/schema/call/allocation.d.ts +16 -16
- package/dist/schema/call/allocation.js +2 -2
- package/dist/schema/call/arbitration.js +19 -6
- package/dist/schema/call/base.d.ts +21 -13
- package/dist/schema/call/base.js +27 -6
- package/dist/schema/call/bridge.d.ts +5 -5
- package/dist/schema/call/bridge.js +3 -1
- package/dist/schema/call/contact.js +2 -2
- package/dist/schema/call/demand.d.ts +23 -31
- package/dist/schema/call/demand.js +2 -2
- package/dist/schema/call/guard.js +2 -2
- package/dist/schema/call/machine.d.ts +1976 -752
- package/dist/schema/call/machine.js +50 -4
- package/dist/schema/call/order.d.ts +149 -228
- package/dist/schema/call/order.js +4 -3
- package/dist/schema/call/payment.d.ts +183 -3
- package/dist/schema/call/payment.js +21 -3
- package/dist/schema/call/permission.js +2 -2
- package/dist/schema/call/personal.d.ts +241 -52
- package/dist/schema/call/progress.d.ts +53 -61
- package/dist/schema/call/progress.js +18 -4
- package/dist/schema/call/repository.d.ts +23 -31
- package/dist/schema/call/repository.js +2 -2
- package/dist/schema/call/reward.js +3 -3
- package/dist/schema/call/semantic.d.ts +1 -1
- package/dist/schema/call/semantic.js +37 -2
- package/dist/schema/call/service.d.ts +275 -127
- package/dist/schema/call/service.js +89 -13
- package/dist/schema/call/treasury.js +3 -3
- package/dist/schema/common/index.d.ts +13 -2
- package/dist/schema/common/index.js +80 -15
- package/dist/schema/local/index.d.ts +32 -35
- package/dist/schema/local/index.js +28 -6
- package/dist/schema/messenger/index.d.ts +274 -46
- package/dist/schema/operations.d.ts +1264 -544
- package/dist/schema/operations.js +65 -7
- package/dist/schema/project/index.d.ts +2846 -167
- package/dist/schema/project/index.js +570 -16
- package/dist/schema/query/index.d.ts +922 -349
- package/dist/schema/query/index.js +205 -42
- package/dist/schema/schema-query/index.d.ts +65 -3
- package/dist/schema/schema-query/index.js +38 -5
- package/dist/schema/utils/node-parser.js +20 -4
- package/dist/schema/utils/object-type-utils.d.ts +12 -0
- package/dist/schema/utils/object-type-utils.js +35 -0
- package/dist/schema/utils/permission-machine-check.d.ts +49 -0
- package/dist/schema/utils/permission-machine-check.js +121 -0
- package/dist/schema/utils/skills-recommendation.d.ts +2 -0
- package/dist/schema/utils/skills-recommendation.js +76 -0
- package/dist/schema-query/index.d.ts +20 -1
- package/dist/schema-query/index.js +306 -4
- package/dist/schemas/account_operation.output.json +7 -1
- package/dist/schemas/account_operation.schema.json +3 -3
- package/dist/schemas/bridge_operation.output.json +6 -0
- package/dist/schemas/bridge_operation.schema.json +1 -1
- package/dist/schemas/guard-templates.json +379 -0
- package/dist/schemas/guard2file.schema.json +1 -1
- package/dist/schemas/index.json +1 -1
- package/dist/schemas/local_info_operation.output.json +6 -0
- package/dist/schemas/local_mark_operation.output.json +7 -1
- package/dist/schemas/local_mark_operation.schema.json +1 -1
- package/dist/schemas/machineNode2file.schema.json +1 -1
- package/dist/schemas/messenger_operation.schema.json +4 -4
- package/dist/schemas/onchain_events.output.json +1 -1
- package/dist/schemas/onchain_operations.output.json +2820 -0
- package/dist/schemas/onchain_operations.schema.json +444 -330
- package/dist/schemas/onchain_operations_allocation.schema.json +37 -28
- package/dist/schemas/onchain_operations_arbitration.schema.json +16 -14
- package/dist/schemas/onchain_operations_contact.schema.json +10 -10
- package/dist/schemas/onchain_operations_demand.schema.json +10 -10
- package/dist/schemas/onchain_operations_gen_passport.schema.json +16 -16
- package/dist/schemas/onchain_operations_gen_proof.schema.json +2 -2
- package/dist/schemas/onchain_operations_guard.schema.json +2 -2
- package/dist/schemas/onchain_operations_machine.schema.json +43 -35
- package/dist/schemas/onchain_operations_order.schema.json +72 -78
- package/dist/schemas/onchain_operations_payment.schema.json +141 -111
- package/dist/schemas/onchain_operations_permission.schema.json +3 -3
- package/dist/schemas/onchain_operations_personal.schema.json +7 -7
- package/dist/schemas/onchain_operations_progress.schema.json +9 -9
- package/dist/schemas/onchain_operations_proof.schema.json +8 -8
- package/dist/schemas/onchain_operations_repository.schema.json +10 -10
- package/dist/schemas/onchain_operations_reward.schema.json +14 -14
- package/dist/schemas/onchain_operations_service.schema.json +119 -48
- package/dist/schemas/onchain_operations_treasury.schema.json +11 -11
- package/dist/schemas/onchain_table_data.output.json +33 -25
- package/dist/schemas/onchain_table_data.schema.json +22 -21
- package/dist/schemas/project_operation.output.json +2194 -23
- package/dist/schemas/project_operation.schema.json +84 -6
- package/dist/schemas/query_toolkit.output.json +108 -80
- package/dist/schemas/query_toolkit.schema.json +12 -12
- package/dist/schemas/schema_query.output.json +70 -3
- package/dist/schemas/schema_query.schema.json +18 -3
- package/dist/schemas/wowok_buildin_info.output.json +81 -8
- package/dist/schemas/wowok_buildin_info.schema.json +46 -2
- package/dist/tools/handlers/local.js +20 -5
- package/dist/tools/handlers/onchain.js +594 -6
- package/dist/tools/handlers/project.js +76 -4
- package/dist/tools/handlers/query.js +27 -0
- package/dist/tools/handlers/schema-query.js +43 -1
- package/dist/tools/handlers/task-status.d.ts +170 -0
- package/dist/tools/handlers/task-status.js +55 -0
- package/dist/tools/handlers/wip.js +47 -1
- package/dist/tools/index.d.ts +8 -0
- package/dist/tools/index.js +387 -12
- package/dist/tools/retry.d.ts +8 -0
- package/dist/tools/retry.js +85 -0
- package/dist/tools/wip-deploy-assist.d.ts +28 -0
- package/dist/tools/wip-deploy-assist.js +278 -0
- package/package.json +2 -2
- package/dist/schemas/guard-node-examples.md +0 -199
|
@@ -270,7 +270,7 @@
|
|
|
270
270
|
},
|
|
271
271
|
"data": {
|
|
272
272
|
"type": "object",
|
|
273
|
-
"description": "On-chain Guard creation. IMPORTANT: All defined data (include all submitted data) must be defined in the 'table' field. USAGE: Set 'namedNew' field with {name, tags?, onChain?} to name the new Guard. The Guard is immutable once created. Define the validation logic in 'root' field. When root.type='file', the file can contain all Guard fields, and any fields defined in the schema will OVERRIDE the file content.",
|
|
273
|
+
"description": "On-chain Guard creation. IMPORTANT: All defined data (include all submitted data) must be defined in the 'table' field. USAGE: Set 'namedNew' field with {name, tags?, onChain?} to name the new Guard (you may also use 'object' as an alias for 'namedNew' — the MCP preprocess will convert it automatically). The Guard is immutable once created. Define the validation logic in 'root' field. When root.type='file', the file can contain all Guard fields, and any fields defined in the schema will OVERRIDE the file content.",
|
|
274
274
|
"properties": {
|
|
275
275
|
"namedNew": {
|
|
276
276
|
"$ref": "#/definitions/guard_namedNew",
|
|
@@ -515,7 +515,7 @@
|
|
|
515
515
|
},
|
|
516
516
|
"b_submission": {
|
|
517
517
|
"type": "boolean",
|
|
518
|
-
"description": "Whether user
|
|
518
|
+
"description": "Whether this table item's value is submitted dynamically at Guard trigger time (alloc_by_guard call). \n\ntrue = value is submitted by the caller when triggering the Guard. Use for runtime-context-dependent values like order address, user address. The 'value' field is ignored when b_submission=true; the caller must provide it via submissions[]. \n\nfalse = value is static, set at Guard creation time. Use for values known when the Guard is created: expected node names, expected merchant address, expected service address. The 'value' field must be populated and will be stored on-chain permanently. \n\nRule of thumb: if the value is the SAME for all future Guard triggers, use false. If the value DIFFERS per trigger (e.g., which order to release funds for), use true."
|
|
519
519
|
},
|
|
520
520
|
"value_type": {
|
|
521
521
|
"anyOf": [
|
|
@@ -805,7 +805,7 @@
|
|
|
805
805
|
"description": "vecvecu8"
|
|
806
806
|
}
|
|
807
807
|
],
|
|
808
|
-
"description": "Type of the value"
|
|
808
|
+
"description": "Type of the value stored in `value`. One of: Bool(0), Address(1), String(2), U8(3), U16(4), U32(5), U64(6), U128(7), U256(8), VecBool(9), VecAddress(10), VecString(11), VecU8(12), VecU16(13), VecU32(14), VecU64(15), VecU128(16), VecU256(17), VecVecU8(18). When value_type=Address (1), the `value` field accepts a hex address string, a LocalMark name, or an AccountOrMark_Address object — see `value` field description for details."
|
|
809
809
|
},
|
|
810
810
|
"value": {
|
|
811
811
|
"anyOf": [
|
|
@@ -898,12 +898,12 @@
|
|
|
898
898
|
}
|
|
899
899
|
}
|
|
900
900
|
],
|
|
901
|
-
"description": "The actual value data"
|
|
901
|
+
"description": "The actual value data. Format depends on `value_type`:\n• Bool: true/false (boolean)\n• Address (CRITICAL — string 'Address' is NOT a placeholder): a hex address (e.g. '0x1234...'), a LocalMark name (e.g. 'my-service' — resolved to address at evaluation time), an AccountOrMark_Address object (e.g. {name_or_address:'my-service'}), or system shorthand ('0xaaa' = EntityLinker, '0xaab' = EntityRegistrar). The literal string 'Address' itself is INVALID — it would be treated as a non-existent LocalMark name and fail. Example: value='0x2::wow::WOW<address>' or value='my-permission'.\n• String: any string\n• U8/U16/U32/U64/U128/U256: number or numeric string (e.g. 42 or '42')\n• Vec* types: arrays of the corresponding element type\nREQUIRED when b_submission=false. OPTIONAL when b_submission=true (value is supplied at evaluation time by user submission)."
|
|
902
902
|
},
|
|
903
903
|
"name": {
|
|
904
904
|
"type": "string",
|
|
905
905
|
"default": "",
|
|
906
|
-
"description": "
|
|
906
|
+
"description": "Data name identifier. MAX 64 BCS characters (Chinese chars count as 3-4 BCS bytes each). Use short identifiers like 'order_id', 'delivery_node'. Put longer descriptions in the Guard's 'description' field, NOT here."
|
|
907
907
|
},
|
|
908
908
|
"object_type": {
|
|
909
909
|
"type": "string",
|
|
@@ -941,7 +941,7 @@
|
|
|
941
941
|
"TableItem_AddressMark",
|
|
942
942
|
"TableItem_EntityRegistrar"
|
|
943
943
|
],
|
|
944
|
-
"description": "Object type when value_type is Address and represents a specific object"
|
|
944
|
+
"description": "OUTPUT-ONLY (query side): Object type when value_type is Address and represents a specific object. Auto-derived by the system — DO NOT set this field at Guard creation."
|
|
945
945
|
}
|
|
946
946
|
},
|
|
947
947
|
"required": [
|
|
@@ -950,7 +950,7 @@
|
|
|
950
950
|
"value_type"
|
|
951
951
|
],
|
|
952
952
|
"additionalProperties": false,
|
|
953
|
-
"description": "Guard table item"
|
|
953
|
+
"description": "Guard table item (QUERY/OUTPUT form — includes auto-derived object_type field)"
|
|
954
954
|
},
|
|
955
955
|
"description": "User-submitted data matching the Guard's required fields. Relation: structure must match the Guard table's column definitions. Example: [{field:'delivery_proof', value:'Qm...'}]"
|
|
956
956
|
}
|
|
@@ -962,7 +962,7 @@
|
|
|
962
962
|
"additionalProperties": false,
|
|
963
963
|
"description": "One Guard's submission data: the Guard to verify plus the user-provided data that satisfies its requirements."
|
|
964
964
|
},
|
|
965
|
-
"description": "User-submitted data for each Guard. Relation: one entry per Guard in the guard array; fill submission fields and resubmit via call_with_submission."
|
|
965
|
+
"description": "User-submitted data for each Guard. Relation: one entry per Guard in the guard array; fill submission fields and resubmit via call_with_submission. PLACEMENT: this `submission` field is at the SAME level as `data` and `env` in the operation input — NOT inside `data.data`. Example structure: {tool:'onchain_operations', data:{operation_type:'order', data:{object:'my_order', progress:{...}}}, submission:{type:'submission', guard:[...], submission:[...]}}"
|
|
966
966
|
}
|
|
967
967
|
},
|
|
968
968
|
"required": [
|
|
@@ -999,7 +999,7 @@
|
|
|
999
999
|
"testnet",
|
|
1000
1000
|
"mainnet"
|
|
1001
1001
|
],
|
|
1002
|
-
"description": "Network entrypoint: Specifies which network the operation occurs on"
|
|
1002
|
+
"description": "Network entrypoint: Specifies which network the operation occurs on. FIX-010 cross-network note: LocalMark names are scoped per network (testnet marks are invisible on mainnet and vice versa). When migrating from testnet to mainnet, recreate all objects on mainnet and re-register LocalMark names with the SAME names to keep name-based references working across networks. Use project_operation action='clone_project_to_network' to clone the project blueprint to the target network, then re-run onchain_operations with env.network=target_network to deploy."
|
|
1003
1003
|
},
|
|
1004
1004
|
"referrer": {
|
|
1005
1005
|
"$ref": "#/definitions/data_gen_passport/properties/guard/anyOf/0",
|
|
@@ -1162,7 +1162,7 @@
|
|
|
1162
1162
|
"testnet",
|
|
1163
1163
|
"mainnet"
|
|
1164
1164
|
],
|
|
1165
|
-
"description": "Network entrypoint: Specifies which network the operation occurs on"
|
|
1165
|
+
"description": "Network entrypoint: Specifies which network the operation occurs on. FIX-010 cross-network note: LocalMark names are scoped per network (testnet marks are invisible on mainnet and vice versa). When migrating from testnet to mainnet, recreate all objects on mainnet and re-register LocalMark names with the SAME names to keep name-based references working across networks. Use project_operation action='clone_project_to_network' to clone the project blueprint to the target network, then re-run onchain_operations with env.network=target_network to deploy."
|
|
1166
1166
|
},
|
|
1167
1167
|
"referrer": {
|
|
1168
1168
|
"$ref": "#/definitions/data_gen_proof/properties/env/properties/account",
|
|
@@ -1238,7 +1238,7 @@
|
|
|
1238
1238
|
"testnet",
|
|
1239
1239
|
"mainnet"
|
|
1240
1240
|
],
|
|
1241
|
-
"description": "Network entrypoint: Specifies which network the operation occurs on"
|
|
1241
|
+
"description": "Network entrypoint: Specifies which network the operation occurs on. FIX-010 cross-network note: LocalMark names are scoped per network (testnet marks are invisible on mainnet and vice versa). When migrating from testnet to mainnet, recreate all objects on mainnet and re-register LocalMark names with the SAME names to keep name-based references working across networks. Use project_operation action='clone_project_to_network' to clone the project blueprint to the target network, then re-run onchain_operations with env.network=target_network to deploy."
|
|
1242
1242
|
},
|
|
1243
1243
|
"referrer": {
|
|
1244
1244
|
"$ref": "#/definitions/env/properties/account",
|
|
@@ -1328,7 +1328,7 @@
|
|
|
1328
1328
|
},
|
|
1329
1329
|
"b_submission": {
|
|
1330
1330
|
"type": "boolean",
|
|
1331
|
-
"description": "Whether user
|
|
1331
|
+
"description": "Whether this table item's value is submitted dynamically at Guard trigger time (alloc_by_guard call). \n\ntrue = value is submitted by the caller when triggering the Guard. Use for runtime-context-dependent values like order address, user address. The 'value' field is ignored when b_submission=true; the caller must provide it via submissions[]. \n\nfalse = value is static, set at Guard creation time. Use for values known when the Guard is created: expected node names, expected merchant address, expected service address. The 'value' field must be populated and will be stored on-chain permanently. \n\nRule of thumb: if the value is the SAME for all future Guard triggers, use false. If the value DIFFERS per trigger (e.g., which order to release funds for), use true."
|
|
1332
1332
|
},
|
|
1333
1333
|
"value_type": {
|
|
1334
1334
|
"anyOf": [
|
|
@@ -1618,7 +1618,7 @@
|
|
|
1618
1618
|
"description": "vecvecu8"
|
|
1619
1619
|
}
|
|
1620
1620
|
],
|
|
1621
|
-
"description": "Type of the value"
|
|
1621
|
+
"description": "Type of the value stored in `value`. One of: Bool(0), Address(1), String(2), U8(3), U16(4), U32(5), U64(6), U128(7), U256(8), VecBool(9), VecAddress(10), VecString(11), VecU8(12), VecU16(13), VecU32(14), VecU64(15), VecU128(16), VecU256(17), VecVecU8(18). When value_type=Address (1), the `value` field accepts a hex address string, a LocalMark name, or an AccountOrMark_Address object — see `value` field description for details."
|
|
1622
1622
|
},
|
|
1623
1623
|
"value": {
|
|
1624
1624
|
"anyOf": [
|
|
@@ -1711,12 +1711,12 @@
|
|
|
1711
1711
|
}
|
|
1712
1712
|
}
|
|
1713
1713
|
],
|
|
1714
|
-
"description": "The actual value data"
|
|
1714
|
+
"description": "The actual value data. Format depends on `value_type`:\n• Bool: true/false (boolean)\n• Address (CRITICAL — string 'Address' is NOT a placeholder): a hex address (e.g. '0x1234...'), a LocalMark name (e.g. 'my-service' — resolved to address at evaluation time), an AccountOrMark_Address object (e.g. {name_or_address:'my-service'}), or system shorthand ('0xaaa' = EntityLinker, '0xaab' = EntityRegistrar). The literal string 'Address' itself is INVALID — it would be treated as a non-existent LocalMark name and fail. Example: value='0x2::wow::WOW<address>' or value='my-permission'.\n• String: any string\n• U8/U16/U32/U64/U128/U256: number or numeric string (e.g. 42 or '42')\n• Vec* types: arrays of the corresponding element type\nREQUIRED when b_submission=false. OPTIONAL when b_submission=true (value is supplied at evaluation time by user submission)."
|
|
1715
1715
|
},
|
|
1716
1716
|
"name": {
|
|
1717
1717
|
"type": "string",
|
|
1718
1718
|
"default": "",
|
|
1719
|
-
"description": "
|
|
1719
|
+
"description": "Data name identifier. MAX 64 BCS characters (Chinese chars count as 3-4 BCS bytes each). Use short identifiers like 'order_id', 'delivery_node'. Put longer descriptions in the Guard's 'description' field, NOT here."
|
|
1720
1720
|
},
|
|
1721
1721
|
"object_type": {
|
|
1722
1722
|
"type": "string",
|
|
@@ -1754,7 +1754,7 @@
|
|
|
1754
1754
|
"TableItem_AddressMark",
|
|
1755
1755
|
"TableItem_EntityRegistrar"
|
|
1756
1756
|
],
|
|
1757
|
-
"description": "Object type when value_type is Address and represents a specific object"
|
|
1757
|
+
"description": "OUTPUT-ONLY (query side): Object type when value_type is Address and represents a specific object. Auto-derived by the system — DO NOT set this field at Guard creation."
|
|
1758
1758
|
}
|
|
1759
1759
|
},
|
|
1760
1760
|
"required": [
|
|
@@ -1763,7 +1763,7 @@
|
|
|
1763
1763
|
"value_type"
|
|
1764
1764
|
],
|
|
1765
1765
|
"additionalProperties": false,
|
|
1766
|
-
"description": "Guard table item"
|
|
1766
|
+
"description": "Guard table item (QUERY/OUTPUT form — includes auto-derived object_type field)"
|
|
1767
1767
|
},
|
|
1768
1768
|
"description": "User-submitted data matching the Guard's required fields. Relation: structure must match the Guard table's column definitions. Example: [{field:'delivery_proof', value:'Qm...'}]"
|
|
1769
1769
|
}
|
|
@@ -1775,7 +1775,7 @@
|
|
|
1775
1775
|
"additionalProperties": false,
|
|
1776
1776
|
"description": "One Guard's submission data: the Guard to verify plus the user-provided data that satisfies its requirements."
|
|
1777
1777
|
},
|
|
1778
|
-
"description": "User-submitted data for each Guard. Relation: one entry per Guard in the guard array; fill submission fields and resubmit via call_with_submission."
|
|
1778
|
+
"description": "User-submitted data for each Guard. Relation: one entry per Guard in the guard array; fill submission fields and resubmit via call_with_submission. PLACEMENT: this `submission` field is at the SAME level as `data` and `env` in the operation input — NOT inside `data.data`. Example structure: {tool:'onchain_operations', data:{operation_type:'order', data:{object:'my_order', progress:{...}}}, submission:{type:'submission', guard:[...], submission:[...]}}"
|
|
1779
1779
|
}
|
|
1780
1780
|
},
|
|
1781
1781
|
"required": [
|
|
@@ -1907,7 +1907,7 @@
|
|
|
1907
1907
|
"number",
|
|
1908
1908
|
"string"
|
|
1909
1909
|
],
|
|
1910
|
-
"description": "
|
|
1910
|
+
"description": "A coin/balance amount. Accepts three formats: (1) DISPLAY FORMAT with token symbol: \"2.5WOW\", \"10USDC\", \"0.05SUI\" — auto-converted to smallest units via the Fund Processing Layer (token precision resolved from official registry → cache → on-chain). The symbol MUST match the token's type_parameter. (2) SMALLEST UNIT (numeric string): \"10000000000\" — used as-is, no conversion. (3) SMALLEST UNIT (number): 10000000000 — used as-is (loses precision above 2^53). PRECISION RULE: for values exceeding 2^53, ALWAYS use format (1) or (2) — JS numbers lose precision. Default token: WOW (9 decimals, 1 WOW = 10^9 MIST). For custom tokens: use display format with the token's symbol, or pass smallest units directly. MONEY CONFIRMATION: all monetary fields trigger user confirmation via the Fund Processing Layer. If multiple tokens share a symbol (ambiguity), specify the full type string in type_parameter. Examples: \"2.5WOW\" (display → 2500000000), 10000000000 (number, smallest unit), \"50000000000\" (string, smallest unit). Used for: Service.sale.price, Service.compensation_fund_add balance, Treasury.deposit, Arbitration.fee, Reward.amount, stock quantities."
|
|
1911
1911
|
}
|
|
1912
1912
|
},
|
|
1913
1913
|
"required": [
|
|
@@ -1930,7 +1930,7 @@
|
|
|
1930
1930
|
"additionalProperties": false
|
|
1931
1931
|
}
|
|
1932
1932
|
],
|
|
1933
|
-
"description": "Actual payment amount"
|
|
1933
|
+
"description": "Actual payment amount. FORMAT: {balance: <amount_in_smallest_unit>} or {coin: <coin_object_id>}. The token type and precision are determined by the Service object's type_parameter (the generic type set when the Service was created). For WOW (9 decimals): {balance: 1000000000} = 1 WOW. For SUI (9 decimals): {balance: 1000000000} = 1 SUI."
|
|
1934
1934
|
},
|
|
1935
1935
|
"discount": {
|
|
1936
1936
|
"type": "string",
|
|
@@ -2008,15 +2008,15 @@
|
|
|
2008
2008
|
}
|
|
2009
2009
|
},
|
|
2010
2010
|
"additionalProperties": false,
|
|
2011
|
-
"description": "Set
|
|
2011
|
+
"description": "RECOMMENDED: Set a local name for the newly created Order object. Without this, the Order is only referenceable by its on-chain address. Example: {name: 'my_order_v1'} allows subsequent operations to use 'my_order_v1' instead of the address."
|
|
2012
2012
|
},
|
|
2013
2013
|
"namedNewAllocation": {
|
|
2014
2014
|
"$ref": "#/definitions/data_service/properties/order_new/properties/namedNewOrder",
|
|
2015
|
-
"description": "Set
|
|
2015
|
+
"description": "RECOMMENDED: Set a local name for the order's Allocation object. Without this, the Allocation is only referenceable by its address. Example: {name: 'my_allocation_v1'} allows alloc_by_guard to reference 'my_allocation_v1'."
|
|
2016
2016
|
},
|
|
2017
2017
|
"namedNewProgress": {
|
|
2018
2018
|
"$ref": "#/definitions/data_service/properties/order_new/properties/namedNewOrder",
|
|
2019
|
-
"description": "Set
|
|
2019
|
+
"description": "RECOMMENDED: Set a local name for the order's Progress object. Without this, the Progress is only referenceable by its address. Example: {name: 'my_progress_v1'} allows progress operations to use 'my_progress_v1'."
|
|
2020
2020
|
}
|
|
2021
2021
|
},
|
|
2022
2022
|
"required": [
|
|
@@ -2071,11 +2071,11 @@
|
|
|
2071
2071
|
},
|
|
2072
2072
|
"wip": {
|
|
2073
2073
|
"type": "string",
|
|
2074
|
-
"description": "HTTP URL
|
|
2074
|
+
"description": "WIP file URL. EMPTY string \"\" skips verification (TESTING ONLY). Production MUST use a real HTTP URL pointing to a .wip file generated by the wip_file tool. Example: \"https://cdn.example.com/products/phone_v1.wip\""
|
|
2075
2075
|
},
|
|
2076
2076
|
"wip_hash": {
|
|
2077
2077
|
"type": "string",
|
|
2078
|
-
"description": "
|
|
2078
|
+
"description": "WIP file hash (hex string). EMPTY string \"\" skips hash comparison (TESTING ONLY). Production: fill with the hash you saw when viewing the product, to prevent merchant replacing the WIP file before order."
|
|
2079
2079
|
}
|
|
2080
2080
|
},
|
|
2081
2081
|
"required": [
|
|
@@ -2227,7 +2227,7 @@
|
|
|
2227
2227
|
},
|
|
2228
2228
|
"arbitrations": {
|
|
2229
2229
|
"$ref": "#/definitions/data_service/properties/repositories",
|
|
2230
|
-
"description": "Service Arbitration object list."
|
|
2230
|
+
"description": "Service Arbitration object list. FORMAT: same as repositories — use the `objects` field name inside the operation data. Example: {arbitrations: [{name: 'my_arb_1'}, {name: 'my_arb_2'}]}. Each item is a NameOrAddress (object ID or local mark name)."
|
|
2231
2231
|
},
|
|
2232
2232
|
"machine": {
|
|
2233
2233
|
"anyOf": [
|
|
@@ -2250,14 +2250,16 @@
|
|
|
2250
2250
|
"discount_type": {
|
|
2251
2251
|
"anyOf": [
|
|
2252
2252
|
{
|
|
2253
|
-
"type": "
|
|
2254
|
-
"
|
|
2255
|
-
|
|
2253
|
+
"type": "string",
|
|
2254
|
+
"enum": [
|
|
2255
|
+
"RATES",
|
|
2256
|
+
"FIXED"
|
|
2257
|
+
]
|
|
2256
2258
|
},
|
|
2257
2259
|
{
|
|
2258
|
-
"type": "
|
|
2259
|
-
"
|
|
2260
|
-
"
|
|
2260
|
+
"type": "integer",
|
|
2261
|
+
"minimum": 0,
|
|
2262
|
+
"maximum": 1
|
|
2261
2263
|
}
|
|
2262
2264
|
],
|
|
2263
2265
|
"description": "Discount type"
|
|
@@ -2348,7 +2350,7 @@
|
|
|
2348
2350
|
"threshold": {
|
|
2349
2351
|
"$ref": "#/definitions/data_service/properties/order_new/properties/buy/properties/total_pay/anyOf/0/properties/balance",
|
|
2350
2352
|
"default": 0,
|
|
2351
|
-
"description": "
|
|
2353
|
+
"description": "Minimum balance required for allocation to fire. When the Allocation object's balance < threshold, allocation aborts with EINSUFFICIENT_BALANCE=7. Also: when an Allocator has only Amount items (no Rate, no Surplus), the sum of Amount items must be >= threshold (EAMOUNT_BELOW_THRESHOLD=12). Set to 0 (default) to allow any balance."
|
|
2352
2354
|
},
|
|
2353
2355
|
"allocators": {
|
|
2354
2356
|
"type": "array",
|
|
@@ -2357,7 +2359,7 @@
|
|
|
2357
2359
|
"properties": {
|
|
2358
2360
|
"guard": {
|
|
2359
2361
|
"$ref": "#/definitions/data_service/properties/object/anyOf/0",
|
|
2360
|
-
"description": "Guard object ID. If Guard verification passes, fund allocation
|
|
2362
|
+
"description": "Guard object ID or name. If Guard verification passes (via Passport), fund allocation for THIS Allocator fires. Each Allocator in an Allocators list can have a different Guard — the first Allocator whose Guard returns true wins. This enables mutually exclusive allocation paths (e.g., refund Guard on 'return_approved' node vs damage Guard on 'damage_confirmed' node)."
|
|
2361
2363
|
},
|
|
2362
2364
|
"sharing": {
|
|
2363
2365
|
"type": "array",
|
|
@@ -2393,7 +2395,7 @@
|
|
|
2393
2395
|
"Entity"
|
|
2394
2396
|
],
|
|
2395
2397
|
"additionalProperties": false,
|
|
2396
|
-
"description": "
|
|
2398
|
+
"description": "Static address resolved via LocalMark. Format: {Entity: {name_or_address: 'mark_name'}} — NOTE: Entity is an OBJECT with name_or_address field, NOT a bare string."
|
|
2397
2399
|
},
|
|
2398
2400
|
{
|
|
2399
2401
|
"type": "object",
|
|
@@ -2407,26 +2409,35 @@
|
|
|
2407
2409
|
"Signer"
|
|
2408
2410
|
],
|
|
2409
2411
|
"additionalProperties": false,
|
|
2410
|
-
"description": "Current transaction signer
|
|
2412
|
+
"description": "Current transaction signer (tx_context::sender) at the time of the alloc() call. For refunds, the Order owner must call alloc_by_guard themselves to receive the funds."
|
|
2411
2413
|
}
|
|
2412
2414
|
],
|
|
2413
|
-
"description": "Recipient
|
|
2415
|
+
"description": "Recipient of this allocation. Three forms — each resolves the address at a DIFFERENT time:\n• { GuardIdentifier: u8 } — DYNAMIC address resolved from Passport at alloc() time (contract calls passport::submission_get). Use 0 for Order owner in Service-integrated mode (Customer who created the Order). The identifier must match a Guard table entry with b_submission=true. If Passport has no matching submission, contract aborts with E_VERIFY_FAILED. Use when the recipient address is not known at config time and must be supplied via Guard submission data.\n• { Entity: { name_or_address: '...' } } — FIXED address resolved via LocalMark at SDK build time (passed to contract as a literal address). Use for known recipients (e.g., 'turo_host', or a Treasury object address). Use when the recipient is a stable, known address (e.g., operator receives rent, platform fee to treasury).\n• 'Signer' — the transaction sender at the time of the alloc() call (tx_context::sender). RESOLVED AT EXECUTION TIME, not at config time. For refunds: the customer (Order owner) must call alloc_by_guard THEMSELVES so that tx_context::sender resolves to THEIR address — if the operator calls alloc_by_guard, the operator becomes the recipient (Signer = operator), NOT the customer. Use when the recipient is whoever submits the allocation transaction (e.g., customer receives refund)."
|
|
2414
2416
|
},
|
|
2415
2417
|
"sharing": {
|
|
2416
2418
|
"type": [
|
|
2417
2419
|
"number",
|
|
2418
2420
|
"string"
|
|
2419
2421
|
],
|
|
2420
|
-
"description": "
|
|
2422
|
+
"description": "Allocation value. SEMANTICS DEPEND ON `mode`:\n• mode='Amount': absolute amount in smallest unit (e.g., '750000000' for 0.75 WOW, '250000000' for 0.25 WOW). Allocated first; sum of Amount items cached as `fix`.\n• mode='Rate': basis-points rate, 10000 = 100% (e.g., '7500' for 75%, '2500' for 25%). When no Surplus in same Allocator, sum MUST == 10000; when Surplus present, sum MUST <= 10000.\n• mode='Surplus': IGNORED (contract forces to 0). Set to '0' for clarity. Receives remaining balance after Amount + Rate allocations."
|
|
2421
2423
|
},
|
|
2422
2424
|
"mode": {
|
|
2423
|
-
"
|
|
2424
|
-
|
|
2425
|
-
|
|
2426
|
-
|
|
2427
|
-
|
|
2425
|
+
"anyOf": [
|
|
2426
|
+
{
|
|
2427
|
+
"type": "string",
|
|
2428
|
+
"enum": [
|
|
2429
|
+
"Amount",
|
|
2430
|
+
"Rate",
|
|
2431
|
+
"Surplus"
|
|
2432
|
+
]
|
|
2433
|
+
},
|
|
2434
|
+
{
|
|
2435
|
+
"type": "integer",
|
|
2436
|
+
"minimum": 0,
|
|
2437
|
+
"maximum": 2
|
|
2438
|
+
}
|
|
2428
2439
|
],
|
|
2429
|
-
"description": "
|
|
2440
|
+
"description": "Allocation mode — determines how the `sharing` field is interpreted. Three modes can be used individually OR combined within a single Allocator; when combined, allocation order is strictly: Amount first, then Rate, then Surplus. Understanding these modes allows modeling almost any fund distribution pattern.\n• Amount (0): `sharing` is a FIXED amount in smallest unit (e.g., '750000000' = 0.75 WOW). Allocated FIRST; sum of all Amount items is cached as `fix` by the contract. Validation: when no Rate and no Surplus items exist, sum of Amount items must be >= allocators.threshold (EAMOUNT_BELOW_THRESHOLD=12); when `max` is set, sum of Amount items must be <= max (EAMOUNT_EXCEEDS_MAX=13).\n• Rate (1): `sharing` is a basis-points rate (10000 = 100%). Allocated AFTER Amount; formula: allocated = (sharing × total_rates) / 10000, where total_rates = balance - fix (or max - fix if `max` is set). Validation: when no Surplus items exist, sum of all Rate items must be EXACTLY 10000 (ERATE_NOT_10000=4); when Surplus items exist, sum of all Rate items must be <= 10000 (ERATE_EXCEEDS_10000=6).\n• Surplus (2): `sharing` is IGNORED (contract forces it to 0). Allocated LAST; receives the remaining balance after Amount + Rate allocations. Validation: MAX ONE Surplus item per Allocator (EMULTIPLE_SURPLUS=5). When Surplus exists, Rate sum constraint relaxes from == 10000 to <= 10000.\nALLOCATION ORDER (strict): Amount items (fixed, cached as fix) → Rate items (proportional to balance-fix) → Surplus item (remaining).\nRECOMMENDATION: Use Amount mode for known fixed amounts (clearer, no sum constraint). Use Rate mode for proportional splits (requires sum == 10000 unless Surplus present). Use Surplus to capture remainder (e.g., platform fee + host gets rest). Accepts string ('Amount'/'Rate'/'Surplus', recommended) or number (0/1/2)."
|
|
2430
2441
|
}
|
|
2431
2442
|
},
|
|
2432
2443
|
"required": [
|
|
@@ -2435,13 +2446,13 @@
|
|
|
2435
2446
|
"mode"
|
|
2436
2447
|
],
|
|
2437
2448
|
"additionalProperties": false,
|
|
2438
|
-
"description": "Fund allocation item"
|
|
2449
|
+
"description": "Fund allocation item — one recipient's share of the Allocation balance. The `sharing` value's meaning depends on `mode` (see AllocationModeSchema). Multiple items in the same Allocator are evaluated together: Amount items first, Rate items second, Surplus last."
|
|
2439
2450
|
},
|
|
2440
|
-
"description": "Fund allocation item list. Each item
|
|
2451
|
+
"description": "Fund allocation item list. Each item specifies a recipient (who), a value (sharing), and a mode. Items can mix modes (Amount + Rate + Surplus) within the same Allocator. ALLOCATION ORDER: Amount items first (cached as fix) → Rate items (proportional to balance - fix) → Surplus item (remaining). CONSTRAINTS: max ONE Surplus item per Allocator; Rate sum must == 10000 (no Surplus) or <= 10000 (with Surplus); Amount sum must >= threshold (no Rate and no Surplus) and <= max (if max set)."
|
|
2441
2452
|
},
|
|
2442
2453
|
"fix": {
|
|
2443
2454
|
"$ref": "#/definitions/data_service/properties/order_new/properties/buy/properties/total_pay/anyOf/0/properties/balance",
|
|
2444
|
-
"description": "
|
|
2455
|
+
"description": "OUTPUT-ONLY (query result). Cached sum of all Amount-mode `sharing` values in this Allocator. Computed by the contract during `allocator_add` — DO NOT set this field at creation. Used internally to compute `total_rates = balance - fix` for Rate allocation."
|
|
2445
2456
|
},
|
|
2446
2457
|
"max": {
|
|
2447
2458
|
"anyOf": [
|
|
@@ -2452,7 +2463,7 @@
|
|
|
2452
2463
|
"type": "null"
|
|
2453
2464
|
}
|
|
2454
2465
|
],
|
|
2455
|
-
"description": "Maximum allocation
|
|
2466
|
+
"description": "Maximum allocation cap (OPTIONAL — omit the field or set to null to disable the cap; do NOT set to 0 as that means a cap of zero). Passed through to the contract as Option<u64> via allocator_add(): when null/omitted the contract treats it as `none` (no cap); when set, the contract enforces it. Has THREE effects when set:\n1. Construction: sum of Amount items must be <= max (EAMOUNT_EXCEEDS_MAX=13)\n2. Rate execution: total_rates = max - fix (instead of balance - fix)\n3. Surplus execution: surplus_amount = max - alloced_amount (instead of balance - alloced_amount)\nUse when you want to cap total allocation regardless of Order balance (e.g., cap payout to declared amount). SDK pre-validates Amount sum <= max at build time to give actionable error messages before on-chain abort."
|
|
2456
2467
|
}
|
|
2457
2468
|
},
|
|
2458
2469
|
"required": [
|
|
@@ -2460,9 +2471,9 @@
|
|
|
2460
2471
|
"sharing"
|
|
2461
2472
|
],
|
|
2462
2473
|
"additionalProperties": false,
|
|
2463
|
-
"description": "Fund allocator"
|
|
2474
|
+
"description": "Fund allocator — a complete allocation strategy triggered by a Guard. Contains a sharing[] array where items can mix Amount/Rate/Surplus modes. When the Guard passes, the contract allocates funds in strict order: Amount → Rate → Surplus."
|
|
2464
2475
|
},
|
|
2465
|
-
"description": "Fund allocator list. Each
|
|
2476
|
+
"description": "Fund allocator list. Each allocator is evaluated in order; the FIRST allocator whose Guard passes wins. This enables mutually exclusive allocation paths (e.g., 3 allocators for 3 forward paths: refund / damage-deduct / arbitrate)."
|
|
2466
2477
|
}
|
|
2467
2478
|
},
|
|
2468
2479
|
"required": [
|
|
@@ -2470,13 +2481,13 @@
|
|
|
2470
2481
|
"allocators"
|
|
2471
2482
|
],
|
|
2472
2483
|
"additionalProperties": false,
|
|
2473
|
-
"description": "Fund allocator list"
|
|
2484
|
+
"description": "Fund allocator list — the top-level allocation configuration attached to an Order. Contains a threshold and a list of Allocators. When funds arrive at the Order, the first Allocator whose Guard passes executes its sharing[] in strict order: Amount → Rate → Surplus. MULTI-TIER ALLOCATION (DOC-04): Each Order binds ONE Allocators template (set on Service.order_allocators before publish). For multi-tier distribution (e.g., customer→agency→suppliers), use a two-phase approach: (1) Tier-1 Allocators on the customer's Order (allocates to agency + refund fund); (2) Tier-2 Allocators on a NEW Order created by the agency (allocates agency's received funds to suppliers). Each tier's Rate-mode sharing[] must independently sum to 10000 (or <= 10000 with Surplus)."
|
|
2474
2485
|
},
|
|
2475
2486
|
{
|
|
2476
2487
|
"type": "null"
|
|
2477
2488
|
}
|
|
2478
2489
|
],
|
|
2479
|
-
"description": "Order fund allocator."
|
|
2490
|
+
"description": "Order fund allocator. Max 100 allocators (MAX_ALLOCATOR_COUNT). Each allocator has a guard (first matching guard wins) and a sharing list. Set to null to clear. ⚠️ PERMANENTLY IMMUTABLE after publish: order_allocators can ONLY be set BEFORE publish=true (Move service.move:503: assert!(!self.bPublished, E_ALREADY_PUBLISHED)). After publish, the ONLY way to change allocation rules is to create a NEW Service object. There is NO pause+lock exception for order_allocators (unlike arbitrations/rewards which have time-lock removal). PRE-PUBLISH CHECKLIST: verify all guard names resolve, all sharing amounts are correct, threshold is set, and recipient types (Entity/Signer/GuardIdentifier) are intended before calling publish=true. GuardIdentifier sharing mode: {who: {GuardIdentifier: <u8>}, sharing: <rate>, mode: 'Rate'} — resolves recipient from Guard table submission at allocation time (e.g., refund to customer). MULTI-CALL ALLOCATION: Allocation.alloc() can be called MULTIPLE times (no consumed flag in contract). Use Amount mode (not Surplus) for recurring allocations — Surplus calls balance::withdraw_all which drains the balance. For monthly payment scenarios, create multiple Allocators with time-based Guards + Amount mode sharing items."
|
|
2480
2491
|
},
|
|
2481
2492
|
"buy_guard": {
|
|
2482
2493
|
"anyOf": [
|
|
@@ -2498,11 +2509,71 @@
|
|
|
2498
2509
|
"$ref": "#/definitions/data_service/properties/order_new/properties/buy/properties/total_pay/anyOf/1"
|
|
2499
2510
|
}
|
|
2500
2511
|
],
|
|
2501
|
-
"description": "
|
|
2512
|
+
"description": "Deposit funds into the Service compensation_fund. Used to pay indemnity when arbitration resolves in customer's favor. FORMAT: {balance: <amount_in_smallest_unit>} — the field name is 'balance' (NOT 'amount'). The token type and precision are determined by the Service object's type_parameter (the generic type set when the Service was created). For WOW (9 decimals): {balance: 1000000000} = 1 WOW. For SUI (9 decimals): {balance: 1000000000} = 1 SUI. For tokens with different decimals, adjust accordingly (e.g. USDC has 6 decimals, so {balance: 1000000} = 1 USDC). REQUIRES: Permission index 315 (SERVICE_COMPENSATION_FUND_DEPOSIT) must be granted to the calling account first. COMMON MISTAKE: using {amount: ...} or {amount: ..., type: 'WOW'} — these will fail. The correct field is 'balance'."
|
|
2502
2513
|
},
|
|
2503
|
-
"
|
|
2514
|
+
"compensation_fund_withdraw": {
|
|
2515
|
+
"type": "object",
|
|
2516
|
+
"properties": {
|
|
2517
|
+
"receipt": {
|
|
2518
|
+
"type": "object",
|
|
2519
|
+
"properties": {
|
|
2520
|
+
"name_or_address": {
|
|
2521
|
+
"$ref": "#/definitions/data_service/properties/order_new/properties/agents/properties/entities/items/properties/name_or_address"
|
|
2522
|
+
},
|
|
2523
|
+
"local_mark_first": {
|
|
2524
|
+
"$ref": "#/definitions/data_service/properties/order_new/properties/agents/properties/entities/items/properties/local_mark_first"
|
|
2525
|
+
}
|
|
2526
|
+
},
|
|
2527
|
+
"additionalProperties": false,
|
|
2528
|
+
"description": "Receipt address that will receive the withdrawn funds (as a new Payment object)"
|
|
2529
|
+
},
|
|
2530
|
+
"payment_info": {
|
|
2531
|
+
"type": "object",
|
|
2532
|
+
"properties": {
|
|
2533
|
+
"for_object": {
|
|
2534
|
+
"type": [
|
|
2535
|
+
"string",
|
|
2536
|
+
"null"
|
|
2537
|
+
],
|
|
2538
|
+
"description": "Payment for a specific object ID"
|
|
2539
|
+
},
|
|
2540
|
+
"for_guard": {
|
|
2541
|
+
"type": [
|
|
2542
|
+
"string",
|
|
2543
|
+
"null"
|
|
2544
|
+
],
|
|
2545
|
+
"description": "Payment to satisfy verification of a Guard object"
|
|
2546
|
+
},
|
|
2547
|
+
"remark": {
|
|
2548
|
+
"type": "string",
|
|
2549
|
+
"description": "Payment record remark"
|
|
2550
|
+
},
|
|
2551
|
+
"index": {
|
|
2552
|
+
"type": [
|
|
2553
|
+
"number",
|
|
2554
|
+
"string"
|
|
2555
|
+
],
|
|
2556
|
+
"description": "Payment record index"
|
|
2557
|
+
}
|
|
2558
|
+
},
|
|
2559
|
+
"required": [
|
|
2560
|
+
"remark",
|
|
2561
|
+
"index"
|
|
2562
|
+
],
|
|
2563
|
+
"additionalProperties": false,
|
|
2564
|
+
"description": "Payment info for the new Payment object created to hold the withdrawn funds"
|
|
2565
|
+
}
|
|
2566
|
+
},
|
|
2567
|
+
"required": [
|
|
2568
|
+
"receipt",
|
|
2569
|
+
"payment_info"
|
|
2570
|
+
],
|
|
2571
|
+
"additionalProperties": false,
|
|
2572
|
+
"description": "Withdraw ALL funds from the compensation_fund to a new Payment object owned by `receipt`. Move layer: service::compensation_fund_withdraw (service.move L383-390). REQUIRES: Service must be paused AND setting_lock_duration must have elapsed since pause (assert_not_published at L384-385). Withdraws the ENTIRE compensation_fund balance via balance::withdraw_all. DIFFERENT from compensation_claim (order-side, for arbitration-winning users, no pause+lock required)."
|
|
2573
|
+
},
|
|
2574
|
+
"setting_lock_duration_add": {
|
|
2504
2575
|
"type": "number",
|
|
2505
|
-
"description": "Additional lock duration
|
|
2576
|
+
"description": "Additional lock duration to ADD to 'setting_lock_duration' (Move field name). UNIT: milliseconds (ms). Example: 2592000000 = 30 days, 7776000000 = 90 days, 86400000 = 1 day. DEFAULT: 2592000000 (30 days, DEFAULT_LOCK_DURATION). This is the initial value when a Service is created. Behavior: additive (safe_add) — only increases, never decreases. Move entry: service::setting_lock_duration_add / setting_lock_duration_add_with_passport. Can be called BEFORE or AFTER publish (no publish check). Affects the waiting time required by: compensation_fund_withdraw, arbitrations remove/clear, rewards remove/clear (all require pause + setting_lock_duration elapsed since pause)."
|
|
2506
2577
|
},
|
|
2507
2578
|
"compensation_fund_receive": {
|
|
2508
2579
|
"anyOf": [
|
|
@@ -2557,7 +2628,7 @@
|
|
|
2557
2628
|
"const": "recently"
|
|
2558
2629
|
}
|
|
2559
2630
|
],
|
|
2560
|
-
"description": "Receive order compensation funds."
|
|
2631
|
+
"description": "Receive order compensation funds from this Service object.\n\nACCEPTED FORMATS (F-06 unified receive operation block):\n• 'recently' (string literal) — auto-query and receive ALL recently received balance.\n Use this for the common case: \"deposit all recently received coins into pending balance.\"\n Example: receive: 'recently'\n• ReceivedBalance ({token_type, balance, received: [{id, balance, payment}]}) —\n receive a specific balance record from a Payment/payer.\n Use this when targeting a specific received balance (advanced).\n Example: receive: {token_type: '0x2::sui::SUI', balance: 1000000, received: [{id: '0xrec1', balance: 1000000, payment: '0xpay1'}]}\nANTI-PATTERN: do NOT wrap in {result: ...} — pass the value directly."
|
|
2561
2632
|
},
|
|
2562
2633
|
"owner_receive": {
|
|
2563
2634
|
"anyOf": [
|
|
@@ -2596,7 +2667,7 @@
|
|
|
2596
2667
|
"const": "recently"
|
|
2597
2668
|
}
|
|
2598
2669
|
],
|
|
2599
|
-
"description": "Unwrap CoinWrapper objects and other objects received by this object and send them to the owner of its Permission object."
|
|
2670
|
+
"description": "Unwrap CoinWrapper objects and other objects received by this Service object and send them to the owner of its Permission object.\n\nACCEPTED FORMATS (F-06 unified receive operation block):\n• 'recently' (string literal) — auto-query and receive ALL recently received objects.\n Use this for the common case: \"withdraw everything the object has received.\"\n Example: receive: 'recently'\n• ReceivedNormal[] (array) — explicit list of received objects to unwrap.\n Use this when you want to receive specific objects only (not all).\n Example: receive: [{id: '0xobj1', type: '0x2::coin::Coin<0x2::sui::SUI>'}]\n• ReceivedBalance ({token_type, balance, received: [{id, balance, payment}]}) —\n receive a balance record from a specific Payment/payer.\n Use this for precise balance targeting (advanced — usually after querying\n the object's received history via query_received).\n Example: receive: {token_type: '0x2::sui::SUI', balance: 1000000, received: [{id: '0xrec1', balance: 1000000, payment: '0xpay1'}]}\nANTI-PATTERN: do NOT wrap in {result: ...} — pass the value directly."
|
|
2600
2671
|
},
|
|
2601
2672
|
"um": {
|
|
2602
2673
|
"anyOf": [
|
|
@@ -2615,7 +2686,7 @@
|
|
|
2615
2686
|
},
|
|
2616
2687
|
"publish": {
|
|
2617
2688
|
"type": "boolean",
|
|
2618
|
-
"description": "Whether to publish the Service. After publishing, customers can place orders
|
|
2689
|
+
"description": "Whether to publish the Service. After publishing, customers can place orders. VERIFIED against Move source service.move + SDK service.ts (4-level immutability matrix):\n L1 — PERMANENTLY LOCKED after publish (assert!(!bPublished), no pause+lock exception):\n • machine (service.move L633/L653 — workflow template)\n • order_allocators (service.move L503 — fund distribution rules)\n L2 — TIME-LOCKED after publish (assert_not_published — requires pause + setting_lock_duration elapsed):\n • arbitrations remove/clear (service.move L433/L445 — dispute resolution objects)\n • rewards remove/clear (service.move L402/L414 — reward objects)\n • compensation_fund_withdraw (service.move L384-385 — withdraw ALL funds)\n L3 — REMAIN MUTABLE after publish (no SDK check, no Move check):\n • arbitrations add, rewards add (no assert — can add after publish)\n • buy_guard, sales, discount, description, location, pause, repositories,\n • compensation_fund_add, setting_lock_duration_add, customer_required, um (Contact)\nThese 2 L1-LOCKED fields (machine/order_allocators) MUST be set BEFORE publish=true.\narbitrations/rewards can be ADDED after publish but remove/clear requires pause+lock.\n\n⚠️ COMPENSATION_FUND + ARBITRATION LINKAGE (service.move:494-499):\n At publish time, if compensation_fund > 0, Arbitration MUST be bound:\n if (balance::value(&self.compensation_fund) > 0) {\n assert!(arbitration_count > 0, E_ARBITRATION_NOT_SET_WITH_COMPENSATION_FUND);\n }\n The MCP handler enforces this as a HARD PRE-CHECK: if publish=true AND compensation_fund_add is set in the same call AND arbitrations is empty, the call is REJECTED before submission. If compensation_fund was deposited in a prior call, a SOFT WARNING is issued.\n\nSCHEMA-03 / P0-01 fix — DEPLOYMENT WORKFLOW (two-phase, avoids circular dependency):\n Phase 1 — CREATE (no publish): object={name:'my-service', type_parameter, permission} + machine + order_allocators + arbitrations.\n NOTE: buy_guard can use a LocalMark NAME (not address) to break the Guard→Service circular dependency.\n The name is resolved to an address at transaction build time.\n Phase 2 — PUBLISH: object='my-service' (string ref) + publish=true.\n All L1-LOCKED fields must be set in Phase 1; Phase 2 only flips the publish flag.\n Post-publish updates: buy_guard, sales, description, repositories (add), rewards (add), arbitrations (add), etc."
|
|
2619
2690
|
}
|
|
2620
2691
|
},
|
|
2621
2692
|
"required": [
|
|
@@ -2886,7 +2957,7 @@
|
|
|
2886
2957
|
"properties": {
|
|
2887
2958
|
"prev_node": {
|
|
2888
2959
|
"type": "string",
|
|
2889
|
-
"description": "Previous node name"
|
|
2960
|
+
"description": "Previous node name. Empty string '' means initial entry node (the first node in the workflow)."
|
|
2890
2961
|
},
|
|
2891
2962
|
"threshold": {
|
|
2892
2963
|
"type": [
|
|
@@ -2946,38 +3017,46 @@
|
|
|
2946
3017
|
"guard": {
|
|
2947
3018
|
"anyOf": [
|
|
2948
3019
|
{
|
|
2949
|
-
"
|
|
2950
|
-
|
|
2951
|
-
|
|
2952
|
-
"
|
|
2953
|
-
|
|
2954
|
-
|
|
2955
|
-
|
|
2956
|
-
"anyOf": [
|
|
2957
|
-
{
|
|
2958
|
-
"type": "array",
|
|
2959
|
-
"items": {
|
|
2960
|
-
"$ref": "#/definitions/data_machine/properties/node/anyOf/0/anyOf/0/properties/nodes/items/properties/pairs/items/properties/threshold"
|
|
2961
|
-
}
|
|
3020
|
+
"anyOf": [
|
|
3021
|
+
{
|
|
3022
|
+
"type": "object",
|
|
3023
|
+
"properties": {
|
|
3024
|
+
"guard": {
|
|
3025
|
+
"type": "string",
|
|
3026
|
+
"description": "Guard object name or address (string). Example: 'my_attendance_guard' or '0x1234...'"
|
|
2962
3027
|
},
|
|
2963
|
-
{
|
|
2964
|
-
"
|
|
3028
|
+
"retained_submission": {
|
|
3029
|
+
"anyOf": [
|
|
3030
|
+
{
|
|
3031
|
+
"type": "array",
|
|
3032
|
+
"items": {
|
|
3033
|
+
"$ref": "#/definitions/data_machine/properties/node/anyOf/0/anyOf/0/properties/nodes/items/properties/pairs/items/properties/threshold"
|
|
3034
|
+
}
|
|
3035
|
+
},
|
|
3036
|
+
{
|
|
3037
|
+
"type": "null"
|
|
3038
|
+
}
|
|
3039
|
+
],
|
|
3040
|
+
"description": "Data submitted by user during Guard object verification"
|
|
2965
3041
|
}
|
|
3042
|
+
},
|
|
3043
|
+
"required": [
|
|
3044
|
+
"guard"
|
|
2966
3045
|
],
|
|
2967
|
-
"
|
|
3046
|
+
"additionalProperties": false,
|
|
3047
|
+
"description": "OBJECT form: {guard: '<guard_name_or_address>', retained_submission?: number[]}. Use this form when you need to pass retained_submission data alongside the Guard reference."
|
|
3048
|
+
},
|
|
3049
|
+
{
|
|
3050
|
+
"type": "string",
|
|
3051
|
+
"description": "STRING form (shorthand): the Guard object's name or address as a plain string. Auto-wrapped to {guard: <string>} at runtime. Use this when you only need to reference a Guard without retained_submission."
|
|
2968
3052
|
}
|
|
2969
|
-
|
|
2970
|
-
"required": [
|
|
2971
|
-
"guard"
|
|
2972
|
-
],
|
|
2973
|
-
"additionalProperties": false,
|
|
2974
|
-
"description": "Record of Guard object in MachineForwardGuard object"
|
|
3053
|
+
]
|
|
2975
3054
|
},
|
|
2976
3055
|
{
|
|
2977
3056
|
"type": "null"
|
|
2978
3057
|
}
|
|
2979
3058
|
],
|
|
2980
|
-
"description": "Guard
|
|
3059
|
+
"description": "Guard reference for this forward. Accepts TWO formats:\n• STRING (preferred): \"my_guard_name\" — the Guard's name or address as a plain string.\n• OBJECT (only when retained_submission is needed): {guard: \"my_guard_name\", retained_submission: [1,2,3]}.\nFOLLOW THE SCHEMA FIELD STRUCTURE: A Guard reference is fundamentally a STRING (the Guard object's name or address). Provide a string when you only need to reference a Guard — do NOT wrap a bare string in an object structure. The OBJECT form {guard: \"...\", retained_submission: [...]} exists ONLY to carry additional `retained_submission` data alongside the string reference; inside the object, the `guard` field is STILL a string. In short: string-in for a string reference, object-in only when you need to pass extra data.\nCOGNITIVE PRINCIPLE: Guard validation ALWAYS occurs BEFORE the forward operation. A Guard that queries state of the SAME Progress object this forward operates on (e.g. progress.current) will see the PRE-transition value (source node), NOT the target node. If the Guard checks progress.current == target_node, it will ALWAYS FAIL. Querying a DIFFERENT Progress object (cross-machine) is safe and reasonable — that progress is not modified by this forward. For target-node verification after transition, bind the Guard to the Allocator instead (allocation.alloc runs AFTER the state transition completes)."
|
|
2981
3060
|
}
|
|
2982
3061
|
},
|
|
2983
3062
|
"required": [
|
|
@@ -2987,7 +3066,7 @@
|
|
|
2987
3066
|
"additionalProperties": false,
|
|
2988
3067
|
"description": "Forward in Machine object"
|
|
2989
3068
|
},
|
|
2990
|
-
"description": "Forward list"
|
|
3069
|
+
"description": "Forward list — operations to ENTER THIS NODE from prev_node. SEMANTIC CLARIFICATION: forwards describe INCOMING transitions (how to ARRIVE at this node), NOT outgoing transitions. Think of each forward as an 'entry door' to this node. Example: pair {prev_node:'A', forwards:[{name:'Go'}]} means 'use Go to advance FROM A TO THIS NODE'. For initial node (prev_node=''), forwards are operations to enter this node from the start state. DIAGRAM: A --[Go]--> B means the pair belongs to node B (destination), with prev_node='A'. WARNING: forwards belong to the DESTINATION node's pair, NOT the source node. Placing a forward on the wrong pair will cause Progress to get stuck."
|
|
2991
3070
|
}
|
|
2992
3071
|
},
|
|
2993
3072
|
"required": [
|
|
@@ -3336,7 +3415,7 @@
|
|
|
3336
3415
|
"number",
|
|
3337
3416
|
"string"
|
|
3338
3417
|
],
|
|
3339
|
-
"description": "
|
|
3418
|
+
"description": "A coin/balance amount. Accepts three formats: (1) DISPLAY FORMAT with token symbol: \"2.5WOW\", \"10USDC\", \"0.05SUI\" — auto-converted to smallest units via the Fund Processing Layer (token precision resolved from official registry → cache → on-chain). The symbol MUST match the token's type_parameter. (2) SMALLEST UNIT (numeric string): \"10000000000\" — used as-is, no conversion. (3) SMALLEST UNIT (number): 10000000000 — used as-is (loses precision above 2^53). PRECISION RULE: for values exceeding 2^53, ALWAYS use format (1) or (2) — JS numbers lose precision. Default token: WOW (9 decimals, 1 WOW = 10^9 MIST). For custom tokens: use display format with the token's symbol, or pass smallest units directly. MONEY CONFIRMATION: all monetary fields trigger user confirmation via the Fund Processing Layer. If multiple tokens share a symbol (ambiguity), specify the full type string in type_parameter. Examples: \"2.5WOW\" (display → 2500000000), 10000000000 (number, smallest unit), \"50000000000\" (string, smallest unit). Used for: Service.sale.price, Service.compensation_fund_add balance, Treasury.deposit, Arbitration.fee, Reward.amount, stock quantities."
|
|
3340
3419
|
},
|
|
3341
3420
|
"token_type": {
|
|
3342
3421
|
"type": "string",
|
|
@@ -3383,7 +3462,7 @@
|
|
|
3383
3462
|
"const": "recently"
|
|
3384
3463
|
}
|
|
3385
3464
|
],
|
|
3386
|
-
"description": "Unwrap CoinWrapper objects and other objects received by this object and send them to the owner of its Permission object."
|
|
3465
|
+
"description": "Unwrap CoinWrapper objects and other objects received by this Machine object and send them to the owner of its Permission object.\n\nACCEPTED FORMATS (F-06 unified receive operation block):\n• 'recently' (string literal) — auto-query and receive ALL recently received objects.\n Use this for the common case: \"withdraw everything the object has received.\"\n Example: receive: 'recently'\n• ReceivedNormal[] (array) — explicit list of received objects to unwrap.\n Use this when you want to receive specific objects only (not all).\n Example: receive: [{id: '0xobj1', type: '0x2::coin::Coin<0x2::sui::SUI>'}]\n• ReceivedBalance ({token_type, balance, received: [{id, balance, payment}]}) —\n receive a balance record from a specific Payment/payer.\n Use this for precise balance targeting (advanced — usually after querying\n the object's received history via query_received).\n Example: receive: {token_type: '0x2::sui::SUI', balance: 1000000, received: [{id: '0xrec1', balance: 1000000, payment: '0xpay1'}]}\nANTI-PATTERN: do NOT wrap in {result: ...} — pass the value directly."
|
|
3387
3466
|
},
|
|
3388
3467
|
"um": {
|
|
3389
3468
|
"anyOf": [
|
|
@@ -3563,7 +3642,7 @@
|
|
|
3563
3642
|
"unhold",
|
|
3564
3643
|
"adminUnhold"
|
|
3565
3644
|
],
|
|
3566
|
-
"description": "Operation type on the forward: 'next' = advance the forward (accomplish); 'hold' = set hold to block the forward; 'unhold' = self-unhold, release own hold (no 224 permission needed); 'adminUnhold' = force-release hold via 224 permission (PROGRESS_UNHOLD)."
|
|
3645
|
+
"description": "Operation type on the forward (CANONICAL form — prefer this): 'next' = advance the forward (accomplish); 'hold' = set hold to block the forward; 'unhold' = self-unhold, release own hold (no 224 permission needed); 'adminUnhold' = force-release hold via 224 permission (PROGRESS_UNHOLD). LEGACY ALIAS: `hold: boolean` is auto-converted to `op` — `hold:true`→`op:'hold'`, `hold:false`→`op:'next'`. New code should use `op` directly."
|
|
3567
3646
|
},
|
|
3568
3647
|
"message": {
|
|
3569
3648
|
"type": "string",
|
|
@@ -4519,7 +4598,7 @@
|
|
|
4519
4598
|
"number",
|
|
4520
4599
|
"string"
|
|
4521
4600
|
],
|
|
4522
|
-
"description": "
|
|
4601
|
+
"description": "A coin/balance amount. Accepts three formats: (1) DISPLAY FORMAT with token symbol: \"2.5WOW\", \"10USDC\", \"0.05SUI\" — auto-converted to smallest units via the Fund Processing Layer (token precision resolved from official registry → cache → on-chain). The symbol MUST match the token's type_parameter. (2) SMALLEST UNIT (numeric string): \"10000000000\" — used as-is, no conversion. (3) SMALLEST UNIT (number): 10000000000 — used as-is (loses precision above 2^53). PRECISION RULE: for values exceeding 2^53, ALWAYS use format (1) or (2) — JS numbers lose precision. Default token: WOW (9 decimals, 1 WOW = 10^9 MIST). For custom tokens: use display format with the token's symbol, or pass smallest units directly. MONEY CONFIRMATION: all monetary fields trigger user confirmation via the Fund Processing Layer. If multiple tokens share a symbol (ambiguity), specify the full type string in type_parameter. Examples: \"2.5WOW\" (display → 2500000000), 10000000000 (number, smallest unit), \"50000000000\" (string, smallest unit). Used for: Service.sale.price, Service.compensation_fund_add balance, Treasury.deposit, Arbitration.fee, Reward.amount, stock quantities."
|
|
4523
4602
|
},
|
|
4524
4603
|
"token_type": {
|
|
4525
4604
|
"type": "string",
|
|
@@ -4566,7 +4645,7 @@
|
|
|
4566
4645
|
"const": "recently"
|
|
4567
4646
|
}
|
|
4568
4647
|
],
|
|
4569
|
-
"description": "Unwrap CoinWrapper objects and other objects received by this object and send them to the owner of its Permission object."
|
|
4648
|
+
"description": "Unwrap CoinWrapper objects and other objects received by this Repository object and send them to the owner of its Permission object.\n\nACCEPTED FORMATS (F-06 unified receive operation block):\n• 'recently' (string literal) — auto-query and receive ALL recently received objects.\n Use this for the common case: \"withdraw everything the object has received.\"\n Example: receive: 'recently'\n• ReceivedNormal[] (array) — explicit list of received objects to unwrap.\n Use this when you want to receive specific objects only (not all).\n Example: receive: [{id: '0xobj1', type: '0x2::coin::Coin<0x2::sui::SUI>'}]\n• ReceivedBalance ({token_type, balance, received: [{id, balance, payment}]}) —\n receive a balance record from a specific Payment/payer.\n Use this for precise balance targeting (advanced — usually after querying\n the object's received history via query_received).\n Example: receive: {token_type: '0x2::sui::SUI', balance: 1000000, received: [{id: '0xrec1', balance: 1000000, payment: '0xpay1'}]}\nANTI-PATTERN: do NOT wrap in {result: ...} — pass the value directly."
|
|
4570
4649
|
},
|
|
4571
4650
|
"um": {
|
|
4572
4651
|
"anyOf": [
|
|
@@ -4689,7 +4768,7 @@
|
|
|
4689
4768
|
"number",
|
|
4690
4769
|
"string"
|
|
4691
4770
|
],
|
|
4692
|
-
"description": "
|
|
4771
|
+
"description": "A coin/balance amount. Accepts three formats: (1) DISPLAY FORMAT with token symbol: \"2.5WOW\", \"10USDC\", \"0.05SUI\" — auto-converted to smallest units via the Fund Processing Layer (token precision resolved from official registry → cache → on-chain). The symbol MUST match the token's type_parameter. (2) SMALLEST UNIT (numeric string): \"10000000000\" — used as-is, no conversion. (3) SMALLEST UNIT (number): 10000000000 — used as-is (loses precision above 2^53). PRECISION RULE: for values exceeding 2^53, ALWAYS use format (1) or (2) — JS numbers lose precision. Default token: WOW (9 decimals, 1 WOW = 10^9 MIST). For custom tokens: use display format with the token's symbol, or pass smallest units directly. MONEY CONFIRMATION: all monetary fields trigger user confirmation via the Fund Processing Layer. If multiple tokens share a symbol (ambiguity), specify the full type string in type_parameter. Examples: \"2.5WOW\" (display → 2500000000), 10000000000 (number, smallest unit), \"50000000000\" (string, smallest unit). Used for: Service.sale.price, Service.compensation_fund_add balance, Treasury.deposit, Arbitration.fee, Reward.amount, stock quantities."
|
|
4693
4772
|
}
|
|
4694
4773
|
},
|
|
4695
4774
|
"required": [
|
|
@@ -4712,7 +4791,7 @@
|
|
|
4712
4791
|
"additionalProperties": false
|
|
4713
4792
|
}
|
|
4714
4793
|
],
|
|
4715
|
-
"description": "Dispute processing fee."
|
|
4794
|
+
"description": "Dispute processing fee. FORMAT: {balance: <amount_in_smallest_unit>} — field name is 'balance' (NOT 'amount'). The token type and precision are determined by the Arbitration object's type_parameter (the generic type set when the Arbitration was created). For WOW (9 decimals): {balance: 50000000} = 0.05 WOW. For SUI (9 decimals): {balance: 50000000} = 0.05 SUI. For tokens with different decimals, adjust accordingly (e.g. USDC has 6 decimals, so {balance: 50000} = 0.05 USDC)."
|
|
4716
4795
|
},
|
|
4717
4796
|
"namedArb": {
|
|
4718
4797
|
"type": "object",
|
|
@@ -4731,7 +4810,7 @@
|
|
|
4731
4810
|
}
|
|
4732
4811
|
},
|
|
4733
4812
|
"additionalProperties": false,
|
|
4734
|
-
"description": "
|
|
4813
|
+
"description": "RECOMMENDED: Set a local name for the newly created Arb (arbitration case) object. Without this, the Arb is only referenceable by its on-chain address. Example: {name: 'my_dispute_v1'} allows subsequent vote/feedback operations to use 'my_dispute_v1'."
|
|
4735
4814
|
}
|
|
4736
4815
|
},
|
|
4737
4816
|
"required": [
|
|
@@ -4774,7 +4853,8 @@
|
|
|
4774
4853
|
{
|
|
4775
4854
|
"type": "null"
|
|
4776
4855
|
}
|
|
4777
|
-
]
|
|
4856
|
+
],
|
|
4857
|
+
"description": "Voting deadline as Unix timestamp in MILLISECONDS (ms). MUST be in the future (recommended: now + at least 86400000 ms = 24 hours). Set to null to remove the deadline. COMMON MISTAKE: using seconds instead of milliseconds (multiply by 1000). Example: Date.now() + 259200000 for 3 days from now."
|
|
4778
4858
|
}
|
|
4779
4859
|
},
|
|
4780
4860
|
"required": [
|
|
@@ -4794,7 +4874,8 @@
|
|
|
4794
4874
|
"type": [
|
|
4795
4875
|
"number",
|
|
4796
4876
|
"null"
|
|
4797
|
-
]
|
|
4877
|
+
],
|
|
4878
|
+
"description": "New voting deadline as Unix timestamp in MILLISECONDS (ms). MUST be in the future (recommended: now + at least 86400000 ms = 24 hours). Set to null to remove the deadline. COMMON MISTAKE: using seconds instead of milliseconds (multiply by 1000). Example: Date.now() + 259200000 for 3 days from now."
|
|
4798
4879
|
}
|
|
4799
4880
|
},
|
|
4800
4881
|
"required": [
|
|
@@ -5159,7 +5240,7 @@
|
|
|
5159
5240
|
"const": "recently"
|
|
5160
5241
|
}
|
|
5161
5242
|
],
|
|
5162
|
-
"description": "Unwrap CoinWrapper objects and other objects received by this object and send them to the owner of its Permission object."
|
|
5243
|
+
"description": "Unwrap CoinWrapper objects and other objects received by this Arbitration object and send them to the owner of its Permission object.\n\nACCEPTED FORMATS (F-06 unified receive operation block):\n• 'recently' (string literal) — auto-query and receive ALL recently received objects.\n Use this for the common case: \"withdraw everything the object has received.\"\n Example: receive: 'recently'\n• ReceivedNormal[] (array) — explicit list of received objects to unwrap.\n Use this when you want to receive specific objects only (not all).\n Example: receive: [{id: '0xobj1', type: '0x2::coin::Coin<0x2::sui::SUI>'}]\n• ReceivedBalance ({token_type, balance, received: [{id, balance, payment}]}) —\n receive a balance record from a specific Payment/payer.\n Use this for precise balance targeting (advanced — usually after querying\n the object's received history via query_received).\n Example: receive: {token_type: '0x2::sui::SUI', balance: 1000000, received: [{id: '0xrec1', balance: 1000000, payment: '0xpay1'}]}\nANTI-PATTERN: do NOT wrap in {result: ...} — pass the value directly."
|
|
5163
5244
|
},
|
|
5164
5245
|
"um": {
|
|
5165
5246
|
"anyOf": [
|
|
@@ -5403,7 +5484,7 @@
|
|
|
5403
5484
|
"number",
|
|
5404
5485
|
"string"
|
|
5405
5486
|
],
|
|
5406
|
-
"description": "
|
|
5487
|
+
"description": "A coin/balance amount. Accepts three formats: (1) DISPLAY FORMAT with token symbol: \"2.5WOW\", \"10USDC\", \"0.05SUI\" — auto-converted to smallest units via the Fund Processing Layer (token precision resolved from official registry → cache → on-chain). The symbol MUST match the token's type_parameter. (2) SMALLEST UNIT (numeric string): \"10000000000\" — used as-is, no conversion. (3) SMALLEST UNIT (number): 10000000000 — used as-is (loses precision above 2^53). PRECISION RULE: for values exceeding 2^53, ALWAYS use format (1) or (2) — JS numbers lose precision. Default token: WOW (9 decimals, 1 WOW = 10^9 MIST). For custom tokens: use display format with the token's symbol, or pass smallest units directly. MONEY CONFIRMATION: all monetary fields trigger user confirmation via the Fund Processing Layer. If multiple tokens share a symbol (ambiguity), specify the full type string in type_parameter. Examples: \"2.5WOW\" (display → 2500000000), 10000000000 (number, smallest unit), \"50000000000\" (string, smallest unit). Used for: Service.sale.price, Service.compensation_fund_add balance, Treasury.deposit, Arbitration.fee, Reward.amount, stock quantities."
|
|
5407
5488
|
},
|
|
5408
5489
|
"token_type": {
|
|
5409
5490
|
"type": "string",
|
|
@@ -5450,7 +5531,7 @@
|
|
|
5450
5531
|
"const": "recently"
|
|
5451
5532
|
}
|
|
5452
5533
|
],
|
|
5453
|
-
"description": "Receive objects sent to this
|
|
5534
|
+
"description": "Receive objects sent to this Contact object and unwrap them to the permission owner.\n\nACCEPTED FORMATS (F-06 unified receive operation block):\n• 'recently' (string literal) — auto-query and receive ALL recently received objects.\n Use this for the common case: \"withdraw everything the object has received.\"\n Example: receive: 'recently'\n• ReceivedNormal[] (array) — explicit list of received objects to unwrap.\n Use this when you want to receive specific objects only (not all).\n Example: receive: [{id: '0xobj1', type: '0x2::coin::Coin<0x2::sui::SUI>'}]\n• ReceivedBalance ({token_type, balance, received: [{id, balance, payment}]}) —\n receive a balance record from a specific Payment/payer.\n Use this for precise balance targeting (advanced — usually after querying\n the object's received history via query_received).\n Example: receive: {token_type: '0x2::sui::SUI', balance: 1000000, received: [{id: '0xrec1', balance: 1000000, payment: '0xpay1'}]}\nANTI-PATTERN: do NOT wrap in {result: ...} — pass the value directly."
|
|
5454
5535
|
}
|
|
5455
5536
|
},
|
|
5456
5537
|
"required": [
|
|
@@ -5548,7 +5629,7 @@
|
|
|
5548
5629
|
"number",
|
|
5549
5630
|
"string"
|
|
5550
5631
|
],
|
|
5551
|
-
"description": "
|
|
5632
|
+
"description": "A coin/balance amount. Accepts three formats: (1) DISPLAY FORMAT with token symbol: \"2.5WOW\", \"10USDC\", \"0.05SUI\" — auto-converted to smallest units via the Fund Processing Layer (token precision resolved from official registry → cache → on-chain). The symbol MUST match the token's type_parameter. (2) SMALLEST UNIT (numeric string): \"10000000000\" — used as-is, no conversion. (3) SMALLEST UNIT (number): 10000000000 — used as-is (loses precision above 2^53). PRECISION RULE: for values exceeding 2^53, ALWAYS use format (1) or (2) — JS numbers lose precision. Default token: WOW (9 decimals, 1 WOW = 10^9 MIST). For custom tokens: use display format with the token's symbol, or pass smallest units directly. MONEY CONFIRMATION: all monetary fields trigger user confirmation via the Fund Processing Layer. If multiple tokens share a symbol (ambiguity), specify the full type string in type_parameter. Examples: \"2.5WOW\" (display → 2500000000), 10000000000 (number, smallest unit), \"50000000000\" (string, smallest unit). Used for: Service.sale.price, Service.compensation_fund_add balance, Treasury.deposit, Arbitration.fee, Reward.amount, stock quantities."
|
|
5552
5633
|
},
|
|
5553
5634
|
"token_type": {
|
|
5554
5635
|
"type": "string",
|
|
@@ -5595,7 +5676,7 @@
|
|
|
5595
5676
|
"const": "recently"
|
|
5596
5677
|
}
|
|
5597
5678
|
],
|
|
5598
|
-
"description": "Receive CoinWrapper objects received by
|
|
5679
|
+
"description": "Receive CoinWrapper objects received by this Treasury object and deposit them into its balance.\n\nACCEPTED FORMATS (F-06 unified receive operation block):\n• 'recently' (string literal) — auto-query and receive ALL recently received balance.\n Use this for the common case: \"deposit all recently received coins into pending balance.\"\n Example: receive: 'recently'\n• ReceivedBalance ({token_type, balance, received: [{id, balance, payment}]}) —\n receive a specific balance record from a Payment/payer.\n Use this when targeting a specific received balance (advanced).\n Example: receive: {token_type: '0x2::sui::SUI', balance: 1000000, received: [{id: '0xrec1', balance: 1000000, payment: '0xpay1'}]}\nANTI-PATTERN: do NOT wrap in {result: ...} — pass the value directly."
|
|
5599
5680
|
},
|
|
5600
5681
|
"deposit": {
|
|
5601
5682
|
"type": "object",
|
|
@@ -6021,7 +6102,7 @@
|
|
|
6021
6102
|
"const": "recently"
|
|
6022
6103
|
}
|
|
6023
6104
|
],
|
|
6024
|
-
"description": "Unwrap CoinWrapper objects and other objects received by this object and send them to the owner of its Permission object."
|
|
6105
|
+
"description": "Unwrap CoinWrapper objects and other objects received by this Treasury object and send them to the owner of its Permission object.\n\nACCEPTED FORMATS (F-06 unified receive operation block):\n• 'recently' (string literal) — auto-query and receive ALL recently received objects.\n Use this for the common case: \"withdraw everything the object has received.\"\n Example: receive: 'recently'\n• ReceivedNormal[] (array) — explicit list of received objects to unwrap.\n Use this when you want to receive specific objects only (not all).\n Example: receive: [{id: '0xobj1', type: '0x2::coin::Coin<0x2::sui::SUI>'}]\n• ReceivedBalance ({token_type, balance, received: [{id, balance, payment}]}) —\n receive a balance record from a specific Payment/payer.\n Use this for precise balance targeting (advanced — usually after querying\n the object's received history via query_received).\n Example: receive: {token_type: '0x2::sui::SUI', balance: 1000000, received: [{id: '0xrec1', balance: 1000000, payment: '0xpay1'}]}\nANTI-PATTERN: do NOT wrap in {result: ...} — pass the value directly."
|
|
6025
6106
|
},
|
|
6026
6107
|
"um": {
|
|
6027
6108
|
"anyOf": [
|
|
@@ -6134,7 +6215,7 @@
|
|
|
6134
6215
|
"number",
|
|
6135
6216
|
"string"
|
|
6136
6217
|
],
|
|
6137
|
-
"description": "
|
|
6218
|
+
"description": "A coin/balance amount. Accepts three formats: (1) DISPLAY FORMAT with token symbol: \"2.5WOW\", \"10USDC\", \"0.05SUI\" — auto-converted to smallest units via the Fund Processing Layer (token precision resolved from official registry → cache → on-chain). The symbol MUST match the token's type_parameter. (2) SMALLEST UNIT (numeric string): \"10000000000\" — used as-is, no conversion. (3) SMALLEST UNIT (number): 10000000000 — used as-is (loses precision above 2^53). PRECISION RULE: for values exceeding 2^53, ALWAYS use format (1) or (2) — JS numbers lose precision. Default token: WOW (9 decimals, 1 WOW = 10^9 MIST). For custom tokens: use display format with the token's symbol, or pass smallest units directly. MONEY CONFIRMATION: all monetary fields trigger user confirmation via the Fund Processing Layer. If multiple tokens share a symbol (ambiguity), specify the full type string in type_parameter. Examples: \"2.5WOW\" (display → 2500000000), 10000000000 (number, smallest unit), \"50000000000\" (string, smallest unit). Used for: Service.sale.price, Service.compensation_fund_add balance, Treasury.deposit, Arbitration.fee, Reward.amount, stock quantities."
|
|
6138
6219
|
}
|
|
6139
6220
|
},
|
|
6140
6221
|
"required": [
|
|
@@ -6212,7 +6293,7 @@
|
|
|
6212
6293
|
"const": "recently"
|
|
6213
6294
|
}
|
|
6214
6295
|
],
|
|
6215
|
-
"description": "Unwrap CoinWrapper objects received by Reward object and store them in pending balance."
|
|
6296
|
+
"description": "Unwrap CoinWrapper objects received by Reward object and store them in pending balance.\n\nACCEPTED FORMATS (F-06 unified receive operation block):\n• 'recently' (string literal) — auto-query and receive ALL recently received balance.\n Use this for the common case: \"deposit all recently received coins into pending balance.\"\n Example: receive: 'recently'\n• ReceivedBalance ({token_type, balance, received: [{id, balance, payment}]}) —\n receive a specific balance record from a Payment/payer.\n Use this when targeting a specific received balance (advanced).\n Example: receive: {token_type: '0x2::sui::SUI', balance: 1000000, received: [{id: '0xrec1', balance: 1000000, payment: '0xpay1'}]}\nANTI-PATTERN: do NOT wrap in {result: ...} — pass the value directly."
|
|
6216
6297
|
},
|
|
6217
6298
|
"guard_add": {
|
|
6218
6299
|
"type": "array",
|
|
@@ -6264,7 +6345,7 @@
|
|
|
6264
6345
|
"Entity"
|
|
6265
6346
|
],
|
|
6266
6347
|
"additionalProperties": false,
|
|
6267
|
-
"description": "
|
|
6348
|
+
"description": "Static address resolved via LocalMark. Format: {Entity: {name_or_address: 'mark_name'}} — NOTE: Entity is an OBJECT with name_or_address field, NOT a bare string."
|
|
6268
6349
|
},
|
|
6269
6350
|
{
|
|
6270
6351
|
"type": "object",
|
|
@@ -6278,10 +6359,10 @@
|
|
|
6278
6359
|
"Signer"
|
|
6279
6360
|
],
|
|
6280
6361
|
"additionalProperties": false,
|
|
6281
|
-
"description": "Current transaction signer
|
|
6362
|
+
"description": "Current transaction signer (tx_context::sender) at the time of the alloc() call. For refunds, the Order owner must call alloc_by_guard themselves to receive the funds."
|
|
6282
6363
|
}
|
|
6283
6364
|
],
|
|
6284
|
-
"description": "Recipient ID"
|
|
6365
|
+
"description": "Recipient ID. Three forms:\n - {GuardIdentifier: u8} — DYNAMIC address resolved from Passport at alloc() time\n - {Entity: {name_or_address: 'mark_name'}} — FIXED static address via LocalMark (recommended)\n - {Signer: 'signer'} — transaction sender at alloc() time (e.g. self-refund; customer must call alloc_by_guard themselves)"
|
|
6285
6366
|
},
|
|
6286
6367
|
"amount": {
|
|
6287
6368
|
"anyOf": [
|
|
@@ -6403,7 +6484,7 @@
|
|
|
6403
6484
|
"const": "recently"
|
|
6404
6485
|
}
|
|
6405
6486
|
],
|
|
6406
|
-
"description": "Unwrap CoinWrapper objects and other objects received by this object and send them to the owner of its Permission object."
|
|
6487
|
+
"description": "Unwrap CoinWrapper objects and other objects received by this Reward object and send them to the owner of its Permission object.\n\nACCEPTED FORMATS (F-06 unified receive operation block):\n• 'recently' (string literal) — auto-query and receive ALL recently received objects.\n Use this for the common case: \"withdraw everything the object has received.\"\n Example: receive: 'recently'\n• ReceivedNormal[] (array) — explicit list of received objects to unwrap.\n Use this when you want to receive specific objects only (not all).\n Example: receive: [{id: '0xobj1', type: '0x2::coin::Coin<0x2::sui::SUI>'}]\n• ReceivedBalance ({token_type, balance, received: [{id, balance, payment}]}) —\n receive a balance record from a specific Payment/payer.\n Use this for precise balance targeting (advanced — usually after querying\n the object's received history via query_received).\n Example: receive: {token_type: '0x2::sui::SUI', balance: 1000000, received: [{id: '0xrec1', balance: 1000000, payment: '0xpay1'}]}\nANTI-PATTERN: do NOT wrap in {result: ...} — pass the value directly."
|
|
6407
6488
|
},
|
|
6408
6489
|
"um": {
|
|
6409
6490
|
"anyOf": [
|
|
@@ -6471,7 +6552,7 @@
|
|
|
6471
6552
|
"number",
|
|
6472
6553
|
"string"
|
|
6473
6554
|
],
|
|
6474
|
-
"description": "
|
|
6555
|
+
"description": "Minimum balance required for allocation to fire. When the Allocation object's balance < threshold, allocation aborts with EINSUFFICIENT_BALANCE=7. Also: when an Allocator has only Amount items (no Rate, no Surplus), the sum of Amount items must be >= threshold (EAMOUNT_BELOW_THRESHOLD=12). Set to 0 (default) to allow any balance.",
|
|
6475
6556
|
"default": 0
|
|
6476
6557
|
},
|
|
6477
6558
|
"allocators": {
|
|
@@ -6481,7 +6562,7 @@
|
|
|
6481
6562
|
"properties": {
|
|
6482
6563
|
"guard": {
|
|
6483
6564
|
"type": "string",
|
|
6484
|
-
"description": "Guard object ID. If Guard verification passes, fund allocation
|
|
6565
|
+
"description": "Guard object ID or name. If Guard verification passes (via Passport), fund allocation for THIS Allocator fires. Each Allocator in an Allocators list can have a different Guard — the first Allocator whose Guard returns true wins. This enables mutually exclusive allocation paths (e.g., refund Guard on 'return_approved' node vs damage Guard on 'damage_confirmed' node)."
|
|
6485
6566
|
},
|
|
6486
6567
|
"sharing": {
|
|
6487
6568
|
"type": "array",
|
|
@@ -6529,7 +6610,7 @@
|
|
|
6529
6610
|
"Entity"
|
|
6530
6611
|
],
|
|
6531
6612
|
"additionalProperties": false,
|
|
6532
|
-
"description": "
|
|
6613
|
+
"description": "Static address resolved via LocalMark. Format: {Entity: {name_or_address: 'mark_name'}} — NOTE: Entity is an OBJECT with name_or_address field, NOT a bare string."
|
|
6533
6614
|
},
|
|
6534
6615
|
{
|
|
6535
6616
|
"type": "object",
|
|
@@ -6543,26 +6624,35 @@
|
|
|
6543
6624
|
"Signer"
|
|
6544
6625
|
],
|
|
6545
6626
|
"additionalProperties": false,
|
|
6546
|
-
"description": "Current transaction signer
|
|
6627
|
+
"description": "Current transaction signer (tx_context::sender) at the time of the alloc() call. For refunds, the Order owner must call alloc_by_guard themselves to receive the funds."
|
|
6547
6628
|
}
|
|
6548
6629
|
],
|
|
6549
|
-
"description": "Recipient
|
|
6630
|
+
"description": "Recipient of this allocation. Three forms — each resolves the address at a DIFFERENT time:\n• { GuardIdentifier: u8 } — DYNAMIC address resolved from Passport at alloc() time (contract calls passport::submission_get). Use 0 for Order owner in Service-integrated mode (Customer who created the Order). The identifier must match a Guard table entry with b_submission=true. If Passport has no matching submission, contract aborts with E_VERIFY_FAILED. Use when the recipient address is not known at config time and must be supplied via Guard submission data.\n• { Entity: { name_or_address: '...' } } — FIXED address resolved via LocalMark at SDK build time (passed to contract as a literal address). Use for known recipients (e.g., 'turo_host', or a Treasury object address). Use when the recipient is a stable, known address (e.g., operator receives rent, platform fee to treasury).\n• 'Signer' — the transaction sender at the time of the alloc() call (tx_context::sender). RESOLVED AT EXECUTION TIME, not at config time. For refunds: the customer (Order owner) must call alloc_by_guard THEMSELVES so that tx_context::sender resolves to THEIR address — if the operator calls alloc_by_guard, the operator becomes the recipient (Signer = operator), NOT the customer. Use when the recipient is whoever submits the allocation transaction (e.g., customer receives refund)."
|
|
6550
6631
|
},
|
|
6551
6632
|
"sharing": {
|
|
6552
6633
|
"type": [
|
|
6553
6634
|
"number",
|
|
6554
6635
|
"string"
|
|
6555
6636
|
],
|
|
6556
|
-
"description": "
|
|
6637
|
+
"description": "Allocation value. SEMANTICS DEPEND ON `mode`:\n• mode='Amount': absolute amount in smallest unit (e.g., '750000000' for 0.75 WOW, '250000000' for 0.25 WOW). Allocated first; sum of Amount items cached as `fix`.\n• mode='Rate': basis-points rate, 10000 = 100% (e.g., '7500' for 75%, '2500' for 25%). When no Surplus in same Allocator, sum MUST == 10000; when Surplus present, sum MUST <= 10000.\n• mode='Surplus': IGNORED (contract forces to 0). Set to '0' for clarity. Receives remaining balance after Amount + Rate allocations."
|
|
6557
6638
|
},
|
|
6558
6639
|
"mode": {
|
|
6559
|
-
"
|
|
6560
|
-
|
|
6561
|
-
|
|
6562
|
-
|
|
6563
|
-
|
|
6640
|
+
"anyOf": [
|
|
6641
|
+
{
|
|
6642
|
+
"type": "string",
|
|
6643
|
+
"enum": [
|
|
6644
|
+
"Amount",
|
|
6645
|
+
"Rate",
|
|
6646
|
+
"Surplus"
|
|
6647
|
+
]
|
|
6648
|
+
},
|
|
6649
|
+
{
|
|
6650
|
+
"type": "integer",
|
|
6651
|
+
"minimum": 0,
|
|
6652
|
+
"maximum": 2
|
|
6653
|
+
}
|
|
6564
6654
|
],
|
|
6565
|
-
"description": "
|
|
6655
|
+
"description": "Allocation mode — determines how the `sharing` field is interpreted. Three modes can be used individually OR combined within a single Allocator; when combined, allocation order is strictly: Amount first, then Rate, then Surplus. Understanding these modes allows modeling almost any fund distribution pattern.\n• Amount (0): `sharing` is a FIXED amount in smallest unit (e.g., '750000000' = 0.75 WOW). Allocated FIRST; sum of all Amount items is cached as `fix` by the contract. Validation: when no Rate and no Surplus items exist, sum of Amount items must be >= allocators.threshold (EAMOUNT_BELOW_THRESHOLD=12); when `max` is set, sum of Amount items must be <= max (EAMOUNT_EXCEEDS_MAX=13).\n• Rate (1): `sharing` is a basis-points rate (10000 = 100%). Allocated AFTER Amount; formula: allocated = (sharing × total_rates) / 10000, where total_rates = balance - fix (or max - fix if `max` is set). Validation: when no Surplus items exist, sum of all Rate items must be EXACTLY 10000 (ERATE_NOT_10000=4); when Surplus items exist, sum of all Rate items must be <= 10000 (ERATE_EXCEEDS_10000=6).\n• Surplus (2): `sharing` is IGNORED (contract forces it to 0). Allocated LAST; receives the remaining balance after Amount + Rate allocations. Validation: MAX ONE Surplus item per Allocator (EMULTIPLE_SURPLUS=5). When Surplus exists, Rate sum constraint relaxes from == 10000 to <= 10000.\nALLOCATION ORDER (strict): Amount items (fixed, cached as fix) → Rate items (proportional to balance-fix) → Surplus item (remaining).\nRECOMMENDATION: Use Amount mode for known fixed amounts (clearer, no sum constraint). Use Rate mode for proportional splits (requires sum == 10000 unless Surplus present). Use Surplus to capture remainder (e.g., platform fee + host gets rest). Accepts string ('Amount'/'Rate'/'Surplus', recommended) or number (0/1/2)."
|
|
6566
6656
|
}
|
|
6567
6657
|
},
|
|
6568
6658
|
"required": [
|
|
@@ -6571,13 +6661,13 @@
|
|
|
6571
6661
|
"mode"
|
|
6572
6662
|
],
|
|
6573
6663
|
"additionalProperties": false,
|
|
6574
|
-
"description": "Fund allocation item"
|
|
6664
|
+
"description": "Fund allocation item — one recipient's share of the Allocation balance. The `sharing` value's meaning depends on `mode` (see AllocationModeSchema). Multiple items in the same Allocator are evaluated together: Amount items first, Rate items second, Surplus last."
|
|
6575
6665
|
},
|
|
6576
|
-
"description": "Fund allocation item list. Each item
|
|
6666
|
+
"description": "Fund allocation item list. Each item specifies a recipient (who), a value (sharing), and a mode. Items can mix modes (Amount + Rate + Surplus) within the same Allocator. ALLOCATION ORDER: Amount items first (cached as fix) → Rate items (proportional to balance - fix) → Surplus item (remaining). CONSTRAINTS: max ONE Surplus item per Allocator; Rate sum must == 10000 (no Surplus) or <= 10000 (with Surplus); Amount sum must >= threshold (no Rate and no Surplus) and <= max (if max set)."
|
|
6577
6667
|
},
|
|
6578
6668
|
"fix": {
|
|
6579
6669
|
"$ref": "#/definitions/data_allocation/anyOf/0/properties/allocators/properties/threshold",
|
|
6580
|
-
"description": "
|
|
6670
|
+
"description": "OUTPUT-ONLY (query result). Cached sum of all Amount-mode `sharing` values in this Allocator. Computed by the contract during `allocator_add` — DO NOT set this field at creation. Used internally to compute `total_rates = balance - fix` for Rate allocation."
|
|
6581
6671
|
},
|
|
6582
6672
|
"max": {
|
|
6583
6673
|
"anyOf": [
|
|
@@ -6588,7 +6678,7 @@
|
|
|
6588
6678
|
"type": "null"
|
|
6589
6679
|
}
|
|
6590
6680
|
],
|
|
6591
|
-
"description": "Maximum allocation
|
|
6681
|
+
"description": "Maximum allocation cap (OPTIONAL — omit the field or set to null to disable the cap; do NOT set to 0 as that means a cap of zero). Passed through to the contract as Option<u64> via allocator_add(): when null/omitted the contract treats it as `none` (no cap); when set, the contract enforces it. Has THREE effects when set:\n1. Construction: sum of Amount items must be <= max (EAMOUNT_EXCEEDS_MAX=13)\n2. Rate execution: total_rates = max - fix (instead of balance - fix)\n3. Surplus execution: surplus_amount = max - alloced_amount (instead of balance - alloced_amount)\nUse when you want to cap total allocation regardless of Order balance (e.g., cap payout to declared amount). SDK pre-validates Amount sum <= max at build time to give actionable error messages before on-chain abort."
|
|
6592
6682
|
}
|
|
6593
6683
|
},
|
|
6594
6684
|
"required": [
|
|
@@ -6596,9 +6686,9 @@
|
|
|
6596
6686
|
"sharing"
|
|
6597
6687
|
],
|
|
6598
6688
|
"additionalProperties": false,
|
|
6599
|
-
"description": "Fund allocator"
|
|
6689
|
+
"description": "Fund allocator — a complete allocation strategy triggered by a Guard. Contains a sharing[] array where items can mix Amount/Rate/Surplus modes. When the Guard passes, the contract allocates funds in strict order: Amount → Rate → Surplus."
|
|
6600
6690
|
},
|
|
6601
|
-
"description": "Fund allocator list. Each
|
|
6691
|
+
"description": "Fund allocator list. Each allocator is evaluated in order; the FIRST allocator whose Guard passes wins. This enables mutually exclusive allocation paths (e.g., 3 allocators for 3 forward paths: refund / damage-deduct / arbitrate)."
|
|
6602
6692
|
}
|
|
6603
6693
|
},
|
|
6604
6694
|
"required": [
|
|
@@ -6606,7 +6696,7 @@
|
|
|
6606
6696
|
"allocators"
|
|
6607
6697
|
],
|
|
6608
6698
|
"additionalProperties": false,
|
|
6609
|
-
"description": "Fund allocator list"
|
|
6699
|
+
"description": "Fund allocator list — the top-level allocation configuration attached to an Order. Contains a threshold and a list of Allocators. When funds arrive at the Order, the first Allocator whose Guard passes executes its sharing[] in strict order: Amount → Rate → Surplus. MULTI-TIER ALLOCATION (DOC-04): Each Order binds ONE Allocators template (set on Service.order_allocators before publish). For multi-tier distribution (e.g., customer→agency→suppliers), use a two-phase approach: (1) Tier-1 Allocators on the customer's Order (allocates to agency + refund fund); (2) Tier-2 Allocators on a NEW Order created by the agency (allocates agency's received funds to suppliers). Each tier's Rate-mode sharing[] must independently sum to 10000 (or <= 10000 with Surplus)."
|
|
6610
6700
|
},
|
|
6611
6701
|
"coin": {
|
|
6612
6702
|
"anyOf": [
|
|
@@ -6745,7 +6835,7 @@
|
|
|
6745
6835
|
"const": "recently"
|
|
6746
6836
|
}
|
|
6747
6837
|
],
|
|
6748
|
-
"description": "Unwrap the CoinWrapper objects received by the Allocation object and deposit them into the pending allocation balance"
|
|
6838
|
+
"description": "Unwrap the CoinWrapper objects received by the Allocation object and deposit them into the pending allocation balance.\n\nACCEPTED FORMATS (F-06 unified receive operation block):\n• 'recently' (string literal) — auto-query and receive ALL recently received balance.\n Use this for the common case: \"deposit all recently received coins into pending balance.\"\n Example: receive: 'recently'\n• ReceivedBalance ({token_type, balance, received: [{id, balance, payment}]}) —\n receive a specific balance record from a Payment/payer.\n Use this when targeting a specific received balance (advanced).\n Example: receive: {token_type: '0x2::sui::SUI', balance: 1000000, received: [{id: '0xrec1', balance: 1000000, payment: '0xpay1'}]}\nANTI-PATTERN: do NOT wrap in {result: ...} — pass the value directly."
|
|
6749
6839
|
},
|
|
6750
6840
|
"alloc_by_guard": {
|
|
6751
6841
|
"$ref": "#/definitions/data_allocation/anyOf/0/properties/allocators/properties/allocators/items/properties/sharing/items/properties/who/anyOf/1/properties/Entity/properties/name_or_address",
|
|
@@ -7212,7 +7302,7 @@
|
|
|
7212
7302
|
"number",
|
|
7213
7303
|
"string"
|
|
7214
7304
|
],
|
|
7215
|
-
"description": "
|
|
7305
|
+
"description": "A coin/balance amount. Accepts three formats: (1) DISPLAY FORMAT with token symbol: \"2.5WOW\", \"10USDC\", \"0.05SUI\" — auto-converted to smallest units via the Fund Processing Layer (token precision resolved from official registry → cache → on-chain). The symbol MUST match the token's type_parameter. (2) SMALLEST UNIT (numeric string): \"10000000000\" — used as-is, no conversion. (3) SMALLEST UNIT (number): 10000000000 — used as-is (loses precision above 2^53). PRECISION RULE: for values exceeding 2^53, ALWAYS use format (1) or (2) — JS numbers lose precision. Default token: WOW (9 decimals, 1 WOW = 10^9 MIST). For custom tokens: use display format with the token's symbol, or pass smallest units directly. MONEY CONFIRMATION: all monetary fields trigger user confirmation via the Fund Processing Layer. If multiple tokens share a symbol (ambiguity), specify the full type string in type_parameter. Examples: \"2.5WOW\" (display → 2500000000), 10000000000 (number, smallest unit), \"50000000000\" (string, smallest unit). Used for: Service.sale.price, Service.compensation_fund_add balance, Treasury.deposit, Arbitration.fee, Reward.amount, stock quantities."
|
|
7216
7306
|
},
|
|
7217
7307
|
"token_type": {
|
|
7218
7308
|
"type": "string",
|
|
@@ -7259,7 +7349,7 @@
|
|
|
7259
7349
|
"const": "recently"
|
|
7260
7350
|
}
|
|
7261
7351
|
],
|
|
7262
|
-
"description": "Unwrap CoinWrapper objects and other objects received by this object and send them to the builder(owner)."
|
|
7352
|
+
"description": "Unwrap CoinWrapper objects and other objects received by this Permission object and send them to the builder(owner).\n\nACCEPTED FORMATS (F-06 unified receive operation block):\n• 'recently' (string literal) — auto-query and receive ALL recently received objects.\n Use this for the common case: \"withdraw everything the object has received.\"\n Example: receive: 'recently'\n• ReceivedNormal[] (array) — explicit list of received objects to unwrap.\n Use this when you want to receive specific objects only (not all).\n Example: receive: [{id: '0xobj1', type: '0x2::coin::Coin<0x2::sui::SUI>'}]\n• ReceivedBalance ({token_type, balance, received: [{id, balance, payment}]}) —\n receive a balance record from a specific Payment/payer.\n Use this for precise balance targeting (advanced — usually after querying\n the object's received history via query_received).\n Example: receive: {token_type: '0x2::sui::SUI', balance: 1000000, received: [{id: '0xrec1', balance: 1000000, payment: '0xpay1'}]}\nANTI-PATTERN: do NOT wrap in {result: ...} — pass the value directly."
|
|
7263
7353
|
},
|
|
7264
7354
|
"um": {
|
|
7265
7355
|
"anyOf": [
|
|
@@ -7308,7 +7398,7 @@
|
|
|
7308
7398
|
"description": "Assign a name and optional tags to a new object. By default, names are stored LOCALLY (private) on your device. Set 'onChain: true' to create a PUBLIC on-chain identity visible to everyone. IMPORTANT: If the requested name is already taken, the operation will FAIL by default. Only set 'replaceExistName: true' when the user EXPLICITLY demands to forcefully claim the name."
|
|
7309
7399
|
}
|
|
7310
7400
|
],
|
|
7311
|
-
"description": "Name and optional tags for the new Guard object. Set 'onChain: true' to create a public on-chain identity. When using root.type='file', this field OVERRIDES namedNew in the file."
|
|
7401
|
+
"description": "Name and optional tags for the new Guard object. Set 'onChain: true' to create a public on-chain identity. When using root.type='file', this field OVERRIDES namedNew in the file. CIRCULAR DEPENDENCY (DOC-01): When a Guard queries a Service that hasn't been created yet, use a LocalMark NAME (not address) in the query table — the name is resolved to an address at transaction build time. Workflow: (1) Create Service (Phase 1, no publish) → (2) Create Guard referencing Service by name → (3) Update Service.buy_guard = Guard address → (4) Publish Service."
|
|
7312
7402
|
},
|
|
7313
7403
|
"guard_description": {
|
|
7314
7404
|
"anyOf": [
|
|
@@ -7340,7 +7430,7 @@
|
|
|
7340
7430
|
},
|
|
7341
7431
|
"b_submission": {
|
|
7342
7432
|
"type": "boolean",
|
|
7343
|
-
"description": "Whether user
|
|
7433
|
+
"description": "Whether this table item's value is submitted dynamically at Guard trigger time (alloc_by_guard call). \n\ntrue = value is submitted by the caller when triggering the Guard. Use for runtime-context-dependent values like order address, user address. The 'value' field is ignored when b_submission=true; the caller must provide it via submissions[]. \n\nfalse = value is static, set at Guard creation time. Use for values known when the Guard is created: expected node names, expected merchant address, expected service address. The 'value' field must be populated and will be stored on-chain permanently. \n\nRule of thumb: if the value is the SAME for all future Guard triggers, use false. If the value DIFFERS per trigger (e.g., which order to release funds for), use true."
|
|
7344
7434
|
},
|
|
7345
7435
|
"value_type": {
|
|
7346
7436
|
"anyOf": [
|
|
@@ -7630,7 +7720,7 @@
|
|
|
7630
7720
|
"description": "vecvecu8"
|
|
7631
7721
|
}
|
|
7632
7722
|
],
|
|
7633
|
-
"description": "Type of the value"
|
|
7723
|
+
"description": "Type of the value stored in `value`. One of: Bool(0), Address(1), String(2), U8(3), U16(4), U32(5), U64(6), U128(7), U256(8), VecBool(9), VecAddress(10), VecString(11), VecU8(12), VecU16(13), VecU32(14), VecU64(15), VecU128(16), VecU256(17), VecVecU8(18). When value_type=Address (1), the `value` field accepts a hex address string, a LocalMark name, or an AccountOrMark_Address object — see `value` field description for details."
|
|
7634
7724
|
},
|
|
7635
7725
|
"value": {
|
|
7636
7726
|
"anyOf": [
|
|
@@ -7723,12 +7813,12 @@
|
|
|
7723
7813
|
}
|
|
7724
7814
|
}
|
|
7725
7815
|
],
|
|
7726
|
-
"description": "The actual value data"
|
|
7816
|
+
"description": "The actual value data. Format depends on `value_type`:\n• Bool: true/false (boolean)\n• Address (CRITICAL — string 'Address' is NOT a placeholder): a hex address (e.g. '0x1234...'), a LocalMark name (e.g. 'my-service' — resolved to address at evaluation time), an AccountOrMark_Address object (e.g. {name_or_address:'my-service'}), or system shorthand ('0xaaa' = EntityLinker, '0xaab' = EntityRegistrar). The literal string 'Address' itself is INVALID — it would be treated as a non-existent LocalMark name and fail. Example: value='0x2::wow::WOW<address>' or value='my-permission'.\n• String: any string\n• U8/U16/U32/U64/U128/U256: number or numeric string (e.g. 42 or '42')\n• Vec* types: arrays of the corresponding element type\nREQUIRED when b_submission=false. OPTIONAL when b_submission=true (value is supplied at evaluation time by user submission)."
|
|
7727
7817
|
},
|
|
7728
7818
|
"name": {
|
|
7729
7819
|
"type": "string",
|
|
7730
7820
|
"default": "",
|
|
7731
|
-
"description": "
|
|
7821
|
+
"description": "Data name identifier. MAX 64 BCS characters (Chinese chars count as 3-4 BCS bytes each). Use short identifiers like 'order_id', 'delivery_node'. Put longer descriptions in the Guard's 'description' field, NOT here."
|
|
7732
7822
|
}
|
|
7733
7823
|
},
|
|
7734
7824
|
"required": [
|
|
@@ -7737,7 +7827,7 @@
|
|
|
7737
7827
|
"value_type"
|
|
7738
7828
|
],
|
|
7739
7829
|
"additionalProperties": false,
|
|
7740
|
-
"description": "Guard table item"
|
|
7830
|
+
"description": "Guard table item (INPUT/CREATION form). DO NOT include `object_type` field — it is query-output only and will be rejected here."
|
|
7741
7831
|
}
|
|
7742
7832
|
}
|
|
7743
7833
|
],
|
|
@@ -8406,14 +8496,14 @@
|
|
|
8406
8496
|
"address": {
|
|
8407
8497
|
"anyOf": [
|
|
8408
8498
|
{
|
|
8409
|
-
"
|
|
8410
|
-
"description": "Account name, address (0x...), or mark name. When using string format, local marks are searched first. EXAMPLE: 'alice' - searches local marks first, then global; EXAMPLE: '
|
|
8499
|
+
"$ref": "#/definitions/data_personal/properties/referrer/anyOf/1/properties/name_or_address",
|
|
8500
|
+
"description": "Account name, address (0x...), or mark name. When using string format, local marks are searched first. EXAMPLE: 'alice' - searches local marks first, then global; EXAMPLE: '0x2...' (64 hex chars) - uses address directly; EXAMPLE: '' - uses the default local account"
|
|
8411
8501
|
},
|
|
8412
8502
|
{
|
|
8413
8503
|
"$ref": "#/definitions/data_personal/properties/referrer/anyOf/1"
|
|
8414
8504
|
}
|
|
8415
8505
|
],
|
|
8416
|
-
"description": "Account or address lookup. Can be a simple string (recommended for AI) or full object with explicit local_mark_first control"
|
|
8506
|
+
"description": "Account or address lookup. Can be a simple string (recommended for AI) or full object with explicit local_mark_first control. String form auto-converts to { name_or_address: <string>, local_mark_first: true }."
|
|
8417
8507
|
},
|
|
8418
8508
|
"name": {
|
|
8419
8509
|
"$ref": "#/definitions/data_personal/properties/information/anyOf/1/properties/name/items"
|
|
@@ -8487,15 +8577,15 @@
|
|
|
8487
8577
|
{
|
|
8488
8578
|
"type": "array",
|
|
8489
8579
|
"items": {
|
|
8490
|
-
"
|
|
8580
|
+
"$ref": "#/definitions/data_personal/properties/referrer/anyOf/1/properties/name_or_address"
|
|
8491
8581
|
},
|
|
8492
|
-
"description": "Array of account names, addresses, or mark names. Local marks are searched first for each entry"
|
|
8582
|
+
"description": "Array of account names, addresses, or mark names. Local marks are searched first for each entry. EXAMPLE: ['alice', '0x2...', 'bob']"
|
|
8493
8583
|
},
|
|
8494
8584
|
{
|
|
8495
8585
|
"$ref": "#/definitions/data_personal/properties/information/anyOf/0/properties/data/items/properties/value/anyOf/0/anyOf/5/anyOf/0"
|
|
8496
8586
|
}
|
|
8497
8587
|
],
|
|
8498
|
-
"description": "Batch account or address lookup. Can be an array of strings (recommended for AI) or full object with explicit control"
|
|
8588
|
+
"description": "Batch account or address lookup. Can be an array of strings (recommended for AI) or full object with explicit control. Array form auto-converts to { entities: [...], check_all_founded: true }."
|
|
8499
8589
|
}
|
|
8500
8590
|
},
|
|
8501
8591
|
"required": [
|
|
@@ -8563,148 +8653,178 @@
|
|
|
8563
8653
|
"additionalProperties": false
|
|
8564
8654
|
},
|
|
8565
8655
|
"data_payment": {
|
|
8566
|
-
"
|
|
8567
|
-
|
|
8568
|
-
"object": {
|
|
8656
|
+
"anyOf": [
|
|
8657
|
+
{
|
|
8569
8658
|
"type": "object",
|
|
8570
8659
|
"properties": {
|
|
8571
|
-
"
|
|
8572
|
-
"type": "
|
|
8573
|
-
"
|
|
8660
|
+
"object": {
|
|
8661
|
+
"type": "object",
|
|
8662
|
+
"properties": {
|
|
8663
|
+
"name": {
|
|
8664
|
+
"type": "string",
|
|
8665
|
+
"description": "The name of the object"
|
|
8666
|
+
},
|
|
8667
|
+
"tags": {
|
|
8668
|
+
"type": "array",
|
|
8669
|
+
"items": {
|
|
8670
|
+
"type": "string"
|
|
8671
|
+
},
|
|
8672
|
+
"description": "The tags of the object"
|
|
8673
|
+
},
|
|
8674
|
+
"onChain": {
|
|
8675
|
+
"type": "boolean",
|
|
8676
|
+
"description": "CRITICAL: Whether to sync the name to the blockchain. DEFAULT (undefined/false): The name is stored LOCALLY ONLY on your device (PRIVATE). If set to true: The name is published ON-CHAIN and becomes PUBLICLY VISIBLE to everyone. Only set to true for displaying the relationships you are willing to make public on the chain."
|
|
8677
|
+
},
|
|
8678
|
+
"replaceExistName": {
|
|
8679
|
+
"type": "boolean",
|
|
8680
|
+
"description": "FORCE CLAIM: Set to true ONLY when the user explicitly expresses a STRONG INTENTION to forcefully take over an existing name (e.g., 'I must use this name', 'force rename', 'replace the existing one'). WARNING: This will UNBIND the name from its original object and rebind it to the new one, potentially breaking existing references. If not specified or false: the operation will FAIL with an error when the name is already in use (safe default behavior)."
|
|
8681
|
+
},
|
|
8682
|
+
"type_parameter": {
|
|
8683
|
+
"type": "string",
|
|
8684
|
+
"description": "Payment token type for this object (format: {address}::{module}::{struct}). e.g. '0x2::wow::WOW' (WOW, the default), '0x...::usdt::USDT' (USDT), '0x...::eth::ETH' (ETH). Defines which token this object accepts for payments. To discover all available tokens and their type tags, call wowok_buildin_info with info 'mainnet bridge tokens' and use the returned `wowTypeTag` value here.",
|
|
8685
|
+
"default": "0x2::wow::WOW"
|
|
8686
|
+
}
|
|
8687
|
+
},
|
|
8688
|
+
"additionalProperties": false,
|
|
8689
|
+
"description": "Create a new named object (with optional tags) and specify a token type for payments (e.g., WOW, USDT, ETH)."
|
|
8574
8690
|
},
|
|
8575
|
-
"
|
|
8691
|
+
"revenue": {
|
|
8576
8692
|
"type": "array",
|
|
8577
8693
|
"items": {
|
|
8578
|
-
"type": "string"
|
|
8579
|
-
},
|
|
8580
|
-
"description": "The tags of the object"
|
|
8581
|
-
},
|
|
8582
|
-
"onChain": {
|
|
8583
|
-
"type": "boolean",
|
|
8584
|
-
"description": "CRITICAL: Whether to sync the name to the blockchain. DEFAULT (undefined/false): The name is stored LOCALLY ONLY on your device (PRIVATE). If set to true: The name is published ON-CHAIN and becomes PUBLICLY VISIBLE to everyone. Only set to true for displaying the relationships you are willing to make public on the chain."
|
|
8585
|
-
},
|
|
8586
|
-
"replaceExistName": {
|
|
8587
|
-
"type": "boolean",
|
|
8588
|
-
"description": "FORCE CLAIM: Set to true ONLY when the user explicitly expresses a STRONG INTENTION to forcefully take over an existing name (e.g., 'I must use this name', 'force rename', 'replace the existing one'). WARNING: This will UNBIND the name from its original object and rebind it to the new one, potentially breaking existing references. If not specified or false: the operation will FAIL with an error when the name is already in use (safe default behavior)."
|
|
8589
|
-
},
|
|
8590
|
-
"type_parameter": {
|
|
8591
|
-
"type": "string",
|
|
8592
|
-
"description": "Payment token type for this object (format: {address}::{module}::{struct}). e.g. '0x2::wow::WOW' (WOW, the default), '0x...::usdt::USDT' (USDT), '0x...::eth::ETH' (ETH). Defines which token this object accepts for payments. To discover all available tokens and their type tags, call wowok_buildin_info with info 'mainnet bridge tokens' and use the returned `wowTypeTag` value here.",
|
|
8593
|
-
"default": "0x2::wow::WOW"
|
|
8594
|
-
}
|
|
8595
|
-
},
|
|
8596
|
-
"additionalProperties": false,
|
|
8597
|
-
"description": "Create a new named object (with optional tags) and specify a token type for payments (e.g., WOW, USDT, ETH)."
|
|
8598
|
-
},
|
|
8599
|
-
"revenue": {
|
|
8600
|
-
"type": "array",
|
|
8601
|
-
"items": {
|
|
8602
|
-
"type": "object",
|
|
8603
|
-
"properties": {
|
|
8604
|
-
"recipient": {
|
|
8605
8694
|
"type": "object",
|
|
8606
8695
|
"properties": {
|
|
8607
|
-
"
|
|
8608
|
-
"type": "string",
|
|
8609
|
-
"description": "Account/Object name or ID. If specifying an account, use empty string '' for the default account. If it starts with '0x', it will be treated as an ID. Otherwise, it will be treated as a name (max 64 bcs characters)."
|
|
8610
|
-
},
|
|
8611
|
-
"local_mark_first": {
|
|
8612
|
-
"type": "boolean",
|
|
8613
|
-
"description": "Whether to prioritize local marks, if true, prioritize local marks, otherwise prioritize global marks"
|
|
8614
|
-
}
|
|
8615
|
-
},
|
|
8616
|
-
"additionalProperties": false,
|
|
8617
|
-
"description": "Account or address lookup object. Use this to specify which account to use for an operation. EXAMPLE: { name_or_address: 'testor2' } - looks up account by name; EXAMPLE: { name_or_address: '0x1234...' } - uses address directly; If name_or_address is empty string '', uses the default local account."
|
|
8618
|
-
},
|
|
8619
|
-
"amount": {
|
|
8620
|
-
"anyOf": [
|
|
8621
|
-
{
|
|
8696
|
+
"recipient": {
|
|
8622
8697
|
"type": "object",
|
|
8623
8698
|
"properties": {
|
|
8624
|
-
"
|
|
8625
|
-
"type":
|
|
8626
|
-
|
|
8627
|
-
|
|
8628
|
-
|
|
8629
|
-
"
|
|
8699
|
+
"name_or_address": {
|
|
8700
|
+
"type": "string",
|
|
8701
|
+
"description": "Account/Object name or ID. If specifying an account, use empty string '' for the default account. If it starts with '0x', it will be treated as an ID. Otherwise, it will be treated as a name (max 64 bcs characters)."
|
|
8702
|
+
},
|
|
8703
|
+
"local_mark_first": {
|
|
8704
|
+
"type": "boolean",
|
|
8705
|
+
"description": "Whether to prioritize local marks, if true, prioritize local marks, otherwise prioritize global marks"
|
|
8630
8706
|
}
|
|
8631
8707
|
},
|
|
8632
|
-
"required": [
|
|
8633
|
-
"balance"
|
|
8634
|
-
],
|
|
8635
8708
|
"additionalProperties": false,
|
|
8636
|
-
"description": "
|
|
8709
|
+
"description": "Account or address lookup object. Use this to specify which account to use for an operation. EXAMPLE: { name_or_address: 'testor2' } - looks up account by name; EXAMPLE: { name_or_address: '0x1234...' } - uses address directly; If name_or_address is empty string '', uses the default local account."
|
|
8637
8710
|
},
|
|
8638
|
-
{
|
|
8639
|
-
"
|
|
8640
|
-
|
|
8641
|
-
|
|
8642
|
-
"
|
|
8643
|
-
|
|
8711
|
+
"amount": {
|
|
8712
|
+
"anyOf": [
|
|
8713
|
+
{
|
|
8714
|
+
"type": "object",
|
|
8715
|
+
"properties": {
|
|
8716
|
+
"balance": {
|
|
8717
|
+
"type": [
|
|
8718
|
+
"number",
|
|
8719
|
+
"string"
|
|
8720
|
+
],
|
|
8721
|
+
"description": "A coin/balance amount. Accepts three formats: (1) DISPLAY FORMAT with token symbol: \"2.5WOW\", \"10USDC\", \"0.05SUI\" — auto-converted to smallest units via the Fund Processing Layer (token precision resolved from official registry → cache → on-chain). The symbol MUST match the token's type_parameter. (2) SMALLEST UNIT (numeric string): \"10000000000\" — used as-is, no conversion. (3) SMALLEST UNIT (number): 10000000000 — used as-is (loses precision above 2^53). PRECISION RULE: for values exceeding 2^53, ALWAYS use format (1) or (2) — JS numbers lose precision. Default token: WOW (9 decimals, 1 WOW = 10^9 MIST). For custom tokens: use display format with the token's symbol, or pass smallest units directly. MONEY CONFIRMATION: all monetary fields trigger user confirmation via the Fund Processing Layer. If multiple tokens share a symbol (ambiguity), specify the full type string in type_parameter. Examples: \"2.5WOW\" (display → 2500000000), 10000000000 (number, smallest unit), \"50000000000\" (string, smallest unit). Used for: Service.sale.price, Service.compensation_fund_add balance, Treasury.deposit, Arbitration.fee, Reward.amount, stock quantities."
|
|
8722
|
+
}
|
|
8723
|
+
},
|
|
8724
|
+
"required": [
|
|
8725
|
+
"balance"
|
|
8726
|
+
],
|
|
8727
|
+
"additionalProperties": false,
|
|
8728
|
+
"description": "Specify an amount value."
|
|
8729
|
+
},
|
|
8730
|
+
{
|
|
8731
|
+
"type": "object",
|
|
8732
|
+
"properties": {
|
|
8733
|
+
"coin": {
|
|
8734
|
+
"type": "string",
|
|
8735
|
+
"description": "Coin object ID or name(local mark). Use a specified Coin object."
|
|
8736
|
+
}
|
|
8737
|
+
},
|
|
8738
|
+
"required": [
|
|
8739
|
+
"coin"
|
|
8740
|
+
],
|
|
8741
|
+
"additionalProperties": false
|
|
8644
8742
|
}
|
|
8645
|
-
},
|
|
8646
|
-
"required": [
|
|
8647
|
-
"coin"
|
|
8648
8743
|
],
|
|
8649
|
-
"
|
|
8744
|
+
"description": "Specify the amount to pay from the transaction account, or the Coin ID owned by the transaction account. Used for payment."
|
|
8650
8745
|
}
|
|
8746
|
+
},
|
|
8747
|
+
"required": [
|
|
8748
|
+
"recipient",
|
|
8749
|
+
"amount"
|
|
8651
8750
|
],
|
|
8652
|
-
"
|
|
8653
|
-
|
|
8751
|
+
"additionalProperties": false,
|
|
8752
|
+
"description": "Payment recipient and amount"
|
|
8753
|
+
},
|
|
8754
|
+
"description": "Array of payment recipients and amounts"
|
|
8654
8755
|
},
|
|
8655
|
-
"
|
|
8656
|
-
"
|
|
8657
|
-
"
|
|
8658
|
-
|
|
8659
|
-
|
|
8660
|
-
|
|
8756
|
+
"info": {
|
|
8757
|
+
"type": "object",
|
|
8758
|
+
"properties": {
|
|
8759
|
+
"for_object": {
|
|
8760
|
+
"type": [
|
|
8761
|
+
"string",
|
|
8762
|
+
"null"
|
|
8763
|
+
],
|
|
8764
|
+
"description": "Payment for a specific object ID"
|
|
8765
|
+
},
|
|
8766
|
+
"for_guard": {
|
|
8767
|
+
"type": [
|
|
8768
|
+
"string",
|
|
8769
|
+
"null"
|
|
8770
|
+
],
|
|
8771
|
+
"description": "Payment to satisfy verification of a Guard object"
|
|
8772
|
+
},
|
|
8773
|
+
"remark": {
|
|
8774
|
+
"type": "string",
|
|
8775
|
+
"description": "Payment record remark"
|
|
8776
|
+
},
|
|
8777
|
+
"index": {
|
|
8778
|
+
"type": [
|
|
8779
|
+
"number",
|
|
8780
|
+
"string"
|
|
8781
|
+
],
|
|
8782
|
+
"description": "Payment record index"
|
|
8783
|
+
}
|
|
8784
|
+
},
|
|
8785
|
+
"required": [
|
|
8786
|
+
"remark",
|
|
8787
|
+
"index"
|
|
8788
|
+
],
|
|
8789
|
+
"additionalProperties": false,
|
|
8790
|
+
"description": "Payment information"
|
|
8791
|
+
}
|
|
8661
8792
|
},
|
|
8662
|
-
"
|
|
8793
|
+
"required": [
|
|
8794
|
+
"object",
|
|
8795
|
+
"revenue",
|
|
8796
|
+
"info"
|
|
8797
|
+
],
|
|
8798
|
+
"additionalProperties": false,
|
|
8799
|
+
"description": "Create a new Payment. USAGE: Set 'object' field with {name, type, ...} to create a named Payment. NOTE: 'name' goes INSIDE 'object', NOT at the data root level. Payment is an immutable object - it can only be created, not modified. The 'object' field is CRITICAL and REQUIRED."
|
|
8663
8800
|
},
|
|
8664
|
-
|
|
8801
|
+
{
|
|
8665
8802
|
"type": "object",
|
|
8666
8803
|
"properties": {
|
|
8667
|
-
"
|
|
8668
|
-
"
|
|
8669
|
-
|
|
8670
|
-
"null"
|
|
8671
|
-
],
|
|
8672
|
-
"description": "Payment for a specific object ID"
|
|
8804
|
+
"object": {
|
|
8805
|
+
"$ref": "#/definitions/data_payment/anyOf/0/properties/revenue/items/properties/recipient/properties/name_or_address",
|
|
8806
|
+
"description": "CoinWrapper object ID (0x...) or local name to unwrap. Find received CoinWrappers via query_toolkit with query_type='onchain_received'."
|
|
8673
8807
|
},
|
|
8674
|
-
"
|
|
8675
|
-
"type":
|
|
8676
|
-
|
|
8677
|
-
|
|
8678
|
-
],
|
|
8679
|
-
"description": "Payment to satisfy verification of a Guard object"
|
|
8808
|
+
"receive": {
|
|
8809
|
+
"type": "boolean",
|
|
8810
|
+
"const": true,
|
|
8811
|
+
"description": "Set to true to activate receive mode. CoinWrapper objects ARE transferred to recipients via transfer::public_transfer (they arrive as owned objects), but they are NOT spendable coins. This mode unwraps a CoinWrapper into actual coins in your wallet via payment::unwrap_to_myself. The caller must be the CoinWrapper's owner (the recipient specified in the Allocation's revenue split)."
|
|
8680
8812
|
},
|
|
8681
|
-
"
|
|
8813
|
+
"type_parameter": {
|
|
8682
8814
|
"type": "string",
|
|
8683
|
-
"description": "
|
|
8684
|
-
},
|
|
8685
|
-
"index": {
|
|
8686
|
-
"type": [
|
|
8687
|
-
"number",
|
|
8688
|
-
"string"
|
|
8689
|
-
],
|
|
8690
|
-
"description": "Payment record index"
|
|
8815
|
+
"description": "Coin type of the CoinWrapper, e.g. '0x2::wow::WOW'. Must match the type used when the Allocation created the Payment."
|
|
8691
8816
|
}
|
|
8692
8817
|
},
|
|
8693
8818
|
"required": [
|
|
8694
|
-
"
|
|
8695
|
-
"
|
|
8819
|
+
"object",
|
|
8820
|
+
"receive",
|
|
8821
|
+
"type_parameter"
|
|
8696
8822
|
],
|
|
8697
8823
|
"additionalProperties": false,
|
|
8698
|
-
"description": "Payment
|
|
8824
|
+
"description": "Receive mode: unwrap a CoinWrapper to the caller's wallet. Use after Allocation's alloc_by_guard creates a Payment with your address as a revenue recipient. The CoinWrapper holds your share — call this to convert it to actual coins in your wallet."
|
|
8699
8825
|
}
|
|
8700
|
-
},
|
|
8701
|
-
"required": [
|
|
8702
|
-
"object",
|
|
8703
|
-
"revenue",
|
|
8704
|
-
"info"
|
|
8705
8826
|
],
|
|
8706
|
-
"
|
|
8707
|
-
"description": "On-chain Payment creation. USAGE: Set 'object' field with {name, type, ...} to create a named Payment. NOTE: 'name' goes INSIDE 'object', NOT at the data root level. Payment is an immutable object - it can only be created, not modified. The 'object' field is CRITICAL and REQUIRED."
|
|
8827
|
+
"description": "On-chain Payment operations. TWO modes:\n(1) CREATE: Set 'object' with {name, type_parameter, ...}, 'revenue', and 'info' to create a new Payment.\n(2) RECEIVE: Set {object: '<coinwrapper_id_or_name>', receive: true, type_parameter: '0x2::wow::WOW'} to unwrap a CoinWrapper to your wallet.\nThe 'object' field is CRITICAL and REQUIRED in both modes. STRING for receive (CoinWrapper ID/name), OBJECT for create."
|
|
8708
8828
|
},
|
|
8709
8829
|
"data_demand": {
|
|
8710
8830
|
"type": "object",
|
|
@@ -9050,7 +9170,7 @@
|
|
|
9050
9170
|
"number",
|
|
9051
9171
|
"string"
|
|
9052
9172
|
],
|
|
9053
|
-
"description": "
|
|
9173
|
+
"description": "A coin/balance amount. Accepts three formats: (1) DISPLAY FORMAT with token symbol: \"2.5WOW\", \"10USDC\", \"0.05SUI\" — auto-converted to smallest units via the Fund Processing Layer (token precision resolved from official registry → cache → on-chain). The symbol MUST match the token's type_parameter. (2) SMALLEST UNIT (numeric string): \"10000000000\" — used as-is, no conversion. (3) SMALLEST UNIT (number): 10000000000 — used as-is (loses precision above 2^53). PRECISION RULE: for values exceeding 2^53, ALWAYS use format (1) or (2) — JS numbers lose precision. Default token: WOW (9 decimals, 1 WOW = 10^9 MIST). For custom tokens: use display format with the token's symbol, or pass smallest units directly. MONEY CONFIRMATION: all monetary fields trigger user confirmation via the Fund Processing Layer. If multiple tokens share a symbol (ambiguity), specify the full type string in type_parameter. Examples: \"2.5WOW\" (display → 2500000000), 10000000000 (number, smallest unit), \"50000000000\" (string, smallest unit). Used for: Service.sale.price, Service.compensation_fund_add balance, Treasury.deposit, Arbitration.fee, Reward.amount, stock quantities."
|
|
9054
9174
|
},
|
|
9055
9175
|
"token_type": {
|
|
9056
9176
|
"type": "string",
|
|
@@ -9097,7 +9217,7 @@
|
|
|
9097
9217
|
"const": "recently"
|
|
9098
9218
|
}
|
|
9099
9219
|
],
|
|
9100
|
-
"description": "Unwrap CoinWrapper objects and other objects received by this object and send them to the owner of its Permission object."
|
|
9220
|
+
"description": "Unwrap CoinWrapper objects and other objects received by this Demand object and send them to the owner of its Permission object.\n\nACCEPTED FORMATS (F-06 unified receive operation block):\n• 'recently' (string literal) — auto-query and receive ALL recently received objects.\n Use this for the common case: \"withdraw everything the object has received.\"\n Example: receive: 'recently'\n• ReceivedNormal[] (array) — explicit list of received objects to unwrap.\n Use this when you want to receive specific objects only (not all).\n Example: receive: [{id: '0xobj1', type: '0x2::coin::Coin<0x2::sui::SUI>'}]\n• ReceivedBalance ({token_type, balance, received: [{id, balance, payment}]}) —\n receive a balance record from a specific Payment/payer.\n Use this for precise balance targeting (advanced — usually after querying\n the object's received history via query_received).\n Example: receive: {token_type: '0x2::sui::SUI', balance: 1000000, received: [{id: '0xrec1', balance: 1000000, payment: '0xpay1'}]}\nANTI-PATTERN: do NOT wrap in {result: ...} — pass the value directly."
|
|
9101
9221
|
},
|
|
9102
9222
|
"um": {
|
|
9103
9223
|
"anyOf": [
|
|
@@ -9197,7 +9317,7 @@
|
|
|
9197
9317
|
"unhold",
|
|
9198
9318
|
"adminUnhold"
|
|
9199
9319
|
],
|
|
9200
|
-
"description": "Operation type on the forward: 'next' = advance the forward (accomplish); 'hold' = set hold to block the forward; 'unhold' = self-unhold, release own hold (no 224 permission needed); 'adminUnhold' = force-release hold via 224 permission (PROGRESS_UNHOLD)."
|
|
9320
|
+
"description": "Operation type on the forward (CANONICAL form — prefer this): 'next' = advance the forward (accomplish); 'hold' = set hold to block the forward; 'unhold' = self-unhold, release own hold (no 224 permission needed); 'adminUnhold' = force-release hold via 224 permission (PROGRESS_UNHOLD). LEGACY ALIAS: `hold: boolean` is auto-converted to `op` — `hold:true`→`op:'hold'`, `hold:false`→`op:'next'`. New code should use `op` directly."
|
|
9201
9321
|
},
|
|
9202
9322
|
"message": {
|
|
9203
9323
|
"type": "string",
|
|
@@ -9275,96 +9395,90 @@
|
|
|
9275
9395
|
"description": "Specify the adjudicated Arb object to obtain order compensation."
|
|
9276
9396
|
},
|
|
9277
9397
|
"receive": {
|
|
9278
|
-
"
|
|
9279
|
-
|
|
9280
|
-
|
|
9281
|
-
"
|
|
9282
|
-
|
|
9283
|
-
|
|
9284
|
-
"
|
|
9285
|
-
"
|
|
9286
|
-
|
|
9287
|
-
|
|
9288
|
-
"string"
|
|
9289
|
-
],
|
|
9290
|
-
"description": "Balance type"
|
|
9291
|
-
},
|
|
9292
|
-
"token_type": {
|
|
9293
|
-
"type": "string",
|
|
9294
|
-
"description": "Asset type of Coin objects. Supports CoinWrapper<...> format for order receive operations."
|
|
9295
|
-
},
|
|
9296
|
-
"received": {
|
|
9297
|
-
"type": "array",
|
|
9298
|
-
"items": {
|
|
9299
|
-
"type": "object",
|
|
9300
|
-
"properties": {
|
|
9301
|
-
"id": {
|
|
9302
|
-
"type": "string",
|
|
9303
|
-
"description": "Received CoinWrapper object ID"
|
|
9304
|
-
},
|
|
9305
|
-
"balance": {
|
|
9306
|
-
"$ref": "#/definitions/data_order/properties/receive/properties/result/anyOf/0/properties/balance"
|
|
9307
|
-
},
|
|
9308
|
-
"payment": {
|
|
9309
|
-
"type": "string",
|
|
9310
|
-
"description": "Payment object ID"
|
|
9311
|
-
}
|
|
9312
|
-
},
|
|
9313
|
-
"required": [
|
|
9314
|
-
"id",
|
|
9315
|
-
"balance",
|
|
9316
|
-
"payment"
|
|
9317
|
-
],
|
|
9318
|
-
"additionalProperties": false,
|
|
9319
|
-
"description": "Received CoinWrapper object record"
|
|
9320
|
-
},
|
|
9321
|
-
"description": "Received records of Coin objects"
|
|
9322
|
-
}
|
|
9398
|
+
"anyOf": [
|
|
9399
|
+
{
|
|
9400
|
+
"type": "array",
|
|
9401
|
+
"items": {
|
|
9402
|
+
"type": "object",
|
|
9403
|
+
"properties": {
|
|
9404
|
+
"id": {
|
|
9405
|
+
"type": "string",
|
|
9406
|
+
"minLength": 1,
|
|
9407
|
+
"description": "Received object ID"
|
|
9323
9408
|
},
|
|
9324
|
-
"
|
|
9325
|
-
"
|
|
9326
|
-
"
|
|
9327
|
-
"
|
|
9409
|
+
"type": {
|
|
9410
|
+
"type": "string",
|
|
9411
|
+
"minLength": 1,
|
|
9412
|
+
"description": "Object type"
|
|
9413
|
+
},
|
|
9414
|
+
"content_raw": {
|
|
9415
|
+
"description": "Raw content data"
|
|
9416
|
+
}
|
|
9417
|
+
},
|
|
9418
|
+
"required": [
|
|
9419
|
+
"id",
|
|
9420
|
+
"type"
|
|
9421
|
+
],
|
|
9422
|
+
"additionalProperties": false,
|
|
9423
|
+
"description": "Received normal object record"
|
|
9424
|
+
}
|
|
9425
|
+
},
|
|
9426
|
+
{
|
|
9427
|
+
"type": "object",
|
|
9428
|
+
"properties": {
|
|
9429
|
+
"balance": {
|
|
9430
|
+
"type": [
|
|
9431
|
+
"number",
|
|
9432
|
+
"string"
|
|
9328
9433
|
],
|
|
9329
|
-
"
|
|
9330
|
-
"description": "Received record of Coin objects"
|
|
9434
|
+
"description": "A coin/balance amount. Accepts three formats: (1) DISPLAY FORMAT with token symbol: \"2.5WOW\", \"10USDC\", \"0.05SUI\" — auto-converted to smallest units via the Fund Processing Layer (token precision resolved from official registry → cache → on-chain). The symbol MUST match the token's type_parameter. (2) SMALLEST UNIT (numeric string): \"10000000000\" — used as-is, no conversion. (3) SMALLEST UNIT (number): 10000000000 — used as-is (loses precision above 2^53). PRECISION RULE: for values exceeding 2^53, ALWAYS use format (1) or (2) — JS numbers lose precision. Default token: WOW (9 decimals, 1 WOW = 10^9 MIST). For custom tokens: use display format with the token's symbol, or pass smallest units directly. MONEY CONFIRMATION: all monetary fields trigger user confirmation via the Fund Processing Layer. If multiple tokens share a symbol (ambiguity), specify the full type string in type_parameter. Examples: \"2.5WOW\" (display → 2500000000), 10000000000 (number, smallest unit), \"50000000000\" (string, smallest unit). Used for: Service.sale.price, Service.compensation_fund_add balance, Treasury.deposit, Arbitration.fee, Reward.amount, stock quantities."
|
|
9331
9435
|
},
|
|
9332
|
-
{
|
|
9436
|
+
"token_type": {
|
|
9437
|
+
"type": "string",
|
|
9438
|
+
"description": "Asset type of Coin objects. Supports CoinWrapper<...> format for order receive operations."
|
|
9439
|
+
},
|
|
9440
|
+
"received": {
|
|
9333
9441
|
"type": "array",
|
|
9334
9442
|
"items": {
|
|
9335
9443
|
"type": "object",
|
|
9336
9444
|
"properties": {
|
|
9337
9445
|
"id": {
|
|
9338
9446
|
"type": "string",
|
|
9339
|
-
"
|
|
9340
|
-
"description": "Received object ID"
|
|
9447
|
+
"description": "Received CoinWrapper object ID"
|
|
9341
9448
|
},
|
|
9342
|
-
"
|
|
9343
|
-
"
|
|
9344
|
-
"minLength": 1,
|
|
9345
|
-
"description": "Object type"
|
|
9449
|
+
"balance": {
|
|
9450
|
+
"$ref": "#/definitions/data_order/properties/receive/anyOf/1/properties/balance"
|
|
9346
9451
|
},
|
|
9347
|
-
"
|
|
9348
|
-
"
|
|
9452
|
+
"payment": {
|
|
9453
|
+
"type": "string",
|
|
9454
|
+
"description": "Payment object ID"
|
|
9349
9455
|
}
|
|
9350
9456
|
},
|
|
9351
9457
|
"required": [
|
|
9352
9458
|
"id",
|
|
9353
|
-
"
|
|
9459
|
+
"balance",
|
|
9460
|
+
"payment"
|
|
9354
9461
|
],
|
|
9355
9462
|
"additionalProperties": false,
|
|
9356
|
-
"description": "Received
|
|
9357
|
-
}
|
|
9463
|
+
"description": "Received CoinWrapper object record"
|
|
9464
|
+
},
|
|
9465
|
+
"description": "Received records of Coin objects"
|
|
9358
9466
|
}
|
|
9467
|
+
},
|
|
9468
|
+
"required": [
|
|
9469
|
+
"balance",
|
|
9470
|
+
"token_type",
|
|
9471
|
+
"received"
|
|
9359
9472
|
],
|
|
9360
|
-
"
|
|
9473
|
+
"additionalProperties": false,
|
|
9474
|
+
"description": "Received record of Coin objects"
|
|
9475
|
+
},
|
|
9476
|
+
{
|
|
9477
|
+
"type": "string",
|
|
9478
|
+
"const": "recently"
|
|
9361
9479
|
}
|
|
9362
|
-
},
|
|
9363
|
-
"required": [
|
|
9364
|
-
"result"
|
|
9365
9480
|
],
|
|
9366
|
-
"
|
|
9367
|
-
"description": "Unwrap CoinWrapper objects or other objects received by the order and transfer them to the order owner"
|
|
9481
|
+
"description": "Unwrap CoinWrapper objects or other objects received by the order and transfer them to the order owner. Consistent with `owner_receive` on other objects (arbitration/contact/demand/machine/permission/repository/reward/service/treasury).\n\nACCEPTED FORMATS (F-06 unified receive operation block):\n• 'recently' (string literal) — auto-query and receive ALL recently received objects.\n Use this for the common case: \"withdraw everything the object has received.\"\n Example: receive: 'recently'\n• ReceivedNormal[] (array) — explicit list of received objects to unwrap.\n Use this when you want to receive specific objects only (not all).\n Example: receive: [{id: '0xobj1', type: '0x2::coin::Coin<0x2::sui::SUI>'}]\n• ReceivedBalance ({token_type, balance, received: [{id, balance, payment}]}) —\n receive a balance record from a specific Payment/payer.\n Use this for precise balance targeting (advanced — usually after querying\n the object's received history via query_received).\n Example: receive: {token_type: '0x2::sui::SUI', balance: 1000000, received: [{id: '0xrec1', balance: 1000000, payment: '0xpay1'}]}\nANTI-PATTERN: do NOT wrap in {result: ...} — pass the value directly."
|
|
9368
9482
|
},
|
|
9369
9483
|
"transfer_to": {
|
|
9370
9484
|
"$ref": "#/definitions/data_order/properties/agent/properties/entities/items",
|
|
@@ -9448,7 +9562,7 @@
|
|
|
9448
9562
|
},
|
|
9449
9563
|
"b_submission": {
|
|
9450
9564
|
"type": "boolean",
|
|
9451
|
-
"description": "Whether user
|
|
9565
|
+
"description": "Whether this table item's value is submitted dynamically at Guard trigger time (alloc_by_guard call). \n\ntrue = value is submitted by the caller when triggering the Guard. Use for runtime-context-dependent values like order address, user address. The 'value' field is ignored when b_submission=true; the caller must provide it via submissions[]. \n\nfalse = value is static, set at Guard creation time. Use for values known when the Guard is created: expected node names, expected merchant address, expected service address. The 'value' field must be populated and will be stored on-chain permanently. \n\nRule of thumb: if the value is the SAME for all future Guard triggers, use false. If the value DIFFERS per trigger (e.g., which order to release funds for), use true."
|
|
9452
9566
|
},
|
|
9453
9567
|
"value_type": {
|
|
9454
9568
|
"anyOf": [
|
|
@@ -9738,7 +9852,7 @@
|
|
|
9738
9852
|
"description": "vecvecu8"
|
|
9739
9853
|
}
|
|
9740
9854
|
],
|
|
9741
|
-
"description": "Type of the value"
|
|
9855
|
+
"description": "Type of the value stored in `value`. One of: Bool(0), Address(1), String(2), U8(3), U16(4), U32(5), U64(6), U128(7), U256(8), VecBool(9), VecAddress(10), VecString(11), VecU8(12), VecU16(13), VecU32(14), VecU64(15), VecU128(16), VecU256(17), VecVecU8(18). When value_type=Address (1), the `value` field accepts a hex address string, a LocalMark name, or an AccountOrMark_Address object — see `value` field description for details."
|
|
9742
9856
|
},
|
|
9743
9857
|
"value": {
|
|
9744
9858
|
"anyOf": [
|
|
@@ -9831,12 +9945,12 @@
|
|
|
9831
9945
|
}
|
|
9832
9946
|
}
|
|
9833
9947
|
],
|
|
9834
|
-
"description": "The actual value data"
|
|
9948
|
+
"description": "The actual value data. Format depends on `value_type`:\n• Bool: true/false (boolean)\n• Address (CRITICAL — string 'Address' is NOT a placeholder): a hex address (e.g. '0x1234...'), a LocalMark name (e.g. 'my-service' — resolved to address at evaluation time), an AccountOrMark_Address object (e.g. {name_or_address:'my-service'}), or system shorthand ('0xaaa' = EntityLinker, '0xaab' = EntityRegistrar). The literal string 'Address' itself is INVALID — it would be treated as a non-existent LocalMark name and fail. Example: value='0x2::wow::WOW<address>' or value='my-permission'.\n• String: any string\n• U8/U16/U32/U64/U128/U256: number or numeric string (e.g. 42 or '42')\n• Vec* types: arrays of the corresponding element type\nREQUIRED when b_submission=false. OPTIONAL when b_submission=true (value is supplied at evaluation time by user submission)."
|
|
9835
9949
|
},
|
|
9836
9950
|
"name": {
|
|
9837
9951
|
"type": "string",
|
|
9838
9952
|
"default": "",
|
|
9839
|
-
"description": "
|
|
9953
|
+
"description": "Data name identifier. MAX 64 BCS characters (Chinese chars count as 3-4 BCS bytes each). Use short identifiers like 'order_id', 'delivery_node'. Put longer descriptions in the Guard's 'description' field, NOT here."
|
|
9840
9954
|
},
|
|
9841
9955
|
"object_type": {
|
|
9842
9956
|
"type": "string",
|
|
@@ -9874,7 +9988,7 @@
|
|
|
9874
9988
|
"TableItem_AddressMark",
|
|
9875
9989
|
"TableItem_EntityRegistrar"
|
|
9876
9990
|
],
|
|
9877
|
-
"description": "Object type when value_type is Address and represents a specific object"
|
|
9991
|
+
"description": "OUTPUT-ONLY (query side): Object type when value_type is Address and represents a specific object. Auto-derived by the system — DO NOT set this field at Guard creation."
|
|
9878
9992
|
}
|
|
9879
9993
|
},
|
|
9880
9994
|
"required": [
|
|
@@ -9883,7 +9997,7 @@
|
|
|
9883
9997
|
"value_type"
|
|
9884
9998
|
],
|
|
9885
9999
|
"additionalProperties": false,
|
|
9886
|
-
"description": "Guard table item"
|
|
10000
|
+
"description": "Guard table item (QUERY/OUTPUT form — includes auto-derived object_type field)"
|
|
9887
10001
|
},
|
|
9888
10002
|
"description": "User-submitted data matching the Guard's required fields. Relation: structure must match the Guard table's column definitions. Example: [{field:'delivery_proof', value:'Qm...'}]"
|
|
9889
10003
|
}
|
|
@@ -9895,7 +10009,7 @@
|
|
|
9895
10009
|
"additionalProperties": false,
|
|
9896
10010
|
"description": "One Guard's submission data: the Guard to verify plus the user-provided data that satisfies its requirements."
|
|
9897
10011
|
},
|
|
9898
|
-
"description": "User-submitted data for each Guard. Relation: one entry per Guard in the guard array; fill submission fields and resubmit via call_with_submission."
|
|
10012
|
+
"description": "User-submitted data for each Guard. Relation: one entry per Guard in the guard array; fill submission fields and resubmit via call_with_submission. PLACEMENT: this `submission` field is at the SAME level as `data` and `env` in the operation input — NOT inside `data.data`. Example structure: {tool:'onchain_operations', data:{operation_type:'order', data:{object:'my_order', progress:{...}}}, submission:{type:'submission', guard:[...], submission:[...]}}"
|
|
9899
10013
|
}
|
|
9900
10014
|
},
|
|
9901
10015
|
"required": [
|
|
@@ -9932,7 +10046,7 @@
|
|
|
9932
10046
|
"testnet",
|
|
9933
10047
|
"mainnet"
|
|
9934
10048
|
],
|
|
9935
|
-
"description": "Network entrypoint: Specifies which network the operation occurs on"
|
|
10049
|
+
"description": "Network entrypoint: Specifies which network the operation occurs on. FIX-010 cross-network note: LocalMark names are scoped per network (testnet marks are invisible on mainnet and vice versa). When migrating from testnet to mainnet, recreate all objects on mainnet and re-register LocalMark names with the SAME names to keep name-based references working across networks. Use project_operation action='clone_project_to_network' to clone the project blueprint to the target network, then re-run onchain_operations with env.network=target_network to deploy."
|
|
9936
10050
|
},
|
|
9937
10051
|
"referrer": {
|
|
9938
10052
|
"$ref": "#/definitions/data_gen_passport/properties/guard/anyOf/0",
|
|
@@ -10163,7 +10277,7 @@
|
|
|
10163
10277
|
"testnet",
|
|
10164
10278
|
"mainnet"
|
|
10165
10279
|
],
|
|
10166
|
-
"description": "Network entrypoint: Specifies which network the operation occurs on"
|
|
10280
|
+
"description": "Network entrypoint: Specifies which network the operation occurs on. FIX-010 cross-network note: LocalMark names are scoped per network (testnet marks are invisible on mainnet and vice versa). When migrating from testnet to mainnet, recreate all objects on mainnet and re-register LocalMark names with the SAME names to keep name-based references working across networks. Use project_operation action='clone_project_to_network' to clone the project blueprint to the target network, then re-run onchain_operations with env.network=target_network to deploy."
|
|
10167
10281
|
},
|
|
10168
10282
|
"referrer": {
|
|
10169
10283
|
"$ref": "#/definitions/data_gen_proof/properties/env/properties/account",
|