# Propose an intent

Endpoint: POST /v1/intents
Security: httpAuth

## Security:

  - `httpAuth` (unknown)
    http bearer

## Header parameters:

  - `requestId` (string)

## Request fields (application/json):

  - `request` (object, required)

  - `request.author` (object, required)

  - `request.author.id` (string, required)

  - `request.author.domainId` (string, required)

  - `request.expiryAt` (string, required)

  - `request.targetDomainId` (string, required)

  - `request.id` (string, required)

  - `request.payload` (any, required)

  - `request.payload.reference` (object, required)

  - `request.payload.reference.id` (string, required)

  - `request.payload.reference.revision` (integer, required)

  - `request.payload.ledgerIds` (array)

  - `request.payload.type` (string, required)
    Enum: "v0_AddAccountLedgers", "v0_AddTrustedPublicKeysForMigration", "v0_AttemptTransactionOrderCancellation", "v0_CreateAccount", "v0_CreateDomain", "v0_CreateEndpoint", "v0_CreateLedger", "v0_CreatePolicy", "v0_CreateTicker", "v0_CreateTransactionOrder", "v0_CreateTransferOrder", "v0_CreateUser", "v0_CreateVault", "v0_ExecuteExtension", "v0_LockAccount", "v0_LockDomain", "v0_LockEndpoint", "v0_LockPolicy", "v0_LockTicker", "v0_LockUser", "v0_LockVault", "v0_MigrateSilo3AccountBatch", "v0_NotarizeData", "v0_ReleaseQuarantinedTransfers", "v0_SetSystemProperty", "v0_SignManifest", "v0_UnlockAccount", "v0_UnlockDomain", "v0_UnlockEndpoint", "v0_UnlockPolicy", "v0_UnlockTicker", "v0_UnlockUser", "v0_UnlockVault", "v0_UpdateAccount", "v0_UpdateDomain", "v0_UpdateDomainPermissions", "v0_UpdateEndpoint", "v0_UpdateLedger", "v0_UpdatePolicy", "v0_UpdateTicker", "v0_UpdateUser", "v0_UpdateVault", "v0_ValidateTickers"

  - `request.payload.newCollectionSigningPublicKey` (string, required)

  - `request.payload.newMessageSigningPublicKey` (string, required)

  - `request.payload.newAPI operationsigningPublicKey` (string, required)

  - `request.payload.newKeyMaterial` (string, required)

  - `request.payload.currentCollectionSigningPublicKey` (string, required)

  - `request.payload.currentCollectionSigningPublicKeySignature` (string, required)

  - `request.payload.targetTransactionOrderId` (string, required)

  - `request.payload.replacementTransactionOrderId` (string, required)

  - `request.payload.reason` (string, required)

  - `request.payload.maximumFee` (string)
    This field is a large integer that can be positive or zero. It is represented as a string because it may contain value that cannot be expressed with JSON number without a loss of precision.

  - `request.payload.id` (string, required)

  - `request.payload.alias` (string, required)

  - `request.payload.providerDetails` (any, required)

  - `request.payload.providerDetails.vaultId` (string, required)

  - `request.payload.providerDetails.keyStrategy` (string, required)
    Enum: "VaultHard", "VaultSoft", "Random"

  - `request.payload.providerDetails.type` (string, required)
    Enum: "Vault"

  - `request.payload.ledgerId` (string)

  - `request.payload.lock` (string, required)
    Enum: "Unlocked", "Locked"

  - `request.payload.description` (string)

  - `request.payload.customProperties` (object, required)

  - `request.payload.governingStrategy` (string)
    Enum: "ConsiderDescendants", "CoerceDescendants"

  - `request.payload.permissions` (object, required)

  - `request.payload.permissions.readAccess` (object, required)

  - `request.payload.permissions.readAccess.domains` (array, required)

  - `request.payload.permissions.readAccess.users` (array, required)

  - `request.payload.permissions.readAccess.endpoints` (array, required)

  - `request.payload.permissions.readAccess.policies` (array, required)

  - `request.payload.permissions.readAccess.accounts` (array, required)

  - `request.payload.permissions.readAccess.transactions` (array, required)

  - `request.payload.permissions.readAccess.requests` (array, required)

  - `request.payload.permissions.readAccess.events` (array, required)

  - `request.payload.users` (array, required)

  - `request.payload.users.id` (string, required)

  - `request.payload.users.alias` (string, required)

  - `request.payload.users.publicKey` (string, required)

  - `request.payload.users.roles` (array, required)

  - `request.payload.users.description` (string)

  - `request.payload.users.loginIds` (array)
    Domain-unique `loginId`-`loginProviderId` pairs. Must be specified for login and match pre-configured values.

  - `request.payload.users.loginIds.id` (string, required)
    User identifier used by the provider.

  - `request.payload.users.loginIds.providerId` (string, required)
    Login provider. For internal login, set to `harmonize`. For external identity providers, must match the provider name.

  - `request.payload.policies` (array, required)

  - `request.payload.policies.id` (string, required)

  - `request.payload.policies.alias` (string, required)

  - `request.payload.policies.rank` (integer, required)

  - `request.payload.policies.intentTypes` (array)

  - `request.payload.policies.scope` (string, required)
    Enum: "Self", "Descendants", "SelfAndDescendants"

  - `request.payload.policies.scriptingEngine` (string, required)
    Enum: "Javascript_v0"

  - `request.payload.policies.condition` (any)
    Example: {"left":{"left":{"expression":"true == true","type":"Expression"},"right":{"expression":"false == true","type":"Expression"},"type":"And"},"right":{"left":{"expression":"true == false","type":"Express…

  - `request.payload.policies.condition.type` (string, required)
    Enum: "And", "Expression", "Or"

  - `request.payload.policies.condition.expression` (string, required)

  - `request.payload.policies.workflow` (array)

  - `request.payload.policies.workflow.type` (string, required)
    Enum: "And", "Or", "RoleQuorum"

  - `request.payload.policies.workflow.role` (string, required)

  - `request.payload.policies.workflow.quorum` (integer, required)

  - `request.payload.policies.description` (string)

  - `request.payload.childrenDomainIds` (array)
    List of `domainId` values to reparent under the new domain. Populate this field only for domain injection.

  - `request.payload.address` (string, required)

  - `request.payload.trustScore` (integer, required)

  - `request.payload.parameters` (any)

  - `request.payload.parameters.ABI` (string)
    This field can be used to provide an Application Binary Interface (ABI) for EVM-based smart contracts, Ripple Custody's front-end uses the field to provide an extended support when interacting with smart contracts, therefore it is not recommended to submit invalid ABIs in this field but Ripple Custody will not prevent the submission of invalid ABIs to tolerate use cases outside of Ripple Custody's front-end.

  - `request.payload.parameters.type` (string, required)
    Enum: "Ethereum"

  - `request.payload.rank` (integer, required)

  - `request.payload.intentTypes` (array)

  - `request.payload.workflow` (array)

  - `request.payload.kind` (string, required)
    Enum: "Native", "Contract", "Token"

  - `request.payload.name` (string, required)

  - `request.payload.decimals` (integer)

  - `request.payload.symbol` (string)

  - `request.payload.ledgerDetails` (any, required)

  - `request.payload.ledgerDetails.properties` (any, required)

  - `request.payload.ledgerDetails.properties.type` (string, required)
    Enum: "Native"

  - `request.payload.ledgerDetails.type` (string, required)
    Enum: "Algorand", "Bitcoin", "Cardano", "Ethereum", "Hedera", "Solana", "Stellar", "Substrate", "Tezos", "Tron", "XRPL"

  - `request.payload.accountId` (string, required)

  - `request.payload.tickerId` (string, required)

  - `request.payload.outputs` (array, required)

  - `request.payload.outputs.destination` (any, required)

  - `request.payload.outputs.destination.accountId` (string, required)

  - `request.payload.outputs.destination.type` (string, required)
    Enum: "Account", "Address", "Endpoint"

  - `request.payload.outputs.destination.address` (string, required)

  - `request.payload.outputs.destination.endpointId` (string, required)

  - `request.payload.outputs.amount` (string, required)
    This field is a large integer that can be positive or zero. It is represented as a string because it may contain value that cannot be expressed with JSON number without a loss of precision.

  - `request.payload.outputs.paysFee` (boolean)

  - `request.payload.feeStrategy` (string, required)
    Enum: "High", "Medium", "Low"

  - `request.payload.preferredAddressForChange` (string)
    Hint for specifically bitcoin ledgers to have the transaction happen with addressForChange PrimaryAddress - so change utxo goes to address \0\0 - aligned with dry-runs - rather than the default generate a new chain-internal address.
    Enum: "PrimaryAddress"

  - `request.payload.publicKey` (string, required)

  - `request.payload.roles` (array, required)

  - `request.payload.loginIds` (array)
    Domain-unique `loginId`-`loginProviderId` pairs. Must be specified for login and match pre-configured values.

  - `request.payload.payload` (any, required)

  - `request.payload.payload.id` (string, required)

  - `request.payload.payload.externalAccountId` (string, required)

  - `request.payload.payload.parameters` (object, required)

  - `request.payload.payload.description` (string, required)

  - `request.payload.payload.customProperties` (object, required)

  - `request.payload.payload.type` (string, required)
    Enum: "Flows_v0_CreateTransactionOrder"

  - `request.payload.vaultId` (string, required)

  - `request.payload.wasColdSilo` (boolean, required)

  - `request.payload.wasTestSilo` (boolean, required)

  - `request.payload.accounts` (array, required)

  - `request.payload.accounts.id` (string, required)

  - `request.payload.accounts.alias` (string, required)

  - `request.payload.accounts.description` (string)

  - `request.payload.accounts.ledgerId` (string, required)

  - `request.payload.accounts.publicId` (string, required)
    Example: D37D-04ACF7C4

  - `request.payload.data` (string, required)

  - `request.payload.transferIds` (array, required)

  - `request.payload.revision` (integer)

  - `request.payload.value` (any, required)

  - `request.payload.value.value` (object, required)

  - `request.payload.value.value.publicKey` (any, required)

  - `request.payload.value.value.publicKey.value` (string, required)

  - `request.payload.value.value.publicKey.type` (string, required)
    Enum: "PublicKey"

  - `request.payload.value.type` (string, required)
    Enum: "StateReviewAuthorityProperty"

  - `request.payload.content` (any, required)

  - `request.payload.content.value` (string, required)

  - `request.payload.content.type` (string, required)
    Enum: "EIP-191", "JWT", "Unsafe"

  - `request.payload.content.header` (object, required)

  - `request.payload.content.header.type` (string)

  - `request.payload.content.header.algorithm` (string)

  - `request.payload.content.payload` (object, required)

  - `request.payload.content.payload.issuer` (string)

  - `request.payload.content.payload.subject` (string)

  - `request.payload.content.payload.audience` (string)

  - `request.payload.content.payload.expiration` (integer)

  - `request.payload.content.payload.notBefore` (integer)

  - `request.payload.content.payload.issuedAt` (integer)

  - `request.payload.content.payload.jwtId` (string)

  - `request.payload.tickers` (array, required)

  - `request.payload.tickers.id` (string, required)

  - `request.payload.tickers.ledgerId` (string, required)

  - `request.payload.tickers.kind` (string, required)
    Enum: "Native", "Contract", "Token"

  - `request.payload.tickers.name` (string, required)

  - `request.payload.tickers.decimals` (integer)

  - `request.payload.tickers.symbol` (string)

  - `request.payload.tickers.description` (string)

  - `request.description` (string)

  - `request.type` (string, required)
    Enum: "Propose"

  - `signature` (string, required)

## Response 202:

  - `202` (unknown)
    Accepted

## Response 202 fields (application/json):

  - `requestId` (string, required)

## Response 202 headers (application/json):

  - `requestId` (string, required)

## Response 400:

  - `400` (unknown)
    One of: Domain locked (DomainLockedError); Intent expired (ExpiredRequestError); Invalid intent (InvalidIntentError); Invalid request (InvalidRequestError); Requester locked (RequesterLockedError)

## Response 400 fields (application/json):

  - `reason` (string, required)

  - `message` (string)

## Response 401:

  - `401` (unknown)
    One of: Invalid JWT (InvalidJwtError); Invalid signature (InvalidSignatureError); User not authorized (PermissionDeniedError)

## Response 401 fields (application/json):

  - `reason` (string, required)

  - `message` (string)

## Response 404:

  - `404` (unknown)
    Entity or Domain not found (EntityNotFoundError)

## Response 404 fields (application/json):

  - `reason` (string, required)

  - `message` (string)

## Response 409:

  - `409` (unknown)
    Request already exists (ConflictingRequestIdError)

## Response 409 fields (application/json):

  - `reason` (string, required)

  - `message` (string)

