Parliament Terms, Sessions and Memberships
This document covers how the system models the hierarchy of Parliament Terms, Sessions, and Sittings as defined in the National Assembly Standing Orders (7th Edition), and how Members are associated to each term.
1. Definitions (S.O. 2)
| Concept | Standing Order definition | System model |
|---|---|---|
| Parliament Term | The period from the first sitting after a General Election to dissolution | ParliamentTerm record |
| Session | Sittings from first meeting after General Election (or first meeting of regular session) to adjournment at end of calendar year or end of term | ParliamentSession record |
| Sitting | A continuous period in which the House sits without adjournment | Sitting record |
| Recess | Period during which the House stands adjourned to a day other than the next normal sitting day | ParliamentSession.status = RECESS |
2. Data Hierarchy
ParliamentTerm
└── ParliamentSession (one or more per term)
└── Sitting (one or more per session)
└── AgendaItem
A Sitting is automatically linked to the active ParliamentSession covering its scheduledStart date. If no sessionId is passed to POST /api/v1/sittings, the service resolves it automatically by finding the active session whose date range covers the sitting:
sessionId resolved = ParliamentSession WHERE status = ACTIVE
AND startDate ≤ scheduledStart
AND (endDate IS NULL OR endDate ≥ scheduledStart)
3. Regular Sessions (S.O. 27)
S.O. 27 — Except for the Session commencing immediately after a General Election, the National Assembly shall meet in regular sessions commencing on such dates as the House Business Committee shall determine.
The system does not auto-create sessions. The Clerk creates each ParliamentSession with:
termId— links to the parentParliamentTermstartDate/endDatestatus— one ofACTIVE,RECESS,ADJOURNED,CLOSED,UPCOMING
4. Session Statuses
| Status | Meaning |
|---|---|
UPCOMING | Session scheduled but not yet started |
ACTIVE | House is sitting in this session |
RECESS | House adjourned to a future date (recess period) |
ADJOURNED | House adjourned, may resume |
CLOSED | Session permanently ended |
5. Parliament Term Statuses
| Status | Meaning |
|---|---|
UPCOMING | Future term not yet commenced |
ACTIVE | Current Parliament term |
ENDED | Parliament dissolved |
6. Term Memberships
Standing Orders assume Members are associated with a particular Parliament term. A Member's rights, speaking time, and floor permissions are derived from their role in the current term.
For each Member, a TermMembership record ties the user account to a specific term, along with their elected constituency or special interest seat. This correctly handles:
- Re-elections — a new
TermMembershipis created for each term; the user account remains unchanged - By-elections — a mid-term membership is added for the new term
- Roles — a Member may hold different roles across terms (e.g., backbencher in one term, Whip in another)
7. API Reference — Terms, Sessions and Memberships
Parliament Terms
| Method | Endpoint | Permission | Description |
|---|---|---|---|
| POST | /api/v1/parliament/terms | parliament:term:create | Create a Parliament term |
| GET | /api/v1/parliament/terms | parliament:term:read | List all terms |
| GET | /api/v1/parliament/terms/active | parliament:term:read | Get the active term |
| PATCH | /api/v1/parliament/terms/:id | parliament:term:update | Update term |
| DELETE | /api/v1/parliament/terms/:id | parliament:term:delete | Delete term |
Parliament Sessions
| Method | Endpoint | Permission | Description |
|---|---|---|---|
| POST | /api/v1/parliament/sessions | parliament:session:create | Create a session within a term |
| GET | /api/v1/parliament/sessions | parliament:session:read | List all sessions |
| GET | /api/v1/parliament/sessions/active | parliament:session:read | Get the currently active session |
| PATCH | /api/v1/parliament/sessions/:id | parliament:session:update | Update session (including status transitions) |
| DELETE | /api/v1/parliament/sessions/:id | parliament:session:delete | Delete session |
Calendar Blocks
| Method | Endpoint | Permission | Description |
|---|---|---|---|
| POST | /api/v1/parliament/calendar | parliament:calendar:create | Create a calendar block (recess, sitting week, etc.) |
| GET | /api/v1/parliament/calendar | parliament:calendar:read | List calendar blocks |
| PATCH | /api/v1/parliament/calendar/:id | parliament:calendar:update | Update calendar block |
| DELETE | /api/v1/parliament/calendar/:id | parliament:calendar:delete | Remove calendar block |
Term Memberships
| Method | Endpoint | Permission | Description |
|---|---|---|---|
| POST | /api/v1/parliament/memberships | parliament:membership:create | Create term membership for a Member |
| GET | /api/v1/parliament/memberships | parliament:membership:read | List memberships |
| PATCH | /api/v1/parliament/memberships/:id | parliament:membership:update | Update membership |
| DELETE | /api/v1/parliament/memberships/:id | parliament:membership:delete | Remove membership |
8. Typical Setup Sequence
When a new Parliament term begins:
- Create a
ParliamentTerm— setstatus = ACTIVE, recordstartDate - Create
TermMembershiprecords for all elected Members - Create the first
ParliamentSession— linktermId, setstatus = ACTIVE - Create
WeeklyProgrammefor the first sitting week (S.O. 39) - Create
Sittings— they auto-resolve theirsessionIdfrom the active session - Create and publish an
OrderPaper≥ 12 hours before each sitting (S.O. 38)