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 Specificationarrow-up-right and published using the OpenActive Paging Specificationarrow-up-right.

The Firehose has two "types" of data, each of which has 'parent' and 'child' feeds:

  • Events are split into SessionSeries and ScheduledSessions. These concepts are explained here.

  • Facilities are split into FacilityUses and Slots. These concepts are explained herearrow-up-right.

circle-exclamation

The Firehose @id will not resolve

The @ids found in Firehose (e.g. https://firehose.imin.co/firehose/facility-uses/pulsedursley-FacilityUse-PULSEGYMarrow-up-right) are merely an identifier that is guaranteed to be unique.

circle-exclamation

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.superEvent must match the SessionSeries' data["@id"].

  • Slot <-> FacilityUse

    • For FacilityUses with the individualFacilityUse property, then:

      • The Slot's data.facilityUse must match one of the FacilityUse's data.individualFacilityUse[]["@id"] IDs. This Slot will relate to a single court (e.g. Badminton Court 3).

    • For FacilityUses without the individualFacilityUse property, then:

      • The Slot's data.facilityUse must match the FacilityUse's data["@id"]. This Slot will represent an aggregation of courts (e.g. 6 badminton courts available)

Last updated