A valid request URL is required to generate request examples{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"key": "pro",
"name": "<string>",
"description": "<string>",
"display_order": 123,
"archived": true,
"seat_feature_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"prices": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"kind": "recurring",
"currency": "BRL",
"amount_minor": 123,
"currency_exponent": 123,
"interval_unit": "day",
"interval_count": 123,
"trial_days": 123,
"per_seat": true,
"tax_behavior": "inclusive",
"archived": true,
"providers": [
{
"provider": "stripe",
"provider_account_id": "<string>",
"provider_price_id": "<string>",
"provider_product_id": "<string>"
}
],
"created_at": "2023-11-07T05:31:56Z"
}
],
"features": [
{
"feature_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"feature_key": "<string>",
"kind": "boolean",
"limit": 123,
"unlimited": true,
"included_quantity": 123,
"rollover": "none",
"rollover_cap": 123,
"overdraft_limit": 123,
"overage_meter_ref": "<string>"
}
],
"created_at": "2023-11-07T05:31:56Z"
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}Create a plan
Requires billing:write. Adds a plan to one environment’s catalogue. Build it in test and the live catalogue is untouched.
key is yours and permanent: it is the handle your own code compares against and the value promoting a catalogue to live matches on, so it cannot be changed afterwards — renaming it would detach every gate from the plan it names without reporting anything. A plan under a new key is a new plan, and archiving the old one costs nothing.
A plan created here has no price and carries no features yet. Price it with POST /v1/organization/catalogue/plans/{id}/prices and fill the matrix with PUT /v1/organization/catalogue/plans/{planId}/features/{featureId}.
A valid request URL is required to generate request examples{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"key": "pro",
"name": "<string>",
"description": "<string>",
"display_order": 123,
"archived": true,
"seat_feature_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"prices": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"kind": "recurring",
"currency": "BRL",
"amount_minor": 123,
"currency_exponent": 123,
"interval_unit": "day",
"interval_count": 123,
"trial_days": 123,
"per_seat": true,
"tax_behavior": "inclusive",
"archived": true,
"providers": [
{
"provider": "stripe",
"provider_account_id": "<string>",
"provider_price_id": "<string>",
"provider_product_id": "<string>"
}
],
"created_at": "2023-11-07T05:31:56Z"
}
],
"features": [
{
"feature_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"feature_key": "<string>",
"kind": "boolean",
"limit": 123,
"unlimited": true,
"included_quantity": 123,
"rollover": "none",
"rollover_cap": 123,
"overdraft_limit": 123,
"overage_meter_ref": "<string>"
}
],
"created_at": "2023-11-07T05:31:56Z"
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}Autorizações
A staff session token, uk_st_…. Minted by sign-up, sign-in or the two-factor exchange. Only a 401 means it is spent; not_a_member (403) is about the organization named in X-Organization-Id and leaves the token good for the others.
Cabeçalhos
The organization the caller is acting on — the org_… code that appears in the panel URL. It identifies; the membership JOIN is what authorizes, so a forged code reads nothing: the answer is not_a_member (403), which does not mean the session is over. Absent, the session's default organization answers, or — if that membership was revoked while the session was open — any other one the caller still holds.
Parâmetros de consulta
Which environment to act in. A view parameter, valid only on the staff surface — a machine credential never chooses its environment, it is resolved from the key.
live, test Corpo
Lowercase letters, digits, _, - and .. Unique within the environment. Narrow on purpose: it ends up in your source, in a URL and in a payment provider's metadata, and a key that gets escaped differently in three places stops matching in one of them.
64"pro"
What the pricing table draws.
Where the plan sits on a pricing table. Yours to decide rather than inferred from the price.
Which of this environment's metered features counts this plan's seats. The seat limit then resolves like every other allowance — the plan's cell for that feature, then any per-customer override — and invitations onto teams subscribed to this plan are checked against it. Omit for no seat limit.
Resposta
The plan. prices and features are absent — it has none yet.
A plan you sell. Its prices and the features it carries come with it, because a pricing table needs all of them at once.
Your own stable handle for the plan — lowercase letters, digits, _, - and .. Unique within an environment, and what promoting a catalogue to live matches on.
"pro"
Where the plan sits on a pricing table.
No longer sold. Archived rather than deleted, because subscriptions point at it.
Which of this environment's metered features counts this plan's seats. The seat limit is that feature's allowance — the plan's cell, then any per-customer override — and invitations onto teams subscribed to this plan are checked against it. null is no seat limit.
Show child attributes
Show child attributes
Show child attributes
Show child attributes