Skip to main content

Sittings, Calendar and Order Paper

This document covers how the system implements Part VI (S.O. 26–40) of the National Assembly Standing Orders (7th Edition) — the calendar, sitting lifecycle, quorum, and the Order Paper.


1. Key Definitions (S.O. 2)

TermStanding Order definitionSystem model
SessionSittings from first meeting after General Election to adjournment at end of calendar year or end of Parliament termParliamentSession record
SittingA continuous period in which the House sits without adjournment, including time in CommitteeSitting record
Sitting DayAny day on which the Assembly sitsSitting.scheduledStart date
RecessPeriod during which the House stands adjourned to a day other than the next normal sitting dayParliamentSession.status = RECESS
Order PaperPaper showing business for the day, published and circulated by the ClerkOrderPaper record linked to a Sitting

2. Sitting Types (S.O. 27, 29)

The system supports three sitting types set via type on POST /api/v1/sittings:

Type constantStanding OrderWhen used
REGULARS.O. 27 — regular sessions per the calendarStandard House sittings per the weekly programme
SPECIALS.O. 29 — during recess or when the House stands adjournedCalled by the Speaker; requires gazetteNoticeRef
EMERGENCYS.O. 29 (by extension)Urgent extraordinary sittings

S.O. 29 — Gazette Notice Enforcement

The service enforces this at creation time:

SO 29 – SPECIAL sittings must have a gazetteNoticeRef
BadRequestException thrown if type = SPECIAL and gazetteNoticeRef is missing

3. Sitting Lifecycle

A sitting moves through the following states:

SCHEDULED ──► IN_PROGRESS ──► ADJOURNED ──► IN_PROGRESS (resumed)
│ │
▼ ▼
CANCELLED COMPLETED
StatusMeaningWho triggers
SCHEDULEDSitting created, not yet startedClerk (sitting:create)
IN_PROGRESSHouse called to orderSpeaker / Deputy Speaker (sitting:start)
ADJOURNEDHouse adjourned, can be resumedSpeaker / Deputy Speaker (sitting:adjourn)
COMPLETEDSpeaker rose the House — session permanently endedSpeaker / Deputy Speaker (sitting:complete)
CANCELLEDSitting cancelled before it startedClerk or Admin (sitting:cancel) — only valid from SCHEDULED

S.O. 31 — Adjournment is the Speaker's prerogative. Only the Speaker (or Deputy Speaker presiding) may adjourn or call the House to order. The system enforces this via sitting:start and sitting:adjourn permissions restricted to speaker and deputy_speaker.

Resuming an Adjourned Sitting

POST /api/v1/sittings/:id/start also accepts ADJOURNED status, enabling the House to resume after a short recess within the same sitting day.


4. Pre-Sitting Readiness Checklist (S.O. 22, 29, 34, 38, 39)

Before the Speaker calls the House to order, GET /api/v1/sittings/:id/readiness returns a checklist of Standing Order requirements. The response shape:

{
"ready": true,
"checks": [
{ "rule": "SO 22 – Notice to Members", "passed": true, "detail": "..." },
{ "rule": "SO 29 – Gazette Notice (SPECIAL sittings)", "passed": true, "detail": "..." },
{ "rule": "SO 38 – Order Paper ≥ 12h before sitting", "passed": true, "detail": "..." },
{ "rule": "SO 38 – Supplementary Order Paper ≥ 1h before sitting", "passed": true, "detail": "..." },
{ "rule": "SO 39 – Weekly Programme", "passed": true, "detail": "..." },
{ "rule": "SO 34 – Quorum configured", "passed": true, "detail": "..." }
]
}
CheckStanding OrderWhat is verified
Notice to MembersS.O. 22sitting.noticePublishedAt is set
Gazette NoticeS.O. 29gazetteNoticeRef present (SPECIAL sittings only)
Primary Order Paper ≥ 12 hS.O. 38OrderPaper.publicationDate is at least 12 hours before scheduledStart
Supplementary Order Paper ≥ 1 hS.O. 38Supplementary paper published ≥ 1 hour before sitting (if present)
Weekly Programme linkedS.O. 39weeklyProgramme linked and status = PUBLISHED
Quorum configuredS.O. 34sitting.quorumRequired is set

ready: true only when all checks pass.


5. Attendance and Quorum (S.O. 34–37)

Check-In / Check-Out

Members self-register via:

  • POST /api/v1/sittings/:id/attendance/check-in — records checkedInAt
  • POST /api/v1/sittings/:id/attendance/check-out — records checkedOutAt
  • GET /api/v1/sittings/:id/attendance — full attendance list

Quorum Check (S.O. 34)

GET /api/v1/sittings/:id/quorum returns:

{ "met": true, "count": 58, "required": 50 }

Quorum is calculated as the number of Members currently checked in (no checkedOutAt). The quorumRequired threshold is stored on the Sitting record.

S.O. 34 — A quorum of the House is fifty Members. S.O. 35 — If a quorum is not present after 30 minutes, the Speaker adjourns the House.


6. Order Paper (S.O. 38)

Creation and Publishing

ActionEndpointWho
Create Order PaperPOST /api/v1/order-papersClerk
Publish Order PaperPOST /api/v1/order-papers/:id/publishClerk / Speaker

When published, the service checks the lead-time and returns a timingWarning if the 12-hour rule is at risk:

{
"timingWarning": "Order Paper published only 10h before sitting — SO 38 requires ≥ 12h"
}

Supplementary Order Paper (S.O. 38)

A supplementary Order Paper (isSupplementary: true) must be published at least 1 hour before the sitting. The same endpoint handles both types; the isSupplementary flag controls which timing check applies.

Sequence of Business (S.O. 40)

The Order Paper follows the prescribed sequence. Each Agenda Item has a type aligned to S.O. 40:

OrderAgendaItem.typeS.O. 40
1OATHAdministration of Oath (S.O. 40(a))
2COMMUNICATIONCommunication from the Chair (S.O. 40(b))
3MESSAGEMessages from Senate or President (S.O. 40(c))
4PETITIONPetitions (S.O. 40(d))
5PAPERPapers laid on the Table (S.O. 40(e))
6NOTICE_OF_MOTIONNotices of Motion (S.O. 40(f))
7QUESTIONQuestions (S.O. 40(g))
8STATEMENTStatements (S.O. 40(g))
9MOTIONMotions (S.O. 40(h))
10BILLBills (S.O. 40(h))
11REPORTCommittee Reports
12OTHEROther business

7. Weekly Programme (S.O. 39)

GET /api/v1/weekly-programmes and POST /api/v1/weekly-programmes manage the weekly programme published by the Clerk. A sitting can reference its weeklyProgrammeId. The readiness check confirms the programme is PUBLISHED before the sitting commences.


8. API Reference — Sittings

MethodEndpointPermissionDescription
POST/api/v1/sittingssitting:createSchedule a sitting (Clerk)
GET/api/v1/sittingssitting:readList sittings (paginated, filterable by status, type, sessionId, termId)
GET/api/v1/sittings/:idsitting:readGet sitting details including agenda items
PATCH/api/v1/sittings/:idsitting:updateUpdate sitting details
POST/api/v1/sittings/:id/startsitting:startCall House to order (Speaker)
POST/api/v1/sittings/:id/adjournsitting:adjournAdjourn the House (Speaker)
POST/api/v1/sittings/:id/completesitting:completeRise the House permanently (Speaker)
POST/api/v1/sittings/:id/cancelsitting:cancelCancel a SCHEDULED sitting (Clerk)
GET/api/v1/sittings/:id/readinesssitting:readPre-sitting SO compliance checklist
POST/api/v1/sittings/:id/attendance/check-infloor:request_speakMember checks in
POST/api/v1/sittings/:id/attendance/check-outfloor:request_speakMember checks out
GET/api/v1/sittings/:id/attendancesitting:readFull attendance list
GET/api/v1/sittings/:id/quorumsitting:readLive quorum count
POST/api/v1/order-papersorder_paper:createCreate Order Paper
POST/api/v1/order-papers/:id/publishorder_paper:publishPublish Order Paper

9. Agenda Item Management

MethodEndpointPermissionDescription
GET/api/v1/sittings/:id/agendasitting:readList agenda items in order
POST/api/v1/sittings/:id/agendasitting:updateAdd agenda item
PATCH/api/v1/sittings/agenda/:itemIdsitting:updateUpdate agenda item
DELETE/api/v1/sittings/agenda/:itemIdsitting:updateRemove agenda item
POST/api/v1/sittings/agenda/:itemId/startsitting:updateMark agenda item as IN_PROGRESS
POST/api/v1/sittings/agenda/:itemId/completesitting:updateMark agenda item as COMPLETED
POST/api/v1/sittings/:id/agenda/reordersitting:updateReorder agenda items

10. Real-Time Events

The DashboardGateway broadcasts sitting lifecycle changes to all connected clients:

Event typeTrigger
SITTING_CREATEDNew sitting scheduled
SITTING_STARTEDSpeaker calls House to order
SITTING_ADJOURNEDHouse adjourned
SITTING_COMPLETEDHouse rose
SITTING_CANCELLEDSitting cancelled
ATTENDANCE_CHECKINMember checked in
ATTENDANCE_CHECKOUTMember checked out

See Floor and Floor Handling for real-time floor events (floorUpdate, micOn, micOff).