Skip to content
Select themeSelect language

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.

GET
/api/organization/seat-summary
curl --request GET \
--url https://example.com/api/organization/seat-summary
Media typeapplication/json

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
active_member_count
required

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).

integer format: int64
billing_enabled
required

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.

boolean
mrr
required

The server-computed MRR breakdown (plan base, included pool, overage, add-ons).

object
active_seats
required

Active headcount (every active member occupies one seat).

integer format: int64
included_seats

The plan’s included headcount pool (None = unlimited / no overage).

integer | null format: int64
overage_cents
required

overage_seats * overage_unit_cents.

integer format: int64
overage_seats
required

Headcount seats BEYOND the included pool (max(0, active - included)).

integer format: int64
overage_unit_cents
required

Per-extra-seat price applied to each overage seat.

integer format: int64
plan_base_cents
required

The plan’s flat monthly base price (plans.amount_cents).

integer format: int64
role_addons
required

Orthogonal role add-ons (operator, …) priced per seat, not pooled.

Array<object>

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
display_name
required
string
key
required
string
line_cents
required
integer format: int64
quantity
required
integer format: int64
unit_cents
required
integer format: int64
total_cents
required

plan_base + overage + sum(role_addons.line) — the total MRR.

integer format: int64
seated_member_count
required

Active members holding the default member seat (subset of the headcount, surfaced for the member table).

integer format: int64
total_seated_count
required

Total active members holding ANY non-NULL seat (member + role add-on holders).

integer format: int64
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
}