Ulsav Docs
Events

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

FieldRuleNotes
Name1 to 160 charactersShown in the programme
DescriptionUp to 2,000 charactersMarkdown on public pages
RoomUp to 160 charactersFree text, not a venue reference
CapacityA positive number, optionalCaps attendance for this Session
PositionInteger, default 0Organizer ordering
Start and endEnd after start, both inside the EventEnforced 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:

CeilingCaps
Event capacityTotal admission across the whole Event
Pass capacityPlaces sold on one Pass
Session capacityAttendance 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.

PassSession scopeWhat it opens
Festival PassALLAll six Sessions, including any added later
Saturday Workshop PassSELECTEDThe two Saturday workshops only
Sunday Screening PassSELECTEDThe 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

SituationResult
Session outside the Event windowRejected on create and on update
Selected Pass with no SessionsRejected at Pass creation and at publish
Session deleted while selected by a PassRefused; remove it from the Pass first
Session dates or room changed after publishPublic revision and participant notice
Session added to a published EventOpens automatically for ALL-scope Passes
Reschedule plan missing a SessionWhole reschedule rejected
  • 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

On this page