{"templateId":"markdown","versions":[{"version":"v1.39","label":"v1.39 STS","link":"/products/custody/governance/intents/intent-request-structure","default":true,"active":true,"folderId":"c15a2701"},{"version":"v1.38","label":"v1.38 STS","link":"/products/custody/v1.38/governance/intents/intent-request-structure","default":false,"active":false,"folderId":"c15a2701"},{"version":"v1.34","label":"v1.34 LTS","link":"/products/custody/v1.34/governance/intents/intent-request-structure","default":false,"active":false,"folderId":"c15a2701"},{"version":"v1.26","label":"v1.26 LTS","link":"/products/custody/v1.26/governance/intents/intent-request-structure","default":false,"active":false,"folderId":"c15a2701"},{"version":"v1.19","label":"v1.19 LTS","link":"/products/custody/v1.19/governance/intents/intent-request-structure","default":false,"active":false,"folderId":"c15a2701"},{"version":"v1.15","label":"v1.15 LTS","link":"/products/custody/v1.15/governance/intents/intent-request-structure","default":false,"active":false,"folderId":"c15a2701"}],"sharedDataIds":{"sidebar":"sidebar-products/custody/@v1.15/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown"},"seo":{"title":"Intent request structure","description":"User guides, API reference, and support resources.","siteUrl":"https://docs.ripple.com","lang":"en-US","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"intent-request-structure","__idx":0},"children":["Intent request structure"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use this page to understand the request body structure for intent proposals, dry runs, and signatures. For an introduction to the concept of intents, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/governance/intents"},"children":["Intents and approvals"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["An ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["intent"]}," is a request to execute an action, which executes once it has the approvals its matching policy requires. For the full execution lifecycle, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/governance/intents"},"children":["Intents and approvals"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The submitter of an intent defines, in particular, the following fields:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["payload"]},", which sets the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["type"]}," of the intent and the details of the operation to process;"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["expiryAt"]},", which sets an expiration time to the intent;"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["targetDomainId"]},", which sets the domain in which to execute the intent (either in the current domain or within a descendant domain);"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["type"]},", which defines whether the request is an original user-signed submission (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Propose"]},"), a system-signed submission (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SystemSigned"]},"), an intention to approve an existing intent (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Approve"]},"), or an intention to reject an existing intent (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Reject"]},")."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["There exist four intent types for most entities in the system, as prefixed by:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Create"]}," to create an entity of a given type;"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Update"]}," to update the definition of an entity;"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Lock"]}," to lock an entity;"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Unlock"]}," to unlock an entity."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Exceptions exist, such as for the release of quarantined ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["transfers"]},", which has its dedicated intent called ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["ReleaseQuarantinedTransfers"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A generic intent, named ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["NotarizeData"]},", allows the submission of intents not related to internal processes of Ripple Custody. Such ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["intents"]}," may be used to trigger external effects to extend the capabilities of the system, such as to initiate fiat payment orders or trading orders."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"structure-of-an-intent","__idx":1},"children":["Structure of an intent"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["There are three request body types covered on this page:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["User-signed proposal request body: Request body to propose a new intent with a user signature."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["System-signed proposal request body: API-only request body to propose an intent without a client-side payload signature."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Dry run and signature request body: Request body to perform a dry run of a user-signed intent proposal, or add a signature to the user-signed proposal request body."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Both types include the same set of standard fields and fields that are specific to the intent type."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You can see an example of each request body type in the examples below."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"standard-proposal-fields","__idx":2},"children":["Standard proposal fields"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The data you need to specify in your request is as follows:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Field"},"children":["Field"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"User-signed proposal"},"children":["User-signed proposal"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"System-signed proposal"},"children":["System-signed proposal"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["request.type"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Propose"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SystemSigned"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Discriminator for the proposal body."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["request.author.id"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Required"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Not used"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["User ID of the intent submitter."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["request.author.domainId"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Required"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Not used"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Domain ID of the user submitter. For intents that must be submitted in a specific domain, this ID must correspond to the required domain."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["request.expiryAt"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Required"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Required"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Expiry date for the intent, expressed as an ISO timestamp."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["request.targetDomainId"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Required"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Required"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Target domain where the intent is to be executed."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["request.id"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Required"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Required"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A new ID for the intent in valid UUID format."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["request.payload"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Required"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Required"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Specific details for the intent type. For more information, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#specific-fields-of-an-intent"},"children":["Specific fields of an intent"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["request.description"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Optional"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Optional"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Human-readable description."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["request.customProperties"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Required"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Required"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Custom metadata. Use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["{}"]}," when empty."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["signature"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Required"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Not used"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Top-level cryptographic signature generated with the user submitter's private key."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"specific-fields-of-an-intent","__idx":3},"children":["Specific fields of an intent"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["All the properties that are specific to the type of intent being created (create a domain, update some user details, and so on) are inside the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["payload"]}," block."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You can see examples of ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["payload"]}," blocks in the following sections:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/identity-and-access/vault-management/manage-vaults"},"children":["Manage vaults"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/accounts-and-assets/accounts/manage-accounts-api"},"children":["Manage accounts with the API"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/accounts-and-assets/endpoints/manage-endpoints"},"children":["Manage endpoints"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/accounts-and-assets/tokenization/token-management/api"},"children":["Manage tokens with the API"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/transactions/send-and-receive/send-assets-api"},"children":["Send assets with the API"]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"user-signed-proposal-request-body","__idx":4},"children":["User-signed proposal request body"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The following example shows the request body needed to propose an endpoint creation intent:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","data-title":"User-signed proposal request body","header":{"title":"User-signed proposal request body","controls":{"copy":{}}},"source":"{\n    \"request\": {\n        \"author\": {\n            \"id\": \"9b672a12-37d1-456a-8d35-57426090a156\",\n            \"domainId\": \"9067d363-6411-498b-a32b-15d230a86706\"\n        },\n        \"expiryAt\": \"2022-11-19T16:00:01.621Z\",\n        \"targetDomainId\": \"9067d363-6411-498b-a32b-15d230a86706\",\n        \"id\": \"00baa536-421e-11ee-be56-0242ac120002\",\n        \"payload\": {\n            \"id\": \"202c33d0-421e-11ee-be56-0242ac120002\",\n            \"address\": \"0xD135295cC7562593995202638b8509ba3d108e1\",\n            \"trustScore\": 100,\n            \"ledgerId\": \"avalanche-chain-testnet-fuji\",\n            \"alias\": \"New endpoint\",\n            \"lock\": \"Unlocked\",\n            \"customProperties\": {},\n            \"type\": \"v0_CreateEndpoint\"\n        },\n        \"description\": \"Test endpoint create\",\n        \"customProperties\": {},\n        \"type\": \"Propose\"\n    },\n    \"signature\": \"<SIGNATURE>\"\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"system-signed-proposal-request-body","__idx":5},"children":["System-signed proposal request body"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["System-signed proposal submission is available only through the API. The caller authenticates with a bearer token. The request body does not include ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["request.author"]}," or a top-level ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["signature"]},"."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","data-title":"System-signed proposal request body","header":{"title":"System-signed proposal request body","controls":{"copy":{}}},"source":"{\n    \"request\": {\n        \"type\": \"SystemSigned\",\n        \"targetDomainId\": \"9067d363-6411-498b-a32b-15d230a86706\",\n        \"id\": \"00baa536-421e-11ee-be56-0242ac120002\",\n        \"expiryAt\": \"2026-06-30T15:30:00.000Z\",\n        \"payload\": {\n            \"type\": \"v0_CreateTransactionOrder\",\n            \"...\": \"payload-specific fields\"\n        },\n        \"description\": \"Service-submitted transaction order\",\n        \"customProperties\": {}\n    }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["System-signed proposals are matched by policies that use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["intentOrigin: \"SystemSigned\""]},". If no matching policy applies, the intent cannot execute. Approvals and rejections still use user-signed request bodies."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Before submitting this request body, the active Gateway system signing public key must be registered in Notary, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["NOTARY_SYSTEM_SIGNED_INTENTS_ENABLED"]}," must be set to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["enabled: true"]},", and the target domain must have a matching ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SystemSigned"]}," policy. For the full setup sequence, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/deployment/reference/system-signed-intents"},"children":["System-signed intent configuration"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"dry-run-and-signature-request-body","__idx":6},"children":["Dry run and signature request body"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The following example shows the subset of the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#user-signed-proposal-request-body"},"children":["User-signed proposal request body"]}," needed to:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Perform a dry run of an endpoint creation intent."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Generate the cryptographic signature for a user-signed endpoint creation intent proposal."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The dry-run API request body uses the user-signed shape and includes an ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["author"]},". The OpenAPI specification does not define a system-signed dry-run request body. The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["type: \"Propose\""]}," field belongs to the proposal object you sign; the dry-run request schema itself does not define a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["type"]}," field."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","data-title":"Dry run and signature request body","header":{"title":"Dry run and signature request body","controls":{"copy":{}}},"source":"{\n    \"author\": {\n        \"id\": \"9b672a12-37d1-456a-8d35-57426090a156\",\n        \"domainId\": \"9067d363-6411-498b-a32b-15d230a86706\"\n    },\n    \"expiryAt\": \"2022-11-19T16:00:01.621Z\",\n    \"targetDomainId\": \"9067d363-6411-498b-a32b-15d230a86706\",\n    \"id\": \"00baa536-421e-11ee-be56-0242ac120002\",\n    \"payload\": {\n        \"id\": \"202c33d0-421e-11ee-be56-0242ac120002\",\n        \"address\": \"0xD135295cC7562593995202638b8509ba3d108e1\",\n        \"trustScore\": 100,\n        \"ledgerId\": \"avalanche-chain-testnet-fuji\",\n        \"alias\": \"New endpoint\",\n        \"lock\": \"Unlocked\",\n        \"customProperties\": {},\n        \"type\": \"v0_CreateEndpoint\"\n    },\n    \"description\": \"Test endpoint create\",\n    \"customProperties\": {},\n    \"type\": \"Propose\"\n}\n","lang":"json"},"children":[]}]},"headings":[{"value":"Intent request structure","id":"intent-request-structure","depth":1},{"value":"Structure of an intent","id":"structure-of-an-intent","depth":2},{"value":"Standard proposal fields","id":"standard-proposal-fields","depth":3},{"value":"Specific fields of an intent","id":"specific-fields-of-an-intent","depth":3},{"value":"User-signed proposal request body","id":"user-signed-proposal-request-body","depth":3},{"value":"System-signed proposal request body","id":"system-signed-proposal-request-body","depth":3},{"value":"Dry run and signature request body","id":"dry-run-and-signature-request-body","depth":3}],"frontmatter":{"seo":{"title":"Intent request structure"}},"lastModified":"2026-08-04T20:25:11.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/products/custody/governance/intents/intent-request-structure","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}