GET /organization/seat-summary — the server-computed seat + MRR rollup (ADR 0045 / F2). Included vs extra (overage) member seats, role add-on lines, and the total MRR — all derived server-side so the seat-billing FE renders the numbers without any client MRR math.
const url = 'https://example.com/api/organization/seat-summary';const options = {method: 'GET'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://example.com/api/organization/seat-summaryResponses
Section titled “Responses”The org’s seat + billing rollup, computed entirely server-side. Wraps the MRR breakdown (the FE renders its numbers verbatim) plus the headcount fields the member table needs to assert “every active member has a seat”.
object
ALL active members — the authoritative headcount that pools against the plan’s included seats (every active member occupies one seat, regardless of seat type; an operator-seated member still counts here AND in the add-ons).
Whether per-org seat billing applies on this deployment (#519 #10 / H). A
self-hosted ENTERPRISE-edition instance is edition-licensed, not
recurring-billed per org (#305), so it bills no seats — the FE then hides
the MRR KPI + the seat-billing panel. true on Community/SaaS, where the
MRR breakdown below is the real charge.
The server-computed MRR breakdown (plan base, included pool, overage, add-ons).
object
Active headcount (every active member occupies one seat).
The plan’s included headcount pool (None = unlimited / no overage).
overage_seats * overage_unit_cents.
Headcount seats BEYOND the included pool (max(0, active - included)).
Per-extra-seat price applied to each overage seat.
The plan’s flat monthly base price (plans.amount_cents).
Orthogonal role add-ons (operator, …) priced per seat, not pooled.
One non-headcount ROLE add-on line (e.g. the operator seat at 29 EUR). It is ORTHOGONAL to the included-seat pool: each such seat bills its unit price, so a member who also holds the operator role counts once for headcount AND once here.
object
plan_base + overage + sum(role_addons.line) — the total MRR.
Active members holding the default member seat (subset of the headcount,
surfaced for the member table).
Total active members holding ANY non-NULL seat (member + role add-on holders).
Examplegenerated
{ "active_member_count": 1, "billing_enabled": true, "mrr": { "active_seats": 1, "included_seats": 1, "overage_cents": 1, "overage_seats": 1, "overage_unit_cents": 1, "plan_base_cents": 1, "role_addons": [ { "display_name": "example", "key": "example", "line_cents": 1, "quantity": 1, "unit_cents": 1 } ], "total_cents": 1 }, "seated_member_count": 1, "total_seated_count": 1}