Portal Plans
List the full plan catalogue
Returns every ACTIVE plan with a PUBLISHED version in the API key's tenant, projected as its canonical native card and ordered by display order. This is the integrator's FULL catalogue — it does NOT run the per-buyer rule engine, does NOT filter by any plan-routing visibility rule, and mints NO token. Use it to read all your plans (e.g. to build pricing pages), as opposed to resolve, which returns only the subset a specific buyer matches.
Required Scope
portal-catalog-read
Required License
- Customer Portal — the tenant must also hold this module license, or the request returns
403 LICENSE.REQUIRED.
query Parameters
languageLanguage the resolved cards are localized to. Defaults to en.
List the full plan catalogue › Responses
Every ACTIVE plan with a PUBLISHED version in the API key's tenant, projected as its canonical native card and ordered by display order. This is the integrator's full catalogue — NOT filtered by any per-visitor visibility rule and NOT run through the plan-routing rule engine. Each entry carries the full card content the integrator renders.
Get a plan
Returns a single plan by its id, projected as its canonical native card — the integrator's by-id read. Does NOT run the rule engine and does NOT filter by visibility rules: every published plan of the tenant resolves here. Returns 404 PORTAL_PLAN_NOT_FOUND only when the plan id is unknown to the tenant or has no published version.
Required Scope
portal-catalog-read
Required License
- Customer Portal — the tenant must also hold this module license, or the request returns
403 LICENSE.REQUIRED.
path Parameters
planIdThe plan id (uuid).
query Parameters
languageLanguage the resolved cards are localized to. Defaults to en.
Get a plan › Responses
A single plan projected as its canonical native card. Returns 404 PORTAL_PLAN_NOT_FOUND only when the plan id is unknown to the API key's tenant or has no published version — never filtered by visibility rules or the rule engine.
Resolve the gated pricing catalogue for an identified buyer (partner display)
Runs the plan-routing rule engine for the buyer identified by customerId (or the no-customer-yet countryCode/customerType hints) within the API key's tenant, and returns the plans that buyer can SEE and CHECK OUT — including non-public (gated) plans the buyer matches — plus a reusable, read-only load-time catalog token. The partner returns the token to each embed iframe (via its fetchCatalogToken provider) to authorize the by-id pricing-card / checkout-document reads. Does NOT consult allowSelfSignup and never publishes to the CDN.
Required Scope
portal-catalog-read
Required License
- Customer Portal — the tenant must also hold this module license, or the request returns
403 LICENSE.REQUIRED.
Headers
x-api-idempotency-keyOptional idempotency key for safely retrying mutating requests.
Resolve the gated pricing catalogue for an identified buyer (partner display) › Request Body
customerIdThe buyer's LedgerBee customer id (an identity HANDLE — the server hydrates customer group / country / type from it; raw rule attributes are never accepted). The customer must exist in the API key's tenant (a 404 CUSTOMER_NOT_FOUND otherwise). When present, the server-resolved identity wins and the countryCode/customerType hints are ignored.
buyerEmailThe specific person (their email) the partner is acting on behalf of under customerId — e.g. the user currently signed in on the partner's site. Bound into the catalog token: when that token is later exchanged for a portal login handoff, THIS person is logged in (or bootstrapped credential-less under the customer's organization), instead of the customer's contact email / first member. Ignored without customerId; does not affect catalog visibility.
countryCodeISO 3166-1 alpha-2 country hint for the no-customer-yet preview (drives the country rule clause). Ignored when customerId is supplied.
customerTypeCustomer-type hint for the no-customer-yet preview (drives the customerType rule clause). Ignored when customerId is supplied.
planIdsResolve only these plan ids. Omit to resolve every ACTIVE plan of the tenant. Each must be a uuid.
languageLanguage the resolved cards are localized to. Defaults to en.
Resolve the gated pricing catalogue for an identified buyer (partner display) › Responses
The plans visible AND checkout-able to the resolved buyer, each carrying the full card content the partner renders. Non-public (gated) plans appear here when the buyer matches their rule.
catalogTokenOpaque, reusable, read-only load-time catalog token (43-char base64url). The partner returns it to each embed iframe via its fetchCatalogToken provider; the iframe presents it as a Bearer token to the by-id pricing-card / checkout-document reads. Scoped to the resolved buyer + the returned plans — replay yields only the same already-authorized cards. Treat it as a client secret (TLS-only, never log, never put on a URL).
expiresAtISO-8601 expiry of the catalog token.