On-Demand Events
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
OnDemandEvent
type is used to represent such events, and they must be published using a separate RPDE feed, as per this example.Online classes and events are part of an ongoing discussion that has been accelerated 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 discussion and various proposals with any thoughts and feedback from your implementation.
In order to upgrade your booking or listing system to support virtual events, consider implementing the following properties, in addition to the standard required and recommended properties, within your new RPDE feed specific to
OnDemandEvent
. The OpenActive libraries, types reference documentation, and validator 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.
Definition
A property that indicates whether the participant must or may supply equipment for use in the Event.
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.
beta:participantSuppliedEquipment
must have one of the following values:https://openactive.io/Required
- Equipment is requiredhttps://openactive.io/Optional
- Equipment is optional, and the participant can improvisehttps://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.{
"@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.
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.
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.{
"@type": "OnDemandEvent",
...
"level": [
"Beginner"
]
...
}
Definition
The URL of the webpage where the activity provider accepts donations.
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.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.
{
"@type": "OnDemandEvent",
...
"beta:donationPaymentUrl": "https://www.paypal.com/donate/acme_fit"
...
}
Definition
This property allows applications to link directly to the media associated with the
OnDemandEvent
, 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
VideoObject
, AudioObject
, or a more general MediaObject
, 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.{
"@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"
}
]
},
...
}
For a full description of all properties available within
OnDemandEvent
, please see the reference documentation. Please feedback on the below or request any clarifications by commenting on this GitHub issue.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 recommendedurl
that links straight to the purchase page)organizer
(including a required@id
, and a recommendedsameAs
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
ishttps://id.bookingsystem.com/organizers/123
.
url
(to a page describing the session)
ageRange
description
duration
genderRestriction
image
workFeatured
(#228) - which could could be aVideoObject
,AudioObject
, or a more generalMediaObject
.
The validator includes a complete example for:
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"
}
Last modified 3yr ago