Get rule
Authorization
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
Path Parameters
Response Body
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/v1/products/rules/8f2a1c3d-4e5b-6f7a-8b9c-0d1e2f3a4b5c"{
"product_code": "OFR",
"customer_type": "SMALL_BUSINESS",
"source_account_type": "crypto",
"source_currency": "USDT",
"source_channel": "SEPA",
"dest_account_type": "fiat",
"dest_currency": null,
"dest_channel": "SEPA",
"dest_ownership": "own",
"source_account_scope": null,
"dest_account_scope": null,
"amount_range_start": null,
"amount_range_end": null,
"amount_range_currency": "EUR",
"allowed": true,
"min_amount": null,
"max_amount": null,
"limit_currency": null,
"priority": 170,
"valid_from": null,
"valid_to": null,
"active": true,
"comment": "OFR – Off-Ramp: crypto→fiat between own accounts (SMALL_BUSINESS)",
"metadata": {},
"id": "8f2a1c3d-4e5b-6f7a-8b9c-0d1e2f3a4b5c",
"tenant_id": "8f2a1c3d-4e5b-6f7a-8b9c-0d1e2f3a4b5c",
"created_at": "2019-08-24T14:15:22Z",
"created_by": "8f2a1c3d-4e5b-6f7a-8b9c-0d1e2f3a4b5c",
"modified_at": "2019-08-24T14:15:22Z",
"modified_by": "8f2a1c3d-4e5b-6f7a-8b9c-0d1e2f3a4b5c"
}{
"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": {}
}Given a partial transfer context for a **target customer** (`customer_id`), returns eligible active products, active counterparty-shaped source rows, active counterparty-shaped destination rows, viable active 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`, and `products_allowed`. Inactive catalogue products, inactive matrix rules, inactive transaction channels, inactive source accounts, inactive destination counterparties, inactive bank accounts, and inactive crypto wallets are not returned. Modern finalize clients build selectors from the parent counterparty row `id` plus the chosen nested `cp_account_id`, then send them as `source.counterparty_id` / `source.cp_account_id` and `destination.counterparty_id` / `destination.cp_account_id`. The optional `finalize_recipient` hint is legacy convenience data for older recipient-shaped finalize clients. 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.
Updates only the provided fields. Typical use cases: toggle `active`, adjust `priority`, extend `valid_to`, update `min_amount`/`max_amount`.