openapi: 3.2.0 info: title: Identity Ledger Accounts API description: Registration, verification and management of CFX identities associated with financial transactions on the CFX network. termsOfService: '' contact: name: API Owner email: api@cfxlabs.com license: name: '' url: '' version: '@VERSION@' summary: CFX Identity API servers: - url: https://api.dev.cfx.to description: Customer Sandbox - url: https://api.cfx.to description: Production security: - ApiKeyAuth: [] ApiSecretAuth: [] tags: - name: Ledger Accounts description: MoveUSD-denominated accounts owned by an identity. paths: /v1/identity/{identityId}/ledger-accounts: post: summary: Create a ledger account of an identity tags: - Ledger Accounts description: Ledger accounts can hold MoveUSD and be used in transactions. requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: Human-readable label for this account referenceId: type: string description: Customer's reference ID for this account visibility: enum: - PRIVATE - PUBLIC type: string description: 'Visibility of the account across MoveUSD network. **WARNING: `PUBLIC` wallets are visible to all customers.**' default: PRIVATE parameters: - schema: type: string example: id_xxxxxxxxxx in: path name: identityId required: true description: The unique identifier for the organization that owns the account - schema: type: string in: header name: Idempotency-Key required: false responses: '202': description: Default Response content: application/json: schema: type: object required: - id - balance - address - visibility - createdAt - updatedAt properties: id: type: string description: Unique identifier for a ledger account, in `redwal_...` format example: redwal_xxxxxxxx referenceId: type: string description: Customer's reference ID for this account balance: type: string description: The balance of the ledger account name: type: string description: Human-readable label for this account address: type: string description: Base-58 address to the underlying Solana account visibility: enum: - PRIVATE - PUBLIC type: string description: 'Visibility of the account across MoveUSD network. **WARNING: `PUBLIC` wallets are visible to all customers.**' createdAt: type: string format: date-time description: The timestamp of when this account was created updatedAt: type: string format: date-time description: The timestamp of when this account was last updated '400': description: Default Response content: application/json: schema: type: object required: - code - message properties: code: type: string enum: - INVALID_REQUEST - INVALID_IDENTITY description: '- `INVALID_REQUEST`: The service cannot understand the request - `INVALID_IDENTITY`: The identity is not allowed to create a ledger account' message: type: string errors: type: array items: type: object properties: {} additionalProperties: true '401': description: The access to this resource has been denied content: application/json: schema: type: object required: - code - message properties: code: type: string enum: - UNAUTHORIZED message: type: string title: UNAUTHORIZED description: The access to this resource has been denied '403': description: The credentials are valid but the caller is not permitted to transact content: application/json: schema: type: object required: - code - message properties: code: type: string enum: - FORBIDDEN message: type: string title: FORBIDDEN description: The credentials are valid but the caller is not permitted to transact '409': description: A duplicate request with this idempotency key is already in progress content: application/json: schema: type: object required: - code - message properties: code: type: string enum: - IDEMPOTENCY_IN_PROGRESS message: type: string title: IDEMPOTENCY_IN_PROGRESS description: A duplicate request with this idempotency key is already in progress '422': description: Another request with this idempotency key was made using a different body content: application/json: schema: type: object required: - code - message properties: code: type: string enum: - IDEMPOTENCY_KEY_REUSED message: type: string title: IDEMPOTENCY_KEY_REUSED description: Another request with this idempotency key was made using a different body default: description: Catch-all error response for any unexpected internal errors content: application/json: schema: type: object required: - code - message properties: code: type: string enum: - INTERNAL message: type: string enum: - An unexpected internal error has occurred title: INTERNAL description: Catch-all error response for any unexpected internal errors operationId: postV1IdentityByIdentityIdLedgerAccounts x-operation-id-source: derived get: summary: Search for ledger accounts of an identity tags: - Ledger Accounts parameters: - schema: type: string in: query name: addresses required: false description: Comma-separated list of base-58 addresses for the underlying Solana account - schema: type: string format: date-time in: query name: createdBefore required: false - schema: type: string format: date-time in: query name: createdAfter required: false - schema: type: string in: query name: orderBy required: false description: 'Comma-separated list of fields and directions to order the results by. Format: `:,...` * ``: `createdAt` * ``: `ASC`, `DESC`' - schema: type: integer default: 1 in: query name: page required: false description: Result page number to return, starting from 1 - schema: type: integer default: 10 maximum: 100 in: query name: pageSize required: false description: Items per page to return - schema: type: string example: id_xxxxxxxxxx in: path name: identityId required: true description: The unique identifier for the organization that owns the account responses: '200': description: Default Response content: application/json: schema: type: object required: - hasNext - items properties: hasNext: type: boolean description: Whether there are more pages for this search result items: type: array items: type: object required: - id - balance - address - visibility - createdAt - updatedAt properties: id: type: string description: Unique identifier for a ledger account, in `redwal_...` format example: redwal_xxxxxxxx referenceId: type: string description: Customer's reference ID for this account balance: type: string description: The balance of the ledger account name: type: string description: Human-readable label for this account address: type: string description: Base-58 address to the underlying Solana account visibility: enum: - PRIVATE - PUBLIC type: string description: 'Visibility of the account across MoveUSD network. **WARNING: `PUBLIC` wallets are visible to all customers.**' createdAt: type: string format: date-time description: The timestamp of when this account was created updatedAt: type: string format: date-time description: The timestamp of when this account was last updated '400': description: Default Response content: application/json: schema: type: object required: - code - message properties: code: type: string enum: - INVALID_REQUEST - INVALID_ADDRESSES description: '- `INVALID_REQUEST`: The service cannot understand the request - `INVALID_ADDRESSES`: Invalid `addresses` query' message: type: string errors: type: array items: type: object properties: {} additionalProperties: true '401': description: The access to this resource has been denied content: application/json: schema: type: object required: - code - message properties: code: type: string enum: - UNAUTHORIZED message: type: string title: UNAUTHORIZED description: The access to this resource has been denied '403': description: The credentials are valid but the caller is not permitted to transact content: application/json: schema: type: object required: - code - message properties: code: type: string enum: - FORBIDDEN message: type: string title: FORBIDDEN description: The credentials are valid but the caller is not permitted to transact default: description: Catch-all error response for any unexpected internal errors content: application/json: schema: type: object required: - code - message properties: code: type: string enum: - INTERNAL message: type: string enum: - An unexpected internal error has occurred title: INTERNAL description: Catch-all error response for any unexpected internal errors operationId: getV1IdentityByIdentityIdLedgerAccounts x-operation-id-source: derived /v1/identity/{identityId}/ledger-accounts/{id}: put: summary: Update a ledger account of an identity tags: - Ledger Accounts requestBody: required: true content: application/json: schema: type: object properties: referenceId: type: string description: Customer's reference ID for this account name: type: string description: Human-readable label for this account parameters: - schema: type: string example: redwal_xxxxxxxx in: path name: id required: true description: The unique identifier for the account - schema: type: string example: id_xxxxxxxxxx in: path name: identityId required: true description: The unique identifier for the organization that owns the account responses: '200': description: Default Response content: application/json: schema: type: object required: - id - balance - address - visibility - createdAt - updatedAt properties: id: type: string description: Unique identifier for a ledger account, in `redwal_...` format example: redwal_xxxxxxxx referenceId: type: string description: Customer's reference ID for this account balance: type: string description: The balance of the ledger account name: type: string description: Human-readable label for this account address: type: string description: Base-58 address to the underlying Solana account visibility: enum: - PRIVATE - PUBLIC type: string description: 'Visibility of the account across MoveUSD network. **WARNING: `PUBLIC` wallets are visible to all customers.**' createdAt: type: string format: date-time description: The timestamp of when this account was created updatedAt: type: string format: date-time description: The timestamp of when this account was last updated '400': description: Default Response content: application/json: schema: type: object required: - code - message properties: code: type: string enum: - INVALID_REQUEST - INVALID_IDENTITY description: '- `INVALID_REQUEST`: The service cannot understand the request - `INVALID_IDENTITY`: The identity is not allowed to update a ledger account' message: type: string errors: type: array items: type: object properties: {} additionalProperties: true '401': description: The access to this resource has been denied content: application/json: schema: type: object required: - code - message properties: code: type: string enum: - UNAUTHORIZED message: type: string title: UNAUTHORIZED description: The access to this resource has been denied '403': description: The credentials are valid but the caller is not permitted to transact content: application/json: schema: type: object required: - code - message properties: code: type: string enum: - FORBIDDEN message: type: string title: FORBIDDEN description: The credentials are valid but the caller is not permitted to transact '404': description: The resource was not found content: application/json: schema: type: object required: - code - message properties: code: type: string enum: - NOT_FOUND message: type: string title: NOT_FOUND description: The resource was not found default: description: Catch-all error response for any unexpected internal errors content: application/json: schema: type: object required: - code - message properties: code: type: string enum: - INTERNAL message: type: string enum: - An unexpected internal error has occurred title: INTERNAL description: Catch-all error response for any unexpected internal errors operationId: putV1IdentityByIdentityIdLedgerAccountsById x-operation-id-source: derived get: summary: Get a ledger account details, belonging to an identity tags: - Ledger Accounts parameters: - schema: type: string example: redwal_xxxxxxxx in: path name: id required: true description: The unique identifier for the account - schema: type: string example: id_xxxxxxxxxx in: path name: identityId required: true description: The unique identifier for the organization that owns the account responses: '200': description: Default Response content: application/json: schema: type: object required: - id - balance - address - visibility - createdAt - updatedAt properties: id: type: string description: Unique identifier for a ledger account, in `redwal_...` format example: redwal_xxxxxxxx referenceId: type: string description: Customer's reference ID for this account balance: type: string description: The balance of the ledger account name: type: string description: Human-readable label for this account address: type: string description: Base-58 address to the underlying Solana account visibility: enum: - PRIVATE - PUBLIC type: string description: 'Visibility of the account across MoveUSD network. **WARNING: `PUBLIC` wallets are visible to all customers.**' createdAt: type: string format: date-time description: The timestamp of when this account was created updatedAt: type: string format: date-time description: The timestamp of when this account was last updated '400': description: The service cannot understand the request content: application/json: schema: type: object required: - code - message properties: code: type: string enum: - INVALID_REQUEST message: type: string errors: type: array items: type: object properties: {} additionalProperties: true title: INVALID_REQUEST description: The service cannot understand the request '401': description: The access to this resource has been denied content: application/json: schema: type: object required: - code - message properties: code: type: string enum: - UNAUTHORIZED message: type: string title: UNAUTHORIZED description: The access to this resource has been denied '403': description: The credentials are valid but the caller is not permitted to transact content: application/json: schema: type: object required: - code - message properties: code: type: string enum: - FORBIDDEN message: type: string title: FORBIDDEN description: The credentials are valid but the caller is not permitted to transact '404': description: The resource was not found content: application/json: schema: type: object required: - code - message properties: code: type: string enum: - NOT_FOUND message: type: string title: NOT_FOUND description: The resource was not found default: description: Catch-all error response for any unexpected internal errors content: application/json: schema: type: object required: - code - message properties: code: type: string enum: - INTERNAL message: type: string enum: - An unexpected internal error has occurred title: INTERNAL description: Catch-all error response for any unexpected internal errors operationId: getV1IdentityByIdentityIdLedgerAccountsById x-operation-id-source: derived components: securitySchemes: ApiKeyAuth: name: x-api-key type: apiKey in: header ApiSecretAuth: name: x-api-secret type: apiKey in: header externalDocs: description: Find out more about CFX url: https://www.cfxlabs.com/