OpenAPI Specification
openapi: 3.0.0
info:
title: Palisade Addresses Wallets API
description: The Palisade API enables programmatic interaction with the various features of the Palisade platform
version: '2.0'
servers:
- url: https://api.sandbox.palisade.co
description: Sandbox server (uses TESTNET data, private keys and accounts)
- url: https://api.palisade.co
description: Palisade server (uses MAINNET data, private keys and accounts)
security:
- TokenAuth: []
tags:
- name: Wallets
description: Used to manage wallets
paths:
/v2/vaults/{vaultId}/wallets:
get:
summary: List vault wallets
description: List all wallets within a vault
operationId: VaultService_ListVaultWallets
responses:
'200':
description: A successful response.
content:
application/json:
schema:
$ref: '#/components/schemas/v2ListVaultWalletsResponse'
'400':
description: Returned when the request is malformed or invalid.
content:
application/json:
schema:
$ref: '#/components/schemas/rpcStatus'
examples:
response:
value:
code: 123
message: 'validation error: - name: value length must be at least 1 characters [string.min_len].'
details:
- '@type': type.googleapis.com/google.rpc.ErrorInfo
reason: PAL000.000
domain: app.development.palisade.co/api
metadata: {}
- '@type': type.googleapis.com/google.rpc.RequestInfo
requestId: c817569e-b765-4e6e-a3af-bdb1d07e7517
servingData: ''
'401':
description: Returned when the request was unauthorized.
content:
application/json:
schema:
$ref: '#/components/schemas/rpcStatus'
examples:
response:
value:
code: 123
message: The access token provided does not meet the authorization requirements.
details:
- '@type': type.googleapis.com/google.rpc.ErrorInfo
reason: PAL000.000
domain: app.development.palisade.co/api
metadata: {}
- '@type': type.googleapis.com/google.rpc.RequestInfo
requestId: c817569e-b765-4e6e-a3af-bdb1d07e7517
servingData: ''
'403':
description: Returned when the request was forbidden.
content:
application/json:
schema:
$ref: '#/components/schemas/rpcStatus'
examples:
response:
value:
code: 123
message: The access token provided does not meet the authentication requirements.
details:
- '@type': type.googleapis.com/google.rpc.ErrorInfo
reason: PAL000.000
domain: app.development.palisade.co/api
metadata: {}
- '@type': type.googleapis.com/google.rpc.RequestInfo
requestId: c817569e-b765-4e6e-a3af-bdb1d07e7517
servingData: ''
'404':
description: Returned when the resource does not exist.
content:
application/json:
schema:
$ref: '#/components/schemas/rpcStatus'
examples:
response:
value:
code: 123
message: The resource does not exist.
details:
- '@type': type.googleapis.com/google.rpc.ErrorInfo
reason: PAL000.000
domain: app.development.palisade.co/api
metadata: {}
- '@type': type.googleapis.com/google.rpc.RequestInfo
requestId: c817569e-b765-4e6e-a3af-bdb1d07e7517
servingData: ''
default:
description: An unexpected error response.
content:
application/json:
schema:
$ref: '#/components/schemas/rpcStatus'
parameters:
- name: vaultId
description: The vault ID
in: path
required: true
schema:
type: string
- name: pageSize
description: The number of results to return per page (default 50, max 1000)
in: query
required: false
schema:
type: integer
format: int32
- name: pageToken
description: The token to retrieve the next page of results
in: query
required: false
schema:
type: string
- name: blockchain
description: The blockchain of the wallet
in: query
required: false
schema:
type: string
enum:
- AVALANCHE
- ETHEREUM
- XRP_LEDGER
- POLYGON
- BNBCHAIN
- BASE
- HEDERA
- ARBITRUM
- ONE_MONEY
- SOLANA
- TRON
- BITCOIN
- name: pagination.pageSize
description: Number of results per page (default 50, max 1000)
in: query
required: false
schema:
type: integer
format: int32
- name: pagination.pageToken
description: Token for pagination from previous response
in: query
required: false
schema:
type: string
- name: pagination.orderBy
description: Field to order results by
in: query
required: false
schema:
type: string
- name: pagination.order
description: Sort order (ASC or DESC)
in: query
required: false
schema:
type: string
enum:
- SORT_ORDER_ASC
- SORT_ORDER_DESC
- name: filter.id.eq
description: Exact match
in: query
required: false
schema:
type: string
- name: filter.id.notEq
description: Not equal to
in: query
required: false
schema:
type: string
- name: filter.id.contains
description: Contains substring (case-insensitive)
in: query
required: false
schema:
type: string
- name: filter.id.startsWith
description: Starts with prefix (case-insensitive)
in: query
required: false
schema:
type: string
- name: filter.id.endsWith
description: Ends with suffix (case-insensitive)
in: query
required: false
schema:
type: string
- name: filter.id.in
description: Value is in the list
in: query
required: false
explode: true
schema:
type: array
items:
type: string
- name: filter.id.notIn
description: Value is not in the list
in: query
required: false
explode: true
schema:
type: array
items:
type: string
- name: filter.id.isNull
description: Check if field is null
in: query
required: false
schema:
type: boolean
- name: filter.vaultId.eq
description: Exact match
in: query
required: false
schema:
type: string
- name: filter.vaultId.notEq
description: Not equal to
in: query
required: false
schema:
type: string
- name: filter.vaultId.contains
description: Contains substring (case-insensitive)
in: query
required: false
schema:
type: string
- name: filter.vaultId.startsWith
description: Starts with prefix (case-insensitive)
in: query
required: false
schema:
type: string
- name: filter.vaultId.endsWith
description: Ends with suffix (case-insensitive)
in: query
required: false
schema:
type: string
- name: filter.vaultId.in
description: Value is in the list
in: query
required: false
explode: true
schema:
type: array
items:
type: string
- name: filter.vaultId.notIn
description: Value is not in the list
in: query
required: false
explode: true
schema:
type: array
items:
type: string
- name: filter.vaultId.isNull
description: Check if field is null
in: query
required: false
schema:
type: boolean
- name: filter.name.eq
description: Exact match
in: query
required: false
schema:
type: string
- name: filter.name.notEq
description: Not equal to
in: query
required: false
schema:
type: string
- name: filter.name.contains
description: Contains substring (case-insensitive)
in: query
required: false
schema:
type: string
- name: filter.name.startsWith
description: Starts with prefix (case-insensitive)
in: query
required: false
schema:
type: string
- name: filter.name.endsWith
description: Ends with suffix (case-insensitive)
in: query
required: false
schema:
type: string
- name: filter.name.in
description: Value is in the list
in: query
required: false
explode: true
schema:
type: array
items:
type: string
- name: filter.name.notIn
description: Value is not in the list
in: query
required: false
explode: true
schema:
type: array
items:
type: string
- name: filter.name.isNull
description: Check if field is null
in: query
required: false
schema:
type: boolean
- name: filter.address.eq
description: Exact match
in: query
required: false
schema:
type: string
- name: filter.address.notEq
description: Not equal to
in: query
required: false
schema:
type: string
- name: filter.address.contains
description: Contains substring (case-insensitive)
in: query
required: false
schema:
type: string
- name: filter.address.startsWith
description: Starts with prefix (case-insensitive)
in: query
required: false
schema:
type: string
- name: filter.address.endsWith
description: Ends with suffix (case-insensitive)
in: query
required: false
schema:
type: string
- name: filter.address.in
description: Value is in the list
in: query
required: false
explode: true
schema:
type: array
items:
type: string
- name: filter.address.notIn
description: Value is not in the list
in: query
required: false
explode: true
schema:
type: array
items:
type: string
- name: filter.address.isNull
description: Check if field is null
in: query
required: false
schema:
type: boolean
- name: filter.alias.eq
description: Exact match
in: query
required: false
schema:
type: string
- name: filter.alias.notEq
description: Not equal to
in: query
required: false
schema:
type: string
- name: filter.alias.contains
description: Contains substring (case-insensitive)
in: query
required: false
schema:
type: string
- name: filter.alias.startsWith
description: Starts with prefix (case-insensitive)
in: query
required: false
schema:
type: string
- name: filter.alias.endsWith
description: Ends with suffix (case-insensitive)
in: query
required: false
schema:
type: string
- name: filter.alias.in
description: Value is in the list
in: query
required: false
explode: true
schema:
type: array
items:
type: string
- name: filter.alias.notIn
description: Value is not in the list
in: query
required: false
explode: true
schema:
type: array
items:
type: string
- name: filter.alias.isNull
description: Check if field is null
in: query
required: false
schema:
type: boolean
- name: filter.externalId.eq
description: Exact match
in: query
required: false
schema:
type: string
- name: filter.externalId.notEq
description: Not equal to
in: query
required: false
schema:
type: string
- name: filter.externalId.contains
description: Contains substring (case-insensitive)
in: query
required: false
schema:
type: string
- name: filter.externalId.startsWith
description: Starts with prefix (case-insensitive)
in: query
required: false
schema:
type: string
- name: filter.externalId.endsWith
description: Ends with suffix (case-insensitive)
in: query
required: false
schema:
type: string
- name: filter.externalId.in
description: Value is in the list
in: query
required: false
explode: true
schema:
type: array
items:
type: string
- name: filter.externalId.notIn
description: Value is not in the list
in: query
required: false
explode: true
schema:
type: array
items:
type: string
- name: filter.externalId.isNull
description: Check if field is null
in: query
required: false
schema:
type: boolean
- name: filter.correlationId.eq
description: Exact match
in: query
required: false
schema:
type: string
- name: filter.correlationId.notEq
description: Not equal to
in: query
required: false
schema:
type: string
- name: filter.correlationId.contains
description: Contains substring (case-insensitive)
in: query
required: false
schema:
type: string
- name: filter.correlationId.startsWith
description: Starts with prefix (case-insensitive)
in: query
required: false
schema:
type: string
- name: filter.correlationId.endsWith
description: Ends with suffix (case-insensitive)
in: query
required: false
schema:
type: string
- name: filter.correlationId.in
description: Value is in the list
in: query
required: false
explode: true
schema:
type: array
items:
type: string
- name: filter.correlationId.notIn
description: Value is not in the list
in: query
required: false
explode: true
schema:
type: array
items:
type: string
- name: filter.correlationId.isNull
description: Check if field is null
in: query
required: false
schema:
type: boolean
- name: filter.blockchain.eq
description: Exact blockchain match
in: query
required: false
schema:
type: string
enum:
- AVALANCHE
- ETHEREUM
- XRP_LEDGER
- POLYGON
- BNBCHAIN
- BASE
- HEDERA
- ARBITRUM
- ONE_MONEY
- SOLANA
- TRON
- BITCOIN
- name: filter.blockchain.notEq
description: Exclude this blockchain
in: query
required: false
schema:
type: string
enum:
- AVALANCHE
- ETHEREUM
- XRP_LEDGER
- POLYGON
- BNBCHAIN
- BASE
- HEDERA
- ARBITRUM
- ONE_MONEY
- SOLANA
- TRON
- BITCOIN
- name: filter.blockchain.in
description: Blockchain is in this list
in: query
required: false
explode: true
schema:
type: array
items:
type: string
enum:
- AVALANCHE
- ETHEREUM
- XRP_LEDGER
- POLYGON
- BNBCHAIN
- BASE
- HEDERA
- ARBITRUM
- ONE_MONEY
- SOLANA
- TRON
- BITCOIN
- name: filter.blockchain.notIn
description: Blockchain is not in this list
in: query
required: false
explode: true
schema:
type: array
items:
type: string
enum:
- AVALANCHE
- ETHEREUM
- XRP_LEDGER
- POLYGON
- BNBCHAIN
- BASE
- HEDERA
- ARBITRUM
- ONE_MONEY
- SOLANA
- TRON
- BITCOIN
- name: filter.status
description: Filter by wallet status
in: query
required: false
schema:
type: string
enum:
- CREATED
- PROVISIONING
- PROVISIONED_WALLET
- PROVISIONING_POLICY
- PROVISIONING_COMPLIANCE
- PROVISIONED_COMPLIANCE
- PROVISIONED
- PROVISIONING_FAILED
- name: filter.createdAt.eq
description: Exact timestamp match
in: query
required: false
schema:
type: string
format: date-time
- name: filter.createdAt.notEq
description: Not equal to timestamp
in: query
required: false
schema:
type: string
format: date-time
- name: filter.createdAt.before
description: Before this timestamp
in: query
required: false
schema:
type: string
format: date-time
- name: filter.createdAt.after
description: After this timestamp
in: query
required: false
schema:
type: string
format: date-time
- name: filter.createdAt.gte
description: Greater than or equal to timestamp
in: query
required: false
schema:
type: string
format: date-time
- name: filter.createdAt.lte
description: Less than or equal to timestamp
in: query
required: false
schema:
type: string
format: date-time
- name: filter.createdAt.between.start
description: Start of time range (inclusive)
in: query
required: false
schema:
type: string
format: date-time
- name: filter.createdAt.between.end
description: End of time range (inclusive)
in: query
required: false
schema:
type: string
format: date-time
- name: filter.createdAt.isNull
description: Check if field is null
in: query
required: false
schema:
type: boolean
- name: filter.createdAt.relativeDays
description: Relative days from now (negative for past, positive for future)
in: query
required: false
schema:
type: integer
format: int32
- name: filter.updatedAt.eq
description: Exact timestamp match
in: query
required: false
schema:
type: string
format: date-time
- name: filter.updatedAt.notEq
description: Not equal to timestamp
in: query
required: false
schema:
type: string
format: date-time
- name: filter.updatedAt.before
description: Before this timestamp
in: query
required: false
schema:
type: string
format: date-time
- name: filter.updatedAt.after
description: After this timestamp
in: query
required: false
schema:
type: string
format: date-time
- name: filter.updatedAt.gte
description: Greater than or equal to timestamp
in: query
required: false
schema:
type: string
format: date-time
- name: filter.updatedAt.lte
description: Less than or equal to timestamp
in: query
required: false
schema:
type: string
format: date-time
- name: filter.updatedAt.between.start
description: Start of time range (inclusive)
in: query
required: false
schema:
type: string
format: date-time
- name: filter.updatedAt.between.end
description: End of time range (inclusive)
in: query
required: false
schema:
type: string
format: date-time
- name: filter.updatedAt.isNull
description: Check if field is null
in: query
required: false
schema:
type: boolean
- name: filter.updatedAt.relativeDays
description: Relative days from now (negative for past, positive for future)
in: query
required: false
schema:
type: integer
format: int32
- name: search
description: Case-insensitive search over wallet ID, name, address, alias, external ID, and correlation ID.
in: query
required: false
schema:
type: string
tags:
- Wallets
post:
summary: Create a wallet
description: Create a new HSM or MPC wallet within a vault
operationId: VaultService_CreateWallet
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/vaultv2Wallet'
'400':
description: Returned when the request is malformed or invalid.
content:
application/json:
schema:
$ref: '#/components/schemas/rpcStatus'
examples:
response:
value:
code: 123
message: 'validation error: - name: value length must be at least 1 characters [string.min_len].'
details:
- '@type': type.googleapis.com/google.rpc.ErrorInfo
reason: PAL000.000
domain: app.development.palisade.co/api
metadata: {}
- '@type': type.googleapis.com/google.rpc.RequestInfo
requestId: c817569e-b765-4e6e-a3af-bdb1d07e7517
servingData: ''
'401':
description: Returned when the request was unauthorized.
content:
application/json:
schema:
$ref: '#/components/schemas/rpcStatus'
examples:
response:
value:
code: 123
message: The access token provided does not meet the authorization requirements.
details:
- '@type': type.googleapis.com/google.rpc.ErrorInfo
reason: PAL000.000
domain: app.development.palisade.co/api
metadata: {}
- '@type': type.googleapis.com/google.rpc.RequestInfo
requestId: c817569e-b765-4e6e-a3af-bdb1d07e7517
servingData: ''
'403':
description: Returned when the request was forbidden.
content:
application/json:
schema:
$ref: '#/components/schemas/rpcStatus'
examples:
response:
value:
code: 123
message: The access token provided does not meet the authentication requirements.
details:
- '@type': type.googleapis.com/google.rpc.ErrorInfo
reason: PAL000.000
domain: app.development.palisade.co/api
metadata: {}
- '@type': type.googleapis.com/google.rpc.RequestInfo
requestId: c817569e-b765-4e6e-a3af-bdb1d07e7517
servingData: ''
'404':
description: Returned when the resource does not exist.
content:
application/json:
schema:
$ref: '#/components/schemas/rpcStatus'
examples:
response:
value:
code: 123
message: The resource does not exist.
details:
- '@type': type.googleapis.com/google.rpc.ErrorInfo
reason: PAL000.000
domain: app.development.palisade.co/api
metadata: {}
- '@type': type.googleapis.com/google.rpc.RequestInfo
requestId: c817569e-b765-4e6e-a3af-bdb1d07e7517
servingData: ''
default:
description: An unexpected error response.
content:
application/json:
schema:
$ref: '#/components/schemas/rpcStatus'
parameters:
- name: vaultId
description: The vault ID
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
type: object
properties:
name:
type: string
example: USD Issuing wallet
description: The name of the wallet
description:
type: string
example: Main USD issuing account used internally
description: The description of the wallet
quorumId:
type: string
example: ce4918bf-a199-4ce2-85a3-d0d296855384
description: The quorum ID
blockchain:
allOf:
- $ref: '#/components/schemas/v2Blockchain'
- type: string
example: ETHEREUM
description: The blockchain of the wallet
keystore:
allOf:
- $ref: '#/components/schemas/v2Keystore'
- type: string
example: HSM
description: The keystore of the wallet
recoveryPublicKey:
type: string
example: 30820221300d06092a864886f70d01010105000382020e0030820209028202007b985c289e76fa4d25a72649d9b3381c12ec63e05cee00173e91f94a371a1fc0b95e98ffa0c435a651db17924d9089951f844d00e52fb5ddf3ac0843ea2cdf6ddf54c6926147229722e1cbd8d50a4a62e2d8ae1ffa466e67d23e9de8293dd9698a992a2eb00f9d5588dfacdd86f65c9c2d429da830bfb5b93568159cdece5c1f6424aabbb6058d83261322660ec8acdbe03060ad9fd547aa647fdc96b0b64a56a60070fa64ede58c5c8eb0e3779512e977170c2b7a3e32e375754d5e6e92d65e96d5e3095b455485d70f1ea76a392ff8488a9b93344a440c11e1943fe8dbd6cc98501cd0bac1408e0b47041adfc07b648e6e7feb55ebc1a62ae0cea93adbfd56eee20ffc75395773354927f1d9857050c0aa6a468620885c72a2c46d8274b2e780186743cfae2c04f7f5618df90c1bf31b54634c1b33fa80a68311d7ceb9d392a666bae1a059055a0e26ed1143e21b0ade10f4ef6e5dc8fa653da67f1317fb6f6755ae558f7f198fa1bb0db20e065720fe64f1b7eef91e744bd53df2830ae12960c11e68940f7e7915ff5d46af5e4b65d32f7196ed095a52764c585f75b81d568f101721a18123304b006730fcfb715d53853904995da7e1302a1273ac2559f789bf331dc54c1cd2a523fc665100d6cfad4e4446ff5b239517e577aaf5be1d8a2ed72087432f58d2fdffad377a01c0980efe9e5673ac93d882c64914a2111a9f0203010001
description: Optional, hex encoded PKCS1 formatted public key of a 4096-bit RSA private key
externalId:
type: string
example: ce4918bf-a199-4ce2-85a3-d0d296855384
description: External ID of this wallet, unique to the organization
correlationId:
type: string
example: ce4918bf-a199-4ce2-85a3-d0d296855384
description: Correlation ID for tracking correlations with the wallet
walletType:
allOf:
- $ref: '#/components/schemas/v2WalletType'
- type: string
example: WALLET_TYPE_BLOCKCHAIN
description: The type of wallet to create. Defaults to BLOCKCHAIN if not specified.
keyAlgorithm:
allOf:
- $ref: '#/components/schemas/v2KeyAlgorithm'
- type: string
example: SECP256K1
description: The key algorithm of the wallet
required:
- name
- keystore
required: true
tags:
- Wallets
/v2/vaults/{vaultId}/wallets/{walletId}:
get:
summary: Get a wallet
description: Get a wallet by ID
operationId: VaultService_GetWallet
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/vaultv2Wallet'
'400':
description: Returned when the request is malformed or invalid.
content:
application/json:
schema:
$ref: '#/components/schemas/rpcStatus'
examples:
response:
value:
code: 123
message: 'validation error: - name: value length must be at least 1 characters [string.min_len].'
details:
- '@type': type.googleapis.com/google.rpc.ErrorInfo
reason: PAL000.000
domain: app.development.palisade.co/api
metadata: {}
- '@type': type.googleapis.com/google.rpc.RequestInfo
requestId: c817569e-b765-4e6e-a3af-bdb1d07e7517
servingData: ''
'401':
description: Returned when the request was unauthorized.
content:
application/json:
schema:
$ref: '#/components/schemas/rpcStatus'
examples:
response:
value:
code: 123
message: The access token provided does not meet the authorization requirements.
details:
- '@type': type.googleapis.com/google.rpc.ErrorInfo
reason: PAL000.000
domain: app.development.palisade.co/api
metadata: {}
- '@type': type.googleapis.com/google.rpc.RequestInfo
requestId: c817569e-b765-4e6e-a3af-bdb1d07e7517
servingData: ''
'403':
description: Returned when the request was forbidden.
content:
application/json:
schema:
$ref: '#/components/schemas/rpcStatus'
examples:
response:
value:
code: 123
message: The access token provided does not meet the authentication requirements.
details:
- '@type': type.googleapis.com/google.rpc.ErrorInfo
reaso
# --- truncated at 32 KB (100 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/ripple-labs/refs/heads/main/openapi/ripple-labs-wallets-api-openapi.yml