# 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.backupId` (string, required)

  - `request.payload.type` (string, required)
    Enum: "v0_AcknowledgeBackup", "v0_AddAccountLedgers", "v0_AddTrustedPublicKeysForMigration", "v0_AttemptTransactionOrderCancellation", "v0_CreateAccount", "v0_CreateBackup", "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.reference` (object, required)

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

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

  - `request.payload.ledgerIds` (array)

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

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

  - `request.payload.newApiSigningPublicKey` (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.parameters` (any, required)

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

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

  - `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)

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

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

  - `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)

