List available products for a customer
Returns products available to a customer from active matrix rules. Requires JWT and **RBAC read** on `customer_id`.
/v1/products/listAuthorization
BearerAuth HTTP bearer JWT from the Corebanq auth service.
Authorization is enforced with RBAC (record-level permissions), not ad-hoc OAuth-style scopes in this spec. See each tag description and operation summaries for which record grants apply.
In: header
Header Parameters
BCP 47 language tag. Selects locale for product name/description. Falls back to the tenant's default locale when absent or unsupported.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/v1/products/list" \ -H "Content-Type: application/json" \ -d '{ "customer_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7" }'{
"customer_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"customer_type": "SMALL_BUSINESS",
"products": [
{
"id": "a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11",
"code": "OWT",
"name": "Transfer",
"description": "Send funds to external bank accounts via wire transfer.",
"type": "transfers",
"route": "payment"
},
{
"id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"code": "OFR",
"name": "Convert (Off-Ramp)",
"description": "Convert crypto assets to fiat currency.",
"type": "transfers",
"route": "convert"
},
{
"id": "c9e66790-7425-40de-944b-e07fc1f90000",
"code": "CRD",
"name": "Crypto Receive (Deposit)",
"description": "Deposit cryptocurrency to your account on the platform.",
"type": "transfers",
"route": "deposit"
}
]
}{
"code": "validation_error",
"message": "At least one of product_ids, source_account_id, destination_account_id, or destination_counterparty_id is required.",
"details": {}
}{
"code": "validation_error",
"message": "At least one of product_ids, source_account_id, destination_account_id, or destination_counterparty_id is required.",
"details": {}
}{
"code": "validation_error",
"message": "At least one of product_ids, source_account_id, destination_account_id, or destination_counterparty_id is required.",
"details": {}
}{
"code": "validation_error",
"message": "At least one of product_ids, source_account_id, destination_account_id, or destination_counterparty_id is required.",
"details": {}
}Get persona associated with a user including linked records metadata
Given a partial transfer context for a **target customer** (`customer_id`), returns eligible products, counterparty-shaped source rows, counterparty-shaped destination rows, viable routes, and optional limits/fees/FX. The target customer itself is represented as a counterparty row, matching the counterparties domain model. Selectable nested payment-source rows expose `cp_account_type` (`account`, `bank_account`, `crypto_wallet`), `cp_account_id` for exact pre-flight destination matching, `products_allowed`, and a `finalize_recipient` hint matching `CreatePaymentRequest.recipient`. When a product is pinned via a single effective `product_ids[]` selection and enough route context is provided, `transfer_params` includes the allow/deny verdict, normalized amount, calculated fees, advisory FX, velocity hints, and optional quote state. Requires JWT and **RBAC read** on that customer.