Proposer
imin, MCRactive, GLL, OpenPlay (also ref Legend, Gladstone, Everyone Active and Westminster)
Use Case
There is an opportunity type that is often expressed within different systems in different ways:
- "Density party bookings"
- "Online ticketing"
- "Fast ticketing"
- "High frequency sessions"
It is characterised by very frequent slots, as would be expected for a FacilityUse, however it is a "Session".
As well as data model implications, there's also UX implications for this use case: as there are often a very high number of sessions on a particular day.
An example can be found here: https://bookings.better.org.uk/location/cambridge-ice-arena/public-skating/2021-12-14/by-time
Illustrative examples include:
- Golf Tee times
- Gym
- Casual swimming
- Ice skating
Comprehensive list of examples from GLL
- Air Venture
- Air-Max Inflatable
- Aqua Play
- Aqua Splash
- Aqua Splash Slide
- Casual Cycling Session
- Cave
- Climbing Wall
- Clip n Climb
- Coffee Skate
- Disability Jump Session
- Drop In Basketball
- Family Fun Swim
- Footgolf
- General Jump Session
- Golf - 18 holes
- Inclusive Bounce
- Inclusive Skate
- Inclusive Swim
- Junior Basketball
- Junior Turbo
- Laserquest
- Leap of Faith
- Multi Sports Drop In
- Netball Drop In
- Pay & Play Football
- Pitch and Putt
- Play Park
- Public Skating
- Rollerskating
- Sensory Swim
- Skate Park
- Skate Park 3 Hour
- Skate Park Beginners
- Skate Park Under 16s
- Soft Play
- Soft Play Under 3's
- Surf Belfast
- Swim For All
- Swim for All Outdoor
- Swim for Free
- Swim for Men & Boys
- Swim for Women & Child
- Swim for Women & Girls
- Table Tennis Drop In
- Toddler Bounce Session
- Toddler Splash
- Toddlers World
- Turkish Baths - Female Only
- Turkish Baths - Male Only
- Turkish Baths Mixed
- Ultimate Aqua Splash
- Waterslides
Why is this not covered the existing data model?
The current OpenActive data model has two close matches:
SessionSeries - These are thematic event series, allowing a participant to build an exercise habit. Low frequency - "Yoga every Wednesday at 7pm"
FacilityUse - These are Slots that are available to book a facility (e.g. a Squash Court). They are high frequency, but designed to book a facility - "Slots available hourly from 8am to 10pm".
The properties of these classes have some overlap. Properties that would be useful in this use case are highlighted in bold:
| SessionSeries |
FacilityUse |
| accessibilityInformation |
accessibilityInformation |
| accessibilitySupport |
accessibilitySupport |
| activity |
facilityType |
| additionalAdmissionRestriction |
additionalAdmissionRestriction |
| ageRange |
|
| ageRestriction |
|
| attendeeInstructions |
attendeeInstructions |
| category |
category |
| contributor |
|
| description |
description |
| duration |
|
| endDate |
|
| |
event |
| eventAttendanceMode |
|
| eventSchedule |
|
| eventStatus |
|
| genderRestriction |
|
| |
hoursAvailable |
| id |
id |
| identifier |
identifier |
| image |
image |
| |
individualFacilityUse |
| isAccessibleForFree |
|
| isCoached |
|
| leader |
|
| level |
|
| location |
location |
| maximumAttendeeCapacity |
|
| meetingPoint |
|
| name |
name |
| offers |
offers |
| organizer |
provider |
| programme |
|
| remainingAttendeeCapacity |
|
| schedulingNote |
|
| startDate |
|
| subEvent |
|
| superEvent |
|
| type |
type |
| url |
url |
Modelling options
Option 1: Use SessionSeries with some kind of highFrequencySession flag
- Advantages: Most of the useful properties are available on
SessionSeries, and this is the easiest for booking systems to implement. In some booking systems the only difference between a SessionSeries and a High Frequency Session is how frequently the Seller schedules the ScheduledSessions - hence making it easy to flag such a SessionSeries as high frequency will increase the uptake recognising such SessionSeries within open data. This also allows a Schedule to be used for high frequency sessions.
- Disadvantages: Overloads the semantics of the existing
SessionSeries.
Option 2: Use FacilityUse with some kind of highFrequencySession flag
- Advantages:
FacilityUse already follows a Slot model.
- Disadvantages: Overloads the semantics of the existing
FacilityUse - which is designed more for a facility ("hire the whole swimming pool") than a session ("one ticket to the swimming pool"). This is also reflected in the facility type list. Additional properties would need to be added to FacilityUse for this purpose only. Also makes processing of feeds more complex, as two different types of FacilityUse and Slot would exist. Additionally the structure of FacilityUse and IndividualFacilityUse are not suitable for this context, and having a Slot associated with an IndividualFacilityUse that has remainingUses greater than 1 would break the constraints in the existing version of the specification.
Option 3: Create a new subclass of Event
- Advantages: A specific class with its own clear semantics.
- Disadvantages: Requires new class to be defined, and additional feeds to be created. More implementation effort for all parties, and an additional overhead for those booking systems that support high frequency sessions for a very small percentage of their overall user base.
Proposal
To simplify the modelling and reasoning about high frequency sessions, as well as ease implementation, a simple flag could be defined (Option 1 above), either:
a) beta:isScheduledAsSlots could live alongside schedulingNote in the Event
b) beta:isHighFrequencySchedule could live within the Schedule or PartialSchedule
(a) is likely more robust, as eventSchedule is an array. Additionally for (a) eventSchedule could be optional when isScheduledAsSlots is set to true, which reduces the need to render a likely complex PartialSchedule of limited value.
For ease of implementation for booking systems that have relatively few high frequency schedules (i.e. so as not to create complexity by adding more feeds), it is important to still allow the use of Schedule / schedule expansion, even though it will likely not be presented to the user due to its complexity.
Additionally, hoursAvailable could be added to SessionSeries, only for use with isScheduledAsSlots.
Proposer
imin, MCRactive, GLL, OpenPlay (also ref Legend, Gladstone, Everyone Active and Westminster)
Use Case
There is an opportunity type that is often expressed within different systems in different ways:
It is characterised by very frequent slots, as would be expected for a
FacilityUse, however it is a "Session".As well as data model implications, there's also UX implications for this use case: as there are often a very high number of sessions on a particular day.
An example can be found here: https://bookings.better.org.uk/location/cambridge-ice-arena/public-skating/2021-12-14/by-time
Illustrative examples include:
Comprehensive list of examples from GLL
Why is this not covered the existing data model?
The current OpenActive data model has two close matches:
SessionSeries- These are thematic event series, allowing a participant to build an exercise habit. Low frequency - "Yoga every Wednesday at 7pm"FacilityUse- These areSlots that are available to book a facility (e.g. a Squash Court). They are high frequency, but designed to book a facility - "Slots available hourly from 8am to 10pm".The properties of these classes have some overlap. Properties that would be useful in this use case are highlighted in bold:
Modelling options
Option 1: Use
SessionSerieswith some kind ofhighFrequencySessionflagSessionSeries, and this is the easiest for booking systems to implement. In some booking systems the only difference between aSessionSeriesand aHigh Frequency Sessionis how frequently the Seller schedules theScheduledSessions - hence making it easy to flag such aSessionSeriesas high frequency will increase the uptake recognising suchSessionSerieswithin open data. This also allows aScheduleto be used for high frequency sessions.SessionSeries.Option 2: Use
FacilityUsewith some kind ofhighFrequencySessionflagFacilityUsealready follows aSlotmodel.FacilityUse- which is designed more for a facility ("hire the whole swimming pool") than a session ("one ticket to the swimming pool"). This is also reflected in the facility type list. Additional properties would need to be added toFacilityUsefor this purpose only. Also makes processing of feeds more complex, as two different types ofFacilityUseandSlotwould exist. Additionally the structure ofFacilityUseandIndividualFacilityUseare not suitable for this context, and having aSlotassociated with anIndividualFacilityUsethat hasremainingUsesgreater than1would break the constraints in the existing version of the specification.Option 3: Create a new subclass of
EventProposal
To simplify the modelling and reasoning about high frequency sessions, as well as ease implementation, a simple flag could be defined (Option 1 above), either:
a)
beta:isScheduledAsSlotscould live alongsideschedulingNotein theEventb)
beta:isHighFrequencySchedulecould live within theScheduleorPartialSchedule(a) is likely more robust, as
eventScheduleis an array. Additionally for (a)eventSchedulecould be optional whenisScheduledAsSlotsis set totrue, which reduces the need to render a likely complexPartialScheduleof limited value.For ease of implementation for booking systems that have relatively few high frequency schedules (i.e. so as not to create complexity by adding more feeds), it is important to still allow the use of
Schedule/ schedule expansion, even though it will likely not be presented to the user due to its complexity.Additionally,
hoursAvailablecould be added toSessionSeries, only for use withisScheduledAsSlots.