Event Sessions
The timed parts inside one Event, how Passes grant access to them, and what changes once the Event is published
An EventSession is one scheduled part of an Event: a talk, a workshop slot, a match, a screening. Sessions live inside exactly one Event and are never sold or discovered on their own.
Sessions are how a single-day ticket becomes "the Saturday programme". A buyer holds a Pass, and the Pass decides which Sessions that Pass opens.
What defines a session
| Field | Rule | Notes |
|---|---|---|
| Name | 1 to 160 characters | Shown in the programme |
| Description | Up to 2,000 characters | Markdown on public pages |
| Room | Up to 160 characters | Free text, not a venue reference |
| Capacity | A positive number, optional | Caps attendance for this Session |
| Position | Integer, default 0 | Organizer ordering |
| Start and end | End after start, both inside the Event | Enforced on every write |
Sessions are listed by position, then start time, then ID. Position is what makes a programme read in the order you meant, even when a late-night set sits after the closing talk on the page but before it in the day.
Two constraints are checked on create and on every update: the Session must start at or after the Event start and end at or before the Event end, and it must end after it starts.
A draft Event can still have Sessions. Moving the Event does not silently move them; a reschedule rewrites both in one plan.
Pass access: all, or a chosen few
Every Pass declares a Session scope.
- ALL is the default. It covers every Session, including ones you add next month. This is the right choice for a general admission pass.
- SELECTED names one or more Sessions. An empty selection is invalid: a Pass that opens nothing must never reach the catalogue.
Selected Sessions must belong to the same Event, and the publish gate checks again so a Pass cannot go live pointing at a deleted Session.
Deleting a Session is blocked while any Pass selects it. A cascade would silently narrow a sold Pass, changing what buyers already paid for.
Capacity
A Session capacity is a ceiling on attendance for that Session, enforced during registration and separate from the Event and Pass ceilings:
| Ceiling | Caps |
|---|---|
| Event capacity | Total admission across the whole Event |
| Pass capacity | Places sold on one Pass |
| Session capacity | Attendance in one Session |
Holding a Pass does not reserve a seat in every Session. If two Passes both grant access to a 40-seat workshop, the workshop still stops at 40.
Editing after publication
A published Event accepts Session edits, with one consequence worth knowing.
- Changing a Session's name, description, capacity, or position is a quiet edit: no revision, no notice.
- Changing a Session's dates or room writes a public revision: "Session "X" schedule changed."
That revision becomes a participant notice alongside postponements and cancellations. Moving a workshop to another hour, or to another room, is something attendees must know; renaming the Session is not.
Session edits never change the Event's own dates. If the whole Event moves, rescheduling rewrites every Session and rejects a plan that omits one.
Worked example
Vidyut runs Friday to Sunday. Priya creates six Sessions: a Friday opening talk, two Saturday workshops, a Saturday evening performance, and two Sunday screenings.
| Pass | Session scope | What it opens |
|---|---|---|
| Festival Pass | ALL | All six Sessions, including any added later |
| Saturday Workshop Pass | SELECTED | The two Saturday workshops only |
| Sunday Screening Pass | SELECTED | The two Sunday screenings only |
When she adds a seventh Session on Sunday morning, the Festival Pass opens it automatically. The selected Passes do not.
Deleting a Saturday workshop is then refused, because the Workshop Pass still selects it.
Edge cases
| Situation | Result |
|---|---|
| Session outside the Event window | Rejected on create and on update |
| Selected Pass with no Sessions | Rejected at Pass creation and at publish |
| Session deleted while selected by a Pass | Refused; remove it from the Pass first |
| Session dates or room changed after publish | Public revision and participant notice |
| Session added to a published Event | Opens automatically for ALL-scope Passes |
| Reschedule plan missing a Session | Whole reschedule rejected |
Related
- Publishing — where selected-Session Passes are validated
- Passes — the Pass side of Session access
- Event Lifecycle — rescheduling the whole Event
- Availability — how Pass, Event, and Session caps are enforced under load