OpenActive Developers
Data ValidatorDataset DashboardW3C Community Group
  • Welcome to our community
  • Publishing Data
    • Data Feeds
      • How an RPDE data feed works
      • Types of RDPE feed
      • Implementing RPDE
      • Testing RPDE feeds
      • Scaling RPDE feeds
    • Activity list references
    • Including geo coordinates
    • Schedules
    • Dataset Sites
    • Virtual Events
    • On-Demand Events
    • Opening Hours
    • Data Quality
  • Using data
    • Harvesting opportunity data
      • Large Integers in JavaScript
    • Tutorial: Consuming an RPDE feed
    • Attribution
  • Open Booking API
    • Key Decisions
    • Implementing booking
    • Testing booking
      • Configuring Test Suite
      • Implementing the Test Interface
        • Test Interface Actions
        • Create Opportunity Endpoint
      • Random Mode: Generating Test Opportunity Data
      • Running Test Suite
      • Generating the Conformance Certificate
  • Data Model
    • Data Model Overview
    • @context and JSON-LD
    • Types Reference
      • Action
      • AudioObject
      • BabyChanging
      • Barcode
      • BookingService
      • BooleanFormFieldSpecification
      • Brand
      • ChangingFacilities
      • ConceptScheme
      • Concept
      • CourseInstance
      • Course
      • Creche
      • CustomerAccount
      • DataCatalog
      • DataDownload
      • Dataset
      • DropdownFormFieldSpecification
      • DynamicPayment
      • Entitlement
      • EventSeries
      • Event
      • FacilityUse
      • FileUploadFormFieldSpecification
      • GeoCoordinates
      • HeadlineEvent
      • ImageObject
      • IndividualFacilityUse
      • InternalApplicationError
      • InternalLibraryConfigurationError
      • InternalLibraryError
      • Lease
      • LocationFeatureSpecification
      • Lockers
      • MediaObject
      • OfferOverride
      • Offer
      • OnDemandEvent
      • OpenBookingError
      • OpeningHoursSpecification
      • OrderItem
      • OrderProposal
      • OrderQuote
      • Order
      • Organization
      • ParagraphFormFieldSpecification
      • Parking
      • PartialSchedule
      • Payment
      • Person
      • Place
      • PostalAddress
      • PriceSpecification
      • PrivacyPolicy
      • PropertyValueSpecification
      • PropertyValue
      • QuantitativeValue
      • Schedule
      • ScheduledSession
      • SessionSeries
      • ShortAnswerFormFieldSpecification
      • Showers
      • Slot
      • SportsActivityLocation
      • TaxChargeSpecification
      • TermsOfUse
      • Terms
      • Toilets
      • Towels
      • VideoObject
      • VirtualLocation
      • WebAPI
  • Specifications
    • Specifications Overview
  • Useful links
    • Data Visualiser
    • Data Validator
    • Dataset Dashboard
    • Non-technical Guidance
  • OpenActive on GitHub
    • Overview
    • Activity List
    • Community
    • Controlled Vocabularies
    • Dataset Publication
    • Documentation
    • Implementation Support
    • Programmes
    • RPDE
    • SKOS
    • Specifications
    • Validators
Powered by GitBook
On this page
  • Implementation guidance
  • beta:participantSuppliedEquipment (#229)
  • level for "Beginner-friendly" (#82)
  • beta:donationPaymentUrl (#234)
  • workFeatured(#228)
  • Conformance criteria
  • Examples
  • Complete examples
  • Illustrative examples
Edit on GitHub
  1. Publishing Data

On-Demand Events

PreviousVirtual EventsNextOpening Hours

Last updated 5 years ago

On-Demand Events are recordings of events that do not occur at a specific time, and are available to watch at any time - similar to content on Netflix or iPlayer.

These might be pre-recorded fitness classes, workouts, sessions which are provided via an online product, such as Les Mills On Demand and Racefully. They include on-demand video content and sessions which can be participated in virtually using an app or run-tracker (e.g. live virtual 5k).

The type is used to represent such events, and they must be published using a separate RPDE feed, as per .

Online classes and events are part of an that has been in response to the COVID-19 pandemic, and any properties suggested in the associated proposals are subject to change after the pandemic has ended. We welcome your contribution to the with any thoughts and feedback from your implementation.

Implementation guidance

In order to upgrade your booking or listing system to support virtual events, consider implementing the following properties, in addition to the , within your new RPDE feed specific to . The , , and have been updated to support these properties.

Please see the "Updated Proposal" within each of the referenced GitHub issues in the headings below for further specific guidance on each property. Please comment on these GitHub issue if you require any specific clarifications.

beta:participantSuppliedEquipment ()

Definition

A property that indicates whether the participant must or may supply equipment for use in the Event.

Why implement this property?

This property allows applications to present a filter for "no equipment required", for those users who do not have equipment at home. This helps first-time virtual participants find classes they can easily participate in.

Values

beta:participantSuppliedEquipment must have one of the following values:

  • https://openactive.io/Required - Equipment is required

  • https://openactive.io/Optional - Equipment is optional, and the participant can improvise

  • https://openactive.io/Unavailable - No equipment required

The existing attendeeInstruction and description properties may be used for activity providers to provide further clarification about equipment requirements.

Example

{
 "@type": "OnDemandEvent",
 ...
 "beta:participantSuppliedEquipment": true,
 "description": "... This class is better with steps at home, but you can improvise if you don't have any. ...",
 "attendeeInstruction": "... If you don't have a step at home, find two reasonably thick books. ...",
 ...
}

Definition

To allow for "beginner-friendly" events to be easily discoverable.

Why implement this property?

This property can be implemented simply as a "beginner-friendly" tick box, if no notion of "level" currently exists within the booking or listing system. This allows applications to present a filter for "beginner friendly", for those users who are new to the activity.

Values

To specify "Beginner-friendly" the value of the level property must include the string Beginner in an array. Other values such as Intermediate and Advanced are also permissible, but are not standardised.

Example

{
 "@type": "OnDemandEvent",
 ...
  "level": [
    "Beginner"
  ]
 ...
}

Definition

The URL of the webpage where the activity provider accepts donations.

Why implement this property?

A number of activity providers are seeking donations for their free on-demand classes in the wake of the COVID-19 pandemic lockdowns. On-demand sessions that appear to be offered for "free" based on isAccessibleForFree and offers actually proactively ask for donations. This property allows applications to advertise donation requests prominently to participants.

Values

The property accepts a URL, the existence of which both indicates that an activity provider is requesting donations, and provides the URL that applications should use when displaying a "Donate" button.

Example

{
 "@type": "OnDemandEvent",
 ...
  "beta:donationPaymentUrl": "https://www.paypal.com/donate/acme_fit"
 ...
}

Definition

Why implement this property?

Values

Example

{
  "@type": "OnDemandEvent",
  ...
  "workFeatured": {
    "@type": "VideoObject",
    "url": "https://www.youtube.com/watch?v=3fbCs0GVjgQ",
    "embedUrl": "https://www.youtube.com/embed/3fbCs0GVjgQ",
    "thumbnail": [
      {
        "@type": "ImageObject",
        "url": "http://example.com/static/image/speedball_thumbnail.jpg"
      }
    ]
  },
  ...
}

Conformance criteria

Note that in order to make use of "beta" properties, "@context" must include the beta namespace, as follows:

"@context": [
  "https://openactive.io/",
  "https://openactive.io/ns-beta"
],
  • activity

  • name

  • offers (including a recommended url that links straight to the purchase page)

  • organizer (including a required @id, and a recommended sameAs property for social media handles)

    • The @id does not need to resolve to a functional endpoint, but must use a domain name owned by your booking or listing system. This allows applications with specific content approval requirements to register trusted organizers based on their @id.

    • An example of such an @id is https://id.bookingsystem.com/organizers/123.

  • url (to a page describing the session)

  • ageRange

  • description

  • duration

  • genderRestriction

  • image

Examples

Complete examples

The validator includes a complete example for:

Illustrative examples

The example below only include new properties specific to on-demand events, for those already familiar with the OpenActive specifications. Please see above for all properties that should be included.

{
  "@context": [
    "https://openactive.io/",
    "https://openactive.io/ns-beta"
  ],
  "@type": "OnDemandEvent",
  ...
  "workFeatured": {
    "@type": "VideoObject",
    "url": "https://www.youtube.com/watch?v=3fbCs0GVjgQ",
    "embedUrl": "https://www.youtube.com/embed/3fbCs0GVjgQ",
    "thumbnail": [
      {
        "@type": "ImageObject",
        "url": "http://example.com/static/image/speedball_thumbnail.jpg"
      }
    ]
  },
  "beta:participantSuppliedEquipment": "https://openactive.io/Required",
  "beta:donationPaymentUrl": "https://www.paypal.com/donate/acme_fit"
}

level for "Beginner-friendly" ()

beta:donationPaymentUrl ()

workFeatured()

A video, audio or other media that represents the actual recording of the .

This property allows applications to link directly to the media associated with the , and allows applications to embed this media within their user experience - where such media is available free of charge - to provide users with a more seamless user journey.

The property accepts a , , or a more general , which includes a url for the page where the media is available, an embedUrl that can be used to embed the media in an application, and a thumbnail that can be used to represent the media within an application.

For a full description of all properties available within , please see the . Please feedback on the below or request any clarifications by commenting on .

The following properties are REQUIRED for :

The @id is required to give each organizer a .

The following properties are RECOMMENDED for :

level () - using the string "Beginner" for beginner friendly classes

workFeatured() - which could could be a , , or a more general .

beta:donationPaymentUrl ()

beta:isFirstSessionAccessibleForFree ()

beta:participantSuppliedEquipment ()

#82
#234
#228
OnDemandEvent
OnDemandEvent
VideoObject
AudioObject
MediaObject
OnDemandEvent
reference documentation
this GitHub issue
OnDemandEvent
globally unique identifier in the form of a URL
OnDemandEvent
#82
#228
VideoObject
AudioObject
MediaObject
#234
#232
#229
OnDemandEvent
OnDemandEvent
this example
ongoing discussion
accelerated
discussion and various proposals
standard required and recommended properties
OnDemandEvent
validator
#229
types reference documentation
OpenActive libraries