Introduction to the Firehose
How does it work?
Unlike the imin Events API, the Firehose is not a search API. It is a “feed” that is compatible with the OpenActive Modelling Specification and published using the OpenActive Paging Specification.
The Firehose has two “types” of data, each of which has ‘parent’ and ‘child’ feeds:
- Events are split into
SessionSeriesandScheduledSessions. These concepts are explained here. - Facilities are split into
FacilityUses andSlots. These concepts are explained here.
The Firehose @id will not resolve
The @ids found in Firehose (e.g. https://firehose.imin.co/firehose/facility-uses/pulsedursley-FacilityUse-PULSEGYM) are merely an identifier that is guaranteed to be unique.
Cross-Referencing Endpoints
A SessionSeries will have one or more ScheduledSessions and a FacilityUse will have one or more Slots. Additionally some Slots relate to an IndividualFacilityUse within a FacilityUse. In order to link the data together:
- ScheduledSession <-> SessionSeries
- The ScheduledSession’s
data.superEventmust match the SessionSeries’data["@id"].
- The ScheduledSession’s
- Slot <-> FacilityUse
- For FacilityUses with the
individualFacilityUseproperty, then:- The Slot’s
data.facilityUsemust match one of the FacilityUse’sdata.individualFacilityUse[]["@id"]IDs. This Slot will relate to a single court (e.g. Badminton Court 3).
- The Slot’s
- For FacilityUses without the
individualFacilityUseproperty, then:- The Slot’s
data.facilityUsemust match the FacilityUse’sdata["@id"]. This Slot will represent an aggregation of courts (e.g. 6 badminton courts available)
- The Slot’s
- For FacilityUses with the