# Welcome to our community

## Help - I'm not a developer!

Here's a quick [escape hatch](https://www.openactive.io/getting-started/) - quick, run! But before you do, e-mail this page to your development team.

## What is OpenActive?

If you've just been sent this link without any context, check out this video before you go any further:

{% embed url="<https://www.youtube.com/watch?v=a2FdmspmCNk>" %}
You can find out more at OpenActive.io
{% endembed %}

## Are you on Slack yet?

The OpenActive community are all available on Slack, [click here](https://openactive.io/public-chat/) to find out more. We'll be happy to help with any issues you have during your implementation, or hear any feedback.


# Data Feeds

## Overview

OpenActive is an initiative that promotes the use of open data to help people become more active. It aims to make opportunities to be active as discoverable as possible, similar to how one might find a hotel room or flight online.

OpenActive is primarily concerned with feeds of "opportunity data" – that is, information about what, where and when activities are taking place. To take advantage of the OpenActive ecosystem of data users, data must be published via open data feeds.

OpenActive specifications can be used to publish three types of physical activity opportunity:

* Sessions and facility listings, which may also be bookable
* Organiser listings or directories
* Route guides

## Listing-only vs Bookable Opportunity Data Feeds

For opportunities with scheduled dates and times, OpenActive supports two levels of user interaction, and a data publisher must choose which level they wish to implement:

1. **Listing-only Opportunity Data**:
   * Data that includes near-real-time up-to-date details about a physical activity opportunity that can be discovered by potential participants. Listing data typically includes information like the type of activity, time, location, price, provider and availability.
   * The main goal of this data is to allow potential participants to find opportunities that match their interests and availability, and are actually happening.
   * However, the listing data itself doesn't enable users to reserve or book a place in the activity directly. It's more of an informative listing that helps people discover available opportunities.
   * **Implementation requirements:** opportunity data RPDE feeds that include deep-link URLs to the opportunity within the listing or booking system.
2. **Bookable Opportunity Data**:
   * This refers to data and functionality that allows potential participants to not only discover an activity but also to reserve or book a place directly through a platform or application.
   * It enables integration with booking systems to allow real-time availability checking and booking.
   * Offering bookable data can lead to an increase in participation since it makes the process more streamlined for users — they can find and book an activity all in one place.
   * **Implementation requirements:** opportunity data RPDE feeds and the Open Booking API.

In summary, while "listing-only" data offers up-to-date information about physical activity opportunities, "bookable" data takes it a step further by allowing direct reservations or bookings. The implementation of both provides a seamless experience from discovery to participation.

These feeds must be published using the [OpenActive Real-time Paged Data Exchange (RPDE) specification](https://openactive.io/realtime-paged-data-exchange/), which provides a mechanism to allow systems to synchronise database state in near-realtime.

## Organiser Data Feeds

Activity organisers (e.g. local sports clubs) are crucial entry points for participation. Many do not yet  manage their sessions or facility slots online, or are not in a position to publish individual scheduled opportunities. We are piloting new data feeds to boost their discoverability and attract new participants. National Governing Bodies, maintaining lists of accredited clubs, are a potential source of quality open data feeds.&#x20;

This data typically includes information about the organisation itself, primary activities, location, contact details, operating hours, membership, and facilities.

## Route Guide Data Feeds

We are piloting new data feeds to support activities such as walking, running, cycling, or paddling. Such data can be consumed by platforms that support navigation, social sharing, and peer-to-peer route discovery.

Route guide data can include geographical information, difficulty, duration estimates, accessibility details, points of interest, and user-generated feedback/reviews.

## Primary sources

Opportunity data must always be published from **primary sources** (e.g. the booking system that an organiser uses to manage their own activities) rather than **secondary sources** (e.g. a third-party survey of organisers or web form which captures the sessions they are currently running)

Publishing data from primary sources rather than secondary sources is essential for several reasons:

1. **Accuracy**: Primary sources provide data directly from the organiser or provider of opportunity, which means it's more likely to be accurate and up-to-date. Secondary sources such as surveys and forms are usually not thoroughly reviewed by providers. Much less care and attention is taken when filling in these forms than on the activity provider's own website and booking system.
2. **Timeliness**: Activities, classes, and schedules often change. Primary sources like booking systems are updated in real-time, so the information is always current. Relying on secondary sources would mean periodic data collection, which can become quickly outdated.
3. **Scalability**: As the number of activity providers grows, it becomes increasingly expensive for secondary sources to maintain a large set of data. Primary sources do not require any such central maintenance overhead.
4. **Data richness**: Primary sources can often provide a richer dataset, including details about availability, pricing, venue facilities, instructor qualifications, and more. This can offer a more complete picture for end-users, helping them make informed decisions.
5. **Reduced burden**: For activity providers, integrating their primary booking or management systems once with OpenActive can reduce the burden of repeatedly reporting data or filling out surveys. It's a "set it and forget it" approach, which is more efficient in the long run.
6. **Trustworthiness**: Data users and consumers will trust data more when they know it's coming directly from the source and is current. This trustworthiness is likely to increase the adoption of applications and platforms that use OpenActive data, and increase consumer confidence of data from our sector.

In conclusion, to provide real-time, accurate, and comprehensive data about scheduled physical activity opportunities, relying on primary sources is much more effective and efficient.

That said, the OpenActive ecosystem is evolving and we recognise there are other valuable data types - like clubs and routes - that can help potential participants find and plan physical activity.

{% content-ref url="/pages/-LONU-bHf0VDp9dDdbxv" %}
[How an RPDE data feed works](/publishing-data/data-feeds/how-a-data-feed-works)
{% endcontent-ref %}


# How an RPDE data feed works

## RPDE feeds explained

The following video is a beta explainer animation for Realtime Paged Data Exchange (RPDE) feeds. If you find this short video useful, please drop any feedback to <hello@openactive.io>, and we will extend it into a full explanation.

For a full explanation of how to create an RPDE feed, please see the [specification](https://www.openactive.io/realtime-paged-data-exchange/#paging).

{% embed url="<https://youtu.be/yHZS24xzY-8>" %}

## Must Read: Principles of Feeds

### Items must never disappear

It's important to ensure that items don't disappear from the feed without first passing through the `deleted` state, as if this happens they will live on forever in the downstream apps and services, which will have cached the previously published version indefinitely.

See the [deleted items](https://www.openactive.io/realtime-paged-data-exchange/#deleted-items) section of the specification for more information.

### The query must be followed exactly

Misreading the query in the specification is the single most common cause of incorrect implementation. Please read it carefully and ensure that brackets and comparators are used correctly. `>` not `>=` for example.

Please ensure that you have implemented [this query](https://www.openactive.io/realtime-paged-data-exchange/#sql-query-example-for-timestamp-id) correctly:

```sql
--include WHERE clause only if @afterTimestamp and @afterId provided
   WHERE (modified = @afterTimestamp AND id > @afterId)
      OR (modified > @afterTimestamp)
ORDER BY modified, id
```


# Types of RDPE feed

## Time-based Events: **Regular Classes and Sessions**

These always have at least `activity`, `location` and `startDate` specified: so a Yoga class in Downtown Leisure Centre, at 7pm, on a Tuesday. See [here](/data-model/data-model-overview#classes-and-sessions) for further clarification of the types available.&#x20;

The OpenActive Modelling Specification 2.0 represents regular events using a hierarchy of types: [`EventSeries`](https://www.openactive.io/modelling-opportunity-data/#grouping-together-events-eventseries-), [`SessionSeries`](https://www.openactive.io/modelling-opportunity-data/#regular-sessions-sessionseries-and-scheduledsession-), and [`ScheduledSession`](https://www.openactive.io/modelling-opportunity-data/#regular-sessions-sessionseries-and-scheduledsession-), linked via the `superEvent` and `subEvent` properties. These are described by example in the diagram below:

![](https://docs.google.com/drawings/u/0/d/s78NrrrLPOgQHs-TaXftQdg/image?w=602\&h=268\&rev=325\&ac=1\&parent=1C_eO6JC8tt7-K-XiilHzPKXKenjjHiiOS7nCW07tlLk)

### **Property inheritance**

The `ScheduledSession` will inherit the properties of the `SessionSeries`, and the `SessionSeries` will inherit the properties of the `EventSeries`.

This means that if an `EventSeries` is not supplied, its details must be included on the `SessionSeries`.

![](https://docs.google.com/drawings/u/0/d/sC3OM5Gc26L84_nUVy7uWhA/image?w=602\&h=181\&rev=2\&ac=1\&parent=1C_eO6JC8tt7-K-XiilHzPKXKenjjHiiOS7nCW07tlLk)

### **Property inheritance overrides**

The OpenActive Modelling Specification 2.0 represents regular events using a hierarchy of types: `EventSeries`, `SessionSeries`, and `ScheduledSession`. These are described by example in the diagram below:

![](https://docs.google.com/drawings/u/0/d/sNuN0HrwIIJduzHZ-_PIMCw/image?w=602\&h=268\&rev=24\&ac=1\&parent=1C_eO6JC8tt7-K-XiilHzPKXKenjjHiiOS7nCW07tlLk)

### **Permissible configurations**

A `SessionSeries` must always be supplied, including details that would otherwise be present in an `EventSeries` if no `EventSeries` is supplied.

In order for data to be [**bookable**](https://www.openactive.io/open-booking-api/EditorsDraft/#dfn-bookability) a `ScheduledSession` must be supplied, either embedded, within a separate feed, or generated through a `Schedule`.

For large providers with many events that are described identically but occur in the same location or in different locations, an `EventSeries` should be used to group these together. This avoids seemingly duplicate search results from a single provider.&#x20;

![](https://docs.google.com/drawings/u/0/d/sruVQes8cWV4JuLh6rHxt-A/image?w=602\&h=321\&rev=144\&ac=1\&parent=1C_eO6JC8tt7-K-XiilHzPKXKenjjHiiOS7nCW07tlLk)

### **Exposing the model in feeds**

For systems targeting small providers, the `ScheduledSession` may be embedded in the `SessionSeries` or visa versa.

For systems targeting large providers or small providers with high volumes of sessions, the `ScheduledSession` is highly recommended to be provided in a separate feed to the `SessionSeries`. This will reduce data transfer volumes significantly.

The `EventSeries` is unlikely to change frequently enough compared with the `SessionSeries` to warrant its own feed, and so can usually be embedded in the `SessionSeries`.

For [**bookable**](https://www.openactive.io/open-booking-api/EditorsDraft/#dfn-bookability) data, the possible feed combinations are described in the diagram below:

![](https://docs.google.com/drawings/u/0/d/sVvrks8vK_gfSRejrIIIMGw/image?w=636\&h=206\&rev=363\&ac=1\&parent=1C_eO6JC8tt7-K-XiilHzPKXKenjjHiiOS7nCW07tlLk)

{% hint style="warning" %}
Please note that the first two "combined feed" options given above are no longer recommended for new OpenActive implementations. These options increase complexity for data users, and create unnecessary additional load on all systems.
{% endhint %}

Bookable data feed examples:

* Small provider: [SessionSeries with ScheduledSession](https://validator.openactive.io/?url=https%3A%2F%2Fwww.openactive.io%2Fdata-models%2Fversions%2F2.x%2Fexamples%2Fsessionseries_example_1.json\&version=2.0)
* Small provider (inverted): [ScheduledSession with SessionSeries](https://validator.openactive.io/?url=https%3A%2F%2Fwww.openactive.io%2Fdata-models%2Fversions%2F2.x%2Fexamples%2Fscheduledsession_example_1.json\&version=2.0)
* Small provider (high volume):
  * [SessionSeries](https://validator.openactive.io/?url=https%3A%2F%2Fwww.openactive.io%2Fdata-models%2Fversions%2F2.x%2Fexamples%2Fsessionseries-split_example_1.json\&version=2.0) and [ScheduledSession](https://validator.openactive.io/?url=https%3A%2F%2Fwww.openactive.io%2Fdata-models%2Fversions%2F2.x%2Fexamples%2Fscheduledsession-split_example_1.json\&version=2.0) (physical)
  * [SessionSeries](https://validator.openactive.io/?url=https%3A%2F%2Fwww.openactive.io%2Fdata-models%2Fversions%2F2.x%2Fexamples%2Fsessionseries-split-virtual_example_1.json\&version=2.x) and [ScheduledSession](https://validator.openactive.io/?url=https%3A%2F%2Fwww.openactive.io%2Fdata-models%2Fversions%2F2.x%2Fexamples%2Fscheduledsession-split-virtual_example_1.json\&version=2.x) (virtual)
* Large provider: [SessionSeries with EventSeries](https://validator.openactive.io/?url=https%3A%2F%2Fwww.openactive.io%2Fdata-models%2Fversions%2F2.x%2Fexamples%2Fsessionseries-eventseries-split_example_1.json\&version=2.0), and [ScheduledSession](https://validator.openactive.io/?url=https%3A%2F%2Fwww.openactive.io%2Fdata-models%2Fversions%2F2.x%2Fexamples%2Fscheduledsession-split_example_1.json\&version=2.0)

Listings data feed examples:

* Small provider: [SessionSeries](https://validator.openactive.io/?url=https%3A%2F%2Fwww.openactive.io%2Fdata-models%2Fversions%2F2.x%2Fexamples%2Fsessionseries-split_example_1.json\&version=2.0)
* Large provider: [SessionSeries with EventSeries](https://validator.openactive.io/?url=https%3A%2F%2Fwww.openactive.io%2Fdata-models%2Fversions%2F2.x%2Fexamples%2Fsessionseries-eventseries-split_example_1.json\&version=2.0)

### Use of `@id` and `superEvent` for split feeds

When referencing data across feeds (such as between [SessionSeries](https://validator.openactive.io/?url=https%3A%2F%2Fwww.openactive.io%2Fdata-models%2Fversions%2F2.x%2Fexamples%2Fsessionseries-split_example_1.json\&version=2.0) and [ScheduledSession](https://validator.openactive.io/?url=https%3A%2F%2Fwww.openactive.io%2Fdata-models%2Fversions%2F2.x%2Fexamples%2Fscheduledsession-split_example_1.json\&version=2.0)), the value of the **`@id`** must be used.

An **`@id`** is a globally unique identifier which must be in URL format for the purposes of namespacing. The **`@id`** does not need to resolve to a functional endpoint, but must use a domain name controlled by the organization or system publishing the data. See [here](/data-model/context-and-json-ld#contexts-properties-and-types) for more information.

So for a minimal implementation simply invent a URL pattern that includes your domain for use as your **`@id`**, such as:

> "`https://id.ourparks.org.uk/api/session-series/1234`"

For example within a `SessionSeries` feed, the `SessionSeries` **`@id`** is defined for each data item:

```javascript
"data": {
  "@context": "https://openactive.io/",
  "@type": "SessionSeries",
  "@id": "https://id.ourparks.org.uk/api/session-series/1234",
  ...
}
```

And within a corresponding `ScheduledSession` feed, that `SessionSeries` **`@id`** is referenced by the `superEvent` property:

```javascript
"data": {
  "@context": "https://openactive.io/",
  "@type": "ScheduledSession",
  "@id": "https://id.ourparks.org.uk/api/session-series/1234#/subEvent/C5EE1E55-2DE6-44F7-A865-42F268A82C63",
  "superEvent": "https://id.ourparks.org.uk/api/session-series/1234",
  ...
}
```

## Time-based Events: Ad-hoc Events

The OpenActive model allows for ad-hoc events to be described using the pattern below. Ad-hoc events must only be used to describe truly ad-hoc events, and not to describe regular events such as those described in the previous section. See [here](/data-model/data-model-overview#events) for further clarification of the types available.&#x20;

### **Summary of ad-hoc event types**

The OpenActive Modelling Specification 2.0 represents ad-hoc events using a hierarchy of types: `EventSeries` and `Event`, linked via the `superEvent` and `subEvent` properties. These are described by example in the diagram below:

![](https://docs.google.com/drawings/u/0/d/soe-8CJhGcRo3o-w3Njk_4g/image?w=602\&h=168\&rev=64\&ac=1\&parent=1C_eO6JC8tt7-K-XiilHzPKXKenjjHiiOS7nCW07tlLk)

### **Property inheritance**

The Event will inherit the properties of the `EventSeries`.

This means that if an `EventSeries` is not supplied, its details must be included on the `Event`.

![](https://docs.google.com/drawings/u/0/d/sQajrOUrhJ4eXWsfayekEtA/image?w=602\&h=94\&rev=14\&ac=1\&parent=1C_eO6JC8tt7-K-XiilHzPKXKenjjHiiOS7nCW07tlLk)

### **Permissible configurations**

An Event must always be supplied, including details that would otherwise be present in an `EventSeries` if no `EventSeries` is supplied.

For large providers with many events that are described identically but occur in the same location or in different locations, an `EventSeries` should be used to group these together. This avoids seemingly duplicate search results from a single provider.

![](https://docs.google.com/drawings/u/0/d/skh7gEfjLUh9HTcLbH2RItw/image?w=259\&h=205\&rev=14\&ac=1\&parent=1C_eO6JC8tt7-K-XiilHzPKXKenjjHiiOS7nCW07tlLk)

### **Exposing the model in feeds**

Systems must include `Event`s in stand-alone feeds separate from `ScheduledSessions` and  `SessionSeries`.

The `EventSeries` is unlikely to change frequently enough compared with the `Event` to warrant its own feed, and so can usually be embedded in the `Event`.

For [**bookable**](https://www.openactive.io/open-booking-api/EditorsDraft/#dfn-bookability) data, example feed combinations are described in the diagram below:

![](https://docs.google.com/drawings/u/0/d/sjJOI7mL_qflDQspoKgNUmw/image?w=636\&h=440\&rev=174\&ac=1\&parent=1C_eO6JC8tt7-K-XiilHzPKXKenjjHiiOS7nCW07tlLk)

Bookable data feed examples:

* Events only: [Event](https://validator.openactive.io/?url=https%3A%2F%2Fwww.openactive.io%2Fdata-models%2Fversions%2F2.x%2Fexamples%2Fevent_example_1.json\&version=2.x)

## Slot-based Events: FacilityUses

These always have at least `activity` and`location` specified, where the activity can be booked in slots: so a Tennis at Downtown Leisure Centre with slots available hourly from 8am until 8pm.

Two different levels of granularity are available: A `FacilityUse` represents "Badminton at Downtown Leisure Centre", where as `IndividualFacilityUse` is "Court 2 in Sports Hall 3 for Badminton at Towntown Leisure Centre".

The OpenActive Modelling Specification 2.0 represents slot-based events using a hierarchy of types: `FacilityUse`/`IndividualFacilityUse` and `Slot`, linked via the `facilityUse` and `event` properties.

For facilities a publisher must implement the following two independent feeds:

* `http://www.example.org/feeds/facility-uses`&#x20;
  * [FacilityUse example](https://validator.openactive.io/?url=https%3A%2F%2Fwww.openactive.io%2Fdata-models%2Fversions%2F2.x%2Fexamples%2Ffacilityuse_example_1.json\&version=2.x) (including `IndividualFacilityUse`)
* `http://www.example.org/feeds/individual-facility-use-slots`
  * [Slot example](https://validator.openactive.io/?url=https%3A%2F%2Fwww.openactive.io%2Fdata-models%2Fversions%2F2.x%2Fexamples%2Fslot_example_1.json\&version=2.x)

Note that the above examples publish `Slot` availability at the `IndividualFacilityUse` level, which is now recommended for all new feeds.

### Use of `@id` and `facilityUse` for split feeds

When referencing data across feeds (such as between [FacilityUse](https://validator.openactive.io/?url=https%3A%2F%2Fwww.openactive.io%2Fdata-models%2Fversions%2F2.x%2Fexamples%2Ffacilityuse_example_1.json\&version=2.x) and [Slot](https://validator.openactive.io/?url=https%3A%2F%2Fwww.openactive.io%2Fdata-models%2Fversions%2F2.x%2Fexamples%2Fslot_example_1.json\&version=2.x)), the value of the **`@id`** must be used.

An **`@id`** is a globally unique identifier which must be in URL format for the purposes of namespacing. The **`@id`** does not need to resolve to a functional endpoint, but must use a domain name controlled by the organization or system publishing the data. See [here](/data-model/context-and-json-ld#contexts-properties-and-types) for more information.

So for a minimal implementation simply invent a URL pattern that includes your domain for use as your **`@id`**, such as:

> "`https://id.bookingsystem.com/api/facility-uses/1402CBP20150217/individual-facility-uses/1`"

For example within a `FacilityUse` feed, the `FacilityUse` **`@id`** is defined for each data item, and `IndividualFacilityUse` **`@id`**  values are defined within these:

```javascript
"data": {
  "@context": "https://openactive.io/",
  "@type": "FacilityUse",
  "@id": "https://id.bookingsystem.com/api/facility-uses/1402CBP20150217",
  "individualFacilityUse": [
    {
      "@type": "IndividualFacilityUse",
      "@id": "https://id.bookingsystem.com/api/facility-uses/1402CBP20150217/individual-facility-uses/1",
      "name": "Main Tennis Court 1"
    }
  ],
  ...
}
```

And within a corresponding `Slot` feed, that `IndividualFacilityUse` **`@id`** is referenced by the `facilityUse` property:

```javascript
"data": {
  "@context": "https://openactive.io/",
  "@type": "Slot",
  "@id": "https://id.bookingsystem.com/api/facility-uses/1402CBP20150217/individual-facility-uses/1#/event/2018-03-01T10:00:00Z",
  "facilityUse": "https://id.bookingsystem.com/api/facility-uses/1402CBP20150217/individual-facility-uses/1",
  ...
}
```

## Other types of Time-based Events: Headline Events and Courses

A feed of  [`HeadlineEvent`](https://www.openactive.io/modelling-opportunity-data/#headline-events-headlineevent-) can be used to represent whole day or multi-day events, such as mass participation events, family fun days, etc.

* The OpenActive Modelling Specification 2.0 represents these events using a hierarchy of types: `HeadlineEvent` (for the overall event) and `Event` (for small events within the overall event) linked via the `superEvent` and `subEvent` properties.
* See [here](/data-model/data-model-overview#headline-events) for further clarification, and [here](http://data.britishtriathlon.org/) for an example.

A feed of [`CourseInstance`](https://www.openactive.io/modelling-opportunity-data/#courses-courseinstance-) can be used to represent a fixed-length course.

* The OpenActive Modelling Specification 2.0 represents these events using a hierarchy of types: `CourseInstance` (for the whole course) and `Event` (for the individual occurrences) linked via the `superEvent` and `subEvent` properties.
* See [here](/data-model/data-model-overview#courses) for further clarification, and [here](https://validator.openactive.io/?url=https%3A%2F%2Fwww.openactive.io%2Fdata-models%2Fversions%2F2.x%2Fexamples%2Fcourseinstance_event_example_1.json\&version=2.x) for an example.

## **Event relationship overview**

The following diagram illustrates the relationships between the event types available within the OpenActive Modelling Specification 2.0:

![](/files/-M5N3BbVBQ0EeCenbmwM)

Note the use of aliases (e.g. "IndividualFacilityUseSlot") which are useful when referring to a specific type that is being used in a particular context.

The relationship between all types is represented via the `superEvent` and `subEvent` properties, with the exception of:

* `FacilityUse`/`IndividualFacilityUse` and `Slot`, which are linked via the `facilityUse` and `event` properties&#x20;
* `FacilityUse` and `IndividualFacilityUse`, which are linked via the `aggregateFacilityUse` and `individualFacilityUse` properties.

## **Schema.org type inheritance overview**

The model itself (the properties within the types) follows a *different inheritance structure* to the property inheritance structure described above.

`EventSeries`, `SessionSeries`, `ScheduledSession`, `HeadlineEvent`, `CourseInstance`, and `Slot` all **sub-class** `Event`.

This can be useful for modelling the entities within certain framework&#x73;**.**

![](https://docs.google.com/drawings/u/0/d/sHnIqB65tCLtqxkTO0dBaVA/image?w=602\&h=272\&rev=181\&ac=1\&parent=1C_eO6JC8tt7-K-XiilHzPKXKenjjHiiOS7nCW07tlLk)


# Implementing RPDE

Always use a JSON library to generate the output, and never construct the JSON manually.

Language-specific examples of library implementations that also support the removal of nulls, empty strings and empty arrays - as the specification stipulates - are included here.

## .NET, PHP, Ruby and JavaScript/TypeScript Libraries

Several libraries are available that make it really easy to create open opportunity data feeds.

The table below lists the available OpenActive libraries:

<table data-header-hidden><thead><tr><th width="405.3333333333333">Language</th><th>Open Opportunity Data Feeds</th><th>Dataset Site</th></tr></thead><tbody><tr><td>Language</td><td>Open Opportunity Data Feeds</td><td>Dataset Site</td></tr><tr><td>.NET</td><td><a href="https://www.nuget.org/packages/OpenActive.NET/">OpenActive.NET</a></td><td><a href="https://www.nuget.org/packages/OpenActive.DatasetSite.NET/">OpenActive.DatasetSite.NET</a></td></tr><tr><td>PHP</td><td><a href="https://packagist.org/packages/openactive/models">openactive/models</a></td><td><a href="https://packagist.org/packages/openactive/dataset-site">openactive/dataset-site</a></td></tr><tr><td>Ruby</td><td><a href="https://rubygems.org/gems/openactive">openactive</a></td><td><a href="https://rubygems.org/gems/openactive-dataset_site">openactive-dataset_site</a></td></tr><tr><td>JavaScript / TypeScript</td><td><a href="https://www.npmjs.com/package/@openactive/models-ts">@openactive/models-ts</a></td><td><a href="https://www.npmjs.com/package/@openactive/dataset-site-template">@openactive/dataset-site-template</a></td></tr></tbody></table>

## Transactions: Preventing delayed item interleaving

When concurrent transactions are used to write to tables that power RPDE feeds, the timestamp and change number update must be done outside of the transaction, with high accuracy timestamp, and a "visible" timestamp column added.

### Example of race condition

Delayed item interleaving is a race condition that occurs when two concurrent transactions containing "timestamps" or "change numbers" are committed out of order. For example using the [Modified Timestamp and ID](https://www.w3.org/2017/08/realtime-paged-data-exchange/#modified-timestamp-and-id) ordering strategy:

* **Transaction 1**: Starts at 10:00:01 and updates RPDE item timestamps
* **Transaction 2**: Starts at 10:00:02 and updates RPDE item timestamps
* **Transaction 2**: Commits
* Data consumer reads the feed at 10:00:03, and gets the latest items up to 10:00:02
* **Transaction 1**: Commits
* Items from **Transaction 1** appear in the feed with timestamp 10:00:01, but the data consumer has already moved past them

The same issue can be demonstrated with the [Incrementing Unique Change Number](https://www.w3.org/2017/08/realtime-paged-data-exchange/#incrementing-unique-change-number) ordering strategy:

* **Transaction 1**: Creates change number 001 and updates RPDE item timestamp
* **Transaction 2**: Creates change number 002 and updates RPDE item timestamp
* **Transaction 2**: Commits
* Data consumer reads the feed up to 002
* **Transaction 1**: Commits
* Item from **Transaction 1** appears in the feed with change number 001, but the data consumer has already moved past it

### Preventing the race condition

In order to prevent this race condition, one solution is to simply separate the more intensive work of the transaction from the atomic timestamp and change number update, filter out recent changes in the feed, and ensure you are using accurate timestamps:

1. First commit the transaction, then update the timestamps or change numbers after the transaction has been committed as an atomic operation, outside of a transaction, using `GETDATE()` or similar
2. Ensure the RPDE endpoint filters out all items with a "modified" date after 2 seconds in the past, to delay items appearing in the feed
3. If using the [Modified Timestamp and ID](https://www.w3.org/2017/08/realtime-paged-data-exchange/#modified-timestamp-and-id) ordering strategy, use a timestamp column with a high degree of accuracy (e.g. `datetime2` in SQL Server).

Updating items in the feed without updating their timestamp/change number immediately does not have any negative effects, as data consumers who are reading the feed will read the updated item earlier than they would otherwise instead of an older version, then read it again after the timestamp/change number is updated as they would normally.

Using the RPDE endpoint filter to delay items appearing is a belt-and-braces measure that ensures that [small variances](https://stackoverflow.com/questions/30301302/identity-and-getdate-out-of-order) between timestamp and change number update order are accounted for under high database load, by only presenting data to the data consumer after a small delay, when all timestamp/change number updates have commited.

## C# and .NET Framework

### OpenActive.NET Library

We highly recommend using the [OpenActive.NET](https://www.nuget.org/packages/OpenActive.NET/) library for .NET implementations. It includes strongly typed classes for the [OpenActive data model](https://www.openactive.io/modelling-opportunity-data/) including [beta properties](https://www.openactive.io/ns-beta/), and fully compliant serialisation methods too.

### Manual Implementation

Use [JSON.NET / Newtonsoft.Json](https://www.nuget.org/packages/Newtonsoft.Json/) with a `ContractResolver` to remove empty strings, and `NullValueHandling` to remove nulls. Empty list values must be removed by setting them to null in the generating code, aided by the extension `ToListOrNullIfEmpty` which is useful at the end of LINQ expressions.

```csharp
public class RPDERestUtils
{
    public static HttpResponseMessage CreateJSONResponse(RpdePage page, HttpRequestMessage req)
    {
        var e = JsonConvert.SerializeObject(page,
            Newtonsoft.Json.Formatting.None,
            new JsonSerializerSettings
            {
                NullValueHandling = NullValueHandling.Ignore,
                ContractResolver = NoEmptyStringsContractResolver.Instance
            });

        var resp = req.CreateResponse(HttpStatusCode.OK);
        resp.Headers.CacheControl = new CacheControlHeaderValue()
        {
            Public = true,
            // Recommended cache settings from:
            // https://developer.openactive.io/publishing-data/data-feeds/scaling-feeds
            MaxAge = page?.items?.Count > 0 ? TimeSpan.FromHours(1) : TimeSpan.FromSeconds(8)
        };
        resp.Content = new StringContent(e, Encoding.UTF8, "application/json");
        return resp;
    }

    public class NoEmptyStringsContractResolver : DefaultContractResolver
    {
        public static readonly NoEmptyStringsContractResolver Instance = new NoEmptyStringsContractResolver();

        protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization)
        {
            JsonProperty property = base.CreateProperty(member, memberSerialization);

            if (property.PropertyType == typeof(string))
            {
                // Do not include empty strings in JSON output (as per OpenActive Modelling Specification)
                property.ShouldSerialize = instance =>
                {
                    return !string.IsNullOrWhiteSpace(instance.GetType().GetRuntimeProperty(member.Name).GetValue(instance, null) as string);
                };
            }

            return property;
        }
    }

    public static List<TSource> ToListOrNullIfEmpty<TSource>(this IEnumerable<TSource> source)
    {
        if (source != null && source.Count() > 0)
            return source.ToList();
        else
            return null;
    }
}
```

## PHP

### OpenActive PHP Models Library

We highly recommend using the [OpenActive PHP Models Library](https://packagist.org/packages/openactive/models) for PHP implementations. It includes strongly typed classes for the [OpenActive data model](https://www.openactive.io/modelling-opportunity-data/) including [beta properties](https://www.openactive.io/ns-beta/), and fully compliant serialisation methods too.

### Manual Implementation

The specification requires that no null or empty strings are present in the OpenActive feed. To achieve this, define the RPDE response structure as nested arrays, and recursively unset empty properties before using [json\_encode](http://php.net/manual/en/function.json-encode.php) to generate the response.

Run the example below [here](https://www.tehplayground.com/yq8X04VLEF9ypc8Y) to see the result.

```php
<?php

$testResponseStructure = [
    "@context" => "https://openactive.io/",
    "@id" => "https://example.com/api/sessions/1402CBP20150217",
    "identifier" => "1402CBP20150217",
    "@type" => "SessionSeries",
    "organizer" => [
        "@type" => "Organization",
        "name" => "Everyone Active",
        "url" => null,
        "logo" => [
            "type" => "ImageObject",
            "url" => "",
        ],
        "email" => null,
        "telephone" => "01455 890508",
        "sameAs" => [
            null,
            ""
        ],
    ],
];

echo json_encode_without_null_or_empty($testResponseStructure);

function json_encode_without_null_or_empty($nestedarr) {
    $nestedarr = array_filter_recursive($nestedarr);
    return json_encode($nestedarr, JSON_PRETTY_PRINT);
}

function array_filter_recursive($array) {
    $clean = [];
    foreach ($array as $key => $value) {
        // First clean the array, in case it ends up empty
        if (is_array($value)) {
            $value = array_filter_recursive($value);
            // Remove arrays containing only a "type" property
            if (count($value) === 1 && isset($value["type"])) {
                continue;
            }
        }

        // ignore null values, empty strings, and empty lists
        if ($value === null || $value === "" || $value === []) {
            continue;
        }
        $clean[$key] = $value;
    }
    return $clean;
}
```


# Testing RPDE feeds

{% hint style="warning" %}
Please note that all feeds must pass the **OpenActive Test Suite** in order to be usable by the largest number of data users. As described below, the interactive OpenActive Validator only validates the first 10 items / first 20 pages of a feed, whereas the OpenActive Test Suite runs the same checks over all items, in all pages, of all feeds.
{% endhint %}

## OpenActive Validator

The interactive online [OpenActive Validator](https://validator.openactive.io) allows the user to perform two types of validation:

* [RPDE validation](https://validator.openactive.io/rpde): attempt to consume **only the** **first 20 RPDE pages** of an RPDE feed and check for common errors with the RPDE implementation
* [JSON-LD validation](https://validator.openactive.io/): depending on the data supplied, check either (i) an individual item, (ii) **only the first 10 JSON-LD items** in a single feed page, or (iii) an Open Booking API request/response for validity

The OpenActive Validator is useful during development to get instant feedback on the basic data structure and feed implementation, however it is not designed to comprehensively validate a complete implementation.

## OpenActive Test Suite

The downloadable [OpenActive Test Suite](https://github.com/openactive/openactive-test-suite/) includes an option for comprehensively validating OpenActive open data feeds. Behind the scenes it runs the same checks as the [OpenActive Validator](https://validator.openactive.io/) for **every RPDE page** in the feed, and for **every JSON-LD item** in the feed.

The OpenActive Test Suite produces a results page that allows the user to explore specific errors with individual data items, by loading those items into the interactive OpenActive Validator.

### Step 1: Install the test suite

Clone the test suite repository locally, and install its dependencies.

[Node.js](https://nodejs.org/en/download/) version 14 or above is required.

```bash
git clone git@github.com:openactive/openactive-test-suite.git
cd openactive-test-suite
npm install
```

### Step 2: Run validation

Validation mode does not require any specific configuration, simply run the following command with the URL of the dataset site to be tested:

```bash
npm run validate-feeds "http://reference-implementation.openactive.io/OpenActive"
```

## Manual Testing Checklist

Things to check to ensure the feed is implemented correctly.

### Most common implementation error

Misreading the query in the specification is the single most common cause of incorrect implementation. Please read it carefully and ensure that brackets and comparators are used correctly. `>` not `>=` for example.

Please ensure that you have implemented [this query](https://www.openactive.io/realtime-paged-data-exchange/#sql-query-example-for-timestamp-id) correctly:

```sql
--include WHERE clause only if @afterTimestamp and @afterId provided
   WHERE (modified = @afterTimestamp
            AND id > @afterId)
      OR (modified > @afterTimestamp)
ORDER BY modified,
         id
```

### Feed integrity checks

* Does the `next` url work as expected and return a valid page - it should never result in a 500 error.
* "`modified`" must always be an integer, `afterTimestamp` / `afterChangeNumber` must also be an integer.
* Does the `afterTimestamp` or `afterChangeNumber` of the next url always increase with each new page - if not the query has likely been badly implemented.
* There should be "`deleted`" items in the feed. If these are missing, it is likely the feed has not been implemented correctly.
* The `next` URL should be an absolute not relative URL.
* Are all responses returned with header `Content-Type: application/json`
* Check for duplicate IDs: items should not appear more than once in the feed if the source data is unchanging.
* Pages should contain at least 500 items (this is a warning rather than an error).
* Are the next URL parameters urlencoded?

### Last Page checks

* Is the `next` URL present on the last page? The `next` URL on the last page should match the URL of the current page.
* Check that the items array of the last page is empty

To quickly access the last page:

* **afterTimestamp**: If "modified" is an integer, put a high integer in for afterTimestamp to return the last page. (N.B. the spec currently allows for strings to be used for "modified", but a future spec will likely [make integers a must here](https://github.com/openactive/realtime-paged-data-exchange/issues/89)).
* **afterChangeNumber**: Put a high integer in for afterChangeNumber to return last page

### Data quality checks

* Does the feed include all historical data from the beginning of time and not just data in the future or from today's date?
* Does the endpoint without any parameters return the first page (from the beginning of time)?
* Does each page contain a "license" key?


# Scaling RPDE feeds

## Approach to Scale

A retention period should be applied to your data, so that sessions in the past are removed from the feed, while respecting the [RPDE invariants](https://www.w3.org/2017/08/realtime-paged-data-exchange/#core-concept).

A CDN such as [CloudFlare](https://www.cloudflare.com/) is recommended to allow your RPDE endpoint to scale to millions of requests inbound.

## Retention Period

In order to minimise the total number of items within of RPDE feeds, it is recommended that data publishers apply a retention period - especially for `Event,` `ScheduledSession` or `Slot` data items.

The [Realtime Paged Data Exchange specification](https://www.w3.org/2017/08/realtime-paged-data-exchange/#deleted-items) specifies that:

> If any record is added to the list or updated it must remain in the list in perpetuity while it is in an "updated" state, or remain in the list for at least 7 days from the point in time at which it transitioned to a "deleted" state

{% hint style="info" %}
The [high-volume proposal](https://github.com/openactive/realtime-paged-data-exchange/issues/93) for the RPDE specification is currently widely adopted, and hence it is recommended that `Slot` feeds that have a particularly high volume of small payload items wait 2 days before removing `"deleted"` items from the feed, in place of the specified 7 days.
{% endhint %}

### Option 1: Retention period to minimise storage requirements

If the objective of implementing a retention period is primarily to reduce the number of records stored, records representing events that occur in the past should be pruned by:

* First setting their [`state` to the `"deleted"` state and updating the `modified` value](https://www.w3.org/2017/08/realtime-paged-data-exchange/#deleted-items).
* Then after 7 days removing them from the feed.

This may be implemented via a regular CRON job, for example.

{% hint style="danger" %}
Simply filtering out or removing opportunities from the feed that are in the past is not sufficient, because any opportunity that is edited to have a `startDate` in the past would then disappear from the feed without first transitioning into the [`"deleted"` state](https://www.w3.org/2017/08/realtime-paged-data-exchange/#deleted-items) with an updated `modified` value. Hence the previous version of such a record would live on forever in the downstream applications.
{% endhint %}

### Option 2: Retention period to reduce feed size

If the objective of implementing a retention period is primarily to reduce the size of the feed, an effective retention period can be implemented by having the first page of the feed start from the first relevant record (instead of from the beginning of time). This approach is useful for simple cases where a CRON job is not desirable.

The approach can be implemented as follows: if the `@afterTimestamp` and `@afterId` parameters are **not** supplied to the RPDE endpoint (i.e. for the first page), use the query below to try to get the `@firstTimestamp` and `@firstId` and use these as default values:

```sql
-- Execute ONLY if @afterTimestamp and @afterId NOT provided
  SELECT @firstTimestamp = modified, @firstId = id
    FROM ...
   WHERE startDate >= @now AND state <> "deleted"
ORDER BY modified, id
   LIMIT 1
```

For the first page only (where `@afterTimestamp` and `@afterId` parameters are **not** supplied), these default values are included within the `WHERE` clause of the RPDE query as below, with a slight change to the operands such that **`id >= @firstId`** to ensure the default value itself is included in the feed.

For the first page, if no default values are returned, the RPDE query must exclude the `WHERE` clause as per the [specification](https://www.openactive.io/realtime-paged-data-exchange/#sql-query-example-for-timestamp-id), and return results from the beginning of time.

Hence the query either uses:

* For the first page: the default values supplied from the query above or otherwise returns results from the beginning of time
* For all other pages: the values supplied by the parameters

```sql
-- Include this WHERE clause only if @afterTimestamp and @afterId
-- are NOT provided (first page), and if default values are available
   WHERE (modified = @firstTimestamp AND id >= @firstId)
      OR (modified > @firstTimestamp)
-- Include this WHERE clause only if @afterTimestamp and @afterId
-- are provided (not first page)
   WHERE (modified = @afterTimestamp AND id > @afterId)
      OR (modified > @afterTimestamp)
-- If @afterTimestamp and @afterId not provided, and default values
-- are not available, do not include WHERE clause
ORDER BY modified, id
```

To further reduce the number of records in the feed, any record for an opportunity in the past can be rendered as `"deleted"` in the feed without any change to the `updated` value (note the record **must not** be removed from the feed). This means that records representing past opportunities are effectively frozen after they have occurred, and by default will live on forever in downstream applications. If the record is edited, the `modified` value must still be updated, at which point the record will be removed from downstream applications, to ensure historical accuracy.

{% hint style="info" %}
Alternative approaches for implementing this option are available in [this proposal](https://github.com/openactive/realtime-paged-data-exchange/issues/96). Feedback and thoughts very welcome.
{% endhint %}

## CDN Configuration

A CDN is simple to configure and requires a small amount of additional code within the RPDE endpoint.

Note that in order for the CDN to be effective your application **should not** implement the [optional `limit` parameter specified in the RPDE specification](https://www.w3.org/2017/08/realtime-paged-data-exchange/#modified-timestamp-and-id).

### Basic Configuration

The following CDN configuration options are recommended:

* Configure the CDN to "Pass through and respect cache TTL headers" instead of overriding
* In the application, vary the cache headers for RPDE pages as follows:
  * For all pages which contain greater than zero items, return a TTL of "60 minutes":
    * `Cache-Control: public, max-age=3600`
  * For the last page, which contains zero items, return a TTL of "8 seconds":
    * `Cache-Control: public, max-age=8`

### Worked Example

The settings in the CDN Configuration section will create the behaviour described in this worked example automatically:

#### Scenario

* In this scenario, 200 data consumers are tracking the RPDE feed by polling at the end of the list (the last `next` URL).
* Although each data consumer can choose a polling frequency arbitrarily, that frequency is not relevant to the calculations here, as it is the settings of the cache header that dictate the load on the origin server. It should also be noted that during normal operation the number of data consumers also does not impact the load on the origin server, and that 200 is used illustratively.
* When the last page is requested, the first consumer would request the live page (creating one hit on the origin server), and the subsiquent 199 data consumers would receive a cached version.

#### **"Sleep" mode**

* For a feed whose source data is not being updated, the origin server receives one hit every 8 seconds and returns an empty list of `items` each time, and an identical `next` URL.
* Hence the maximum load during "Sleep" mode is 8 requests/minute.

#### "Live" mode

* When an update to source data occurs, one of the 8-second interval requests will render a list of items and a new `next` URL.
* The `items` list is rendered once by the origin server, and the subsiquent 199 data consumers would receive a cached version.
* All 200 data consumers will follow the same next URL, and again the first request will be cached for the other 199 data consumers.
* Hence the maximum load during "Live" mode is bounded by the response time of the "last" page, as the CDN will queue the requests from other data consumers waiting for this page. If the origin server is under high general load from other services, and the response time of the last page is increased, then the queue waits. This avoids a large number of data consumers adversely affecting the origin server performance during times of peak general load.

#### Resyncs and rate limits

If a data consumer decides to "resync" their data from the beginning of your feed, this will result in a temporary increase in request volume, as not all the pages earlier in the feed will still be cached in the CDN. This is not a frequent occurrence, however to ensure your system is protected from excessive requests, a rate limit behind your CDN of 10 requests/second is recommended.

### CloudFlare Walkthrough

In order for [CloudFlare](https://www.cloudflare.com/) to respect your cache control headers, there are five simple steps to follow:

#### 1) Set up CloudFlare as your DNS provider and proxy

After you've [set up CloudFlare](https://support.cloudflare.com/hc/en-us/categories/200275218-Getting-Started) as your DNS provider, check requests are being routed through CloudFlare by enabling the orange cloud button.

#### 2) Set up a page rule with a wildcard that covers your feeds

Use the wildcards to ensure the rule covers all your feeds, for example:

```
*opendata.example.com/api/feeds/*
```

The page rule should have the following configuration:

* **Cache Level:** Everything
* **Origin Cache Control**: On
* **SSL:** Flexible (if you do not have SSL configured on your own server)

#### 3) Set Browser Cache Expiration to Respect Existing Headers

On the Caching configuration page, ensure that following is set:

* **Browser Cache Expiration:** Respect Existing Headers

![](/files/cmaqMQOugP3VjEXtMGV8)

#### 4) Ensure that your feed does not inadvertently set any cookies

Ensure that your web application or web server infrastructure does not set any cookies on the feed pages (for example load balancer [affinity cookies](https://azure.microsoft.com/en-gb/blog/disabling-arrs-instance-affinity-in-windows-azure-web-sites/)), as these will prevent CloudFlare from caching pages.

#### 5) Test your configuration

Inspect the headers returned by your page to see if CloudFlare is successfully caching your feed.

A successfully cached page will return the following header:

* **cf-cache-status: HIT**

### Further information

The following articles will help you dive deeper into this in case you have any issues:

* [Understanding and Configuring Cloudflare Page Rules (Page Rules Tutorial)](https://support.cloudflare.com/hc/en-us/articles/218411427-Understanding-and-Configuring-Cloudflare-Page-Rules-Page-Rules-Tutorial-)
* [How Do I Tell Cloudflare What to Cache?](https://support.cloudflare.com/hc/en-us/articles/202775670-How-Do-I-Tell-Cloudflare-What-to-Cache-)
* [Origin Cache-Control](https://support.cloudflare.com/hc/en-us/articles/115003206852-Origin-Cache-Control)
* [What do the various Cloudflare cache responses (HIT, Expired, etc.) mean?](https://support.cloudflare.com/hc/en-us/articles/200168266-What-do-the-various-Cloudflare-cache-responses-HIT-Expired-etc-mean-)
* [View HTTP headers in Chrome Dev Tools](https://developers.google.com/web/tools/chrome-devtools/network-performance/reference#headers)


# Activity list references

## Using the OpenActive Activity List

In order to allow your data to be easily searchable across a wide range of applications, it must contain references to the [OpenActive Activity List](https://www.openactive.io/activity-list/).

The OpenActive Activity List is a standardised hierarchical list of physical activity types. It includes over 600 entries, each of which have a unique identifier in the form of a URL.

A [JSON-LD definition](https://openactive.io/activity-list/activity-list.jsonld) of the OpenActive Activity List is available for live integration into applications, together with a [JavaScript library](https://www.npmjs.com/package/@openactive/skos) for navigating the list.

Each opportunity within a booking or listing system must have an associated activity from the OpenActive Activity List. This is often achieved by providing a [dropdown list](#rendering-the-openactive-activity-list-with-skos-js) for the activity provider to select from when they are creating or updating an opportunity in the booking system.

### Including OpenActive Activity List references in your open data feed

In the relevant [open data feed](/publishing-data/data-feeds/types-of-feed), the `@id` and `prefLabel` of at least one activity from the OpenActive Activity List must be included with each opportunity, along with an `inScheme` of `"https://openactive.io/activity-list"`, as shown below:

```javascript
"activity": [
  {
    "@type": "Concept",
    "@id": "https://openactive.io/activity-list#5e78bcbe-36db-425a-9064-bf96d09cc351",
    "prefLabel": "Bodypump™",
    "inScheme": "https://openactive.io/activity-list"
  }
]
```

See [here](https://validator.openactive.io/?url=https%3A%2F%2Fwww.openactive.io%2Fdata-models%2Fversions%2F2.x%2Fexamples%2Fsessionseries-split_example_1.json\&version=2.x) for a full feed example that references the OpenActive Activity List using the snippet above.

{% hint style="warning" %}
Please note that although the newer **`@id`** and **`@type`** are used here and throughout the rest of the OpenActive documentation and tooling, the OpenActive Activity List JSON-LD definition itself still uses **`id`** and **`type`** for backwards compatibility.
{% endhint %}

### Multiple OpenActive Activity List references

A booking system may choose to allow an opportunity to include multiple references to the OpenActive Activity List. If such a feature is implemented, a limit on the total number of references permitted per opportunity is recommended to discourage "tag spamming" (for example, a maximum of 3).

An example of multiple references to the OpenActive Activity List is shown below:

```javascript
"activity": [
  {
    "@type": "Concept",
    "@id": "https://openactive.io/activity-list#eaa5a9bc-c23d-4643-80d9-8691646545be",
    "prefLabel": "Pool",
    "inScheme": "https://openactive.io/activity-list"
  },
  {
    "@type": "Concept",
    "@id": "https://openactive.io/activity-list#ee7fa47c-617b-44ac-88fa-ef7b7ae03516",
    "prefLabel": "Snooker",
    "inScheme": "https://openactive.io/activity-list"
  }
]
```

### Integration with an existing "activity types" controlled list

If your booking system already has "activity types" available from a controlled list, these existing activity types should be mapped to the OpenActive Activity List.

This is usually achieved by adding additional fields "OpenActive @id" and "OpenActive prefLabel" to your existing activity types table, and providing a [dropdown](#rendering-the-openactive-activity-list-with-skos-js) in your activity type editor.

### Loading the OpenActive Activity List within your application

This [OpenActive Activity List JSON-LD definition](https://openactive.io/activity-list/activity-list.jsonld) **SHOULD** be retrieved at least nightly using an HTTP GET and cached within an application. This ensures that the most up-to-date version is displayed to the user, while also protecting against network failure when accessing the underlying resource.

To access the JSON-LD definition the application **MUST** GET the URL `"https://openactive.io/activity-list/activity-list.jsonld"` which does not require a specific `Accept` header, and is cached via CDN.

Note: there is no `www` in the URL.

{% hint style="info" %}
The JSON-LD definition is also available via a GET of the URL `"https://openactive.io/activity-list"` using an `Accept` header of `application/ld+json`, to conform with JSON-LD expectations, however this shorter URL **MUST NOT** be used in production.
{% endhint %}

### Storing references to the OpenActive Activity List

Within your application, it is advisable to store the full `@id` of an OpenActive Activity List `Concept` against each opportunity in your database, as the `prefLabel` and other properties are likely to change over time.

Your application may also store the `prefLabel` alongside the `@id` at the point of the associating an OpenActive Activity List `Concept` with an opportunity, to remove the need to reference the activity list while outputting open data. It is the responsibility of the data user to use the latest `prefLabel` when rendering the open data it receives.

### Hardcoding OpenActive Activity List references

If your booking system is restricted to a small number of different activities (e.g. [Run Together](https://data.runtogether.co.uk/) is restricted to just "Running"), it is usually better to hardcode the activity list references into your booking system.

To find the **`@id`** simply [find the relevant activity in the OpenActive Activity List](https://activity-list.openactive.io/en/basic_find.html), then scroll down to the bottom the page to view a full example JSON-LD snippet for that specific activity, such as the screenshot below. This can be included in your open data feed.

![Screenshot of full example JSON-LD snippet from OpenActive Activity List website](/files/-M5m7k26wiyON2StpsgZ)

## Rendering the OpenActive Activity List with SKOS.js

We recommend using [SKOS.js](https://www.npmjs.com/package/@openactive/skos) to implement any activity list client-side rendering, to allow your users to select an activity from a hierarchical representation of the OpenActive Activity List to associate with an opportunity.

Maintaining the hierarchy and providing a typeahead search is important as with over 600 activities, and with many activities being more general terms, using an ordinary dropdown box becomes unwieldy for the user.

### Rendering a hierarchy from the JSON-LD definition of the OpenActive Activity List

Although the use of [SKOS.js](https://www.npmjs.com/package/@openactive/skos) is recommended when reading the JSON-LD definition of the OpenActive Activity List in JavaScript, for other languages the JSON-LD may also be parsed directly.

The [JSON-LD definition](https://openactive.io/activity-list/activity-list.jsonld) of the OpenActive Activity List includes the following key properties:

| Property       | Description                                                                                                                                                                                                                                                                                              | Include in open data feed |
| -------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------- |
| `id`           | The unique ID of the Concept, which should be stored and used when referencing the Concept.                                                                                                                                                                                                              | Yes                       |
| `prefLabel`    | The primary display label for the Concept, in the English language.                                                                                                                                                                                                                                      | Yes                       |
| `altLabel`     | The alternative display labels of the Concept, in the English language. When displaying the Concept to the user it is recommended that the array of `altLabel` be appended to the `prefLabel`, using the separator `" / "`. This logic does not apply to the `prefLabel` included in the open data feed. | No                        |
| `topConceptOf` | Indicates that the Concept is at the top level of the hierarchy, when the value of this property is equal to `"https://openactive.io/activity-list"`.                                                                                                                                                    | No                        |
| `broader`      | An array of parent Concept IDs. Note this is a [polyhierarchical](https://en.wiktionary.org/wiki/polyhierarchy) list, and the same Concept may exist under multiple parents.                                                                                                                             | No                        |
| `narrower`     | An array of child Concept IDs.                                                                                                                                                                                                                                                                           | No                        |

To render a hierarchy:

1. Filter the data to return only Concepts with `topConceptOf` set to `"https://openactive.io/activity-list"`, to produce an initial list of top-level Concepts.
2. Recursively, for each Concept, lookup the `narrower` (child) Concept IDs.

### Activity List dropdown implementation example

Below is a copy-and-pastable example of a searchable hierarchical dropdown that can be used within your booking system to allow the user to select an activity from the OpenActive Activity List.

On load you may specify the **`@id`** to set the dropdown to an existing value.

On selection the dropdown provides both **`@id`** and **`prefLabel`**, which can then be stored in your database and later used within your open data feed(s).

The dropdown also provides an activity **`definition`** that may be displayed to the user for disambiguation.

See the "**Result**" tab below for a live demo.

{% embed url="<https://jsfiddle.net/nickevansuk/246d5s79/>" %}

### Our Parks: Activity List dropdown video demo

An example of the above code in the Our Parks booking system is shown in the video below.

Note "**OpenActive id**" and "**OpenActive prefLabel**" fields are displayed in the video for debugging purposes, but would ordinarily be hidden from the user.

{% embed url="<https://youtu.be/5C1A-xZtqqo>" %}

## Contribution links

It is recommended that you provide links to contribute to the OpenActive Activity List, which encourage activity providers to participate in its maintenance and curation.

Two different types of links are available:

#### Contribute to the list

For general contribution simply link to "[`https://openactive.io/activity-list/`](https://openactive.io/activity-list/)". This will take the user to a page where they can make suggestions about the activity list.

Example: [Can't find an activity? Contribute to the list](https://openactive.io/activity-list/)

#### Contribute to a specific activity

The link to contribute to a specific activity is simply the URL of the **`@id`**. This will take the user to a page specific to the activity where they can make suggestions about the activity, including updating the definition of an activity.

Example: [Contribute](https://openactive.io/activity-list#72d19892-5f55-4e9c-87b0-a5433baa49c8)

### Gladstone: Contribution links example

An example of "Contribute" links within the Gladstone leisure management system is shown below.

![Screenshot of the "Contribute" links within the Gladstone system](/files/-M5lPxZfA3vlKXgwo7Tj)


# Including geo coordinates

## Using geographic coordinates

In order to maximise the usefulness of your data, it is highly recommended that it includes `GeoCoordinates`. Many data users will not use your data unless it includes a **`latitude`** and **`longitude`** within the `geo` property of each **`Place`**.

```javascript
"location": {
  "@type": "Place",
  "url": "https://www.everyoneactive.com/centres/Middlesbrough-Sports-Village",
  "name": "Middlesbrough Sports Village",
  "description": "You can enjoy a huge range of different sports and activities at Middlesbrough Sports Village. There’s a state-of-the-art gym, a full programme of group exercise classes, indoor badminton sessions and a soft play area for kids. Outside, the Village boasts a full range of athletics facilities, including an eight-lane 400m track, a 10-lane 100m track, as well as four long jump pits. There’s also high jump, hammer throwing, javelin and pole vaulting facilities. The latest addition to the facility is a £1.6m, 250m velodrome, alongside five all-weather outdoor pitches and a skate park for BMX bikes, scooters and inline skaters.",
  "telephone": "01642 728555",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "Alan Peacock Way",
    "addressLocality": "Village East",
    "addressRegion": "Middlesbrough",
    "postalCode": "TS4 3AE",
    "addressCountry": "GB"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 54.543964,
    "longitude": -1.20978500000001
  }
}
```

## Licensing and republishing

In order to publish geographic coordinates in your open data feed, you must ensure that the source of these coordinates (usually your geocoder) permits you to republish this data under an open licence.

The [OpenCage Geocoder](https://opencagedata.com/) is an example of a geocoder that [permits such republishing](https://opencagedata.com/why-use-open-data).

The basic [Google Geocoding API](https://developers.google.com/maps/documentation/geocoding/policies) licence **does not** permit open data republishing, and does not permit including the data in any externally facing API.

## Rendering a geocoding user interface <a href="#rendering-the-openactive-activity-list-with-skos-js" id="rendering-the-openactive-activity-list-with-skos-js"></a>

Given the inaccuracy of geocoding for sports venues, we recommend using [leaflet.js](https://leafletjs.com/) (or a similar service) to implement a map to allow your users to move a pin to a specific location.

### Leaflet.js and OpenCage implementation example <a href="#activity-list-dropdown-implementation-example" id="activity-list-dropdown-implementation-example"></a>

Below is a copy-and-pastable example of a drag-and-drop map pin and geocoder, that can be used within your booking system to allow the user to enter reliable latitude and longitude data.‌

It is powered by [OpenStreetMap](https://www.openstreetmap.org/), [open data compatible geocoding](https://opencagedata.com/), and [open source libraries](https://leafletjs.com/).

On load you may specify the **`map.centerMap(lat, lng)`** to set the initial position of the map.‌

On pressing the geocode button, the geocoder provides both **`latitude`** and **`longitude`**, which can then be stored in your database and later used within your open data feed(s).‌ The map pin can also be used to adjust these values.

See the "**Result**" tab below for a live demo.

{% embed url="<https://jsfiddle.net/nickevansuk/d1gn0h87/>" %}

### Gladstone: Implementation example

An example of the map pin interface within the Gladstone leisure management system is shown below.

![Screenshot of the drag-and-drop map pin within the Gladstone system](/files/-M6_orpcphKcApkwBs7q)


# Schedules

A [`Schedule`](/data-model/types/schedule) is a representation of a recurrence rule, compatible with the [iCalendar specification](https://tools.ietf.org/html/rfc5545), designed to be extrapolated by the data user into individual occurrences.

A [`PartialSchedule`](/data-model/types/partialschedule), by contrast, **must** **not** be extrapolated by the data user, and is for information only.

## Outputting a `Schedule` to a feed

A [`Schedule`](/data-model/types/schedule) **must** be included in the `SessionSeries` feed for systems that display occurrences of a sessions directly from a recurrence rule (as opposed to first materialising them into a database).

### Complementary `ScheduledSession`s

It is recommended that a `ScheduledSession` feed be published alongside any `SessionSeries` feed that contains `Schedule`s, and that this `ScheduledSession` feed also includes `remainingAttendeeCapacity`. If implementing the Open Booking API, such a complementary feed is **required**.

When `ScheduledSession`s are included in a feed or `subEvent`, they must not include all occurrences that are generated from the recurrence rule, and instead **must only** include those events that either:

1. Have bookings associated (i.e. where `remainingAttendeeCapacity` < `maximumAttendeeCapacity`)
2. Are an exception to the recurrence rule defined in the `Schedule`.
3. Have any other properties that differ from those defined in `SessionSeries`.

Such events would need to have been materialised in a database within the booking system already, so **under no circumstances should new occurrence records be generated for the sole purpose of outputting them to an OpenActive `ScheduledSession`s feed**.

This constraint is necessary to prevent recurrence rules from creating a high volume of redundant data in its `ScheduledSession` feed. For example: if a `SessionSeries` has a recurrence rule for a weekly event with an `endDate` in 2050, only the `ScheduledSession`s that have been booked at least once or have been manually edited would appear in the `ScheduledSession` feed.

### Using templates

When such `ScheduledSession`s are included, the `Schedule` **must** also include an `idTemplate`, such as the below, which matches the pattern of the `@id` of the `ScheduledSession`s (noting the `startDate` placeholder **must** use a string format of `YYYY-MM-DDThh:mm:ssZ` (e.g. `1997-07-16T19:20:00Z`):

```javascript
"idTemplate": "https://api.example.org/session-series/123/{startDate}"
```

A `urlTemplate` may also be included in the `Schedule` using the same `startDate` placeholder.

Note that if a single `ScheduledSession` that was previously generated by a `Schedule` is rescheduled to a different start time, its original `@id` **must** be retained (which contains the original start time), to ensure that it still hides the same generated occurrence (see below), and to ensure that [Change of Logistics Notifications](https://openactive.io/open-booking-api/EditorsDraft/#change-of-logistics-notifications) are still triggered.

Also note that if a `Schedule` is updated, it must include `exceptDates` for any overlaps with any  explicitly defined occurrences created from previous `Schedule`s, as they might have been rescheduled based on a previous `@id`.

## Processing a `Schedule` found in a feed

In order to process a [`Schedule`](/data-model/types/schedule) together with complimentary `ScheduledSession`s, the data user must do the following:

1. Generate all occurrences from a `Schedule` in the future, taking into account the `exceptDate` property.
   * Take the `scheduledEventType`, property and use it for the `@type` property of each occurrence.
   * Use an [RRULE](https://icalendar.org/iCalendar-RFC-5545/3-8-5-3-recurrence-rule.html) library to calculate the `startDate` of the occurrences based on the contents of the `Schedule`. `DTSTART` must be determined by using the `startDate`, `startTime`, and `scheduleTimezone` of the `Schedule` together, for example:
   * ```
     {
       "@type": "Schedule",
       "startDate": "1997-09-02",
       "startTime": "09:00",
       "endTime": "10:00",
       "duration": "PT1H",
       "scheduleTimezone": "America/New_York",
       "repeatFrequency": "P1D",
       "repeatCount": 10
     }
     ```

     ```
     DTSTART;TZID=America/New_York:19970902T090000
     RRULE:FREQ=DAILY;COUNT=10
     ```
   * For the avoidance of doubt: the `startDate` and `startTime` of the `Schedule` are in "local time" based on the `scheduleTimezone`.
   * Use the `duration` of the `Schedule` to calculate the `endDate` of each occurrence.
   * Render the calculated `startDate` and `endDate` for each occurrence to UTC using a string format of `YYYY-MM-DDThh:mm:ssZ` (e.g. `1997-07-16T19:20:00Z`) for placeholder replacement.
   * Take the `idTemplate` property (if provided) and substitute the `startDate` placeholder with the calculated string value of `startDate` (and do the same with `endDate`). Use the resulting string as the value of the `@id` property for the occurrence.
   * Take the `urlTemplate` property (if provided) and substitute the `startDate` placeholder with the calculated string value of `startDate` (and do the same with `endDate`). Use the resulting string as the value of the `url` property for the occurrence.
2. To account for any changes in the `Schedule` since the last time it was updated, store the generated occurrences as follows:
   1. Upsert all generated occurrences, marking them with the `modified` RPDE timestamp associated with the `Schedule`. Ensure that any explicitly defined occurrences that may have been generated from a previous run of Step 3 (below) are not overwritten by this step.
   2. Delete all generated occurrences that do not have an older modified RPDE timestamp associated with the Schedule.
3. Ensure the generated occurrences are hidden by any matching explicitly defined occurrences (e.g.`ScheduledSession`s found in a `subEvent` or `ScheduledSession` feed), using the explicitly defined occurrence in its entirety based on its `@id`.

## Example

Extract from `SessionSeries` feed:

```javascript
{
  "@type": "SessionSeries",
  ...
  "eventSchedule": [
    {
      "@type": "Schedule",
      "repeatFrequency": "P1W",
      "startDate": "2018-03-01",
      "endDate": "2018-03-29",
      "startTime": "08:30",
      "endTime": "09:30",
      "byDay": [
        "https://schema.org/Thursday"
      ],
      "duration": "PT1H",
      "exceptDate": [
        "2018-03-15T08:30:00Z",
      ],
      "scheduleTimezone": "Europe/London",
      "scheduledEventType": "ScheduledSession",
      "idTemplate": "https://api.example.org/session-series/1402CBP20150217/{startDate}",
      "urlTemplate": "https://example.org/session-series/1402CBP20150217/{startDate}"
    }
  ]
}
```

Extract from `ScheduledSession` feed:

```javascript
{
  "state": "updated",
  "kind": "ScheduledSession",
  "id": "C5EE1E55-2DE6-44F7-A865-42F268A82C63",
  "modified": 1521565719,
  "data": {
    "@context": "https://openactive.io/",
    "@type": "ScheduledSession",
    "@id": "https://api.example.org/session-series/1402CBP20150217/2018-03-15T10:30:00Z",
    "identifier": "C5EE1E55-2DE6-44F7-A865-42F268A82C63",
    "superEvent": "https://example.com/api/session-series/1402CBP20150217",
    "startDate": "2018-03-15T10:30:00Z",
    "endDate": "2018-03-15T11:30:00Z",
    "duration": "PT1H",
    "eventStatus": "https://schema.org/EventScheduled",
    "maximumAttendeeCapacity": 10,
    "remainingAttendeeCapacity": 10,
    "url": "https://example.org/session-series/1402CBP20150217/2018-03-15T10:30:00Z"
  }
},
{
  "state": "updated",
  "kind": "ScheduledSession",
  "id": "C5EE1E55-2DE6-44F7-A865-42F268A82C64",
  "modified": 1521565719,
  "data": {
    "@context": "https://openactive.io/",
    "@type": "ScheduledSession",
    "@id": "https://api.example.org/session-series/1402CBP20150217/2018-03-22T08:30:00Z",
    "identifier": "C5EE1E55-2DE6-44F7-A865-42F268A82C64",
    "superEvent": "https://example.com/api/session-series/1402CBP20150217",
    "startDate": "2018-03-22T08:30:00Z",
    "endDate": "2018-03-22T09:30:00Z",
    "duration": "PT1H",
    "eventStatus": "https://schema.org/EventScheduled",
    "maximumAttendeeCapacity": 10,
    "remainingAttendeeCapacity": 3,
    "url": "https://example.org/session-series/1402CBP20150217/2018-03-22T08:30:00Z"
  }
}
```

Illustration of resulting opportunities presented to the end user:

![](/files/-M8LqjS5ZagZe7W_zwr8)


# Dataset Sites

Dataset Sites help data users to find your data, and interact with you if they find any issues. They are both human and machine readable, and allow your data to appear everywhere from the [OpenActive Status Page](https://status.openactive.io) to the [Google Dataset Search](https://toolbox.google.com/datasetsearch/search?query=openactive).

Example dataset sites: [GLL](http://data.better.org.uk), [Fusion Lifestyle](https://opendata.fusion-lifestyle.com/OpenActive)

## Overview

* In order for data users to find your data feeds, and for your dataset to be featured on the [OpenActive status page](https://status.openactive.io/), you must deploy the [Dataset Site Template](/publishing-data/dataset-sites#step-1-build-dataset-sites-into-your-system) (a simple mustache template) within your codebase.
* For booking systems or bespoke websites with a **single database** and one set of OpenActive data feeds, a single Dataset Site is likely to be sufficient for your organisation. This can be achieved by simply hard-coding the JSON passed into the mustache template.
* If you are a booking system with **multiple databases**, each of which has their own set of OpenActive data feeds, a Dataset Site is required for each customer. This can be achieved using customer configuration to drive the mustache template.
* You need to create a [GitHub issues board](/publishing-data/dataset-sites#step-2-github-issues-board-creation) for each Dataset Site.
* If you are publishing multiple dataset sites you also need to provide a [Data Catalog](/publishing-data/dataset-sites#step-5-providing-a-data-catalog-multiple-databases-only).
* Data publishers should be encouraged to provide links to their Dataset Site from their own website.

### What is a Dataset Site?

* A web page that can be referenced when discussing the dataset.
* A human and machine readable licence associated with the data (the Dataset Site contains invisible metadata which allows its details to be read automatically).
* A human and machine readable rights statement to specify how dataset users (innovators who want to build on top of/use your data) should attribute your data.
* An accessible "single point of truth" that explains where the data can be found.
* Links to documentation relating to the format of the data, including the specifications it follows, and the data fields it contains.
* A place where the community can contribute with comments, and raise issues - all Dataset Sites are linked to a GitHub issues board (e.g. [this one](https://github.com/gll-better/opendata/issues)) that allows data users to raise issues in the open.

{% hint style="warning" %}
A machine-readable dataset site is essential when publishing open data, and every dataset published within the OpenActive community to date has had one. However, the specification that describes a standard OpenActive dataset site is still yet to be formally defined, and has instead evolved as a de facto standard.

As such, this documentation is still based on a [draft model](/data-model/types/dataset) that is designed to inform the OpenActive specification work with implementation feedback. It is mostly stable and has been largely unchanged for 2 years. However, it is still **subject to change**, as the [Dataset API Discovery specification](https://www.openactive.io/dataset-api-discovery/EditorsDraft/) is yet to be formally released, and feedback is very welcome, both within the relevant OpenActive [repository](https://github.com/openactive/dataset-api-discovery/issues/) and on the related schema.org [PR](https://github.com/schemaorg/schemaorg/pull/2635) and [issue](https://github.com/schemaorg/schemaorg/issues/1423).

To minimise any uplift work required to conform to the formal specification when it is released, it is **recommended** that you use [one of the libraries below](/publishing-data/dataset-sites#net-php-and-ruby-libraries) where possible. These libraries will be updated to meet the latest specification, and when used in their simplest mode ([RenderSimpleDatasetSite](https://github.com/openactive/OpenActive.DatasetSite.NET/#simple-implementation), [renderSimpleDatasetSite](https://packagist.org/packages/openactive/dataset-site#user-content-rendersimpledatasetsitesettings-supportedfeedtypes) or [TemplateRenderer.new](https://www.rubydoc.info/gems/openactive-dataset_site/0.1.1#Usage)) will only require a simple dependency update from you to do so.
{% endhint %}

## Step 1: Build Dataset Sites into your system

The Dataset Site Template is very easy to use and quick to apply - it's essentially one of two mustache templates and an associated JSON structure. It is designed to work with minimal effort with an extremely [wide range of platforms and languages](https://mustache.github.io/).

It works across all browsers, and includes fully compliant DCAT and schema.org machine-readable metadata to ensure it is compatible with [Google Dataset Search](https://toolbox.google.com/datasetsearch/search?query=openactive).

The[ dataset site template repository](https://github.com/openactive/dataset-site-template) contains two mustache template options for creating an OpenActive dataset site.

### Template hosting options

There are two templates available, depending on your use case.

#### Option 1: Single-file template

The [Dataset Site Single-file Template](https://openactive.io/dataset-site-template/datasetsite.mustache) is a self-contained mustache template of an HTML page that contains embedded CSS, two embedded images, and fonts loaded via the CDNs of [Google Fonts](https://fonts.google.com/specimen/Source+Sans+Pro) and [cdnjs (powered by Cloudflare)](https://cdnjs.com/libraries/font-awesome/4.7.0).

1. Use one of the options below to dynamically render the 'single-file template' and output the result at an endpoint, for example `https://example.com/openactive/`.

#### Option 2: CSP compatible template with separate self-hosted static assets

The [Dataset Site CSP Compatible Template](https://openactive.io/dataset-site-template/datasetsite-csp.mustache) is a mustache template of an HTML page that references [self-hosted static assets](https://openactive.io/dataset-site-template/datasetsite-csp.static.zip).  This template must be rendered using a reference to its stylesheet at its self-hosted location. This is useful for implementations that have a [Content Security Policy (CSP)](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP) in place.

1. Host the [CSP compatible static assets](https://openactive.io/dataset-site-template/datasetsite-csp.static.zip) somewhere on the same domain as your dataset site.
2. Use one of the options below to dynamically render the 'CSP compatible template' ensuring that the `"staticAssetsPathUrl"` references the location of your self-hosted assets, without a trailing slash (`/`) (this can be a relative or absolute URL).
3. Output the result at an endpoint, for example `https://example.com/openactive/`.

### .NET, PHP, Ruby and JavaScript/TypeScript Libraries

Several libraries are available that make it really easy to render either dataset site template, accepting basic settings to configure your dataset site automatically.

The table below lists the available OpenActive libraries:

| Language                | Open Opportunity Data Feeds                                                  | Dataset Site                                                                                                                              |
| ----------------------- | ---------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| .NET                    | [OpenActive.NET](https://www.nuget.org/packages/OpenActive.NET/)             | [OpenActive.DatasetSite.NET](https://www.nuget.org/packages/OpenActive.DatasetSite.NET/)                                                  |
| PHP                     | [openactive/models](https://packagist.org/packages/openactive/models)        | [openactive/dataset-site](https://packagist.org/packages/openactive/dataset-site)                                                         |
| Ruby                    | [openactive](https://rubygems.org/gems/openactive)                           | [openactive-dataset\_site](https://rubygems.org/gems/openactive-dataset_site)                                                             |
| JavaScript / TypeScript | [@openactive/models-ts](https://www.npmjs.com/package/@openactive/models-ts) | [@openactive/dataset-site-template](https://www.npmjs.com/package/@openactive/dataset-site-template)                                      |
| CLI                     | -                                                                            | [npx @openative/dataset-site-template](https://www.npmjs.com/package/@openactive/dataset-site-template#cli-static-dataset-site-generator) |

### Other Languages

A basic example of following the below render steps can be found [here](https://github.com/openactive/dataset-site-template-example-dotnet/blob/master/DatasetSiteTemplateExample/Program.cs), and can be readily ported into other languages. An explanation of how this works is included below.

The [Dataset Site Template](https://github.com/openactive/dataset-site-template/) is one of two mustache templates of an HTML page. It works across all browsers, and includes fully compliant DCAT and schema.org machine-readable metadata to ensure it is compatible with [Google Dataset Search](https://toolbox.google.com/datasetsearch/search?query=openactive).

Steps to render the template:

1. Construct the JSON-LD to match the format found in [this example](https://validator.openactive.io/?url=https%3A%2F%2Fopenactive.io%2Fdataset-site-template%2Fexample.jsonld\&version=2.x\&validationMode=DatasetSite), following [this documentation](/data-model/types/dataset).
2. Find a [mustache library](https://mustache.github.io/) for your platform or language.
3. Write code to do the following:
   * Stringify the input JSON, and place the contents of the string within the `"jsonld"` property at the root of the JSON itself (i.e. serialised JSON embedded in the original deserialised object). This is important as it is used to populate the machine-readable `<script type="application/ld+json">` tag within the generated HTML - view the source of [this page](https://reference-implementation.openactive.io/OpenActive) to see an example.
   * If using the [CSP compatible mustache template](#option-2-csp-compatible-template-with-separate-static-files), set the `"staticAssetsPathUrl"` property at the root of the JSON to the relative URL of the directory containing your self-hosted assets, without a trailing slash (`/`). Note this must take place **after** the `"jsonld"` property is set above so that this property is not included in the machine-readable JSON-LD.
   * Render the resulting JSON with the [single file mustache template](https://openactive.io/dataset-site-template/datasetsite.mustache) or [CSP compatible mustache template](#option-2-csp-compatible-template-with-separate-static-files), to output the HTML of the dataset site.
   * Keep in mind that OpenActive will be providing updates to the mustache templates in the future, so it is best to write code that anticipates this.

#### JavaScript Prototype

The [JSFiddle](https://jsfiddle.net/nickevansuk/msby0vqg/) below **simply demonstrates** the Dataset Site Template render steps outlined above using plain JavaScript - it is **not intended for protection use**.

{% hint style="danger" %}
Please note **this is only an example to demonstrate the logic and is not intended for production use**. The mustache template **must** be **copied locally** and **rendered server-side** for production use, for security (to prevent XSS attacks), and as its primary purposes are SEO and machine readability.
{% endhint %}

Click the **Result** tab below to see the result of a template render.

{% embed url="<https://jsfiddle.net/nickevansuk/msby0vqg/>" %}

## Step 2: Personalising the Dataset Site

The Dataset Site Template is designed to carry the customer's brand with minimal configuration.

### Single database

For booking systems or bespoke websites with a **single database** and one set of OpenActive data feeds, a **single Dataset Site** is likely to be sufficient for your organisation. This can be achieved by simply hard-coding the JSON passed into the mustache template (see [documentation](/data-model/types/dataset) and [example](https://validator.openactive.io/?url=https%3A%2F%2Fopenactive.io%2Fdataset-site-template%2Fexample.jsonld\&version=2.x\&validationMode=DatasetSite)), or hard-coding the settings passed to the library (see the [relevant library documentation](/publishing-data/dataset-sites#net-php-and-ruby-libraries)).

Note a single Dataset Site must only be used when all feeds it includes are part of the same dataset - for example a SessionSeries feed and ScheduledSession feed that together constitute the dataset of all providers in the booking system. Where multiple feeds exist that represent distinct datasets (e.g. SessionSeries feed for Provider A, SessionSeries feed for Provider B), they must be referenced from distinct Dataset Sites, which can be constructed as per the instructions in [Multiple databases](/publishing-data/dataset-sites#multiple-databases) below.

### Multiple databases

For large booking systems with **multiple databases**, usually a separate database for each customer, a **separate Dataset Site** may be created for each database. The list below illustrates the minimal number of configurable properties that can be used to generate the whole dataset site in a way that is personalised to each customer. See the example [here](https://github.com/openactive/OpenActive.DatasetSite.NET#model-level-customisation) for how these map into the JSON data structure, for your reference - in practice the [libraries](/publishing-data/dataset-sites#net-php-and-ruby-libraries) supplied above [take care of this mapping for you](https://github.com/openactive/OpenActive.DatasetSite.NET#simple-implementation).

* `organisationName` e.g. "Better",
* `datasetSiteUrl` e.g. "<https://halo-odi.legendonlineservices.co.uk/openactive/>",
* `datasetDiscussionUrl` e.g. "<https://github.com/gll-better/opendata>",
* `datasetDocumentationUrl` e.g. "<https://permalink.openactive.io/dataset-site/open-data-documentation>"  (which should be used if no system-specific documentation is available)
* `organisationLegalEntity` e.g. "GLL"
* `organisationPlainTextDescription` e.g. "Established in 1993, GLL is the largest UK-based charitable social enterprise delivering leisure, health and community services. Under the consumer facing brand Better, we operate 258 public Sports and Leisure facilities, 88 libraries, 10 children’s centres and 5 adventure playgrounds in partnership with 50 local councils, public agencies and sporting organisations. Better leisure facilities enjoy 46 million visitors a year and have more than 650,000 members."
* `organisationEmail` e.g. "<info@better.org.uk>"
* `organisationUrl` e.g. "<https://www.better.org.uk/>",
* `organisationLogoUrl` e.g. "<http://data.better.org.uk/images/logo.png>"
* `backgroundImageUrl` e.g. "<https://data.better.org.uk/images/bg.jpg>"
* `openDataFeedBaseUrl` e.g. "<https://halo-odi.legendonlineservices.co.uk/api/>"
* `openBookingAPIBaseUrl` e.g. "<https://reference-implementation.openactive.io/api/openbooking>"&#x20;
* `openBookingAPIAuthenticationAuthorityUrl` e.g. "<https://auth.reference-implementation.openactive.io>"
* `openBookingAPIDocumentationUrl` e.g. "<https://permalink.openactive.io/dataset-site/open-booking-api-documentation>" (which should be used if no system-specific documentation is available)
* `openBookingAPITermsOfServiceUrl` e.g. "<https://example.com/api-terms>"
* `openBookingAPIRegistrationUrl` e.g. "<https://example.com/api-landing-page>"

We suggest if you can provide the customer with a means of customising the logo and background image (e.g. via uploading an image to the [cloudinary.com](https://cloudinary.com) CDN, using [their widget](https://jsfiddle.net/nickevansuk/ugpnxmby/), which is free at low volume), these have the largest effect on the brand feel of the page.

Although the customer will likely be able to fill in most properties specific to them, there are two where they will require guidance:

* `datasetDiscussionUrl` - the URL of the [GitHub issues board](/publishing-data/dataset-sites#step-2-github-issues-board-creation) for the dataset. If your customers are sufficiently large, you will need to create a GitHub issues board for each customer, either [manually](/publishing-data/dataset-sites#manual-issues-board-creation) or [automatically](/publishing-data/dataset-sites#automatic-issues-board-creation). See [here](https://github.com/gladstonemrm) for an example of Gladstone's GitHub organization containing a GitHub issues board for each customer.
* `datasetDocumentationUrl` - as a booking system you should provide at least a single page on your website that explains the OpenActive feeds. Each customer may have the option of providing their own documentation for their dataset site that links to this, or just linking to your documentation direct. If you do not have your own documentation page, you can just link to "<https://developer.openactive.io/>".

## Step 3: Open Booking API configuration

For Open Booking API implementations the following settings warrant additional consideration.

### Registration Landing Page

{% hint style="info" %}
This is set by `openBookingAPIRegistrationUrl` (in library settings) or `accessService.landingPage` (in raw Dataset JSON-LD) &#x20;
{% endhint %}

This must link to a page where developers can request access to your Open Booking API, ideally both to a sandbox and live environment.

{% hint style="info" %}
In addition to access to your live environment, this page should also include a means of accessing a sandbox to support testing of your Open Booking APIs, to ensure that developers have the freedom to test their code in a safe environment. Such a sandbox should include its own Dataset Site akin to that of the live environment.
{% endhint %}

Where the dataset site represents data from multiple Sellers ("multi-seller systems"), the Booking System must offer a mechanism for Broker to provision a new Client ID and Client Secret (see [multi-seller authentication](https://openactive.io/open-booking-api/EditorsDraft/1.0CR3/#openid-connect-booking-partner-authentication-for-multiple-seller-systems)). It is recommended that such a process is automated, with a form similar to the below:

> **Open Booking API Access Request Form (Multi-seller systems)**
>
> Name: \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
>
> Email: \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
>
> Organisation name: \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
>
> ☑️ I understand our data protection obligations, and our technical obligations as a Broker as specified in the [Open Booking API](https://openactive.io/open-booking-api/EditorsDraft/1.0CR3) specification
>
> ☑️ Our organisation holds a valid [Cyber Essentials](https://www.gov.uk/government/publications/cyber-essentials-scheme-overview) (or equivalent) certification and we understand our information security obligations
>
> ☑️ Our organisation has already successfully integrated with the [OpenActive Reference Implementation](https://reference-implementation.openactive.io/), and understands how an OpenActive integration works
>
> ☑️ I agree to integrate with Sellers only with their explicit consent as granted via OpenID Connect, and understand that access to the Booking System does not guarantee access to Sellers, which is at their own individual discretion.
>
> ☑️ I understand that payment reconciliation must be agreed with each seller individually.

Where the dataset site represents data from only a single Seller ("single-seller systems"), the Seller must offer a mechanism for Broker to request a new API key. This could be as simple as a Google Form or TypeForm, or could also be automated, with a form similar to the below:

> **Open Booking API Access Request Form (Single-seller systems)**
>
> Name: \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
>
> Email: \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
>
> Phone number: \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
>
> Organisation name: \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
>
> Use case and business case for integration: \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
>
> ☑️ I understand our data protection obligations, and our technical obligations as a Broker as specified in the [Open Booking API](https://openactive.io/open-booking-api/EditorsDraft/1.0CR3) specification
>
> ☑️ Our organisation holds a valid [Cyber Essentials](https://www.gov.uk/government/publications/cyber-essentials-scheme-overview) (or equivalent) certification and we understand our information security obligations
>
> ☑️ Our organisation has already successfully integrated with the [OpenActive Reference Implementation](https://reference-implementation.openactive.io/), and understands how an OpenActive integration works

### Terms of Service

{% hint style="info" %}
This is set by `openBookingAPITermsOfServiceUrl` (in library settings) or `accessService.termsOfService` (in raw Dataset JSON-LD)
{% endhint %}

It is important that the terms and conditions and usage restrictions that apply to use of your Open Booking API are well documented so that third-party developers can easily integrate with your platform and understand their rights and responsibilities.

If you have any standard terms of service or usage restrictions that apply to your API, ensure that these are easily accessible from the URL referenced by this property. If not, ensure that this property is omitted entirely.

### Test Suite Certificate

{% hint style="info" %}
This is set by `testSuiteCertificateUrl` (in library settings) or `bookingService.hasCredential` (in raw Dataset JSON-LD)
{% endhint %}

This must be a link to a self-hosted OpenActive Test Suite Certificate that has been generated for the **specific software version** of the Booking System to which the dataset site is associated.

For cloud-based SaaS systems that operate a single version, this is best achieved by running the [OpenActive Test Suite as part of any continuous integration process](/open-booking-api/test-suite#continuous-integration), and deploying the resulting certificate as part of any existing deployment process (e.g. via [GitHub CI](https://github.com/openactive/OpenActive.Server.NET/blob/b66ba4172f4d839866729808ada30d8b9bafce54/.github/workflows/openactive-test-suite.yml#L105-L112)). `platformSoftwareVersion` in library settings, or `bookingService.softwareVersion` in raw Dataset JSON-LD should be omitted in this case.

For on-premise systems or systems with separately installed instances, this can be achieved by generating and hosting a new certificate for each version released, with the certificate's path based on the software version. The correct version of the certificate can then be referenced within the dataset site based on the software version of the instance. In this case, the version number should also be included in `platformSoftwareVersion` in library settings, or `bookingService.softwareVersion` in Dataset JSON.

## Step 4: GitHub Issues Board creation

The `discussionUrl` is the url of the GitHub issues board for that specific dataset site.

We recommend that you create each GitHub repository (that will include a GitHub Issues Board) within your own GitHub organisation either [manually](/publishing-data/dataset-sites#manually) or via an [API call](/publishing-data/dataset-sites#automatically).

If you have:

* **A Single database**, you need only create one GitHub Repository (that will include a "GitHub Issues Board") within your GitHub Organisation. It is recommended that this GitHub repository is named `openactive`.
* **Multiple databases**, you should create one GitHub Repository (that will include a "GitHub Issues Board") *for each customer*. It is recommended that the names of these repositories correspond with the names of the customers.

### Helpdesk integration

If you "follow" these GitHub repositories using a new GitHub account created with your support e-mail address then you will receive notifications for each query, and be able to reply via e-mail to the notifications from your support e-mail address - these replies then appear directly in GitHub. Note that any administrator accounts automatically follow newly created GitHub repositories within your organisation.

### GitHub Organisation Creation

You must first [create a parent GitHub organisation](https://help.github.com/en/articles/creating-a-new-organization-from-scratch) on the free tier:

* For booking systems we recommend naming the parent GitHub organisation after your own organisation
* For agencies or in-house tech teams we recommend naming parent GitHub organisation after your data publishing organisation.

### Manual GitHub Repository / Issues Board Creation

A guide for creating a new GitHub repository for each customer can be found below.

{% embed url="<https://docs.google.com/document/d/1GO4HLYgrwpXH_qxVuaAWXw_HIr2Hn4KB7cl973Q1M4M/edit>" %}

### Automatic GitHub Repository / Issues Board Creation

The GitHub API provides a mechanism to [automatically create GitHub repositories](https://developer.github.com/v3/repos/#create). The recommended properties for a new repository are included below:

```javascript
{
  "name": "AshfordLeisureTrust",
  "description": "Issues relating to open data from Ashford Leisure Trust",
  "homepage": "https://ashfordleisuretrust.leisurecloud.net/OpenActive/",
  "private": false,
  "has_issues": true,
  "has_projects": false,
  "has_wiki": false,
  "auto_init": false
}
```

## Step 5: Validating your Dataset Site

Use the [validator](https://validator.openactive.io/?url=https%3A%2F%2Fopenactive.io%2Fdataset-site-template%2Fexample.jsonld\&version=2.x\&validationMode=DatasetSite) to check that the JSON-LD within your Dataset Site is conformant, by using the **Load URL** feature in the menu to load your **Dataset Site URL**, while in the "Dataset Sites" mode. The validator will automatically extract the JSON-LD from your Dataset Site's HTML and validate it.

{% embed url="<https://validator.openactive.io/?url=https://openactive.io/dataset-site-template/example.jsonld&validationMode=DatasetSite&version=2.x>" %}

## Step 6: Providing a Data Catalog (multiple databases only)

For booking systems with **multiple databases**, a Data Catalog must also be provided to allow the many Dataset Sites that are created to be easily indexed by the [OpenActive Status Page](https://status.openactive.io) and other data users.

A Data Catalog is very simply an array of the URLs of all your Dataset Sites (the `dataset` array), presented within a `DataCatalog` wrapper following a [specific format](/data-model/types/datacatalog). An example of a live Data Catalog from the Gladstone system can be found [here](https://opendata.leisurecloud.live/api/datacatalog), and another example [here](https://validator.openactive.io/?url=https%3A%2F%2Fopenactive.io%2Fdata-catalogs%2Fsingular.jsonld\&version=2.x\&validationMode=DataCatalog).

Please use the [validator](https://validator.openactive.io/?url=https%3A%2F%2Fopenactive.io%2Fdata-catalogs%2Fsingular.jsonld\&version=2.x\&validationMode=DataCatalog) to check that your `DataCatalog` is conformant, using the "Data Catalog" mode.

## Step 7: Adding your Dataset Site or Data Catalog to the OpenActive Data Catalog Collection

OpenActive Data Catalogs provide a mechanism for registering OpenActive Datasite Sites so that they can be [discovered and harvested](https://www.openactive.io/data-catalogs/) by data users.

### Single database

If you have created a new Dataset Site, simply create a [Pull Request for the OpenActive Data Catalog for Singular Datasets](https://github.com/openactive/data-catalogs/edit/master/singular.jsonld) and add your Dataset Site's production URL to the `dataset` array.

The pull request will trigger GitHub Actions to run the OpenActive Test Suite to validate the live feeds within dataset. OpenActive Test Suite validation must pass before the PR can be merged.

To force the validation to re-run, please submit an empty commit to the PR:

```
git commit --allow-empty -m "trigger GitHub actions"
git push
```

The OpenActive Test Suite can be used to run the same test locally, [as shown here](/publishing-data/data-feeds/testing-feeds#openactive-test-suite).&#x20;

### Multiple databases

If you have created a new Data Catalog that links to your Dataset Sites, simply create a [Pull Request for the OpenActive Data Catalog Collection](https://github.com/openactive/data-catalogs/edit/master/data-catalog-collection.jsonld) and add your Data Catalog's production URL to the `hasPart` array.


# Virtual Events

Virtual Events are opportunities that are accessible remotely in real-time.

The **`eventAttendanceMode`** property is used to indicate that an opportunity is available to attend online. It can be applied to the existing [opportunity types](/data-model/data-model-overview) for [`SessionSeries`](/data-model/types/sessionseries), [`HeadlineEvent`](/data-model/types/headlineevent), [`Event`](/data-model/types/event), [`CourseInstance`](/data-model/types/courseinstance) as part of **existing RPDE feeds for those types**.

Although in most cases a Virtual Event will be a "Livestream" event - where an instructor live streams a video of themselves or their class - other types of virtual events exist. For example, using augmented reality or virtual reality. Such alternative forms of media will be accounted for in the future with further properties in addition to those listed below.

For the sake of speed and external consistency during the COVID-19 Pandemic, in the short term, the word “Livestream” or "Live" is recommended within user interfaces to represent all Virtual Events. However, implementers should be aware that properties introduced in the future may necessitate the use of more specific language to correctly represent events.

{% hint style="warning" %}
Online classes and events are part of an [ongoing discussion](https://github.com/openactive/modelling-opportunity-data/issues/71) that has been [accelerated](https://w3c.openactive.io/meetings/2020-03-25-virtual-events) 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](https://github.com/openactive/modelling-opportunity-data/labels/virtual%20events) with any thoughts and feedback from your implementation.
{% endhint %}

## Implementation guidance

In order to upgrade your booking or listing system to support virtual events, consider implementing the following properties. The [OpenActive libraries](/publishing-data/data-feeds/implementing-rpde-feeds#net-php-and-ruby-libraries), [types reference documentation](/data-model/types#event-types-also-used-for-virtual-events), and [validator](http://validator.openactive.io/) have been updated to support these properties.

{% hint style="info" %}
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.
{% endhint %}

### `eventAttendanceMode` ([#225](https://github.com/openactive/modelling-opportunity-data/issues/225))

#### **Definition**

Whether an event occurs online, offline, or a mix of both.

#### **Why implement this property?**

This property is the **required** for a minimal implementation of virtual events.

#### **Values**

`eventAttendanceMode` must have one of the following values:

* `https://schema.org/MixedEventAttendanceMode`
* `https://schema.org/OfflineEventAttendanceMode`
* `https://schema.org/OnlineEventAttendanceMode`

If `eventAttendanceMode` not provided it is must be assumed to be `https://schema.org/OfflineEventAttendanceMode` for backwards compatibility.

If `eventAttendanceMode` is set to `https://schema.org/OnlineEventAttendanceMode`, `location` **MUST NOT** be provided for backwards compatibility, in order to ensure that existing data users do not misrepresent virtual classes as physical ones. See the property [`beta:affiliatedLocation`](/publishing-data/virtual-events#beta-affiliatedlocation-227) below for an alternative.

#### Example

```javascript
{
  "@type": "SessionSeries",
  ...
  "eventAttendanceMode": "https://schema.org/OnlineEventAttendanceMode"
  ...
}
```

### `beta:affiliatedLocation` ([#227](https://github.com/openactive/modelling-opportunity-data/issues/227))

#### **Definition**

The physical location affiliated with the virtual event, for example the original location of the event before it was moved online.

#### **Why implement this property?**

This property allows data users to display only virtual events that would usually be run from a local location, for those wishing to promote "local faces in local places" as part of the COVID-19 efforts to provide familiarity to those under lockdown.

#### **Values**

The property is identical to the existing `location` property, requiring a `Place` with either an `address` or a `geo`, or both.

`beta:affiliatedLocation` may only be present when `eventAttendanceMode` is set to `https://schema.org/OnlineEventAttendanceMode`.

#### Example

```javascript
{
 "@type": "SessionSeries",
 ...
  "beta:affiliatedLocation": {
    "@type": "Place",
    "name": "Middlesbrough Sports Village",
    "address": {
      "@type": "PostalAddress",
      "streetAddress": "Alan Peacock Way",
      "addressLocality": "Village East",
      "addressRegion": "Middlesbrough",
      "postalCode": "TS4 3AE",
      "addressCountry": "GB"
    },
    "geo": {
      "@type": "GeoCoordinates",
      "latitude": 54.543964,
      "longitude": -1.20978500000001
    }
  },
  ...
}
```

### `beta:isInteractivityPreferred` ([#230](https://github.com/openactive/modelling-opportunity-data/issues/230))

**Definition**

A property that indicates whether the virtual event is interactive (e.g. Zoom with participant microphones and cameras on), or is just a one-way broadcast (e.g. Facebook Live, Instagram Live, Zoom with participant microphones and cameras off).

#### **Why implement this property?**

This property allows applications to present a filter for "interactive classes", for those users who prefer instructors who engage with their audience. This is a key differentiator for smaller classes that will likely benefit most from being published as open data, as activity providers who use Instagram or Facebook Live already have a large audience.

#### **Values**

`beta:isInteractivityPreferred` is a boolean, and so may have the values of `true`, `false` or be left unspecified. If unspecified, it is assumed that the value is unknown.

The existing `attendeeInstruction` and `description` properties may be used for activity providers to provide further clarification about interactivity preferences.

Additionally, this may optionally be combined with the boolean `beta:isVirtuallyCoached` ([#71](https://github.com/openactive/modelling-opportunity-data/issues/71)) for the cases where the virtual class instruction is pre-recorded - e.g. for the common use case where Zoom is used for a group of participants to share in a pre-recorded class. If `beta:isVirtuallyCoached` is unspecified, it is assumed to be `false`.

`beta:isInteractivityPreferred` **must not** be present when `eventAttendanceMode` is set to `https://schema.org/OfflineEventAttendanceMode` or is unspecified.

#### **Example**

```javascript
{
 "@type": "SessionSeries",
 ...
 "beta:isInteractivityPreferred": true,
 "description": "... We get together with others in the village weekly to follow a Yoga video together on Zoom. ...",
 "attendeeInstruction": "... We encourage you to switch your camera on to feel part of the community. ...",
 "beta:isVirtuallyCoached": true
 ...
}
```

### `beta:participantSuppliedEquipment` ([#229](https://github.com/openactive/modelling-opportunity-data/issues/229))

**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 for an online event, or to bring with them to an offline event. This helps first-time participants find classes they can easily attend.

#### **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

&#x20;The property is applicable to online, offline and mixed events.

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

#### **Example**

```javascript
{
 "@type": "SessionSeries",
 ...
 "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. ...",
 ...
}
```

### `maximumVirtualAttendeeCapacity` ([#226](https://github.com/openactive/modelling-opportunity-data/issues/226))

**Definition**

Indicates the maximum number of connections to a shared virtual space.

#### **Why implement this property?**

This property allows applications to present a filter for "class size", for those users who are interested in attending more intimate classes.

#### **Values**

`maximumVirtualAttendeeCapacity` must be an integer.

The property can be set at either the `SessionSeries`, `ScheduledSession`or `Event` level.

`maximumVirtualAttendeeCapacity` **must not** be present when `eventAttendanceMode` is set to `https://schema.org/OfflineEventAttendanceMode` or is unspecified.

#### **Example**

```javascript
{
 "@type": "SessionSeries",
 ...
 "maximumVirtualAttendeeCapacity": 20,
 ...
}
```

### `beta:virtualLocation` ([#224](https://github.com/openactive/modelling-opportunity-data/issues/224))

**Definition**

Describes a means of electronic access to a shared virtual space.

#### **Why implement this property?**

This property allows participants to jump straight into the virtual class from any application, and for applications to show "sessions happening right now" that they can access for free, for example.

#### **Values**

The value of `beta:virtualLocation`, must be a `VirtualLocation` object, which must include at least the `url`, `name`, or `description` property. The `url` property is recommended for simple implementations.

The `url` must provide direct access to participate in a free virtual event, which could be used for e.g. a "View Livestream" button.

Note where the virtual location is private (e.g. behind a paywall), the `VirtualLocation` `url` should **not** be included.

From the existing [Modelling Opportunity Data specification](https://www.openactive.io/modelling-opportunity-data/), the `Offer` `url` can be used for the link to purchase access or registration, and the `Event` `url` can signpost to a general page about the session.

`beta:virtualLocation` **must not** be present when `eventAttendanceMode` is set to `https://schema.org/OfflineEventAttendanceMode` or is unspecified.

The property can be set at the `SessionSeries`, `ScheduledSession` or `Event` level.

#### **Example**

```javascript
{
 "@type": "SessionSeries",
 ...
 "beta:virtualLocation": {
   "@type": "VirtualLocation",
   "name": "Zoom Video Chat",
   "url": "https://zoom.us/j/1234567890/signup",
   "description": "Please log into Zoom a few minutes before the event, and mute your mic while you wait for the session to start"
 }
 ...
}
```

### `level` for "Beginner-friendly" ([#82](https://github.com/openactive/modelling-opportunity-data/issues/82))

**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.

#### **Example**

```javascript
{
 "@type": "SessionSeries",
 ...
  "level": [
    "Beginner"
  ]
 ...
} 
```

### `beta:donationPaymentUrl` ([#234](https://github.com/openactive/modelling-opportunity-data/issues/234))

**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 live stream classes in the wake of the COVID-19 pandemic lockdowns. 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. It is applicable to online, offline and mixed events.

#### **Example**

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

### `beta:formalCriteriaMet` ([#236](https://github.com/openactive/modelling-opportunity-data/issues/236))

**Definition**

An array of URLs, each of which describe the formal criteria that are met by the organizer.

#### **Why implement this property?**

It is the activity provider’s responsibility to ensure they have adequate insurance in place for virtual classes (and correct music licences, where relevant). Booking systems that wish to allow their customers to be part of Sport England's [Join the Movement](https://www.sportengland.org/stayinworkout) campaign must provide assurance that activity providers have met these criteria, by either including the `beta:formalCriteriaMet` property per-organizer, or by demonstrating system-level safeguards are in place.

#### **Values**

The `beta:formalCriteriaMet` property accepts an array of URLs, and in most cases will contain just one URL. Each URL must reference a webpage that includes the criteria that have been presented to the activity provider, and that have been actively accepted by them. The webpage itself does not need to be presented to the activity provider, as long as the criteria it contains is accepted by the activity provider in some form.

An example of such a URL is: [`https://emduk.org/advice-on-how-instructors-can-continue-to-deliver-their-classes-online/`](https://emduk.org/advice-on-how-instructors-can-continue-to-deliver-their-classes-online/)

Applications that consume the open data can use the content of the webpage at each URL to decide if the criteria specified are sufficient for their needs, and filter for opportunities where the `beta:formalCriteriaMet` property includes such URLs.

The property must be set on the `Organization` or `Person` within the `organizer` property.

#### **Example**

```javascript
{
 "@type": "SessionSeries",
 ...
 "organizer": {
  "@type": "Organization",
  ...
  "beta:formalCriteriaMet": [
    "https://emduk.org/advice-on-how-instructors-can-continue-to-deliver-their-classes-online/"
  ]
 }
} 
```

## Conformance criteria

{% hint style="info" %}
Please feedback on the below or request any clarifications by commenting on [this GitHub issue](https://github.com/openactive/modelling-opportunity-data/issues/231).
{% endhint %}

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

```javascript
"@context": [
  "https://openactive.io/",
  "https://openactive.io/ns-beta"
]
```

### SessionSeries, HeadlineEvent, CourseInstance and Event

The following properties are **REQUIRED** (inheriting from existing [Modelling Opportunity Data specification](https://www.openactive.io/modelling-opportunity-data/)):

* `name`
* `activity`
* `organizer` - including a **required** `@id`, a **recommended** `sameAs` property for social media handles, and a **recommended** `beta:formalCriteriaMet` ([#236](https://github.com/openactive/modelling-opportunity-data/issues/236)).
  * The `@id` is required to give each organizer a [globally unique identifier in the form of a URL](/data-model/context-and-json-ld#contexts-properties-and-types).
  * 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`.
* `eventAttendanceMode` ([#225](https://github.com/openactive/modelling-opportunity-data/issues/225))
* `offers` (including a recommended `url` that links straight to the purchase page)
* `url` (to a page describing the session)

The following properties **MUST NOT** be included when `eventAttendanceMode` is set to `https://schema.org/OnlineEventAttendanceMode`:

* `location` ([#227](https://github.com/openactive/modelling-opportunity-data/issues/227))

The following properties are **RECOMMENDED**:

* `description`
* `image`
* `level` ([#82](https://github.com/openactive/modelling-opportunity-data/issues/82)) - using the string "`Beginner`" for beginner friendly classes
* `ageRange`
* `genderRestriction`
* `beta:isFirstSessionAccessibleForFree` ([#232](https://github.com/openactive/modelling-opportunity-data/issues/232))
* `beta:isInteractivityPreferred` ([#230](https://github.com/openactive/modelling-opportunity-data/issues/230))
* `beta:participantSuppliedEquipment` ([#229](https://github.com/openactive/modelling-opportunity-data/issues/229))
* `beta:affiliatedLocation` ([#227](https://github.com/openactive/modelling-opportunity-data/issues/227))
* `maximumVirtualAttendeeCapacity` ([#226](https://github.com/openactive/modelling-opportunity-data/issues/226))
* `beta:donationPaymentUrl` ([#234](https://github.com/openactive/modelling-opportunity-data/issues/234))

### ScheduledSession and Event

The following properties are **REQUIRED** (inheriting from existing [Modelling Opportunity Data specification](https://www.openactive.io/modelling-opportunity-data/)):

* `startDate`

The following properties are **RECOMMENDED**:

* `duration`
* `endDate`
* `beta:virtualLocation` ([#224](https://github.com/openactive/modelling-opportunity-data/issues/224)) (including a `url` to the live class itself, e.g. a Facebook Live or Zoom URL)

## **Examples**

### **Complete examples**

The validator includes complete examples for:

* [Virtual SessionSeries](https://validator.openactive.io/?url=https%3A%2F%2Fwww.openactive.io%2Fdata-models%2Fversions%2F2.x%2Fexamples%2Fsessionseries-split-virtual_example_1.json\&version=2.x)
* [Virtual ScheduledSession](https://validator.openactive.io/?url=https%3A%2F%2Fwww.openactive.io%2Fdata-models%2Fversions%2F2.x%2Fexamples%2Fscheduledsession-split-virtual_example_1.json\&version=2.x)

### Illustrative examples

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

```javascript
{
  "@context": [
    "https://openactive.io/",
    "https://openactive.io/ns-beta"
  ],
  "@type": "SessionSeries",
  ...
  "organizer": {
    "@type": "Organization",
    "@id": "https://id.bookingsystem.com/organizers/123",
    ...
    "beta:formalCriteriaMet": [
      "https://emduk.org/advice-on-how-instructors-can-continue-to-deliver-their-classes-online/"
    ]
  },
  "eventAttendanceMode": "https://schema.org/OnlineEventAttendanceMode",
  "beta:affiliatedLocation": {
    "@type": "Place",
    "name": "Middlesbrough Sports Village",
    "address": {
      "@type": "PostalAddress",
      "streetAddress": "Alan Peacock Way",
      "addressLocality": "Village East",
      "addressRegion": "Middlesbrough",
      "postalCode": "TS4 3AE",
      "addressCountry": "GB"
    },
    "geo": {
      "@type": "GeoCoordinates",
      "latitude": 54.543964,
      "longitude": -1.20978500000001
    }
  },
  "beta:isInteractivityPreferred": true,
  "beta:participantSuppliedEquipment": "https://openactive.io/Required",
  "beta:donationPaymentUrl": "https://www.paypal.com/donate/acme_fit"
 }
}
```

```javascript
{
  "@context": [
    "https://openactive.io/",
    "https://openactive.io/ns-beta"
  ],
  "@type": "ScheduledSession",
  ...
  "maximumVirtualAttendeeCapacity": 20,
  "beta:virtualLocation": {
    "@type": "VirtualLocation",
    "name": "Zoom Video Chat",
    "url": "https://zoom.us/j/1234567890/signup",
    "description": "Please log into Zoom a few minutes before the event, and mute your mic while you wait for the session to start"
  }
}
```


# 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`**](/data-model/types/ondemandevent) type is used to represent such events, and they must be published using a **separate RPDE feed**, as per [this example](https://validator.openactive.io/?url=https%3A%2F%2Fwww.openactive.io%2Fdata-models%2Fversions%2F2.x%2Fexamples%2Fondemandevent_example_1.json\&version=2.x).

{% hint style="warning" %}
Online classes and events are part of an [ongoing discussion](https://github.com/openactive/modelling-opportunity-data/issues/71) that has been [accelerated](https://w3c.openactive.io/meetings/2020-03-25-virtual-events) 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](https://github.com/openactive/modelling-opportunity-data/labels/virtual%20events) with any thoughts and feedback from your implementation.
{% endhint %}

## Implementation guidance

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](/data-model/types/ondemandevent), within your **new RPDE feed specific to** [**`OnDemandEvent`**](/data-model/types/ondemandevent). The [OpenActive libraries](/publishing-data/data-feeds/implementing-rpde-feeds#net-php-and-ruby-libraries), [types reference documentation](/data-model/types#event-types-also-used-for-virtual-events), and [validator](http://validator.openactive.io/) have been updated to support these properties.

{% hint style="info" %}
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.
{% endhint %}

### `beta:participantSuppliedEquipment` ([#229](https://github.com/openactive/modelling-opportunity-data/issues/229))

**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**

```javascript
{
 "@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. ...",
 ...
}
```

### `level` for "Beginner-friendly" ([#82](https://github.com/openactive/modelling-opportunity-data/issues/82))

**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**

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

### `beta:donationPaymentUrl` ([#234](https://github.com/openactive/modelling-opportunity-data/issues/234))

**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**

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

### `workFeatured`([#228](https://github.com/openactive/modelling-opportunity-data/issues/228))

**Definition**

A video, audio or other media that represents the actual recording of the [`OnDemandEvent`](/data-model/types/ondemandevent).

#### **Why implement this property?**

This property allows applications to link directly to the media associated with the [`OnDemandEvent`](/data-model/types/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.

#### **Values**

The property accepts a [`VideoObject`](/data-model/types/videoobject), [`AudioObject`](/data-model/types/audioobject), or a more general [`MediaObject`](/data-model/types/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.

#### **Example**

```javascript
{
  "@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

{% hint style="info" %}
For a full description of all properties available within [`OnDemandEvent`](/data-model/types/ondemandevent), please see the [reference documentation](/data-model/types/ondemandevent). Please feedback on the below or request any clarifications by commenting on [this GitHub issue](https://github.com/openactive/modelling-opportunity-data/issues/231).
{% endhint %}

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

```javascript
"@context": [
  "https://openactive.io/",
  "https://openactive.io/ns-beta"
],
```

The following properties are **REQUIRED** for [`OnDemandEvent`](/data-model/types/ondemandevent):

* `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` is required to give each organizer a [globally unique identifier in the form of a URL](https://www.openactive.io/open-booking-api/EditorsDraft/#globally-unique-identifiers).
  * 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)

The following properties are **RECOMMENDED** for [`OnDemandEvent`](/data-model/types/ondemandevent):

* `ageRange`
* `description`
* `duration`
* `genderRestriction`
* `image`
* `level` ([#82](https://github.com/openactive/modelling-opportunity-data/issues/82)) - using the string "`Beginner`" for beginner friendly classes
* `workFeatured`([#228](https://github.com/openactive/modelling-opportunity-data/issues/228)) - which could could be a [`VideoObject`](/data-model/types/videoobject), [`AudioObject`](/data-model/types/audioobject), or a more general [`MediaObject`](/data-model/types/mediaobject).
* `beta:donationPaymentUrl` ([#234](https://github.com/openactive/modelling-opportunity-data/issues/234))
* `beta:isFirstSessionAccessibleForFree` ([#232](https://github.com/openactive/modelling-opportunity-data/issues/232))
* `beta:participantSuppliedEquipment` ([#229](https://github.com/openactive/modelling-opportunity-data/issues/229))

## **Examples**

### **Complete examples**

The validator includes a complete example for:

* [OnDemandEvent](https://validator.openactive.io/?url=https%3A%2F%2Fwww.openactive.io%2Fdata-models%2Fversions%2F2.x%2Fexamples%2Fondemandevent_example_1.json\&version=2.x)

### 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.

```javascript
{
  "@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"
}
```


# Opening Hours

Please also refer to the [reference documentation for the `OpeningHoursSpecification` type](/data-model/types/openinghoursspecification).

{% hint style="warning" %}
Implementation of the [proposal for OpeningHoursSpecification](https://github.com/openactive/modelling-opportunity-data/issues/258) within the tooling has been accelerated in response to the COVID-19 pandemic. The proposal follows [Google's documented usage](https://developers.google.com/search/docs/data-types/local-business#business_hours), and so is unlikely to change significantly, however we welcome your contribution to the [proposal](https://github.com/openactive/modelling-opportunity-data/issues/258) with any thoughts and feedback from your implementation.
{% endhint %}

## Standard opening hours

The standard opening hours of a [`Place`](/data-model/types/place#recommended-properties) may be described using the `openingHoursSpecification` property as documented below. Note this property **must not** be used to define exceptional hours, such as specific public holidays, closures due to bad weather, or a pandemic-related lockdown.

### Open all year

Excluding the `validFrom` and `validThrough` properties signifies that the hours are valid year-round. This example shows a business open every day from 6:30am until 21:30pm:

```javascript
"openingHoursSpecification": [
  {
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": [
      "https://schema.org/Monday",
      "https://schema.org/Tuesday",
      "https://schema.org/Wednesday",
      "https://schema.org/Thursday",
      "https://schema.org/Friday",
      "https://schema.org/Saturday",
      "https://schema.org/Sunday"
    ],
    "opens": "06:30",
    "closes": "21:30"
  }
]
```

### Public holidays

The `dayOfWeek` value of `https://schema.org/PublicHolidays` is defined as a placeholder for all official public holidays in the `location` in which the `Place` is located. It can be used to indicate opening hours on public holidays, overriding general opening hours for the day of the week on which a public holiday occurs:

```javascript
"openingHoursSpecification": [
  {
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": [
      "https://schema.org/Monday",
      "https://schema.org/Tuesday",
      "https://schema.org/Wednesday",
      "https://schema.org/Thursday",
      "https://schema.org/Friday"
    ],
    "opens": "06:30",
    "closes": "21:30"
  },
  {
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": [
      "https://schema.org/Saturday"
    ],
    "opens": "07:15",
    "closes": "17:30"
  },
  {
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": [
      "https://schema.org/Sunday",
      "https://schema.org/PublicHolidays"
    ],
    "opens": "09:00",
    "closes": "17:30"
  }
]
```

### Open seasonally

For Places that are open only seasonally (for example an Ice Rink), both the `validFrom` and `validThrough` may be used. This example shows a business open only during weekends during the winter holidays:

```javascript
"openingHoursSpecification": [
  {
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": [
      "https://schema.org/Saturday"
    ],
    "opens": "09:30",
    "closes": "20:30",
    "validFrom": "2015-12-23",
    "validThrough": "2016-01-05"
  },
  {
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": [
      "https://schema.org/Sunday"
    ],
    "opens": "09:30",
    "closes": "17:30",
    "validFrom": "2015-12-23",
    "validThrough": "2016-01-05"
  }
]
```

### All-day open / closed

To show a business as open 24 hours a day, set the `open` property to `"00:00"` and the `closes` property to `"23:59"`.

To show a business is closed all day, set both `opens` and `closes` properties to `"00:00"`.

This example shows a business open all day Saturday and closed all day Sunday:

```javascript
"openingHoursSpecification": [
  {
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": [
      "https://schema.org/Saturday"
    ],
    "opens": "00:00",
    "closes": "23:59"
  },
  {
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": [
      "https://schema.org/Sunday"
    ],
    "opens": "00:00",
    "closes": "00:00"
  }
]
```

### Late night hours

For hours past midnight, define opening and closing hours using a single `OpeningHoursSpecification` property. This example defines hours from Saturday at 6pm until Sunday at 3am:

```javascript
"openingHoursSpecification": [
  {
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": [
      "https://schema.org/Saturday"
    ],
    "opens": "18:00",
    "closes": "03:00"
  }
]
```

### Multiple opening hours

For days with multiple hours, these must be provided as separate instances of `OpeningHoursSpecification`.

This example defines the following hours:

![](/files/-MQupWkAK0gEPBE1WuLE)

```javascript
"openingHoursSpecification": [
  {
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": [
      "https://schema.org/Monday",
      "https://schema.org/Tuesday",
      "https://schema.org/Wednesday",
      "https://schema.org/Thursday"
    ],
    "opens": "06:00",
    "closes": "13:00"
  },
  {
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": [
      "https://schema.org/Monday",
      "https://schema.org/Tuesday",
      "https://schema.org/Wednesday",
      "https://schema.org/Thursday"
    ],
    "opens": "16:00",
    "closes": "20:00"
  },
  {
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": [
      "https://schema.org/Friday"
    ],
    "opens": "06:00",
    "closes": "12:00"
  },
  {
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": [
      "https://schema.org/Saturday",
      "https://schema.org/Sunday",
      "https://schema.org/PublicHolidays"
    ],
    "opens": "08:00",
    "closes": "12:00"
  }
]
```

## Special opening hours

The `specialOpeningHoursSpecification` property of the [`Place`](/data-model/types/place#recommended-properties) is used to explicitly override standard opening hours brought in scope by [`openingHoursSpecification`](/publishing-data/opening-hours#standard-opening-hours). Note this property **must not** be used to define standard hours, and should instead describe exceptions such as specific public holidays, closures due to bad weather, or a pandemic-related lockdown.

### Christmas and New Year

Use `specialOpeningHoursSpecification` combined with `validFrom` and `validThrough` properties to specify opening hours for specific public holidays. This example shows a business closed on Christmas Day:

```javascript
"specialOpeningHoursSpecification": [
  {
    "@type": "OpeningHoursSpecification",
    "opens": "00:00",
    "closes": "00:00",
    "validFrom": "2015-12-25",
    "validThrough": "2015-12-25"
  }
]
```

### COVID-19 Lockdown

Use `specialOpeningHoursSpecification` combined with `validFrom` and `validThrough` properties to specify closure during specific dates. This example shows a business closed completely for all of January:

```javascript
"specialOpeningHoursSpecification": [
  {
    "@type": "OpeningHoursSpecification",
    "opens": "00:00",
    "closes": "00:00",
    "validFrom": "2021-01-01",
    "validThrough": "2021-01-31"
  }
]
```


# Data Quality

As OpenActive continues to scale, the range of data publishers and the number and variety of opportunities for sport and physical activity has expanded significantly.&#x20;

Feedback from data users has highlighted areas of improvement for the end-user experience when searching for activities. Additionally, the initiative needs a consistent approach to assess how OpenActive data could support new use cases.&#x20;

The [OpenActive Data Quality Reporting Framework](https://docs.google.com/document/d/1LplQ1UmssmgOw61k7JNqfPyaJ6qOYSp1SC19iL0gC9g/edit?usp=sharing) outlines our approach to data quality across the initiative.

The [Data Visualiser](https://visualiser.openactive.io/) allows you to explore data quality for a specific feed.

The initial focus is on ensuring the "what", "where" and "when" of opportunities is clearly defined in the data, to meet the main use cases of discovery and booking.

However, this is an area of ongoing work and additional metrics will be developed in collaboration with the [OpenActive W3C Community Group](https://w3c.openactive.io/).


# Harvesting opportunity data

## Libraries

Although the logic to harvest and use OpenActive data is straightforward, there are several libraries that provide helpers to aid the consumption of opportunity data feeds.

The table below lists these libraries:

<table><thead><tr><th width="248">Language</th><th width="244.33333333333331">Dataset Discovery</th><th>Harvesting Feeds</th></tr></thead><tbody><tr><td>JavaScript / TypeScript</td><td><a href="https://github.com/openactive/dataset-utils">@openactive/dataset-utils</a></td><td>N/A</td></tr><tr><td>Python</td><td><a href="https://github.com/openactive/openactive-python">openactive-python</a></td><td><a href="https://github.com/openactive/openactive-python">openactive-python</a></td></tr><tr><td>Ruby</td><td><a href="https://github.com/openactive/openactive.rb">openactive.rb</a> *</td><td><a href="https://github.com/openactive/openactive.rb">openactive.rb</a></td></tr></tbody></table>

&#x20;\* Note that the Ruby library [requires updating](https://github.com/openactive/openactive.rb/issues/13) before it can be used for dataset discovery

## Dataset discovery

As described in the data catalogue [processing guidance](https://github.com/openactive/data-catalogs#processing-guidance), OpenActive datasets can be discovered automatically by "spidering" links within the canonical [OpenActive Data Catalog Collection JSON-LD](https://openactive.io/data-catalogs/data-catalog-collection.jsonld) file.

{% @mermaid/diagram content="flowchart LR
DCC\["OpenActive Data Catalog Collection JSON-LD"]
DC\["Data Catalog JSON-LD"]
DS\["Dataset Site JSON-LD<br>(embedded in HTML)"]
F\["Feed URL"]
DCC -. hasPart .-> DC -. dataset .-> DS -. distribution .-> F" %}

## Harvesting feeds

### Considerations

* Combining feed pairs
  * Ensure that updates and deletes from both parent and child feeds are considered (such as SessionSeries/ScheduledSession or FacilityUse/Slot - see [Types of RPDE feed](/publishing-data/data-feeds/types-of-feed) for more information)
* Harvest frequency
  * To ensure your resources are not wasted, especially as you scale feed consumption, ensure that [sleep and live](/publishing-data/data-feeds/scaling-feeds#sleep-mode) modes are respected (i.e. wait 8 seconds if there are no items in the feed before making the next request). Due to caching, more frequent requests will simply hit a CDN and return the same response, so there is no advantage in polling faster than this.
* De-serializing RPDE Feeds:
  * Ensure that the data type used to de-serialize the `modified` timestamp can support signed 64-bit integers. [More info here](#storing-rpde-modified-with-less-than-64-bit-integers).
* Resyncs
  * Consuming an RPDE feed from the beginning is termed a "resync".
  * RPDE feeds are not designed to be resynced frequently.
  * The feed consumer must continue to consume updates from the end of the feed to ensure the data stays up-to-date, rather than downloading all data from each update.
  * Resyncing any individual feed more than once each week is not recommended, as it increases the load on the open data publisher's servers, which will likely result in a high number of 429 responses and could cause your IP address to be blacklisted.

### Common Pitfalls

#### Storing RPDE \`modified\` with less than 64-bit integers

A common approach to creating `modified` values for an RPDE feed is to use SQL Server's `timestamp`/`rowversion` data types. This approach is suggested in the [RPDE specification](https://openactive.io/realtime-paged-data-exchange/#incrementing-unique-change-number).

This data type has been seen to generate integers up to values of 2⁶⁰.

Therefore, it is recommend to implementers to use data types that can store at least a signed 64-bit integer with precision.

Language specific guidelines:

* **JavaScript / TypeScript**:
  * JavaScript [numbers](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number) are 64-bit floating point numbers, which means that integers cannot be represented with sufficient precision beyond 2⁵³.
  * Getting around this is a bit complicated, but possible. See this page for more info: [Large Integers in JavaScript](/using-data/harvesting-opportunity-data/large-integers-in-javascript).
* **C#**: Use a `long` as opposed to an `int`
* **Other languages**: Ensure that the integer type that is being used to de-serialize the `modified` timestamps from RPDE feed pages has at least as much size and precision as a signed 64-bit integer.


# Large Integers in JavaScript

As mentioned in [**Storing RPDE `modified` with less than 64-bit integers**](/using-data/harvesting-opportunity-data#storing-rpde-modified-with-less-than-64-bit-integers), the [RPDE](https://openactive.io/realtime-paged-data-exchange/) `modified` field can be expected to have values too large to be able to be precisely represented by JavaScript's [number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number) type.

In some cases, this may be no issue. If your RPDE feed harvesting implementation does not do anything with the `modified` field, then that's fine. However, if your implementation involves asynchronous and concurrent processing in such a way that individual RPDE items can be stored not strictly in the order that they appeared in the feed, you will need to use `modified` comparisons in order to determine which RPDE item is the most up to date.

If doing this, the recommended approach is to:

### Recommended Approach

* Parse the `modified` from the RPDE page using a **custom JSON parser**, that can handle large integers — we recommend [lossless-json](https://github.com/josdejong/lossless-json).
* **Keep it as a string** in memory.
  * **NOTE**: The recommended approach is to keep it in memory as a string and NOT a [BigInt](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt). This is because most of the JavaScript ecosystem cannot handle BigInts. In a sufficiently complicated app, where you have HTTP requests, database integration, logging, file system read/writes, etc, each one of these integration points will break as soon as it encounters a BigInt. Experience shows that this can be much harder to maintain and so we instead recommend storing this data as strings and temporarily using BigInts for numeric comparison only.
* If comparing the `modified` of two different RPDE items, **use JavaScript's** [**BigInt**](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt) **type for the numeric comparison** e.g. `BigInt(aModified) >= BigInt(bModified)`.
* When storing to a database, **store with the database's 64-bit numeric type** (`bigint` in PostgreSQL).

### Example Code

Here's some example code demonstrating fetching an RPDE page with [axios](https://github.com/axios/axios):

<pre class="language-javascript"><code class="lang-javascript"><strong>const res = await axios('https://example.com/rpde/scheduled-sessions', {
</strong><strong>  // Ensure that fidelity is not lost in the JSON parsing process.
</strong>  transformResponse: (res) => jsonParseConvertingTooLargeInt(res),
});
// Store `modified`s as strings
const rpdeItemsWithStringModifieds = res.data.items.map((item) => ({
  ...item,
  modified: String(item.modified),
});
for (const rpdeItem of rpdeItemsWithStringModifieds) {
  const existingItem = rpdeItemCache[rpdeItem.id];
  // Temporarily use the BigInt type for numeric comparison
  if (existingItem &#x26;&#x26; BigInt(rpdeItem.modified) &#x3C; BigInt(existingItem.modified)) {
    continue;
  }
  rpdeItemCache[rpdeItem.id] = rpdeItem;
}
 
// --- A DIFFERENT MODULE - JSON PARSING UTILS ---
const { parse, isInteger } = require('lossless-json');

/**
 * @param {string} s
 */
function jsonParseConvertingTooLargeIntsToBigInts(s) {
  return parse(s, null, convertNumberToBigIntIfTooLargeInt);
}

/**
 * This is called for ALL numeric fields in the response — not just `.modified`.
 * So, we only use custom de-serialization if the value is out of normal integer
 * bounds.
 * There is a possibility that fields other than `.modified` will be caught by
 * this function as there are other integer fields in Opportunity data. This is
 * we transform, just for the de-serialization process, these values to BigInt
 * rather than string, which will make it easier to deal with cases in which
 * another numeric field (e.g. remainingUses) is surprisingly a very large
 * integer.
 *
 * @param {string} value
 * @returns {number | bigint}
 */
function convertNumberToBigIntIfTooLargeInt(value) {
  if (isInteger(value)) {
    const asInt = parseInt(value, 10);
    /* Note we consider equality to either of the bounds to be "too large" just
    to be extra cautious against the effects of precision loss */
    if (asInt >= Number.MAX_SAFE_INTEGER || asInt &#x3C;= Number.MIN_SAFE_INTEGER) {
      return BigInt(value);
    }
    return asInt;
  }
  return parseFloat(value);
}
</code></pre>

Things to note about the above example:

* It uses [lossless-json](https://github.com/josdejong/lossless-json), which has been proven to work for this issue (problems with `JSON.parse`'s `reviver` and with the [json-bigint](https://github.com/sidorares/json-bigint) library are discussed within [this GitHub issue](https://github.com/openactive/data-model-validator/issues/439)).
* It uses both strings and BigInts at various points to handle the data. Each of these is explained in comments, but broadly it uses the rules defined in the [recommended approach](#recommended-approach).


# Tutorial: Consuming an RPDE feed

## **Introduction** <a href="#introduction" id="introduction"></a>

To follow along you’ll need some existing knowledge of programming, including familiarity with HTTP, JSON, and APIs.

This guide is intended to be language agnostic, and is instead a guide to strategy and a general approach that should suit multiple implementations. Where code examples exist, they are intended as quick start assets rather than being production-ready.

By the end of this tutorial you’ll have:

* An overview of the concept of how to harvest a single feed of OpenActive data
* Understood the method of data transport
* Understood how to work with paging
* A plan for keeping your newly gathered data up to date

Whilst you’ll be able to follow along with this tutorial as your sole guide, you may wish to refer to the OpenActive [Realtime Paged Data Exchange](https://www.openactive.io/realtime-paged-data-exchange/) specification for greater detail at points.

## **Before we begin** <a href="#before-we-begin" id="before-we-begin"></a>

Before we dive into implementation, let’s start with a bit of background. [OpenActive](https://www.openactive.io/) intends to facilitate the sharing and use of physical activity opportunity data. To date, a number of datasets have been made available for use. You can find out more about them in our [Data Catalog processing guidance](https://openactive.io/data-catalogs/), or through the [status dashboard](https://status.openactive.io/) itself.

This is a tutorial which aims to cover how to harvest the data from these feeds. For simplicity, we’re going to focus on harvesting data from a single source, however at the end of this tutorial we’ll include some prompters for how to approach combining data from multiple sources.

## **Data transport** <a href="#data-transport" id="data-transport"></a>

First of all, it’s important to understand the general approach to how the data is transported.

Each dataset has a URL endpoint. You can find these by visiting [status.openactive.io](http://status.openactive.io/) and selecting one of the links under the Endpoint column. For this tutorial, we’re going to use the London Sport endpoint, so find it and navigate through the link.

![](https://lh3.googleusercontent.com/38w0HRDd-i7zjzqAhu2nbbeyH62-jAGY1hfPyyAlO5slWJnJVkQQXFwaTSazASwUpPqTXR_SoAEmj0Jh_Iyf5IXfy9rW2dJM5CZ0jAS9KOmLLspqdBsS_RR2h1RZz59zbw)

The OpenActive opportunity data dashboard, showing available endpoints

You should have been taken to the URL <https://opensessions.io/api/Session/GetSessionsForOpenActive>, and have been presented with data.

Whilst we were doing this in-browser, programmatic requests to harvest data work in exactly the same way; with an HTTP GET request to the endpoint. At present, all harvesting is done through polling: as a pull rather than as a push from the data source. This means you need to regularly harvest data from each feed to get the latest information.

The RPDE specification recommends use of standard HTTP status codes. So your code should get a 200 response for a successful request, or 4XX or 5XX errors for other problems. Be sure to check for and respect 429 or 503 errors which are used to indicate that the server is overloaded. Retry after a random interval (between 60 and 120 minutes) to ease load from multiple consumers.

To harvest all of the data from a feed your code will need to make repeated HTTP requests until it has fetched all the data. There’s no need for any authentication as all of the endpoints are freely available. Now that we understand the mechanic for transferring data, let’s move on to understanding the content of what’s returned from a request, and how we navigate through all of the content.

## **Understanding paging** <a href="#understanding-paging" id="understanding-paging"></a>

Before we grab the data there are a few key concepts that are important to understand.

### **Data is returned as pages** <a href="#data-is-returned-as-pages" id="data-is-returned-as-pages"></a>

Looking at the [URL we previously visited](https://opensessions.io/api/Session/GetSessionsForOpenActive), you’ll notice that the data isn’t extensive - there are only 10 items in the items array.

![](https://lh5.googleusercontent.com/7mdF_pYa-nEB1c-2gLlKsE0xQbMnzHIMqE7rkkLLUD8txXq181UiPwdizyOttNxBXeBqok7RamlmkmYhcdpIaO89RJ3D5yt3qVd-LzrfbYvlH1Xl7bQWHrVEgx2DIuQXkw)

An in-browser view of the London Sport endpoint, with individual items collapsed

Each publisher will decide on an appropriate page size, and your application should not expect a set amount of items. This becomes even more relevant later on when we discuss keeping data up to date.

From the link we opened (and the image above), you’ll notice the property next, which contains a URL string. This is a required property, and the specification states that it must be an absolute URL and returned for every request. We page through the full dataset by following the URLs provided in the next property. The response from each of these URLs will be a new page of results which you can process in your application.

Follow the links a couple of times to get a feel for this, but there’s no need to go to the end (we’ll come on to that shortly).

### **How items appear in the overall list (and pages)** <a href="#how-items-appear-in-the-overall-list-and-pages" id="how-items-appear-in-the-overall-list-and-pages"></a>

If you’ve looked into some of the items that have been returned, you may notice that some opportunities are in the past. The next important point to understand here is that the specification requires strict chronological ordering of items, with newly added and modified data added to the end of the feed. There are some simple rules that govern items in the overall list:

* Every item (record) is only represented once in this overall list at a given moment.
* Every item can be distinguished by a unique identifier (so as to be able to reference it for updates/deletes)
* The item’s position in the list will depend on when it was last updated (moving to the end when changes occur).
* Each item exists in the list in perpetuity unless deleted. The full feed includes items from the past, and references to deleted items - [see section on deleted items](https://www.openactive.io/realtime-paged-data-exchange/#deleted-items). You may need to skip over older data depending on your needs.

![](https://docs.google.com/drawings/d/s4UsBghaSDhuYyFO326x-RA/image?w=305\&h=538\&rev=60\&ac=1\&parent=1JW4GXXWOfJIFhAhzaCh-VU2AQm-O8Mk1NU4fZiuHZTA)

A conceptual view of a first page of items, followed by the rest of the list. Note that item 3 would have been modified after the creation of item 7, but before the creation of item 8.

Let’s move on to putting this into practice, to understand it in context.

## **Doing our initial download** <a href="#doing-our-initial-download" id="doing-our-initial-download"></a>

When consuming the data for the first time, pages are initially downloaded sequentially to catch up with the current state of the data publisher. As we’ve seen, this is achieved by following the next property of each page until the last page is reached.

### **The last page** <a href="#the-last-page" id="the-last-page"></a>

According to the spec definition, the last page of data must have both of the following properties:

* The items property is an empty array.
* The next property matches the URL of the current page.

You can therefore feel confident that you have reached the end of the initial download once these are met.

In pseudocode, a very basic (and unrobust) page through the dataset for the first time looks something like the following. We’ll be building up this example as we go through this tutorial.

| <ul><li>Set variable for endpoint URL to be harvested</li><li>Make GET HTTP request to the URL</li><li><p>If the response contains a success HTTP status code</p><ul><li><p>If there are data items</p><ul><li>Retrieve (and store) all data items contained within the page</li><li>Request the URL in the next property</li></ul></li><li><p>Else</p><ul><li><p>If the URL in the next property is equal to the current URL being harvested</p><ul><li>End harvesting</li></ul></li><li>Else request the URL in the next property</li></ul></li></ul></li><li>Else honour response code and fail gracefully</li></ul> |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

(Please note that in practice, because the endpoints don't tend to allow cross-origin access at the moment this example won’t run and is intended for illustration only. To see a working example you can visit <https://glitch.com/~oa-quickharvest> which employs a proxy).

![](https://lh3.googleusercontent.com/bvWnOyiZQkvEotmTiZsjbaIZb9jyp1Gj6fr8_2Xc-H0aK81iV74c_r6xkK1c_Tr4VTSK3QneTdak6GCsb5c9wjBQztKe6IFNY-k26mtLnv6dIJNCs1T1V2ha7vJRiSq1ww)

At this point, what you have is an as-is store of all of the items in the dataset, from as far back as they are available. Whilst this tutorial has not covered any processing of the data, so you will need to be mindful of getting it into a sensible state for your needs.

## **Deleted items** <a href="#deleted-items" id="deleted-items"></a>

Whilst we’ve captured all of the items, what we also haven’t done is given any consideration to their state.

As we’ve already discussed, items exist in the dataset in perpetuity whilst they have an "updated" state - that is when they’re created or modified. When an item is deleted in the publisher’s master data store it cannot be simply removed from the feed, as this would require all consumers to constantly request the entire data set in order to have an up-to-date view of the items.

Instead, when items are deleted from the master system, they receive a state of "deleted", are included in the feed with no \<data>, and remain in the feed for at least 7 days.

For our initial download of data, for now (we’ll revisit this in the next section), let’s discard any items where the property state is set to "deleted". These items look something like this:

```javascript
{
  "state": "deleted",
  "kind": "session",
  "id": "{d97f73fb-4718-48ee-a6a9-9c7d717ebd85}",
  "modified": 1453931925
}
```

| <ul><li><p>If the response contains a success HTTP status code</p><ul><li><p>If there are data items</p><ul><li><p>Where items do not possess the state "deleted"</p><ul><li>Retrieve (and store) all data items contained within the page</li></ul></li><li>Request the URL in the next property</li></ul></li><li><p>Else</p><ul><li><p>If the URL in the next property is equal to the current URL being harvested</p><ul><li>End harvesting</li></ul></li><li>Else request the URL in the next property</li></ul></li></ul></li><li>Else honour response code and fail gracefully</li></ul> |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

## **Keeping data up to date** <a href="#keeping-data-up-to-date" id="keeping-data-up-to-date"></a>

### **Handling updates and deletions** <a href="#handling-updates-and-deletions" id="handling-updates-and-deletions"></a>

Even with a small initial import, we run the risk of an item that we harvest early on actually being updated or deleted in the publisher’s system at the same time. As we’ve seen, this will lead to that item moving through the queue and being added to the end, so it could show up one to many times before our overall harvest is finished.

In the below diagram we may encounter item A on our first page, receive a modified version on our second page, and finally a deleted version of it in our third page. Unless our consuming application needs to track state over time, we want to ensure that we don’t create a duplicate for the modification, and don’t ignore the deletion.

![](https://docs.google.com/drawings/d/srS9_4v_YXwNHF1vNWMmvaw/image?w=665\&h=226\&rev=144\&ac=1\&parent=1JW4GXXWOfJIFhAhzaCh-VU2AQm-O8Mk1NU4fZiuHZTA)

Our pseudocode therefore becomes a little bit more detailed:

| <ul><li>Set variable for endpoint URL to be harvested</li><li>Make GET HTTP request to the URL</li><li><p>If the response contains a success HTTP status code</p><ul><li><p>If there are data items</p><ul><li><p>If items possess the state "deleted"</p><ul><li>Remove any existing items in our store that match the ID</li></ul></li><li><p>Else</p><ul><li><p>If item ID already exists in our store</p><ul><li>Update item details</li></ul></li><li><p>Else</p><ul><li>Create new item in our store</li></ul></li></ul></li><li>Request the URL in the next property</li></ul></li><li><p>Else</p><ul><li><p>If the URL in the next property is equal to the current URL being harvested</p><ul><li>End harvesting</li></ul></li><li>Else request the URL in the next property</li></ul></li></ul></li><li>Else honour response code and fail gracefully</li></ul> |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

Whilst we’ve reached the end of the feed, handled modifications and deletions, the changes don’t stop there. In order to keep your data updated in near real-time, you may wish to keep track of the URL for the last page, and infrequently poll this to check for updates. Revisiting the rules of what defines a page as the last page:

* The items property is an empty array.
* The next property matches the URL of the current page.

If items are found, your harvester should resume the behaviour of the initial download, capturing items and following the next property until it reaches a new end page. Let’s extend our pseudocode one more time:

| <ul><li><strong>Set variable for endpoint URL to be harvested</strong></li><li><strong>Make GET HTTP request to the URL</strong></li><li><p><strong>If the response contains a success HTTP status code</strong></p><ul><li><p><strong>If there are data items</strong></p><ul><li><p><strong>If items possess the state "deleted"</strong></p><ul><li><strong>Remove any existing items in our store that match the ID</strong></li></ul></li><li><p><strong>Else</strong></p><ul><li><p><strong>If item ID already exists in our store</strong></p><ul><li><strong>Update item details</strong></li></ul></li><li><p><strong>Else</strong></p><ul><li><strong>Create new item in our store</strong></li></ul></li></ul></li><li><strong>Request the URL in the next property</strong></li></ul></li><li><p><strong>Else</strong></p><ul><li><p><strong>If the URL in the next property is equal to the current URL being harvested</strong></p><ul><li><strong>Make a note of the current (last page) URL</strong></li><li><strong>End harvesting</strong></li><li><strong>Wait until next poll attempt</strong></li><li><p><strong>Poll previously noted URL</strong></p><ul><li><p><strong>If new items found</strong></p><ul><li><strong>Resume harvest</strong></li></ul></li><li><p><strong>Else</strong></p><ul><li><strong>Resume wait</strong></li></ul></li></ul></li></ul></li><li><strong>Else request the URL in the next property</strong></li></ul></li></ul></li><li><strong>Else honour response code and fail gracefully</strong></li></ul> |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

As mentioned at the start of this tutorial, once you’ve mastered harvesting from a single source you may well wish to extend this by harvesting multiple sources.

Whilst this is beyond the scope of this tutorial, we’ve included some pointers for areas that you will need to consider:

* Maintaining a list of the datasets - see the [OpenActive Data Catalog guidance](https://openactive.io/data-catalogs/)
* Whether or not you plan to harvest datasets sequentially, or in parallel.

## **Resources** <a href="#resources" id="resources"></a>

The specification that covers the Realtime Pages Data Exchange format in more detail can be found here: <https://www.openactive.io/realtime-paged-data-exchange/>​

For further information on the data model, to consider when storing or processing data for your needs please see the specification: <https://www.openactive.io/modelling-opportunity-data/>​

If you’d like a language-specific tutorial we have one available for Ruby/Elastic Search: Indexing Opportunity Data Using Elastic Search <https://github.com/openactive/openactive-es-example>​

We also have a [Ruby gem](https://github.com/openactive/openactive.rb) available that covers:

* Listing all datasets that have been published as part of the project
* Fetching and harvesting a [Realtime Paged Data Exchange](https://www.openactive.io/realtime-paged-data-exchange/) (RPDE) containing opportunity data
* Identifying whether a feed conforms to the RPDE specification and/or the [Modelling Opportunity Data](https://www.openactive.io/modelling-opportunity-data/) specification

Or if you’d like to contribute a tutorial for another language please get in touch.


# Attribution

To comply with the [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/) license that used by OpenActive data publishers, data users must attribute OpenActive data wherever it is used.&#x20;

## Getting attribution data from Dataset Sites

The JSON-LD within each OpenActive Dataset Site (see [here](https://openactive.io/data-catalogs/) for how to access these), will include at least the following properties:

<pre class="language-json"><code class="lang-json">{
  "@context": [
    "https://schema.org/",
    "https://openactive.io/"
  ],
  "@type": "Dataset",
  "@id": "https://data.everyoneactive.com/OpenActive/",
<strong>  "name": "Everyone Active Sessions and Facilities",
</strong>  "publisher": {
    "@type": "Organization",
    "name": "Everyone Active",
    "legalName": "Sports and Leisure Management LTD",
    ...
  },
  "license": "https://creativecommons.org/licenses/by/4.0/",
  ...
}
</code></pre>

## Displaying attribution to end users

To comply with the [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/) license, any frontend that displays OpenActive data must include the relevant open data attribution alongside it.

The attribution should be included somewhere on the page where the data appears (i.e. the session or facility page).

The following HTML is recommended for attribution on any opportunity page, based on the data in the `Dataset` retrieved above:

<pre class="language-html"><code class="lang-html"><strong>Source: &#x3C;a href="{{Dataset.url}}" property="odrs:attributionURL">
</strong>    &#x3C;span property="odrs:attributionText">{{Dataset.publisher.name}}&#x3C;/span>
&#x3C;/a>
</code></pre>

For example, for data from Everyone Active, the attribution should be hyperlinked as follows somewhere on a page displaying that data, as stipulated at the bottom of its Dataset Site at <https://data.everyoneactive.com/OpenActive/>:

> Source: [Everyone Active](https://data.everyoneactive.com/OpenActive/)

## Full Example for Fusion Lifestyle

The following JSON-LD should be retrieved from the Dataset Site of Fusion Lifestyle:

```json
{
  "@type": "Dataset",
  "url": "https://opendata.fusion-lifestyle.com/OpenActive/",
  "publisher": {
    "@type": "Organization",
    "name": "Fusion Lifestyle",
    ...
  },
  ...
}
```

And rendered into the following HTML for display to the user:

```html
Source: <a href="https://opendata.fusion-lifestyle.com/OpenActive/" property="odrs:attributionURL">
    <span property="odrs:attributionText">Fusion Lifestyle</span>
</a>
```

Which is displayed as follows:

> Source: [Fusion Lifestyle](https://opendata.fusion-lifestyle.com/OpenActive/)


# Key Decisions

Key questions to decide upon and keep in mind when implementing booking and when testing booking

Your decisions on these questions do not have to be set in stone throughout the whole development process, but try to come back to this document if making a change.

Having a clear decision on each of these questions should make it easier to estimate your implementation and pre-empt any expected work.

The questions:

## Seller Tenancy?

Is your booking data split into multiple [Sellers](https://openactive.io/open-booking-api/EditorsDraft/#dfn-seller) or just one?

### -> Single Seller System

A Leisure Centre may be an example of a Single Seller System if all activities are managed by the same organisation – the Leisure Centre.

### -> Multiple Seller System

A platform that different self-employed yoga instructors use to manage their activities may be an example of a Multiple Seller System, where each Yoga instructor is an individual Seller.

## Authentication Model?

What authentication model do your [Booking Partners](https://openactive.io/open-booking-api/EditorsDraft/#dfn-booking-partner) (such as [Test Suite](/open-booking-api/test-suite)) use to access your implementation?

### -> [OIDC Booking Partner Authentication for Multiple Seller Systems](https://openactive.io/open-booking-api/EditorsDraft/#openid-connect-booking-partner-authentication-for-multiple-seller-systems)

Use OpenID Connect for authentication. This is geared towards [#multiple-seller-system](#multiple-seller-system "mention")s where individual Sellers need to securely manage access to their data by individual Booking Partners. Therefore, with this option of Authentication Model, Seller A could give access to Booking Partner X but not Booking Partner Y.

### -> Dynamic Client Registration

Builds on top of option [#oidc-booking-partner-authentication-for-multiple-seller-systems](#oidc-booking-partner-authentication-for-multiple-seller-systems "mention") by adding [OpenID Connect Dynamic Client Registration](https://openid.net/specs/openid-connect-registration-1_0.html), which enables Booking Partners to register themselves with your implementation.

### -> Other

Any other authentication strategies can be used to manage access. These may be appropriate for [#single-seller-system](#single-seller-system "mention")s or [#multiple-seller-system](#multiple-seller-system "mention")s with simple access requirements.

In order to test your implementation, you need to use authentication strategies which are supported by Test Suite. Either use one of the strategies already supported by Test Suite or we would very much welcome your contribution to Test Suite to add support. Authentication Strategies currently supported by Test Suite can be found in [**Booking Partner Authentication Strategy**](https://github.com/openactive/openactive-test-suite/blob/master/README.md#booking-partner-authentication-strategy) (in Test Suite's documentation).

## Controlled Mode or Random Mode?

When [Testing booking](/open-booking-api/test-suite), will you run these tests in Controlled mode or Random mode?

The recommended choice is to use **Controlled mode** as it is leads to a more sustainable development cycle and saves time in the long run.

{% hint style="warning" %}
When using OpenActive Test Suite during development, it is far more efficient to run test suite with a small number of items in your opportunity feeds and using "[controlled mode](/open-booking-api/test-suite#controlled-mode)". Although implementing the [OpenActive Test Interface](https://openactive.io/test-interface) to support controlled mode might seem like extra work, it will result in a much more efficient development, testing and debugging cycle, that will allow your implementation of the Open Booking API to be built much more quickly overall.
{% endhint %}

### -> Controlled mode

In controlled mode, Test Suite automatically creates new opportunities in the booking system before each test run.

{% hint style="info" %}
**Requirement**

Implement the [Datasets Endpoints](https://openactive.io/test-interface/#datasets-endpoints) (from [OpenActive Test Interface](https://openactive.io/test-interface)) within your booking system. This interface allows the test suite to create opportunities that conform to specific criteria.

More info on this in [**Implementing the Test Interface**](/open-booking-api/test-suite/implementing-the-test-interface#controlled-mode).
{% endhint %}

The `testDatasetIdentifier` setting is used in all calls in the test interface. It allows any test data that was created with this identifier to be cleared before a new test run begins.

### -> Random mode

In random mode, Test Suite selects random opportunities from the feeds that match the [prerequisite criteria for each test](https://github.com/openactive/openactive-test-suite/blob/master/packages/openactive-integration-tests/test/features/README.md), to book opportunities that already exist in the booking system.

{% hint style="info" %}
**Requirement**

Have some way of ensuring that enough opportunities exist that cover the required criteria for all features that you are implementing. See [the features list](https://github.com/openactive/openactive-test-suite/blob/master/packages/openactive-integration-tests/test/features/README.md) for a summary of how many opportunities are required for each criteria to test a specific feature. Please note that opportunities are not reused between tests within the same run of the test suite.
{% endhint %}

As you implement the Open Booking API features, more test data will need to be added, and the OpenActive Test Suite will need to download all of this data each time it is started, before it is able to run tests. For this reason, controlled mode offers a much more efficient developer experience: it auto-populates test data, and only creates the test data that is required for a particular test run when it is needed.

Using random mode, it is also harder to set up an automatic CI process in which Test Suite is run against your booking system after any changes. This automatic CI process is highly recommended as it verifies that your changed booking system still works and can generate new [conformance certificates](https://github.com/openactive/openactive-test-suite#certification). It's harder to set up in random mode as it would require that your CI environment is replenished with enough opportunity data before each test run.

## Which Features?

Which features will your Booking System implement. A Booking System does not need to implement the entirety of the [Open Booking API specification](https://openactive.io/open-booking-api/EditorsDraft/) – they usually implement a subset. All of the possible functionality is split out into distinct "features" which are categorised and documented in [Open Booking API Test Suite Feature Coverage](https://github.com/openactive/openactive-test-suite/blob/master/packages/openactive-integration-tests/test/features/README.md) (in Test Suite's documentation).

Decide on a set of these features to implement.

* All features marked "Required" must be implemented.
* For [#multiple-seller-system](#multiple-seller-system "mention")s, the [`mutiple-sellers`](https://github.com/openactive/openactive-test-suite/blob/master/packages/openactive-integration-tests/test/features/core/multiple-sellers/README.md) feature is required.
* If implementing the [#oidc-booking-partner-authentication-for-multiple-seller-systems](#oidc-booking-partner-authentication-for-multiple-seller-systems "mention")  Authentication Model, the [`booking-partner-authentication`](https://github.com/openactive/openactive-test-suite/blob/master/packages/openactive-integration-tests/test/features/authentication/booking-partner-authentication/README.md) feature is required.
* If implementing the [#dynamic-client-registration](#dynamic-client-registration "mention") Authentication Model, the [`booking-partner-authentication`](https://github.com/openactive/openactive-test-suite/blob/master/packages/openactive-integration-tests/test/features/authentication/booking-partner-authentication/README.md) and [`dynamic-client-registration`](https://github.com/openactive/openactive-test-suite/blob/master/packages/openactive-integration-tests/test/features/authentication/dynamic-client-registration/README.md) features are required.
* If running Test Suite in [#controlled-mode](#controlled-mode "mention"), the [`test-interface`](https://github.com/openactive/openactive-test-suite/blob/master/packages/openactive-integration-tests/test/features/core/test-interface/README.md) feature is required.
* For all other features, look at the documentation for each feature to decide whether it is required for your implementation.


# Implementing booking

{% hint style="warning" %}
Implementations of the Open Booking API are currently being developed through collaboration within the OpenActive technical community. This is especially important so that the current development work on the [OpenActive Test Suite](/open-booking-api/test-suite) can take into account feedback from real implementations. Please see the [#openactive-test-suite slack channel for more information](https://slack.openactive.io/).

If you’re interested in implementing the Open Booking API, then please [get in touch](https://bookwhen.com/openactive) and announce yourself on the `#implementation-forum` [Slack channel](https://slack.openactive.io/).
{% endhint %}

## Prerequisites for Open Booking API

In order to build the Open Booking API, you must first have built both [Open Opportunity Data Feeds](/publishing-data/data-feeds), and created a [Dataset Site](/publishing-data/dataset-sites).

## Implementation guidance

For .NET, a full implementation tutorial is available: <https://tutorials.openactive.io/open-booking-sdk/>.

For other languages, it is best to use the [Open Booking API CR3](https://openactive.io/open-booking-api/EditorsDraft/1.0CR3/) specification as an implementation reference.

### .NET, PHP and Ruby Libraries

Several libraries are available that greatly simplify implementation of the Open Booking API.

The table below lists the available OpenActive libraries:

<table data-header-hidden><thead><tr><th width="225">Library</th><th>.NET</th><th>PHP</th><th>Ruby</th></tr></thead><tbody><tr><td>Library</td><td><a href="https://docs.microsoft.com/en-us/dotnet/standard/net-standard">.NET</a></td><td><a href="https://www.php.net/releases/5_4_0.php">PHP</a></td><td><a href="https://www.ruby-lang.org/en/">Ruby</a></td></tr><tr><td>Booking Request/Response Serialisation and Deserialisation</td><td><a href="https://www.nuget.org/packages/OpenActive.NET/">OpenActive.NET</a></td><td><a href="https://packagist.org/packages/openactive/models">openactive/models</a></td><td><a href="https://rubygems.org/gems/openactive">openactive</a></td></tr><tr><td>Open Booking SDK</td><td><a href="https://github.com/openactive/OpenActive.Server.NET">OpenActive.Server.NET</a></td><td>N/A</td><td>N/A</td></tr></tbody></table>


# Testing booking

Testing your booking system is essential and leads to two important outcomes:

1. It checks that your system meets OpenActive standards, works smoothly, and avoids common issues.
2. It gives you a certificate showing you meet these standards, which will encourage others to integrate with your system, leading to more bookings.

## Prerequisites for testing

In order to run tests, you must first have implemented:

* Booking ([Implementing booking](/open-booking-api/implementing-booking)).
* Some or all of the [OpenActive Test Interface](https://openactive.io/test-interface/).
  * The [Datasets Endpoints](https://openactive.io/test-interface/#datasets-endpoints) are needed if using [Key Decisions](/open-booking-api/key-decisions#controlled-mode).
  * The [Actions Endpoint](https://openactive.io/test-interface/#actions-endpoint) are needed if any of the actions are required to test features that you have implemented.

## Test Suite Overview

The [OpenActive Test Suite](https://github.com/openactive/openactive-test-suite/) consists of two key components:

* [**openactive-broker-microservice**](https://github.com/openactive/openactive-test-suite/tree/master/packages/openactive-broker-microservice) - harvests feeds and provides an interface to extract specific items from the feeds.
* [**openactive-integration-tests**](https://github.com/openactive/openactive-test-suite/tree/master/packages/openactive-integration-tests) - a suite of Jest integration tests that exercise an Open Booking API implementation.

## What to do

Work through each of the steps in this guide, by following the "Next" button below.


# Configuring Test Suite

## Step 1: Install the test suite

Clone the test suite repository locally, and install its dependencies.

[Node.js](https://nodejs.org/en/download/) version **14** or above is required ([which version am I using?](https://support.invisionapp.com/hc/en-us/articles/360033641372-How-do-I-check-my-version-of-Node-js-)).

```bash
git clone git@github.com:openactive/openactive-test-suite.git
cd openactive-test-suite
npm install
```

You can check that the test suite works in your local environment by running it against the hosted [OpenActive Reference Implementation](https://reference-implementation.openactive.io/), simply by using the default configuration:

```bash
npm start -- core
```

Note that the above command only runs the "core" tests within the test suite, which should take around 60 seconds to complete.

{% hint style="info" %}
The hosted [OpenActive Reference Implementation](https://reference-implementation.openactive.io/) is running on a basic developer tier Azure instance with a burst quota, so if the application shuts down, simply wait 5 minutes and try again.

The quota is sufficient for the most common use cases: running a small subset of tests or individual tests against the reference implementation.

This quota is insufficient for running all tests in the test suite at once. If you are interested in viewing the results of all tests passing against the reference implementation, the results are published for both [random](https://openactive.io/openactive-test-suite/example-output/random/summary) and [controlled](https://openactive.io/openactive-test-suite/example-output/controlled/summary) mode.
{% endhint %}

## Step 2: Create a local configuration file

Copy the file `./config/default.json` to `./config/dev.json` and configure it to point to the local development environment of your own booking system using the steps on the rest of this page.

Set the environment variable `NODE_ENV` to `dev` to instruct the test suite to use `dev.json` file to override each of the values in `default.json`:

{% tabs %}
{% tab title="Bash" %}

```bash
export NODE_ENV=dev
npm start -- core
```

{% endtab %}

{% tab title="Windows Command Line" %}

```
set NODE_ENV=dev
npm start -- core
```

{% endtab %}
{% endtabs %}

Adding other `./config/{NODE_ENV}.json` files allows you to override the default configuration. For more information see this [documentation](https://github.com/lorenwest/node-config/wiki/Environment-Variables#node_env).

## Step 3: Configure flows

The Open Booking API includes two flows:

* [Simple Booking Flow](https://openactive.io/open-booking-api/EditorsDraft/1.0CR3/#simple-booking-flow)
* [Booking Flow with Approval](https://openactive.io/open-booking-api/EditorsDraft/1.0CR3/#booking-flow-with-approval)

Assess whether or not your implementation will include either or both of these flows, and configure the test suite accordingly, as detailed in the [reference documentation](https://github.com/openactive/openactive-test-suite/tree/master/packages/openactive-integration-tests#bookingflowsinscope), for example:

{% code title="./config/dev.json (extract)" %}

```javascript
"integrationTests": {  
  ...
  "bookingFlowsInScope": {
    "OpenBookingSimpleFlow": true,
    "OpenBookingApprovalFlow": true
  },
  ...
}
```

{% endcode %}

## Step 4: Configure features

Before you start your implementation, it is good to configure your config file to match your aspirations. You can then use different test suite commands to run only a subset of the tests during development, and then run `npm start` to run all tests.

Ensure that your configuration of `implementedFeatures` matches the list of features that you have decided upon in [Key Decisions](/open-booking-api/key-decisions#which-features). This configuration property is documented in the  [reference documentation](https://github.com/openactive/openactive-test-suite/tree/master/packages/openactive-integration-tests#implementedfeatures).

The list of Open Booking API features supported by the test suite can be found in the [Test Suite Feature Coverage](https://github.com/openactive/openactive-test-suite/blob/master/packages/openactive-integration-tests/test/features/README.md) page.

{% code title="./config/dev.json (extract)" %}

```javascript
"integrationTests": {  
  ...
  "implementedFeatures": {
    "opportunity-feed": true,
    "dataset-site": true,
    "availability-check": true,
    ...
  }
  ...
}
```

{% endcode %}

{% hint style="warning" %}
Note that not all Open Booking API features are currently supported by the test suite. For a list of supported features, please see the [Test Suite Feature Coverage](https://github.com/openactive/openactive-test-suite/blob/master/packages/openactive-integration-tests/test/features/README.md) page.
{% endhint %}

## Step 5: Configure Opportunity Types

Set up the Opportunity Types that your booking system will support, as detailed in the [reference documentation](https://github.com/openactive/openactive-test-suite/tree/master/packages/openactive-integration-tests#bookableopportunitytypesinscope). The test suite will only attempt to book opportunity types that are configured here, for example:

{% code title="./config/dev.json (extract)" %}

```javascript
"integrationTests": {  
  ...
  "bookableOpportunityTypesInScope": {
    "ScheduledSession": true,
    "FacilityUseSlot": false,
    "IndividualFacilityUseSlot": false,
    "CourseInstance": false,
    "CourseInstanceSubEvent": false,
    "HeadlineEvent": false,
    "HeadlineEventSubEvent": false,
    "Event": false,
    "OnDemandEvent": false
  },
  ...
}
```

{% endcode %}

## Step 6: Configure Controlled vs Random testing mode

Configure Test Suite to use the testing mode that you have chosen from [Key Decisions](/open-booking-api/key-decisions#controlled-mode-or-random-mode). You can always start with one and switch to the other later.

### Random mode

{% code title="./config/dev.json (extract)" %}

```javascript
"integrationTests": {  
  ...
  "useRandomOpportunities": true
  ...
}
```

{% endcode %}

For more details, see [Key Decisions](/open-booking-api/key-decisions#random-mode) (Key Decisions).

### Controlled mode

{% code title="./config/dev.json (extract)" %}

```javascript
"integrationTests": {  
  ...
  "useRandomOpportunities": false
  ...
}
```

{% endcode %}

For more details, see [Key Decisions](/open-booking-api/key-decisions#controlled-mode) (Key Decisions).

## Step 7: Configure Sellers and Booking Authentication

The test suite will making all bookings under a specific `primary` Seller provided in the configuration, using the authentication request headers provided for that Seller.

If your booking system only supports a single seller, only the “`primary`” seller is required. If your booking system supports multiple sellers, the “`secondary`” seller must also be set to support the “[multiple-sellers](https://github.com/openactive/openactive-test-suite/blob/master/packages/openactive-integration-tests/test/features/core/multiple-sellers/README.md)” tests.&#x20;

Your configuration should match your decision in [Key Decisions](/open-booking-api/key-decisions#authentication-model) (Key Decisions).

See the [reference documentation](https://github.com/openactive/openactive-test-suite/tree/master/packages/openactive-integration-tests#sellers) for more information.

{% code title="./config/dev.json (extract)" %}

```javascript
"sellers": {
  "primary": {
    "@type": "Organization",
    "@id": "https://localhost:5001/api/identifiers/sellers/1",
    "authentication": {
      "loginCredentials": null,
      "requestHeaders": {
        "X-OpenActive-Test-Client-Id": "test",
        "X-OpenActive-Test-Seller-Id": "https://localhost:5001/api/identifiers/sellers/1"
      }
    }
  },
  "secondary": {
    "@type": "Organization",
    "@id": "https://localhost:5001/api/identifiers/sellers/2",
    "authentication": {
      "loginCredentials": null,
      "requestHeaders": {
        "X-OpenActive-Test-Client-Id": "test",
        "X-OpenActive-Test-Seller-Id": "https://localhost:5001/api/identifiers/sellers/2"
      }
    }
  }
}
```

{% endcode %}

## Step 8: Configure Orders Feed Authentication

Configure the broker microservice with the authentication headers required for the Orders Feed.

Your configuration should match your decision in [Key Decisions](/open-booking-api/key-decisions#authentication-model) (Key Decisions).

Note such authentication [must not be specific to any particular seller](https://openactive.io/open-booking-api/EditorsDraft/#authentication).

{% code title="./config/dev.json (extract)" %}

```javascript
"broker": {
  ...
  "bookingPartners": {
    "primary": {
      "authentication": {
        "initialAccessToken": null,
        "ordersFeedRequestHeaders": {
          "X-OpenActive-Test-Client-Id": "test"
        }
      }
    },
    "secondary": null
  }
  ...
}
```

{% endcode %}

## Step 9: Configure Dataset Site

The `datasetSiteUrl` must be set to the local dataset site URL of your booking system. If you have not yet implemented a dataset site, details for creating it can be found [here](/publishing-data/dataset-sites).

In addition to the standard dataset site, the JSON-LD of the page must include the `accessService` property, as specified in the [reference documentation](https://github.com/openactive/openactive-test-suite/tree/master/packages/openactive-broker-microservice#datasetsiteurl). Note that the `endpointURL` within the `accessService` is most important, and must refer to your local Open Booking API [Base URI](https://openactive.io/open-booking-api/EditorsDraft/#dfn-base-uri).

{% code title="./config/dev.json (extract)" %}

```javascript
"broker": {
  ...
  "datasetSiteUrl": "https://reference-implementation.openactive.io/openactive"
  ...
}
```

{% endcode %}


# Implementing the Test Interface

Some subset of the [Test Interface](https://openactive.io/test-interface/) needs to be implemented in order to finally [test your booking system](/open-booking-api/test-suite/running-test-suite).

Which parts ot the Test Interface need to be implemented depends on [your choice of Controlled mode or Random mode](/open-booking-api/key-decisions#controlled-mode-or-random-mode).

### Controlled Mode

{% hint style="info" %}
In order to use Controlled mode, more of the Test Interface needs to be implemented. But the trade off is that testing is much easier and more reliable. **This is the recommended choice**.
{% endhint %}

When using Controlled mode, the following parts of Test Interface need to be implemented in your booking system:

* **Datasets Endpoints** ([spec](https://openactive.io/test-interface/#datasets-endpoints) — see for more details):
  * These endpoints are called by [Test Suite](/open-booking-api/test-suite) to create test opportunity data in your booking system, and – later – to clean up that test opportunity data.
  * See the
* **Actions Endpoints** ([spec](https://openactive.io/test-interface/#actions-endpoint)):
  * This endpoint is called by [Test Suite](/open-booking-api/test-suite) to simulate different kinds of booking actions, like an update to a booking's access pass.
  * See the [**Actions** page for details on what to implement](/open-booking-api/test-suite/implementing-the-test-interface/test-interface-actions).

### Random Mode

{% hint style="info" %}
In order to use Random mode, less of the Test Interface needs to be implemented. But the trade off is that it is more difficult to do reliable and consistent testing. Therefore, **the recommended choice is to use** [**Controlled mode**](#controlled-mode).
{% endhint %}

When using Random mode, the following parts of Test Interface need to be implemented in your booking system:

* **Actions Endpoints** ([spec](https://openactive.io/test-interface/#actions-endpoint)):
  * This endpoint is called by [Test Suite](/open-booking-api/test-suite) to simulate different kinds of booking actions, like an update to a booking's access pass.
  * See the [**Actions** page for details on what to implement](/open-booking-api/test-suite/implementing-the-test-interface/test-interface-actions).


# Test Interface Actions

The [Test Interface Actions endpoint](https://openactive.io/test-interface/#actions-endpoint) is called by [Test Suite](/open-booking-api/test-suite) to simulate different actions in your booking system e.g. "Seller-requested cancellation".

Your booking system only need to implement those actions which relate to [features](/open-booking-api/key-decisions#which-features) that it implements.

Descriptions for each action can be found in the [Test Interface doc](https://openactive.io/test-interface/#AccessChannelUpdateSimulateAction).

## Which Actions to implement?

Use [Test Data Generator](https://github.com/openactive/openactive-test-suite/tree/master/packages/openactive-integration-tests/test-data-generator) to find out which Test Interface actions your booking system needs to implement. Follow these steps:

1. In your Test Suite instance, [which you configured in the previous step](/open-booking-api/test-suite/configuring-test-suite), run:

```sh
# Use your config/dev.json config file
export NODE_ENV=dev
# Run Test Data Generator
npm run test-data-generator
```

2. The logs from this script will point to two files that it generated, called:
   * `opportunity-test-data.json`
   * `test-interface-actions.json`
3. The `test-interface-actions.json` file will contain a list of Test Interface actions that you need to implement for the features that your booking system supports. To see an example of what this looks like, see the [Test Data Generator README](https://github.com/openactive/openactive-test-suite/tree/master/packages/openactive-integration-tests/test-data-generator).

## Test Interface Action Implementation Guidelines

### 1. Switch Statement

Use something like a `switch` statement for your actions endpoint.\
\
For example, if your booking system only needs to support the `test:SellerRequestedCancellationSimulateAction` and `test:CustomerNoticeSimulateAction` actions, your route would look like (using Node.js with Express as an example):

```javascript
app.post('/test-interface/actions', (req, res) => {
  const actionType = req.body['@type'];
  switch (actionType) {
    case 'test:SellerRequestedCancellationSimulateAction':
      simulateSellerRequestedCancellation(req, res);
      break;
    case 'test:CustomerNoticeSimulateAction':
      simulateCustomerNotice(req, res);
      break;
    default:
      res.sendStatus(404);
      break;
    }
});
```

### 2. Test Interface Actions must use same code pathways as real-life counterparts

As an example, when implementing the `test:SellerRequestedCancellationSimulateAction` Test Interface action, the test logic should use, as much as possible, the same code pathways as are called when an administrator cancels an activity in the real system. The goal is to replicate real-world processes accurately, rather than simply employing quick fixes to meet Test Suite expectations.

Here is a very simplified example of the correct way to do this (using Node.js with Express):

```javascript
app.get('/internal-admin-api/dashboard', (req, res) => {
  res.send(`<form action="cancel-order" method="POST">
    <label for="orderId">Cancel Order with ID:</label>
    <input type="text" id="orderId" name="orderId" required />
    <input type="submit" value="Cancel" />
  </form>`);
});

app.post('/internal-admin-api/cancel-order', async (req, res) => {
  await cancelOrderAndUpdateOrdersFeeds(req.body.orderId);
  res.send('Successfully cancelled!');
});

app.post('/test-interface/actions', (req, res) => {
  const actionType = req.body['@type'];
  switch (actionType) {
    case 'test:SellerRequestedCancellationSimulateAction':
      await cancelOrderAndUpdateOrdersFeeds(req.body.object['@id']);
      res.sendStatus(204);
      break;
    // ... other actions
  }

async function cancelOrderAndUpdateOrdersFeeds(orderId) {
  // ...
}
```

This approach is key to ensuring that Test Suite accurately verifies all of the booking system's behaviours that will occur in real-life operation.


# Create Opportunity Endpoint

The Create Opportunity endpoint (**`POST /test-interface/datasets/:testDatasetIdentifier/opportunities`**) is part of the Test Interface (see the full detail in its [specification](https://openactive.io/test-interface/#post-test-interfacedatasetstestdatasetidentifieropportunities)). It is called by [Test Suite](https://developer.openactive.io/open-booking-api/test-suite) to create test [opportunities](https://openactive.io/test-interface/#post-test-interfacedatasetstestdatasetidentifieropportunities) in your booking system.

This doc contains some guidance for how and what to implement for this endpoint.

The payload for this endpoint includes a field, `test:testOpportunityCriteria`, which defines what type of Opportunity should be created. For example, if this is set to `https://openactive.io/test-interface#TestOpportunityBookableFree`, then the created opportunity must be both [bookable](https://openactive.io/open-booking-api/EditorsDraft/#definition-of-a-bookable-opportunity-and-offer-pair) and cost no money to book.

The full list of Opportunity Criteria, and what is expected for each, can be found in the [**Enumeration Values** table in the Test Interface doc](https://openactive.io/test-interface/#enumeration-values) — it's every row with **Type** = `test:TestOpportunityCriteriaEnumeration`.

Your booking system only needs to implement, for this endpoint, those criteria which relate to [features](https://developer.openactive.io/open-booking-api/key-decisions#which-features) that it implements. For example, if your booking system doesn't support free bookings, it does not need to support any of the free opportunity criteria.

## Which Criteria to implement?

Use [Test Data Generator](https://github.com/openactive/openactive-test-suite/tree/master/packages/openactive-integration-tests/test-data-generator) to find out which criteria your booking system needs to implement. Follow these steps:

1. In your Test Suite instance, [which you configured in the previous step](https://developer.openactive.io/open-booking-api/test-suite/configuring-test-suite), run:

```sh
# Use your config/dev.json config file
export NODE_ENV=dev
# Run Test Data Generator
npm run test-data-generator
```

2. The logs from this script will point to two files that it generated, called:
   * `opportunity-test-data.json`
   * `test-interface-actions.json`
3. The `opportunity-test-data.json` file will contain a list of Opportunity Criteria that you need to implement for the features that your booking system supports. To see an example of what this looks like, see the [Test Data Generator README](https://github.com/openactive/openactive-test-suite/tree/master/packages/openactive-integration-tests/test-data-generator).

## Create Opportunity Endpoint Implementation Guidelines

### 1. Switch Statement

Use something like a `switch` statement for this endpoint.

For example, if your booking system only needs to support the `https://openactive.io/test-interface#TestOpportunityBookable` and `https://openactive.io/test-interface#TestOpportunityBookableCancellable` criteria — and only supports [ScheduledSessions and IndividualFacilityUseSlots](https://developer.openactive.io/open-booking-api/test-suite/configuring-test-suite#step-5-configure-opportunity-types), your route would look like (using Node.js with Express as an example):

```javascript
app.post('/test-interface/datasets/:testDatasetIdentifier/opportunities', (req, res) => {
  const opportunityType = req.body['@type'];
  const criteria = req.body['test:testOpportunityCriteria'];
  switch (opportunityType) {
    case 'ScheduledSession':
      switch (criteria) {
        case 'https://openactive.io/test-interface#TestOpportunityBookable':
          createTestOpportunityBookableScheduledSession(req, res);
          break;
        case 'https://openactive.io/test-interface#TestOpportunityBookableCancellable':
          createTestOpportunityBookableCancellableScheduledSession(req, res);
          break;
        default:
          res.sendStatus(404);
          break;
      }
      break;
    case 'Slot': {
      const facilityUseType = req.body.facilityUse['@type'];
      switch (facilityUseType) {
        case 'IndividualFacilityUse':
          switch (criteria) {
            case 'https://openactive.io/test-interface#TestOpportunityBookable':
              createTestOpportunityBookableIfuSlot(req, res);
              break;
            case 'https://openactive.io/test-interface#TestOpportunityBookableCancellable':
              createTestOpportunityBookableCancellableIfuSlot(req, res);
              break;
            default:
              res.sendStatus(404);
              break;
          }
          break;
        default:
          res.sendStatus(404);
          break;
      }
    }
    default:
      res.sendStatus(404);
      break;
  }
});
```

There is an example of this in the code base for [**BookingSystem.AspNetCore**](https://github.com/openactive/OpenActive.Server.NET/tree/master/Examples/BookingSystem.AspNetCore), which is an example implementation of a booking system in .NET. That example is [here](https://github.com/openactive/OpenActive.Server.NET/blob/master/Examples/BookingSystem.AspNetCore/Stores/SessionStore.cs#L47).


# Random Mode: Generating Test Opportunity Data

{% hint style="info" %}
This page is only for those who are using [Random Mode](/open-booking-api/key-decisions#greater-than-random-mode) to test their booking systems. If instead using [Controlled Mode](/open-booking-api/key-decisions#greater-than-controlled-mode), you don't need to worry about manually generating data, as Test Suite will automatically do this by calling your booking system's [Create Opportunity Endpoint](/open-booking-api/test-suite/implementing-the-test-interface/create-opportunity-endpoint).
{% endhint %}

In [Random Mode](/open-booking-api/key-decisions#greater-than-random-mode), Test Suite requires test opportunity data to already exist, which it will use to run tests.

Running Test Suite will cause test opportunities to be booked, and therefore to eventually not be available to subsequent Test Suite runs. And so, this test opportunity data will, at least sometimes, need to be re-generated between Test Suite runs.

You may already have some process for generating random test opportunity data in your booking system (for example, copying data from a live environment snapshot, with personally identifiable information removed) and this may suffice for simple cases.\
However, the recommended approach is to create a script that populates your dataset with the exact required test opportunity data based on your [implemented features](/open-booking-api/key-decisions#which-features). This ensures that you never waste debugging time on test runs that fail due to insufficient data. And it means that your testing solution will be sufficiently stable to run automatically in CI.

## Test Data Generator

Use [Test Data Generator](https://github.com/openactive/openactive-test-suite/tree/master/packages/openactive-integration-tests/test-data-generator) to find out exactly how much test opportunity data needs to be in your booking system in order to run a given set of tests. The README in that project details how you can use this script to generate a `test-opportunity-data.json` file.

You can then create a custom script to populate your dataset using, as input, the `test-opportunity-data.json` file.

### Example

This example should give you an idea as to how to write a custom script to populate your dataset. In this example, one of the `.itemListElement` items in your `test-opportunity-data.json` file looks like this:

```json
{
  "@type": "ListItem",
  "item": {
    "@type": "Slot",
    "facilityUse": {
      "@type": "IndividualFacilityUse",
      "provider": {
        "@type": "Organization",
        "@id": "https://id.booking-system.example.com/organizer/3"
      }
    },
    "test:testOpportunityCriteria": "https://openactive.io/test-interface#TestOpportunityBookable",
    "test:testOpenBookingFlow": "https://openactive.io/test-interface#OpenBookingSimpleFlow",
  },
  "test:numberOfInstancesInDistribution": 32
}
```

When your script comes to process this item, it should consider the following:

* **What type of opportunity to generate**: for this item, [Slot](/data-model/types/slot)s that belong to [IndividualFacilityUse](/data-model/types/individualfacilityuse)s should be generated (note that the IndividualFacilityUses — and the [FacilityUse](/data-model/types/facilityuse)s that they belong to — can either be generated new or can already exist if they satisfy the other constraints).
* **Seller**: Which [seller](https://openactive.io/open-booking-api/EditorsDraft/#dfn-seller) should the generated opportunities be created within. This will either be specified in `.item.facilityUse.provider` (for a Slot) or `.item.superEvent.organizer` (for a [ScheduledSession](/data-model/types/scheduledsession)). For this item, the Slots (and their parent IndividualFacilityUses and FacilityUses) should be created within the Seller with ID `https://id.booking-system.example.com/organizer/3`.
  * Test Data Generator will only use [Sellers that you have already described in your Test Suite configuration](/open-booking-api/test-suite/configuring-test-suite#step-7-configure-sellers-and-booking-authentication).
* **Booking Flow**: Which [booking flow](https://openactive.io/open-booking-api/EditorsDraft/1.0CR3/#booking-flows) the generated opportunities should support. Find this in `item['test:testOpenBookingFlow']`. For this item, the value is `https://openactive.io/test-interface#OpenBookingSimpleFlow`, which means that the generated opportunities need to support the [Simple Booking Flow](https://openactive.io/open-booking-api/EditorsDraft/1.0CR3/#simple-booking-flow).
* **Opportunity Criteria**: The criteria constrains the properties of the generated opportunities. Find this in `item['test:testOpportunityCriteria']`. For this item, the value is `https://openactive.io/test-interface#TestOpportunityBookable`, whose description can be found in the Test Interface docs [here](https://openactive.io/test-interface/#TestOpportunityBookable).
* **How many to generate**: Find this in `.['test:numberOfInstancesInDistribution']`. For this item, the value is 32, so the script should generate (at least) 32 opportunities that fit these constraints.

{% hint style="info" %}
It is strongly recommended to incorporate an element of diversity into your test opportunity data, to provide a greater testing surface area. For example, this could be done by using random data for some of your fields and randomly deciding whether to include certain fields e.g. image if images are optional in your dataset.
{% endhint %}


# Running Test Suite

How to run your now configured Test Suite to check your booking system.

### Option 1: Single console window

With your booking system running, execute the following command in the root`openactive-test-suite` directory:

```bash
npm start
```

This will automatically start the microservice, run the integration tests, then kill the microservice. The output from the microservice and integration tests will be combined in the console.

This mode also offers the ability to rerun the tests interactively, for specific flows, which can be useful for debugging. When running in this mode, press "esc" at any time to cancel the currently running test and return to the interactive prompt.

Individual features or tests can be run in isolation using the following commands, for example:

```bash
npm start -- --runInBand test/features/core/test-interface/
```

```bash
npm start -- test/features/core/test-interface/implemented/create-opportunity-test.js
```

The following shorthand may also be used, as these strings are unique within the path:

```bash
npm start test-interface
```

```bash
npm start create-opportunity-test
```

{% hint style="info" %}
`--runInBand` limits the test suite to running all tests in series. This ensures that each test is executed one at a time, which slows down the test suite, and can be helpful when debugging issues relating to faulty transactions.
{% endhint %}

### Option 2: Two separate console windows

#### Start the Microservice

With your booking system running, execute the following command:

```bash
npm run start-broker
```

This will start to harvest the feeds from your running application.

#### Run the Integration Tests

With both your booking system and `openactive-broker-microservice` running, execute the following command, to execute all configured tests:

```bash
npm run start-tests
```

This will execute tests against your booking system, using the `openactive-broker-microservice` as an intermediary.

Individual features or tests can be run in isolation using the following commands, for example:

```bash
npm run start-tests -- --runInBand test/features/core/test-interface/
```

```bash
npm run start-tests -- --runInBand test/features/core/test-interface/implemented/create-opportunity-test.js 
```

## Reading the test results and debugging

The `openactive-integration-tests` writes log files into the `./output/` directory for each test in Markdown format, so you can see the endpoints that have been called, with both the requests sent and responses received.

To understand the requests and responses, please see the [explanation](https://www.openactive.io/open-booking-api/EditorsDraft/#high-level-api-flow) in the Open Booking API specification, along with the more detailed [sequence diagram](https://www.openactive.io/open-booking-api/EditorsDraft/#step-by-step-process-description) and example [requests and responses](https://www.openactive.io/open-booking-api/EditorsDraft/#paths-and-verbs).

If you don't have an IDE that supports Markdown natively, use a Google Chrome extension to read the output Markdown files, as described [here](https://github.com/openactive/openactive-test-suite/tree/master/packages/openactive-integration-tests#reading-test-results).

A reference version of passing test results is also available for comparison, complete with full model requests and responses for each test:

* [Output in 'Random' mode, when `"useRandomOpportunities": true`](https://openactive.io/openactive-test-suite/random/summary)
* [Output in 'Controlled' mode, when `"useRandomOpportunities": false`](https://openactive.io/openactive-test-suite/controlled/summary)

## Continuous Integration

For continuous integration environments, `"ci": true` must be included in the supplied config JSON to ensure correct console logging output. Then simply run `npm start` in the root`openactive-test-suite` directory. This will automatically start the microservice, run the integration tests, then kill the microservice.

This always overrides the configuration option `"waitForHarvestCompletion": true` , to ensure the harvester is up-to-date with the feeds before the tests begin.

A [sample CI script](https://github.com/openactive/openactive-test-suite/blob/master/simple-ci.sh) is available, and more details can be found [here](https://github.com/openactive/openactive-test-suite#continuous-integration).

You can see CI in action within the test suite itself, which [runs CI](https://github.com/openactive/OpenActive.Server.NET/blob/8f9e5a8e7714f97a98ca650dda198ac183ca02ab/.github/workflows/openactive-test-suite.yml#L58-L80) against the reference implementation.

The conformance certificate generated from test suite running in CI should be deployed to the relevant location (e.g. [via GitHub CI](https://github.com/openactive/OpenActive.Server.NET/blob/b66ba4172f4d839866729808ada30d8b9bafce54/.github/workflows/openactive-test-suite.yml#L105-L112)) and referenced from the production Dataset Site. See [here](/publishing-data/dataset-sites#test-suite-certificate) for more information.


# Generating the Conformance Certificate

## OpenActive Conformance Certificates <a href="#openactive-conformance-certificates" id="openactive-conformance-certificates"></a>

An OpenActive Conformance Certificate offers a mechanism by which implementing systems can prove their conformance to the OpenActive specifications.

### Example certificate <a href="#example-certificate" id="example-certificate"></a>

An example conformance certificate can be found here: <https://certificates.reference-implementation.openactive.io/examples/all-features/random/>

Note that this example is frequently generated for the OpenActive .NET Reference Implementation as part of the CI of the OpenActive Test Suite itself.

### Obtaining a certificate <a href="#obtaining-a-certificate" id="obtaining-a-certificate"></a>

The OpenActive Test Suite can be configured to output a Conformance Certificate upon all tests passing.

This is best achieved as part of a continuous integration script that runs these tests of your UAT environment (or test environment, if you do not have a UAT environment).

A Conformance Certificate is issued to cover a subset of the features of the specifications that are implemented - which are [configured in the test suite](/open-booking-api/test-suite/configuring-test-suite#step-4-configure-features), and hence only guarantees a complete implementation of that subset.

Certificates are designed to be published frequently, to demonstrate continued conformance, especially as the test suite is improved to test for additional edge cases within the features selected.

To obtain a certificate, simply update your `config/dev.json` with the following:

```json
  "integrationTests": {
    "generateConformanceCertificate": true,
    "conformanceCertificateId": "https://acmebooker.example.com/openactive/certificate",
    // ...
```

The certificate ID is the URL where the certificate will be hosted (see below section), which must match in order for the certificate to be valid.

### Publishing your certificate <a href="#publishing-your-certificate" id="publishing-your-certificate"></a>

This certificate must be hosted somewhere publicly accessible, ideally under the same or subdomain as your dataset site.

Static file hosting such as GitHub pages or an Amazon S3 bucket are both recommended.

Your UAT continuous integration script should upload a fresh certificate upon each successful run of the OpenActive Test Suite.

Upload scripts can be created for e.g. Amazon S3 and GitHub pages.

Note that the certificate is named index.html by default to allow it to be referenced at a path such as <https://acmebooker.example.com/openactive/certificate>

The certificate should be linked from your dataset site, to make it easily accessible to integrators in both human and machine-readable forms.

### Certificate self-validation <a href="#certificate-self-validation" id="certificate-self-validation"></a>

When the certificate is opened in a browser, it sends its contents to <https://conformance-certificate-validator.openactive.io/>, which runs checks to ensure its integrity and that its test coverage matches that of the latest test suite for the features selected.

A valid certificate will look as follows:

<figure><img src="/files/YI8sWULNGfkF2xLSNwoU" alt=""><figcaption><p>Valid Certificate Screenshot</p></figcaption></figure>

An invalid certificate will display an error message as follows:

<figure><img src="/files/7SHf5f3gllY3tVr6RMbp" alt=""><figcaption><p>Invalid Certificate Screenshot</p></figcaption></figure>

### Certificate external validation <a href="#certificate-external-validation" id="certificate-external-validation"></a>

External validation is available for integrating services interested in establishing the validity of a certificate.

Simply send a request as follows:

`https://conformance-certificate-validator.openactive.io/validate?url={url}&holder={holder}`

The parameters accepted are:

* `url` - The URL of the conformance certificate
* `holder` - The certified booking services name, which should be taken from bookingService.name (or otherwise publisher.name) within the dataset site - which ensures the certificate is only referenced from relevant system.

### Certificate composition <a href="#certificate-composition" id="certificate-composition"></a>

The certificate is composed of three key elements:

* A human readable HTML page
* An embedded machine-readable JSON-LD snippet
* An embedded zip file of evidence of the test suite results that were used to obtain this certificate, as is [common practice](https://openid.net/certification/).

All three of these components must be coherent and match in order for the certificate to be valid.

The test suite results included as evidence are redacted to remove all domain names from URLs, to ensure the security of your UAT infrastructure.

The evidence zip file can be extracted from the HTML page using the "Download Evidence" button when opening the page in a browser.


# Data Model Overview

This page provides an overview of the various types of data that are in scope for OpenActive.&#x20;

The OpenActive community is focussed on ensuring that all types of physical activity and sport opportunities can made available as open data and where possible bookable online.

If there are any types of data that are not mentioned here, please feel free to either get in touch at <hello@openactive.io> with your use case, or raise a [new issue on GitHub](https://github.com/openactive/modelling-opportunity-data/issues), or both.

## Classes and Sessions

{% hint style="info" %}
Represented in the model by [`SessionSeries`](https://www.openactive.io/modelling-opportunity-data/EditorsDraft/#regular-sessions-sessionseries-and-scheduledsession) and [`ScheduledSession`](https://www.openactive.io/modelling-opportunity-data/EditorsDraft/#regular-sessions-sessionseries-and-scheduledsession)
{% endhint %}

This is an event (usually 1 or 2 hours in duration), that happens with some regularity. It is expected that if a user attends one of these events, that they would find another event in the series happening soon afterwards. They are not just attending a one-off event, as there is an implication of also being part of a community of regular attendees. Note that although the events might be frequent, they do not necessarily conform to a rigid Schedule (though many do). For example the "Rides" tab in this group <https://www.letsride.co.uk/groups/breeze-bromley> shows there is no regularity.

The key thing that distinguishes a Session Series is that it's a thematic event series (e.g. topical meetup or class), or a series of regular events that share a location, attendee group and/or organisers, at a frequency that a participant can expect to build a real exercise habit (at least monthly, as a guide).

Typical opportunities in this category are provided by clubs, community providers, which might take place in a park, club or within leisure centres. It also includes a local walking club that might meet on a Saturday morning once a month.

## Ad-hoc Facility Bookings

{% hint style="info" %}
Represented in the model by [`FacilityUse`](https://www.openactive.io/modelling-opportunity-data/EditorsDraft/#describing-facility-use-code-oa-facilityuse-code-code-oa-individualfacilityuse-code), [`IndividualFacilityUse`](https://www.openactive.io/modelling-opportunity-data/EditorsDraft/#describing-facility-use-code-oa-facilityuse-code-code-oa-individualfacilityuse-code), and [`Slot`](https://www.openactive.io/modelling-opportunity-data/EditorsDraft/#describing-facility-use-code-oa-facilityuse-code-code-oa-individualfacilityuse-code)
{% endhint %}

These are activities which are bookable based on slots of availability for a particular activity (e.g. Badminton) at a facility within a venue (e.g. a sports hall). These include squash courts, a running track, community facilities such as youth centres, school halls, or church halls. If you book "Badminton in School Hall" you can expect the appropriate equipment to be available to allow you to carry out this activity (e.g. a badminton net). In this example the Facility is "School Hall", and the Use is "Badminton".

## Events

{% hint style="info" %}
Represented in the model by `Event`
{% endhint %}

These events are one-off occurrences, e.g. a fun run organised by a local group may run as a standalone event on a particular date or an organisation that runs many individual events e.g. Human Race, Race for Life, International Women's Day.

## Headline Events

{% hint style="info" %}
Represented in the model by [`HeadlineEvent`](https://www.openactive.io/modelling-opportunity-data/EditorsDraft/#headline-events-headlineevent)
{% endhint %}

These are large scale events such as London Marathon or a Triathlon "Hebridean Cycle Challenge", which are typically all day with specific start times for sub-events happening within them.

For example, the "Big South East Aquathlon" contains "Big South East Aquathlon Long Course", "Big South East Aquathlon Sprint", and "Dartford Bridge Aquathlon". All these events happen together, or at offset times during the day. The same is true of any marathon or half-marathon, which might include different races such as the "Elite Wheelchair Marathon".

Headline Events also include festivals, such as the [Lambeth Country Show](http://lambethcountryshow.co.uk/), which may include a range of different short activities within its programme (such sessions of "try wheelchair basketball").

## Courses

{% hint style="info" %}
Represented in the model by [`CourseInstance`](https://www.openactive.io/modelling-opportunity-data/EditorsDraft/#courses-courseinstance)
{% endhint %}

Courses generally involve an upfront commitment to a number of sessions, with a consistent attendee group and/or organisers for the duration of the course.

These are activities which tend to have a start and end date, likely to coincide with a holiday period or are activities based on improving a skill e.g. Soccer Schools, holiday camps, learn to swim.

## Virtual Events

{% hint style="info" %}
Represented in the model by the [**`eventAttendanceMode`**](https://github.com/openactive/modelling-opportunity-data/issues/225) property, which can be applied to the existing opportunity types for `SessionSeries`, `HeadlineEvent`, `Event`, `CourseInstance`.
{% endhint %}

Virtual Events (aka "Livestream" or "Live" events) are activities that can be accessed online by users **live** from source through a digital product e.g. fitness classes, workouts, sessions which are live-streamed or provided via an online product, such as FitSwarm, Zoom, Facebook Live, or Instagram Live. They also include scheduled online events and sessions which can be participated in virtually using an app or run-tracker (e.g. live virtual 5k).

{% hint style="warning" %}
Online classes and events are part of an [ongoing discussion](https://github.com/openactive/modelling-opportunity-data/issues/71). We welcome your contribution to the [discussion and various proposals](https://github.com/openactive/modelling-opportunity-data/labels/virtual%20events) around virtual events.
{% endhint %}

## On-Demand Events

{% hint style="info" %}
Represented in the model by [`OnDemandEvent`](https://github.com/openactive/modelling-opportunity-data/issues/228).
{% endhint %}

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).

{% hint style="warning" %}
Online classes and events are part of an [ongoing discussion](https://github.com/openactive/modelling-opportunity-data/issues/71). We welcome your contribution to the [discussion and various proposals](https://github.com/openactive/modelling-opportunity-data/labels/virtual%20events) around virtual events.
{% endhint %}

## Organisers and Clubs

{% hint style="info" %}
Represented in the model by [`organizer`](https://openactive.io/modelling-opportunity-data/EditorsDraft/#describing-organizers-schema-person-and-schema-organization).
{% endhint %}

{% hint style="warning" %}
[Activity Organisers (often Clubs)](https://github.com/openactive/modelling-opportunity-data/issues/313) are part of an ongoing discussion, and any properties suggested in the associated proposals are subject to change. We welcome your contribution to the discussion to help expedite building these into the OpenActive specifications.
{% endhint %}

Feedback from the sector has highlighted:

* Many potential activity providers are not yet able to share open data about their sessions and facilities in detail.
* There is demand for information about activity providers (e.g. sports clubs) in a local area.
* There is no agreed standard, structure or format for sharing such information.

The latest Editors Draft specification introduces changes to address these issues. This means that organisations who don’t manage sessions online, or are not in a position to publish individual dated and timed events or facility slots, are still able to publish open data to boost their discoverability and attract new participants.&#x20;

## Route Guides

{% hint style="info" %}
Represented in the model by [`routeGuide`](https://openactive.io/route-guide/EditorsDraft/).
{% endhint %}

{% hint style="warning" %}
[Routes](https://github.com/openactive/modelling-opportunity-data/issues/108) are part of an ongoing discussion, and any properties suggested in the associated proposals are subject to change. We welcome your contribution to the discussion to help expedite building these into the OpenActive specifications.
{% endhint %}

For self-directed activities like walking, running and cycling, where there is a detailed pre-defined route available for the activity.

Note that use cases for this data have are not yet fully defined, please join the discussion [here](https://github.com/openactive/modelling-opportunity-data/issues/108) if you have any ideas to contribute.

### Leagues and Ringers

{% hint style="warning" %}
Leagues and ringers are part of an [ongoing discussion](https://github.com/openactive/modelling-opportunity-data/issues/144), and any properties suggested in the associated proposals are subject to change. We welcome your contribution to the discussion to help expedite building these into the OpenActive specifications.
{% endhint %}

Leagues could be informal, social, turn up and play or structured opportunities that have a set frequency and play in some sort of competition format e.g. [Go Mammoth](https://gomammoth.co.uk/), [Simple Netball](https://www.simplenetball.co.uk/).

Ringer opportunities are spaces available in teams already scheduled to play due to drop-outs, which give participants a chance to try out the league mid-season.

Note that use cases for this data have are not yet fully defined, please join the discussion [here](https://github.com/openactive/modelling-opportunity-data/issues/144) if you have any ideas to contribute.


# @context and JSON-LD

The page explains the various "contexts" used within the OpenActive data model\
to standardise the data structure.

## Contexts, Properties and Types

A **context** provides globally unique identifiers for standard **properties** and **types** used to describe data.

For example, the OpenActive **context,** which can be referenced using the globally unique identifier "`https://openactive.io/`", defines the **property** "`startDate`" of the **type** "`Event`". Additionally every instance of a **type** optionally has a unique **"`@id`"** in the form of a URL. In JSON an instance of a type is represented as a JSON object.

{% hint style="info" %}
**`@id`** properties are used as identifiers within the OpenActive models. For compatibility with [JSON-LD](https://www.w3.org/TR/json-ld/), the value of such a property **must** always be an absolute URI that provides a stable globally unique identifier.

The primary purpose of the URI format in this context is to provide natural namespacing for the identifier. Hence, the URI itself **may** not resolve to a valid endpoint (unless otherwise specified in this documentation), but **must** be globally unique and use a domain name controlled by the organization or system publishing the data.

If the URI resolves to a valid endpoint, that endpoint **should** provide a JSON-LD representation of the object.
{% endhint %}

When using **types** and **properties** from a particular context, that context must be referenced using "`@context`" in the top-level JSON object as follows:

```javascript
{
  "@context": [ "https://openactive.io/" ],
  "@type": "Event",
  "@id": "https://example.com/events/3",
  "startDate": "startDate",
  "ageRange": {
    "@type": "QuantitativeValue",
    "minValue": 16
  }
}
```

The OpenActive context "<https://openactive.io/>" brings together several standards, including [schema.org](https://schema.org) and [SKOS](http://www.w3.org/2004/02/skos/core) define some standard properties, which we can use to describe our data.

There are four primary contexts which are used within OpenActive data. These are listed below. Clicking on the name of each context will take you to a list of properties within it. Additionally data publishers can define their own properties and publish their own context, which is known as an extension context.

OpenActive data is valid JSON-LD, which means that properties published in OpenActive data will always exist in one of the specified contexts included in`"@context"`).

| Context                                              | Prefix | URL                                                                         | Bundles          | Prefix Required | Status          |
| ---------------------------------------------------- | ------ | --------------------------------------------------------------------------- | ---------------- | --------------- | --------------- |
| [schema.org](http://schema.org/)                     | schema | <https://schema.org/>                                                       |                  | No              | Living Standard |
| [SKOS](http://www.w3.org/2004/02/skos/core)          | skos   | [http://www.w3.org/2004/02/skos/core#](http://www.w3.org/2004/02/skos/core) |                  | No              | Stable          |
| [OpenActive](https://www.openactive.io/ns)           | oa     | <https://openactive.io/>                                                    | schema.org, SKOS | No              | Stable          |
| [OpenActive Beta](https://www.openactive.io/ns-beta) | beta   | <https://openactive.io/ns-beta>                                             |                  | Yes             | Experimental    |
| \[[Extensions](/data-model/context-and-json-ld)]     | \*     | \*                                                                          |                  | Yes             | Experimental    |

The [OpenActive modelling specification](https://www.openactive.io/modelling-opportunity-data/) includes a "profile" (subset) of schema.org and SKOS which has been defined for OpenActive use, along with the specification for additional OpenActive-specific properties.

### Understanding which contexts are in use

When reading a response which contains JSON-LD, you'll see an "`@context`" property to let you know which contexts are in use.

Three key things to remember:

* The OpenActive context bundles SKOS and schema.org contexts inside it too.
  * So writing

    `"@context": [ "https://openactive.io/" ]`

    is the same as writing

    `"@context": [ "https://openactive.io/", "https://schema.org", "http://www.w3.org/2004/02/skos/core#" ]`
* Using the OpenActive context means that properties defined in OpenActive, SKOS and schema.org do not require a prefix when using the properties defined within them.
  * So you **must** write `"name": "Tai chi Class"` instead of `"schema:name": "Tai chi Class"`
* All other properties always require a prefix.
  * You **must** write `"beta:attendeeCount"` and not `"attendeeCount"`

#### Example

The following example references the contexts OpenActive (which automatically includes schema.org and SKOS) and OpenActive Beta.

```javascript
{
  "@context": [
    "https://openactive.io/",
    "https://openactive.co/ns-beta"
  ],
  "@type": "SessionSeries",
  "name": "Tai chi Class",
  "url": "http://www.example.org/events/1",
  "beta:attendeeCount": 4
}
```

## Context Evolution

#### schema.org

[Schema.org](https://schema.org/) is a collaborative, community activity with a mission to create, maintain, and promote schemas for structured data on the Internet, on web pages, in email messages, and beyond. It was founded by Google, Microsoft, Yahoo and Yandex, Schema.org vocabularies.

The terms of schema.org continue to evolve through lively discussions on their [mailing list](https://www.w3.org/community/schemaorg/) and [GitHub issues](https://github.com/schemaorg/schemaorg/issues). Often properties are added for some specific use case, and their potential relationship to other areas of schema.org only becomes clear later. This gives rise to changes in textual definition and property-to-type associations that gradually make schema.org more coherent, without introducing radical changes in meaning. Consumers of schema.org data can generally rely on schema.org term meanings not changing dramatically; however term definitions often evolve gradually over time, to accommodate new usage scenarios or to improve usability. When schema.org properties are occasionally deprecated, they stay in the context so that they can still be used and are simply referenced to their replacement property.

The OpenActive W3C Community Group contributes to discussions within schema.org, however consensus involves a number of stakeholders and can be time consuming to reach.

Where a schema.org property is explicitly included in the [OpenActive modelling specification](https://www.openactive.io/modelling-opportunity-data/), it follows the OpenActive versioning policy. Where a schema.org property is not included in the OpenActive modelling specification, its usage may be subject to change, however due to schema.org's internal processes and policies it is highly unlikely to change in name, and more likely to subtly change in definition.

### SKOS: Simple Knowledge Organization System

The [SKOS specification](https://www.w3.org/TR/skos-reference), published in 2009, is centred around the `Concept` type, and provides a mechanism for organising these concepts into a hierarchy. It is used for the OpenActive activity list and other controlled vocabularies where an enumeration of specific terms are defined.

This specification is not expected to be updated, however the use of the specification within OpenActive is subject to change in line with the OpenActive versioning policy.

### OpenActive

The [OpenActive W3C Community Group](http://www.w3.org/community/openactive/) was established with the objective of facilitating the sharing and use of physical activity data. We very much encourage you to join the conversation and help shape the standards through this process.

The [OpenActive modelling specification](https://www.openactive.io/modelling-opportunity-data/) defines a subset ("profile") of schema.org and SKOS which has been defined for OpenActive use, along with additional OpenActive-specific properties that feature in the OpenActive context.

The [OpenActive versioning policy](https://www.openactive.io/modelling-opportunity-data/#versioning-policy) within that specification specifies the use of version numbering to indicate potential for breaking changes. Minor versions, e.g. 1.1, 2.1, etc should be backwards compatible. Major versions, e.g. 2.0, 3.0 are likely to include breaking changes. It is estimated that such breaking major version releases will only occur at most annually.

### OpenActive Beta

The [OpenActive Beta](https://www.openactive.io/ns-beta/) context provides a custom context that can be used by publishers experimenting with new properties that are likely to be added to the core specification. It is defined as a convenience to help document properties that are in active testing and review by the community. Data consumers should not assume that properties in the beta context will either be added to the core specification or be included in the OpenActive context over the long term.

## Extensions

OpenActive data can contain additional publisher-specific contexts, known as extensions. Data publishers may use these extensions to include additional fields which are not currently being considered as part of the evolving OpenActive standards.

#### Example

In the example below the `"britishcycling:gpxFile"` field is defined by an extension provided by British Cycling, using their custom context `"http://data.goskyride.com/opendata/britishcycling.jsonld"`.

```javascript
{
  "@context": [
    "https://openactive.io/",
    "https://data.letsride.co.uk/opendata/britishcycling.jsonld"
  ],
  "@type": "Event",
  "name": "Wheel Do It! - Blindside loop (with Betty-Ann)",
  ...
  "britishcycling:gpxFile": "https://lr-media.staging.phoenixdigital.agency/download/2c89c364a0738a26fde9b68eb35bfeb0",
  "meetingPoint": "Start of Loxley Road just past the bus stop, which is immediately after the pedestrian crossing/traffic lights."
}
```


# Types Reference

The OpenActive Data Model uses models derived from [Schema.org](http://schema.org/) and [Simple Knowledge Organization System (SKOS)](https://www.w3.org/2004/02/skos/). The specification adopts the same approach as Schema.org and encourages the use of URLs as unique identifiers for resources.

Information about Events, Places, Organizations and other types of resources should already have been published online to make that information accessible to users. Using existing URLs as identifiers avoids the need to define a new identifier scheme for resources described in opportunity data.

## **List of Types**

### **Event types (also used for v**irtual events)

* [SessionSeries](/data-model/types/sessionseries) and [ScheduledSession](/data-model/types/scheduledsession)
* [HeadlineEvent](/data-model/types/headlineevent)
* [CourseInstance](/data-model/types/courseinstance)
* [Event](/data-model/types/event)

### On-demand event types

* [OnDemandEvent](/data-model/types/ondemandevent)

### Facilities types

* [FacilityUse](/data-model/types/facilityuse)
* [IndividualFacilityUse](/data-model/types/individualfacilityuse)
* [Slot](/data-model/types/slot)​

### **Structured descriptor types**

* [Brand](/data-model/types/brand)
* [Concept](/data-model/types/concept)
* [GeoCoordinates](/data-model/types/geocoordinates)
* [ImageObject](/data-model/types/imageobject)
* [Organization](/data-model/types/organization)
* [PartialSchedule](/data-model/types/partialschedule)
* [Person](/data-model/types/person)
* [Place](/data-model/types/place)
* [PostalAddress](/data-model/types/postaladdress)
* [Schedule](/data-model/types/schedule)


# Action

This page describes the Action type.

This type is derived from <https://schema.org/Action>, which means that any of this type's properties within schema.org may also be used. Note however the properties on this page must be used in preference if a relevant property is available.

## **Properties**

### **Optional properties**

| Property | Expected Type                                                                                                                                                                                       | Description                                                                                                                                                                                                                                                                                        |
| -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| @type    | [`Text`](https://schema.org/Text)                                                                                                                                                                   | Must always be present and set to `"@type": "Action"`                                                                                                                                                                                                                                              |
| object   | <p><a href="https://developer.openactive.io/data-model/types/event"><code>Event</code></a><br>- or -<br><a href="https://developer.openactive.io/data-model/types/order"><code>Order</code></a></p> | <p>The object upon which the action is carried out, whose state is kept intact or changed.</p><p><br>Example</p><p><code>"object": {</code><br>  <code>"@type": "SessionSeries",</code><br>  <code>"@id": "<https://id.booking-system.example.com/session-series/42>"</code><br><code>}</code></p> |

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# AudioObject

This page describes the AudioObject type.

This type is derived from <https://schema.org/AudioObject>, which means that any of this type's properties within schema.org may also be used. Note however the properties on this page must be used in preference if a relevant property is available.

## **Properties**

### **Required properties**

| Property | Expected Type                     | Description                                                                                                        |
| -------- | --------------------------------- | ------------------------------------------------------------------------------------------------------------------ |
| @type    | [`Text`](https://schema.org/Text) | Must always be present and set to `"@type": "AudioObject"`                                                         |
| url      | [`URL`](https://schema.org/URL)   | <p>The URL for the audio.</p><p><br>Example</p><p><code>"url": "<https://soundcloud.com/stayin/getfit>"</code></p> |

### **Optional properties**

| Property   | Expected Type                                                                          | Description                                                                                                                                                                                                                                                                           |
| ---------- | -------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| contentUrl | [`URL`](https://schema.org/URL)                                                        | <p>Actual bytes of the media object, for example the image file or video file.</p><p><br>Example</p><p><code>"contentUrl": "<https://example.com/media/stayin/getfit>"</code></p>                                                                                                     |
| embedUrl   | [`URL`](https://schema.org/URL)                                                        | <p>A URL pointing to a player for a specific video. In general, this is the information in the src element of an embed tag and should not be the same as the content of the loc tag.</p><p><br>Example</p><p><code>"embedUrl": "<https://example.com/media/stayin/getfit>"</code></p> |
| height     | [`Integer`](https://schema.org/Integer)                                                | <p>The height of the media in pixels.</p><p><br>Example</p><p><code>"height": 300</code></p>                                                                                                                                                                                          |
| thumbnail  | Array of [`ImageObject`](https://developer.openactive.io/data-model/types/imageobject) | The URL for a thumbnail image for the audio.                                                                                                                                                                                                                                          |
| width      | [`Integer`](https://schema.org/Integer)                                                | <p>The width of the media in pixels.</p><p><br>Example</p><p><code>"width": 400</code></p>                                                                                                                                                                                            |

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# BabyChanging

This page describes the BabyChanging type.

This type is derived from <https://schema.org/LocationFeatureSpecification>, which means that any of this type's properties within schema.org may also be used. Note however the properties on this page must be used in preference if a relevant property is available.

## **Properties**

### **Required properties**

| Property | Expected Type                           | Description                                                                                                                            |
| -------- | --------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| @type    | [`Text`](https://schema.org/Text)       | Must always be present and set to `"@type": "BabyChanging"`                                                                            |
| name     | [`Text`](https://schema.org/Text)       | <p>A string, suitable for presentation in user interfaces.</p><p><br>Example</p><p><code>"name": "Baby Changing Facilities"</code></p> |
| value    | [`Boolean`](https://schema.org/Boolean) | A boolean value indicating whether this ammenity is available.                                                                         |

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# Barcode

This page describes the Barcode type.

This type is derived from <https://schema.org/Barcode>, which means that any of this type's properties within schema.org may also be used. Note however the properties on this page must be used in preference if a relevant property is available.

## **Properties**

### **Required properties**

| Property | Expected Type                     | Description                                            |
| -------- | --------------------------------- | ------------------------------------------------------ |
| @type    | [`Text`](https://schema.org/Text) | Must always be present and set to `"@type": "Barcode"` |

### **Optional properties**

| Property  | Expected Type                                                                          | Description                                                                                                                                                                                            |
| --------- | -------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| height    | [`Integer`](https://schema.org/Integer)                                                | <p>The height of the media in pixels.</p><p><br>Example</p><p><code>"height": 300</code></p>                                                                                                           |
| text      | [`Text`](https://schema.org/Text)                                                      | <p>The barcode number</p><p><br>Example</p><p><code>"text": "0123456789"</code></p>                                                                                                                    |
| thumbnail | Array of [`ImageObject`](https://developer.openactive.io/data-model/types/imageobject) | The URL for a thumbnail image for an image.                                                                                                                                                            |
| url       | [`URL`](https://schema.org/URL)                                                        | <p>A fallback rendered barcode image url in addition to the raw barcode details.</p><p><br>Example</p><p><code>"url": "<https://fallback.image.example.com/476ac24c694da79c5e33731ebbb5f1>"</code></p> |
| width     | [`Integer`](https://schema.org/Integer)                                                | <p>The width of the media in pixels.</p><p><br>Example</p><p><code>"width": 400</code></p>                                                                                                             |

### **Beta Extension properties**

These properties are defined in the [OpenActive Beta Extension](https://openactive.io/ns-beta). The OpenActive Beta Extension is defined as a convenience to help document properties that are in active testing and review by the community. Publishers should not assume that properties in the beta namespace will either be added to the core specification or be included in the namespace over the long term.

| Property      | Expected Type                     | Description                                                                                                                       |
| ------------- | --------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
| beta:codeType | [`Text`](https://schema.org/Text) | <p><a href="https://github.com/openactive/open-booking-api/issues/130">Proposal #130</a></p><p>Type of barcode, e.g. 'Code39'</p> |

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# BookingService

This page describes the BookingService type.

## **Properties**

### **Optional properties**

| Property        | Expected Type                                                              | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| --------------- | -------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| @type           | [`Text`](https://schema.org/Text)                                          | Must always be present and set to `"@type": "BookingService"`                                                                                                                                                                                                                                                                                                                                                                                                |
| hasCredential   | [`URL`](https://schema.org/URL)                                            | A human and machine-readable certification file that asserts the service's conformance to established standards. The value of this property should be a URL that resolves to a valid and up-to-date OpenActive Test Suite Conformance Certificate for this implementation. Note this property is in EARLY RELEASE AND IS SUBJECT TO CHANGE, as the [Dataset API Discovery specification](https://openactive.io/dataset-api-discovery/EditorsDraft/) evolves. |
| name            | [`Text`](https://schema.org/Text)                                          | The name of the Booking System.                                                                                                                                                                                                                                                                                                                                                                                                                              |
| softwareVersion | [`Text`](https://schema.org/Text)                                          | The version of the application, useful for on-premise installations. Note this property is in EARLY RELEASE AND IS SUBJECT TO CHANGE, as the [Dataset API Discovery specification](https://openactive.io/dataset-api-discovery/EditorsDraft/) evolves.                                                                                                                                                                                                       |
| termsOfService  | Array of [`Terms`](https://developer.openactive.io/data-model/types/terms) | The terms of service of the Booking System.                                                                                                                                                                                                                                                                                                                                                                                                                  |
| url             | [`URL`](https://schema.org/URL)                                            | The URL of the website of the Booking System.                                                                                                                                                                                                                                                                                                                                                                                                                |

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# BooleanFormFieldSpecification

This page describes the BooleanFormFieldSpecification type.

This type is derived from <https://schema.org/PropertyValueSpecification>, which means that any of this type's properties within schema.org may also be used. Note however the properties on this page must be used in preference if a relevant property is available.

## **Properties**

### **Required properties**

| Property | Expected Type                     | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| -------- | --------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| @type    | [`Text`](https://schema.org/Text) | Must always be present and set to `"@type": "BooleanFormFieldSpecification"`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| @id      | [`URL`](https://schema.org/URL)   | <p>A unique URI-based identifier for the record.</p><p><code>@id</code> properties are used as identifiers for compatibility with JSON-LD. The value of such a property must always be an absolute URI that provides a stable globally unique identifier for the resource, as described in <a href="https://tools.ietf.org/html/rfc3986">RFC3986</a>.</p><p>The primary purpose of the URI format in this context is to provide natural namespacing for the identifier. Hence, the URI itself may not resolve to a valid endpoint, but must use a domain name controlled by the resource owner (the organisation responsible for the OpenActive open data feed).</p><p><br>Example</p><p><code>"@id": "<https://example.com/photoconsent>"</code></p> |
| name     | [`Text`](https://schema.org/Text) | Display label for the field.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |

### **Recommended properties**

| Property    | Expected Type                     | Description                                                                             |
| ----------- | --------------------------------- | --------------------------------------------------------------------------------------- |
| description | [`Text`](https://schema.org/Text) | Descriptive help plain text for the field, which must not include HTML or other markup. |

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# Brand

This page describes the Brand type.

This type is derived from <https://schema.org/Brand>, which means that any of this type's properties within schema.org may also be used. Note however the properties on this page must be used in preference if a relevant property is available.

## **Properties**

### **Required properties**

| Property | Expected Type                     | Description                                                                                                                                     |
| -------- | --------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| @type    | [`Text`](https://schema.org/Text) | Must always be present and set to `"@type": "Brand"`                                                                                            |
| name     | [`Text`](https://schema.org/Text) | <p>The name of the brand.</p><p><br>Example</p><p><code>"name": "Play Ball!"</code></p>                                                         |
| url      | [`URL`](https://schema.org/URL)   | <p>A url where further information can be found for the brand.</p><p><br>Example</p><p><code>"url": "<http://example.com/play_ball>"</code></p> |

### **Recommended properties**

| Property    | Expected Type                                                                 | Description                                                                                                                                                                                                                            |
| ----------- | ----------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| description | [`Text`](https://schema.org/Text)                                             | <p>A plain text description for the brand, which must not include HTML or other markup.</p><p><br>Example</p><p><code>"description": "Play Ball! is a series of games for people of all abilities."</code></p>                         |
| logo        | [`ImageObject`](https://developer.openactive.io/data-model/types/imageobject) | <p>The logo associated with the brand.</p><p><br>Example</p><p><code>"logo": {</code><br>  <code>"@type": "ImageObject",</code><br>  <code>"url": "<http://example.com/static/image/speedball_large.jpg>"</code><br><code>}</code></p> |

### **Optional properties**

| Property   | Expected Type                                                                                                                                                                                                                                                                                                                                                                                | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| @id        | [`URL`](https://schema.org/URL)                                                                                                                                                                                                                                                                                                                                                              | <p>A unique URI-based identifier for the record.</p><p><code>@id</code> properties are used as identifiers for compatibility with JSON-LD. The value of such a property must always be an absolute URI that provides a stable globally unique identifier for the resource, as described in <a href="https://tools.ietf.org/html/rfc3986">RFC3986</a>.</p><p>The primary purpose of the URI format in this context is to provide natural namespacing for the identifier. Hence, the URI itself may not resolve to a valid endpoint, but must use a domain name controlled by the resource owner (the organisation responsible for the OpenActive open data feed).</p><p><br>Example</p><p><code>"@id": "<https://example.com/programmes/12345>"</code></p> |
| identifier | <p><a href="https://schema.org/Text"><code>Text</code></a><br>- or -<br><a href="https://developer.openactive.io/data-model/types/propertyvalue"><code>PropertyValue</code></a><br>- or -<br>Array of <a href="https://developer.openactive.io/data-model/types/propertyvalue"><code>PropertyValue</code></a><br>- or -<br><a href="https://schema.org/Integer"><code>Integer</code></a></p> | <p>A local non-URI identifier for the resource</p><p><br>Example</p><p><code>"identifier": "BR1234"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |

### **Beta Extension properties**

These properties are defined in the [OpenActive Beta Extension](https://openactive.io/ns-beta). The OpenActive Beta Extension is defined as a convenience to help document properties that are in active testing and review by the community. Publishers should not assume that properties in the beta namespace will either be added to the core specification or be included in the namespace over the long term.

| Property                  | Expected Type                                            | Description                                                                                                                                                                                                                                                                                            |
| ------------------------- | -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| beta:formattedDescription | [`Text`](https://schema.org/Text)                        | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/276">Proposal #276</a></p><p>Sometimes a description is stored with formatting (e.g. href, bold, italics, embedded YouTube videos). This formatting can be useful for data consumers. This property must contain HTML.</p> |
| beta:video                | Array of [`VideoObject`](https://schema.org/VideoObject) | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/88">Proposal #88</a></p><p>A related video object.</p>                                                                                                                                                                     |

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# ChangingFacilities

This page describes the ChangingFacilities type.

This type is derived from <https://schema.org/LocationFeatureSpecification>, which means that any of this type's properties within schema.org may also be used. Note however the properties on this page must be used in preference if a relevant property is available.

## **Properties**

### **Required properties**

| Property | Expected Type                           | Description                                                                                                                  |
| -------- | --------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
| @type    | [`Text`](https://schema.org/Text)       | Must always be present and set to `"@type": "ChangingFacilities"`                                                            |
| name     | [`Text`](https://schema.org/Text)       | <p>A string, suitable for presentation in user interfaces.</p><p><br>Example</p><p><code>"name": "Changing Rooms"</code></p> |
| value    | [`Boolean`](https://schema.org/Boolean) | A boolean value indicating whether this ammenity is available.                                                               |

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# ConceptScheme

This page describes the ConceptScheme type.

This type is derived from <http://www.w3.org/2004/02/skos/core#ConceptScheme>.

## **Properties**

### **Required properties**

| Property | Expected Type                                                                  | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| -------- | ------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| @type    | [`Text`](https://schema.org/Text)                                              | Must always be present and set to `"@type": "ConceptScheme"`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| @id      | [`URL`](https://schema.org/URL)                                                | <p>A unique URI-based identifier for the record.</p><p><code>@id</code> properties are used as identifiers for compatibility with JSON-LD. The value of such a property must always be an absolute URI that provides a stable globally unique identifier for the resource, as described in <a href="https://tools.ietf.org/html/rfc3986">RFC3986</a>.</p><p>The primary purpose of the URI format in this context is to provide natural namespacing for the identifier. Hence, the URI itself may not resolve to a valid endpoint, but must use a domain name controlled by the resource owner (the organisation responsible for the OpenActive open data feed).</p><p><br>Example</p><p><code>"@id": "<https://example.com/scheme-name>"</code></p> |
| concept  | Array of [`Concept`](https://developer.openactive.io/data-model/types/concept) | <p>A collection of concepts that are part of this scheme</p><p><br>Example</p><p><code>"concept": \[</code><br>  <code>{</code><br>    <code>"@id": "<https://example.com/concept/martial-arts>",</code><br>    <code>"type": "Concept",</code><br>    <code>"prefLabel": "Martial Arts",</code><br>    <code>"inScheme": "<https://example.com/scheme/123>",</code><br>    <code>"narrower": "<https://example.com/concept/martial-arts/karate>"</code><br>  <code>}</code><br><code>]</code></p>                                                                                                                                                                                                                                                   |
| title    | [`Text`](https://schema.org/Text)                                              | <p>The title of the scheme</p><p><br>Example</p><p><code>"title": "Activity List"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| url      | [`URL`](https://schema.org/URL)                                                | <p>A URL to a web page (or section of a page) that describes the concept scheme.</p><p><br>Example</p><p><code>"url": "<https://example.com/scheme/1234>"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |

### **Recommended properties**

| Property    | Expected Type                     | Description                                                                                                                                                                   |
| ----------- | --------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| description | [`Text`](https://schema.org/Text) | <p>A plain text description of the taxonomy, which must not include HTML or other markup.</p><p><br>Example</p><p><code>"description": "An example activity list."</code></p> |
| license     | [`URL`](https://schema.org/URL)   | <p>Reference to the license under which the activity list has been published.</p><p><br>Example</p><p><code>"license": "<https://example.com/license/MIT>"</code></p>         |

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# Concept

This page describes the Concept type.

This type is derived from <http://www.w3.org/2004/02/skos/core#Concept>.

## **Properties**

### **Required properties**

| Property  | Expected Type                     | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| --------- | --------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| @type     | [`Text`](https://schema.org/Text) | Must always be present and set to `"@type": "Concept"`                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| @id       | [`URL`](https://schema.org/URL)   | <p>The <code>@id</code> of a Concept from the <a href="https://github.com/openactive/activity-list">OpenActive Activity List</a>. This value <a href="https://developer.openactive.io/publishing-data/activity-list-references">must always exactly match</a> an <code>id</code> from the <a href="https://github.com/openactive/activity-list">OpenActive Activity List</a>.</p><p><br>Example</p><p><code>"@id": "<https://openactive.io/activity-list#a454c7e6-52da-426d-9bd1-743e9d7d266d>"</code></p> |
| inScheme  | [`URL`](https://schema.org/URL)   | <p>A stable URL reference for the taxonomy, which must be <code><https://openactive.io/activity-list></code> to <a href="https://developer.openactive.io/publishing-data/activity-list-references">reference the OpenActive Activity List</a>.</p><p><br>Example</p><p><code>"inScheme": "<https://openactive.io/activity-list>"</code></p>                                                                                                                                                                |
| prefLabel | [`Text`](https://schema.org/Text) | <p>A human readable string that minimally describes the Concept, for use in user interfaces.</p><p><br>Example</p><p><code>"prefLabel": "Salsa"</code></p>                                                                                                                                                                                                                                                                                                                                                 |

### **Optional properties**

| Property     | Expected Type                              | Description                                                                                                                                                                                                                 |
| ------------ | ------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| altLabel     | Array of [`Text`](https://schema.org/Text) | <p>An alternative human readable string for use in user interfaces.</p><p><br>Example</p><p><code>"altLabel": \[</code><br>  <code>"Five a side"</code><br><code>]</code></p>                                               |
| broader      | Array of [`URL`](https://schema.org/URL)   | <p>A broader Concept URI</p><p><br>Example</p><p><code>"broader": \[</code><br>  <code>"<https://openactive.io/activity-list#6ca15167-51da-4d91-a1ae-8a45dc47b0ea>"</code><br><code>]</code></p>                            |
| definition   | [`Text`](https://schema.org/Text)          | <p>A human readable string that unambiguously defines the Concept, for use in user interfaces.</p><p><br>Example</p><p><code>"definition": "Latin American style of dance with Cuban origins."</code></p>                   |
| hiddenLabel  | Array of [`Text`](https://schema.org/Text) | <p>An alternative human readable string used to drive autocomplete search matches, that is hidden from the user.</p><p><br>Example</p><p><code>"hiddenLabel": \[</code><br>  <code>"5-a-side"</code><br><code>]</code></p>  |
| narrower     | Array of [`URL`](https://schema.org/URL)   | <p>A more specific concept URI</p><p><br>Example</p><p><code>"narrower": \[</code><br>  <code>"<https://openactive.io/activity-list#b3829f3e-a63e-455f-a51c-1f50ecf85ad5>"</code><br><code>]</code></p>                     |
| notation     | [`Text`](https://schema.org/Text)          | <p>A human-readable identifier for the concept.</p><p><br>Example</p><p><code>"notation": "salsa"</code></p>                                                                                                                |
| related      | Array of [`URL`](https://schema.org/URL)   | <p>A related Concept URI</p><p><br>Example</p><p><code>"related": \[</code><br>  <code>"<https://openactive.io/activity-list#5cdf5ead-e19d-4619-9585-cfe509c3fe52>"</code><br><code>]</code></p>                            |
| topConceptOf | [`URL`](https://schema.org/URL)            | <p>A reference to the Scheme URI, the existence of which indicates that this Concept is at the top level of the hierarchy.</p><p><br>Example</p><p><code>"topConceptOf": "<https://openactive.io/activity-list>"</code></p> |

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# CourseInstance

This page describes the CourseInstance type.

This type is derived from <https://schema.org/CourseInstance>, which means that any of this type's properties within schema.org may also be used. Note however the properties on this page must be used in preference if a relevant property is available.

## **Properties**

### **Required properties**

| Property  | Expected Type                                                                                                                                                                                                       | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| @type     | [`Text`](https://schema.org/Text)                                                                                                                                                                                   | Must always be present and set to `"@type": "CourseInstance"`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| @id       | [`URL`](https://schema.org/URL)                                                                                                                                                                                     | <p>A unique URI-based identifier for the record.</p><p><code>@id</code> properties are used as identifiers for compatibility with JSON-LD. The value of such a property must always be an absolute URI that provides a stable globally unique identifier for the resource, as described in <a href="https://tools.ietf.org/html/rfc3986">RFC3986</a>.</p><p>The primary purpose of the URI format in this context is to provide natural namespacing for the identifier. Hence, the URI itself may not resolve to a valid endpoint, but must use a domain name controlled by the resource owner (the organisation responsible for the OpenActive open data feed).</p><p><br>Example</p><p><code>"@id": "<https://api.example.com/course-instances/12345>"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| activity  | Array of [`Concept`](https://developer.openactive.io/data-model/types/concept)                                                                                                                                      | <p>Specifies the physical activity or activities that will take place during an event.</p><p><br>Example</p><p><code>"activity": \[</code><br>  <code>{</code><br>    <code>"@type": "Concept",</code><br>    <code>"@id": "<https://openactive.io/activity-list#5e78bcbe-36db-425a-9064-bf96d09cc351>",</code><br>    <code>"prefLabel": "Bodypump™",</code><br>    <code>"inScheme": "<https://openactive.io/activity-list>"</code><br>  <code>}</code><br><code>]</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| endDate   | [`Date`](https://schema.org/Date)                                                                                                                                                                                   | <p>The end date of this course.</p><p><br>Example</p><p><code>"endDate": "2018-01-27"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| location  | <p><a href="https://developer.openactive.io/data-model/types/place"><code>Place</code></a><br>- or -<br><code>@id</code> reference</p>                                                                              | <p>The location at which the event will take place. Or, in the case of events that may span multiple locations, the initial meeting or starting point.</p><p>Locations must be specified as a <a href="https://github.com/openactive/developer-documentation/blob/master/models/place/README.md">Place</a> complete with a fully described geographic location and/or address.</p><p><br>Example</p><p><code>"location": {</code><br>  <code>"@type": "Place",</code><br>  <code>"@id": "<https://example.com/locations/1234ABCD>",</code><br>  <code>"identifier": "1234ABCD",</code><br>  <code>"address": {</code><br>    <code>"addressLocality": "New Malden",</code><br>    <code>"addressRegion": "London",</code><br>    <code>"postalCode": "NW5 3DU",</code><br>    <code>"streetAddress": "Raynes Park High School, 46A West Barnes Lane",</code><br>    <code>"@type": "PostalAddress"</code><br>  <code>},</code><br>  <code>"description": "Raynes Park High School in London",</code><br>  <code>"geo": {</code><br>    <code>"latitude": 51.4034423828125,</code><br>    <code>"longitude": -0.2369088977575302,</code><br>    <code>"@type": "GeoCoordinates"</code><br>  <code>},</code><br>  <code>"name": "Raynes Park High School",</code><br>  <code>"telephone": "01253 473934"</code><br><code>}</code></p> |
| name      | [`Text`](https://schema.org/Text)                                                                                                                                                                                   | <p>The name of the event</p><p><br>Example</p><p><code>"name": "Speedball"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| offers    | Array of [`Offer`](https://developer.openactive.io/data-model/types/offer)                                                                                                                                          | <p>An array of schema:Offer that include the price of attending.</p><p><br>Example</p><p><code>"offers": \[</code><br>  <code>{</code><br>    <code>"@type": "Offer",</code><br>    <code>"identifier": "OX-AD",</code><br>    <code>"name": "Adult",</code><br>    <code>"price": 3.3,</code><br>    <code>"priceCurrency": "GBP",</code><br>    <code>"url": "<https://profile.everyoneactive.com/booking?Site=0140&Activities=1402CBP20150217&Culture=en-GB>"</code><br>  <code>}</code><br><code>]</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| organizer | <p><a href="https://developer.openactive.io/data-model/types/organization"><code>Organization</code></a><br>- or -<br><a href="https://developer.openactive.io/data-model/types/person"><code>Person</code></a></p> | <p>The person or organization ultimately responsible for an event. An organizer might be an schema:Organization or a schema:Person.</p><p><br>Example</p><p><code>"organizer": {</code><br>  <code>"@type": "Organization",</code><br>  <code>"@id": "<https://id.bookingsystem.example.com/organizers/1>",</code><br>  <code>"name": "Central Speedball Association",</code><br>  <code>"url": "<http://www.speedball-world.com>"</code><br><code>}</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| startDate | [`Date`](https://schema.org/Date)                                                                                                                                                                                   | <p>The start date of this course.</p><p><br>Example</p><p><code>"startDate": "2018-01-06"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| url       | [`URL`](https://schema.org/URL)                                                                                                                                                                                     | <p>A URL to a web page (or section of a page) that describes the event.</p><p><br>Example</p><p><code>"url": "<https://example.com/event/1234>"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |

### **Required options**

A data publisher must provide either a `subEvent` or specify an `eventSchedule` for a CourseInstance.

| Property      | Expected Type                                                                    | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| ------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| subEvent      | Array of [`Event`](https://developer.openactive.io/data-model/types/event)       | The occurrences of this CourseInstance.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| eventSchedule | Array of [`Schedule`](https://developer.openactive.io/data-model/types/schedule) | <p>A an array of oa:Schedule or oa:PartialSchedule, which represents a recurrence pattern.</p><p><br>Example</p><p><code>"eventSchedule": \[</code><br>  <code>{</code><br>    <code>"@type": "PartialSchedule",</code><br>    <code>"repeatFrequency": "P1W",</code><br>    <code>"startTime": "20:15",</code><br>    <code>"endTime": "20:45",</code><br>    <code>"byDay": \[</code><br>      <code>"<http://schema.org/Tuesday>"</code><br>    <code>],</code><br>    <code>"scheduleTimezone": "Europe/London"</code><br>  <code>}</code><br><code>]</code></p> |

### **Recommended properties**

| Property                  | Expected Type                                                                                                                                                                             | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| ------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ageRange                  | [`QuantitativeValue`](https://developer.openactive.io/data-model/types/quantitativevalue)                                                                                                 | <p>Indicates that an event is recommended as being suitable for or is targetted at a specific age range.</p><p><br>Example</p><p><code>"ageRange": {</code><br>  <code>"@type": "QuantitativeValue",</code><br>  <code>"minValue": 50,</code><br>  <code>"maxValue": 60</code><br><code>}</code></p>                                                                                                                                                                                                                                                                                                                                                                                              |
| description               | [`Text`](https://schema.org/Text)                                                                                                                                                         | <p>A plain text description of the event, which must not include HTML or other markup.</p><p><br>Example</p><p><code>"description": "A fast paced game that incorporates netball, handball and football."</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| eventStatus               | [`EventStatusType`](https://schema.org/EventStatusType)                                                                                                                                   | <p>The status of an event. Can be used to indicate rescheduled or cancelled events</p><p><br>Example</p><p><code>"eventStatus": "<https://schema.org/EventScheduled>"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| genderRestriction         | [`GenderRestrictionType`](https://openactive.io/GenderRestrictionType)                                                                                                                    | <p>Indicates that an event is restricted to male, female or a mixed audience. This information must be displayed prominently to the user before booking. If a gender restriction isn't specified then applications should assume that an event is suitable for a mixed audience.</p><p><br>Example</p><p><code>"genderRestriction": "<https://openactive.io/FemaleOnly>"</code></p>                                                                                                                                                                                                                                                                                                               |
| image                     | Array of [`ImageObject`](https://developer.openactive.io/data-model/types/imageobject)                                                                                                    | <p>An image or photo that depicts the event, e.g. a photo taken at a previous event.</p><p><br>Example</p><p><code>"image": \[</code><br>  <code>{</code><br>    <code>"@type": "ImageObject",</code><br>    <code>"url": "<http://example.com/static/image/speedball_large.jpg>",</code><br>    <code>"thumbnail": \[</code><br>      <code>{</code><br>        <code>"@type": "ImageObject",</code><br>        <code>"url": "<http://example.com/static/image/speedball_thumbnail.jpg>"</code><br>      <code>}</code><br>    <code>]</code><br>  <code>}</code><br><code>]</code></p>                                                                                                          |
| leader                    | Array of [`Person`](https://developer.openactive.io/data-model/types/person)                                                                                                              | <p>Refers to a person (schema:Person) who will be leading an event. E.g. a coach. This is a more specific role than an organiser or a contributor. The person will need to have given their consent for their personal information to be present in the Open Data.</p><p><br>Example</p><p><code>"leader": \[</code><br>  <code>{</code><br>    <code>"@type": "Person",</code><br>    <code>"familyName": "Smith",</code><br>    <code>"givenName": "Nicole",</code><br>    <code>"gender": "<https://schema.org/Male>",</code><br>    <code>"@id": "<https://example.com/locations/1234ABCD/leaders/89>",</code><br>    <code>"identifier": 89</code><br>  <code>}</code><br><code>]</code></p> |
| level                     | <p>Array of <a href="https://schema.org/Text"><code>Text</code></a><br>- or -<br>Array of <a href="https://developer.openactive.io/data-model/types/concept"><code>Concept</code></a></p> | <p>A general purpose property for specifying the suitability of an event for different participant “levels”. E.g. <code>Beginner</code>, <code>Intermediate</code>, <code>Advanced</code>. Or in the case of martial arts, specific belt requirements.</p><p><br>Example</p><p><code>"level": \[</code><br>  <code>"Beginner"</code><br><code>]</code></p>                                                                                                                                                                                                                                                                                                                                        |
| maximumAttendeeCapacity   | [`Integer`](https://schema.org/Integer)                                                                                                                                                   | <p>The maximum capacity of the Event.</p><p><br>Example</p><p><code>"maximumAttendeeCapacity": 30</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| remainingAttendeeCapacity | [`Integer`](https://schema.org/Integer)                                                                                                                                                   | <p>The number of places that are still available for the Event.</p><p><br>Example</p><p><code>"remainingAttendeeCapacity": 20</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |

### **Optional properties**

| Property                                | Expected Type                                                                                                                                                                                                                                                                                                                                                                                | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| --------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| accessibilityInformation                | [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                            | <p>Provide additional, specific documentation for participants about how disabilities are, or can be supported at the Event.</p><p><br>Example</p><p><code>"accessibilityInformation": "This route has been British Cycling assessed as an accessible route, meaning it is suitable for the majority of adaptive bikes. The route will have no or low levels of traffic, there will be plenty of space and will have a good surface throughout. If you have any questions about using this route on an adaptive bike on this ride, please use visit <https://www.letsride.co.uk/accessibility> or call 0123 456 7000 and ask for the Recreation team."</code></p> |
| accessibilitySupport                    | Array of [`Concept`](https://developer.openactive.io/data-model/types/concept)                                                                                                                                                                                                                                                                                                               | <p>Used to specify the types of disabilities or impairments that are supported at an event.</p><p><br>Example</p><p><code>"accessibilitySupport": \[</code><br>  <code>{</code><br>    <code>"@type": "Concept",</code><br>    <code>"@id": "<https://openactive.io/accessibility-support#1393f2dc-3fcc-4be9-a99f-f1e51f5ad277>",</code><br>    <code>"prefLabel": "Visual impairment",</code><br>    <code>"inScheme": "<https://openactive.io/accessibility-support>"</code><br>  <code>}</code><br><code>]</code></p>                                                                                                                                          |
| additionalAdmissionRestriction          | Array of [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                   | <p>Free text restrictions that must be displayed prominently to the user before booking. This property must only contain restrictions not described by <code>oa:ageRestriction</code> or <code>oa:genderRestriction</code>.</p><p><br>Example</p><p><code>"additionalAdmissionRestriction": \[</code><br>  <code>"Participants younger than 12 must be accompanied by an adult",</code><br>  <code>"Participants must be comfortable standing for long periods of time"</code><br><code>]</code></p>                                                                                                                                                              |
| ageRestriction                          | [`QuantitativeValue`](https://developer.openactive.io/data-model/types/quantitativevalue)                                                                                                                                                                                                                                                                                                    | <p>The enforced attendee age range requirement of the Event or Offer, that must be displayed prominently to the user before booking.</p><p><br>Example</p><p><code>"ageRestriction": {</code><br>  <code>"@type": "QuantitativeValue",</code><br>  <code>"minValue": 15,</code><br>  <code>"maxValue": 60</code><br><code>}</code></p>                                                                                                                                                                                                                                                                                                                            |
| attendeeInstructions                    | [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                            | <p>Provides additional notes and instructions for event attendees, for example more information on how to find the event, what to bring, etc. The value of this property must not include HTML or other markup.</p><p><br>Example</p><p><code>"attendeeInstructions": "Ensure you bring trainers and a bottle of water."</code></p>                                                                                                                                                                                                                                                                                                                               |
| category                                | <p>Array of <a href="https://developer.openactive.io/data-model/types/concept"><code>Concept</code></a><br>- or -<br>Array of <a href="https://schema.org/Text"><code>Text</code></a></p>                                                                                                                                                                                                    | <p>Provides a set of tags that help categorise and describe an event, e.g. its intensity, purpose, etc.</p><p><br>Example</p><p><code>"category": \[</code><br>  <code>"High Intensity"</code><br><code>]</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| contributor                             | Array of [`Person`](https://developer.openactive.io/data-model/types/person)                                                                                                                                                                                                                                                                                                                 | <p>A Person who contributes to the facilitation of the Event.</p><p><br>Example</p><p><code>"contributor": \[</code><br>  <code>{</code><br>    <code>"@type": "Person",</code><br>    <code>"familyName": "Smith",</code><br>    <code>"givenName": "Nicole",</code><br>    <code>"@id": "<https://example.com/locations/1234ABCD/leaders/89>",</code><br>    <code>"identifier": 89</code><br>  <code>}</code><br><code>]</code></p>                                                                                                                                                                                                                            |
| customerAccountBookingRestriction       | Array of [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                   | <p>Free text restrictions to display to the Customer at the browse stage, that may apply when using a Customer Account to make the booking.</p><p>Note that this property is in EARLY RELEASE AND IS SUBJECT TO CHANGE, as the <a href="https://github.com/openactive/customer-accounts">Customer Accounts proposal</a> evolves.</p><p><br>Example</p><p><code>"customerAccountBookingRestriction": \[</code><br>  <code>"Gold members only",</code><br>  <code>"Gym induction required"</code><br><code>]</code></p>                                                                                                                                             |
| duration                                | [`Duration`](https://schema.org/Duration)                                                                                                                                                                                                                                                                                                                                                    | <p>The duration of the event given in \[ISO8601] format.</p><p><br>Example</p><p><code>"duration": "PT1H"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| eventAttendanceMode                     | [`EventAttendanceModeEnumeration`](https://schema.org/EventAttendanceModeEnumeration)                                                                                                                                                                                                                                                                                                        | <p>The eventAttendanceMode of an event indicates whether it occurs online, offline, or a mix.</p><p><br>Example</p><p><code>"eventAttendanceMode": "<https://schema.org/OnlineEventAttendanceMode>"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| identifier                              | <p><a href="https://schema.org/Text"><code>Text</code></a><br>- or -<br><a href="https://developer.openactive.io/data-model/types/propertyvalue"><code>PropertyValue</code></a><br>- or -<br>Array of <a href="https://developer.openactive.io/data-model/types/propertyvalue"><code>PropertyValue</code></a><br>- or -<br><a href="https://schema.org/Integer"><code>Integer</code></a></p> | <p>A local non-URI identifier for the resource</p><p><br>Example</p><p><code>"identifier": "SB1234"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| instanceOfCourse                        | [`Course`](https://developer.openactive.io/data-model/types/course)                                                                                                                                                                                                                                                                                                                          | The description of the Course for which this is a distinct instance.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| isAccessibleForFree                     | [`Boolean`](https://schema.org/Boolean)                                                                                                                                                                                                                                                                                                                                                      | <p>Whether the Event is accessible without charge.</p><p><br>Example</p><p><code>"isAccessibleForFree": "true"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| isCoached                               | [`Boolean`](https://schema.org/Boolean)                                                                                                                                                                                                                                                                                                                                                      | <p>A boolean property that indicates whether an Event will be coached. This flag allows an Event to be marked as being coached without having to specify a named individual as a coach. This addresses both privacy concerns and also scenarios where the actual coach may only be decided on the day.</p><p><br>Example</p><p><code>"isCoached": "true"</code></p>                                                                                                                                                                                                                                                                                               |
| isOpenBookingWithCustomerAccountAllowed | [`Boolean`](https://schema.org/Boolean)                                                                                                                                                                                                                                                                                                                                                      | <p>Indicates that a Customer Account may be used to book that opportunity.</p><p>Note that this property is in EARLY RELEASE AND IS SUBJECT TO CHANGE, as the <a href="https://github.com/openactive/customer-accounts">Customer Accounts proposal</a> evolves.</p><p><br>Example</p><p><code>"isOpenBookingWithCustomerAccountAllowed": "true"</code></p>                                                                                                                                                                                                                                                                                                        |
| maximumVirtualAttendeeCapacity          | [`Integer`](https://schema.org/Integer)                                                                                                                                                                                                                                                                                                                                                      | <p>Indicates the maximum number of connections to a shared virtual space.</p><p><br>Example</p><p><code>"maximumVirtualAttendeeCapacity": 20</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| meetingPoint                            | [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                            | <p>Instructions for the attendees of an Event about where they should meet the organizer or leader at the start of the event. Some larger locations may have several possible meeting points, so this property provides additional more specific directions.</p><p><br>Example</p><p><code>"meetingPoint": "At the entrance to the park"</code></p>                                                                                                                                                                                                                                                                                                               |
| programme                               | [`Brand`](https://developer.openactive.io/data-model/types/brand)                                                                                                                                                                                                                                                                                                                            | <p>Indicates that an event will be organised according to a specific Programme.</p><p><br>Example</p><p><code>"programme": {</code><br>  <code>"@type": "Brand",</code><br>  <code>"name": "Play Ball!",</code><br>  <code>"url": "<http://example.org/brand/play-ball>"</code><br><code>}</code></p>                                                                                                                                                                                                                                                                                                                                                             |
| schedulingNote                          | [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                            | <p>Provides a note from an organizer relating to how this Event is scheduled.</p><p><br>Example</p><p><code>"schedulingNote": "This event doesn't run during school holidays"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |

### **Beta Extension properties**

These properties are defined in the [OpenActive Beta Extension](https://openactive.io/ns-beta). The OpenActive Beta Extension is defined as a convenience to help document properties that are in active testing and review by the community. Publishers should not assume that properties in the beta namespace will either be added to the core specification or be included in the namespace over the long term.

| Property                             | Expected Type                                                                               | Description                                                                                                                                                                                                                                                                                                                                      |
| ------------------------------------ | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| beta:affiliatedLocation              | [`Place`](https://schema.org/Place)                                                         | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/227">Proposal #227</a></p><p>The physical location affiliated with the virtual event, for example the original location of the event before it was moved online.</p>                                                                                                 |
| beta:attendeeCount                   | [`Integer`](https://schema.org/Integer)                                                     | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/274">Proposal #274</a></p><p>For events that have an unlimited number of tickets, captures the number of attendees (actual attendance).</p>                                                                                                                          |
| beta:bookingChannel                  | Array of [`BookingChannelType`](https://openactive.io/ns-beta#BookingChannelType)           | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/161">Proposal #161</a></p><p>The channels through which a booking can be made.</p>                                                                                                                                                                                   |
| beta:contactPoint                    | [`ContactPoint`](https://schema.org/ContactPoint)                                           | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/113">Proposal #113</a></p><p>Contact details for an Event, where they are not specifically related to the <code>organizer</code> or <code>leader</code>.</p>                                                                                                         |
| beta:course                          | [`Course`](https://schema.org/Course)                                                       | <p><strong>DEPRECATED</strong>: Please use <code>instanceOfCourse</code> instead.</p><p><a href="https://github.com/openactive/modelling-opportunity-data/issues/164">Proposal #164</a></p><p>This course for which this is an offering.</p>                                                                                                     |
| beta:distance                        | [`QuantitativeValue`](https://schema.org/QuantitativeValue)                                 | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/275">Proposal #275</a></p><p>The distance of a run, cycle or other activity. Must also include units.</p>                                                                                                                                                            |
| beta:donationPaymentUrl              | [`URL`](https://schema.org/URL)                                                             | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/234">Proposal #234</a></p><p>The URL of the webpage where the activity provider accepts donations.</p>                                                                                                                                                               |
| beta:estimatedDuration               | [`QuantitativeValue`](https://schema.org/QuantitativeValue)                                 | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/201">Proposal #201</a></p><p>A property that allows an Event duration to be represented as a range (e.g. 0-30mins, 30-60mins, 60-90mins, 90+).</p>                                                                                                                   |
| beta:facilitySetting                 | [`FacilitySettingType`](https://openactive.io/ns-beta#FacilitySettingType)                  | <p><a href="https://github.com/openactive/facility-types/issues/1">Proposal #1</a></p><p>Whether the event or facility is indoor or outdoor.</p>                                                                                                                                                                                                 |
| beta:formattedDescription            | [`Text`](https://schema.org/Text)                                                           | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/276">Proposal #276</a></p><p>Sometimes a description is stored with formatting (e.g. href, bold, italics, embedded YouTube videos). This formatting can be useful for data consumers. This property must contain HTML.</p>                                           |
| beta:isFirstSessionAccessibleForFree | [`Boolean`](https://schema.org/Boolean)                                                     | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/232">Proposal #232</a></p><p>A property that indicates whether the first session is free.</p>                                                                                                                                                                        |
| beta:isInteractivityPreferred        | [`Boolean`](https://schema.org/Boolean)                                                     | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/230">Proposal #230</a></p><p>Indicates whether the virtual event is interactive (e.g. Zoom with participant microphones and cameras on), or is just a one-way broadcast (e.g. Facebook Live, Instagram Live, Zoom with participant microphones and cameras off).</p> |
| beta:isScheduledAsSlots              | [`Boolean`](https://schema.org/Boolean)                                                     | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/301">Proposal #301</a></p><p>A property that indicates whether the event contains a high frequency of occurrences. Intended as a UI hint for interfaces that represent these occurrences.</p>                                                                        |
| beta:isVirtuallyCoached              | [`Boolean`](https://schema.org/Boolean)                                                     | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/71">Proposal #71</a></p><p>A property that indicates whether the event is led by a virtual coach. Only relevant if an event <code>isCoached</code>. If not provided is assumed to be <code>false</code>.</p>                                                         |
| beta:isWheelchairAccessible          | [`Boolean`](https://schema.org/Boolean)                                                     | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/166">Proposal #166</a></p><p>A property that details whether the event is suitable for wheelchair access. Placed on Event as this field could be used to detail whether the Event is suitable, as well as the Place.</p>                                             |
| beta:offerValidityPeriod             | [`Duration`](https://schema.org/Duration)                                                   | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/204">Proposal #204</a></p><p>Duration before the event for which the associated Offers are valid</p>                                                                                                                                                                 |
| beta:participantSuppliedEquipment    | [`RequiredStatusType`](https://developer.openactive.io/data-model/types/requiredstatustype) | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/229">Proposal #229</a></p><p>Indicates whether the participant must or may supply equipment for use in the Event.</p>                                                                                                                                                |
| beta:registrationCount               | [`Integer`](https://schema.org/Integer)                                                     | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/273">Proposal #273</a></p><p>For events that have an unlimited number of tickets, captures the number of registrations (intention to attend).</p>                                                                                                                    |
| beta:sportsActivityLocation          | Array of [`SportsActivityLocation`](https://schema.org/SportsActivityLocation)              | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/110">Proposal #110</a></p><p>Internal location of the event, e.g. Court 1</p>                                                                                                                                                                                        |
| beta:video                           | Array of [`VideoObject`](https://schema.org/VideoObject)                                    | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/88">Proposal #88</a></p><p>A related video object.</p>                                                                                                                                                                                                               |
| beta:virtualLocation                 | [`VirtualLocation`](https://pending.schema.org/VirtualLocation)                             | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/224">Proposal #224</a></p><p>Describes a means of electronic access to a shared virtual space.</p>                                                                                                                                                                   |

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# Course

This page describes the Course type.

This type is derived from <https://schema.org/Course>, which means that any of this type's properties within schema.org may also be used. Note however the properties on this page must be used in preference if a relevant property is available.

## **Properties**

### **Optional properties**

| Property                 | Expected Type                                                                                                                                                                                                                                                                                                                                                                                | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| ------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| @type                    | [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                            | Must always be present and set to `"@type": "Course"`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| @id                      | [`URL`](https://schema.org/URL)                                                                                                                                                                                                                                                                                                                                                              | <p>A unique URI-based identifier for the record.</p><p><code>@id</code> properties are used as identifiers for compatibility with JSON-LD. The value of such a property must always be an absolute URI that provides a stable globally unique identifier for the resource, as described in <a href="https://tools.ietf.org/html/rfc3986">RFC3986</a>.</p><p>The primary purpose of the URI format in this context is to provide natural namespacing for the identifier. Hence, the URI itself may not resolve to a valid endpoint, but must use a domain name controlled by the resource owner (the organisation responsible for the OpenActive open data feed).</p><p><br>Example</p><p><code>"@id": "<https://api.example.com/courses/12345>"</code></p> |
| accessibilityInformation | [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                            | <p>Provide additional, specific documentation for participants about how disabilities are, or can be supported at the Event.</p><p><br>Example</p><p><code>"accessibilityInformation": "This route has been British Cycling assessed as an accessible route, meaning it is suitable for the majority of adaptive bikes. The route will have no or low levels of traffic, there will be plenty of space and will have a good surface throughout. If you have any questions about using this route on an adaptive bike on this ride, please use visit <https://www.letsride.co.uk/accessibility> or call 0123 456 7000 and ask for the Recreation team."</code></p>                                                                                          |
| accessibilitySupport     | Array of [`Concept`](https://developer.openactive.io/data-model/types/concept)                                                                                                                                                                                                                                                                                                               | <p>Used to specify the types of disabilities or impairments that are supported at an event.</p><p><br>Example</p><p><code>"accessibilitySupport": \[</code><br>  <code>{</code><br>    <code>"@type": "Concept",</code><br>    <code>"@id": "<https://openactive.io/accessibility-support#1393f2dc-3fcc-4be9-a99f-f1e51f5ad277>",</code><br>    <code>"prefLabel": "Visual impairment",</code><br>    <code>"inScheme": "<https://openactive.io/accessibility-support>"</code><br>  <code>}</code><br><code>]</code></p>                                                                                                                                                                                                                                   |
| activity                 | Array of [`Concept`](https://developer.openactive.io/data-model/types/concept)                                                                                                                                                                                                                                                                                                               | <p>Specifies the physical activity or activities that will take place during a Course.</p><p><br>Example</p><p><code>"activity": \[</code><br>  <code>{</code><br>    <code>"@id": "<https://openactive.io/activity-list#fbdc35a8-3dd0-40ee-a7ca-6ff40b3e5f90>",</code><br>    <code>"@type": "Concept",</code><br>    <code>"prefLabel": "Netball",</code><br>    <code>"inScheme": "<https://openactive.io/activity-list>"</code><br>  <code>}</code><br><code>]</code></p>                                                                                                                                                                                                                                                                              |
| ageRange                 | [`QuantitativeValue`](https://developer.openactive.io/data-model/types/quantitativevalue)                                                                                                                                                                                                                                                                                                    | <p>Indicates that an event is recommended as being suitable for or is targetted at a specific age range.</p><p><br>Example</p><p><code>"ageRange": {</code><br>  <code>"@type": "QuantitativeValue",</code><br>  <code>"minValue": 50,</code><br>  <code>"maxValue": 60</code><br><code>}</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| author                   | <p><a href="https://developer.openactive.io/data-model/types/organization"><code>Organization</code></a><br>- or -<br><a href="https://developer.openactive.io/data-model/types/person"><code>Person</code></a><br>- or -<br><code>@id</code> reference</p>                                                                                                                                  | <p>The person or organization who designed the Course. An author might be an schema:Organization or a schema:Person.</p><p>This property may reference the <code>@id</code> of the <code>organizer</code> of the <code>CourseInstance</code> within which this <code>Course</code> is embedded, to reduce data duplication.</p><p><br>Example</p><p><code>"author": {</code><br>  <code>"@type": "Organization",</code><br>  <code>"@id": "<https://id.bookingsystem.example.com/organizers/1>",</code><br>  <code>"name": "Central Speedball Association",</code><br>  <code>"url": "<http://www.speedball-world.com>"</code><br><code>}</code></p>                                                                                                       |
| category                 | <p>Array of <a href="https://developer.openactive.io/data-model/types/concept"><code>Concept</code></a><br>- or -<br>Array of <a href="https://schema.org/Text"><code>Text</code></a></p>                                                                                                                                                                                                    | <p>Provides a set of tags that help categorise and describe an event, e.g. its intensity, purpose, etc.</p><p><br>Example</p><p><code>"category": \[</code><br>  <code>"High Intensity"</code><br><code>]</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| description              | [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                            | <p>A plain text description of the Course, which must not include HTML or other markup.</p><p><br>Example</p><p><code>"description": "Netball Youth Camps give junior netballers the chance to get together with their friends and take to the court in the holidays!</code></p><p><code>The camp is a non-residential holiday camp providing ‘Nothing but Netball’; not only will there be top quality coaching and fun netball activities but there is even an opportunity to meet and be inspired by an elite player.</code></p><p><code>If you are a junior netball lover (or the parent of one!) these are an unmissable holiday activity."</code></p>                                                                                                |
| genderRestriction        | [`GenderRestrictionType`](https://openactive.io/GenderRestrictionType)                                                                                                                                                                                                                                                                                                                       | <p>Indicates that an event is restricted to male, female or a mixed audience. This information must be displayed prominently to the user before booking. If a gender restriction isn't specified then applications should assume that an event is suitable for a mixed audience.</p><p><br>Example</p><p><code>"genderRestriction": "<https://openactive.io/FemaleOnly>"</code></p>                                                                                                                                                                                                                                                                                                                                                                        |
| identifier               | <p><a href="https://schema.org/Text"><code>Text</code></a><br>- or -<br><a href="https://developer.openactive.io/data-model/types/propertyvalue"><code>PropertyValue</code></a><br>- or -<br>Array of <a href="https://developer.openactive.io/data-model/types/propertyvalue"><code>PropertyValue</code></a><br>- or -<br><a href="https://schema.org/Integer"><code>Integer</code></a></p> | <p>A local non-URI identifier for the resource</p><p><br>Example</p><p><code>"identifier": "BR1234"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| image                    | Array of [`ImageObject`](https://developer.openactive.io/data-model/types/imageobject)                                                                                                                                                                                                                                                                                                       | <p>An image or photo that depicts the event, e.g. a photo taken at a previous event.</p><p><br>Example</p><p><code>"image": \[</code><br>  <code>{</code><br>    <code>"@type": "ImageObject",</code><br>    <code>"url": "<http://example.com/static/image/speedball_large.jpg>",</code><br>    <code>"thumbnail": \[</code><br>      <code>{</code><br>        <code>"@type": "ImageObject",</code><br>        <code>"url": "<http://example.com/static/image/speedball_thumbnail.jpg>"</code><br>      <code>}</code><br>    <code>]</code><br>  <code>}</code><br><code>]</code></p>                                                                                                                                                                   |
| level                    | <p>Array of <a href="https://schema.org/Text"><code>Text</code></a><br>- or -<br>Array of <a href="https://developer.openactive.io/data-model/types/concept"><code>Concept</code></a></p>                                                                                                                                                                                                    | <p>A general purpose property for specifying the suitability of an event for different participant “levels”. E.g. <code>Beginner</code>, <code>Intermediate</code>, <code>Advanced</code>. Or in the case of martial arts, specific belt requirements.</p><p><br>Example</p><p><code>"level": \[</code><br>  <code>"Beginner"</code><br><code>]</code></p>                                                                                                                                                                                                                                                                                                                                                                                                 |
| name                     | [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                            | <p>The name of the Course</p><p><br>Example</p><p><code>"name": "Netball Youth Camp"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| url                      | [`URL`](https://schema.org/URL)                                                                                                                                                                                                                                                                                                                                                              | <p>A definitive canonical URL for the Course.</p><p><br>Example</p><p><code>"url": "<http://www.speedball-world.com/beginners-course>"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |

### **Beta Extension properties**

These properties are defined in the [OpenActive Beta Extension](https://openactive.io/ns-beta). The OpenActive Beta Extension is defined as a convenience to help document properties that are in active testing and review by the community. Publishers should not assume that properties in the beta namespace will either be added to the core specification or be included in the namespace over the long term.

| Property                  | Expected Type                                            | Description                                                                                                                                                                                                                                                                                            |
| ------------------------- | -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| beta:formattedDescription | [`Text`](https://schema.org/Text)                        | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/276">Proposal #276</a></p><p>Sometimes a description is stored with formatting (e.g. href, bold, italics, embedded YouTube videos). This formatting can be useful for data consumers. This property must contain HTML.</p> |
| beta:video                | Array of [`VideoObject`](https://schema.org/VideoObject) | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/88">Proposal #88</a></p><p>A related video object.</p>                                                                                                                                                                     |

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# Creche

This page describes the Creche type.

This type is derived from <https://schema.org/LocationFeatureSpecification>, which means that any of this type's properties within schema.org may also be used. Note however the properties on this page must be used in preference if a relevant property is available.

## **Properties**

### **Required properties**

| Property | Expected Type                           | Description                                                                                                             |
| -------- | --------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
| @type    | [`Text`](https://schema.org/Text)       | Must always be present and set to `"@type": "Creche"`                                                                   |
| name     | [`Text`](https://schema.org/Text)       | <p>A string, suitable for presentation in user interfaces.</p><p><br>Example</p><p><code>"name": "Childcare"</code></p> |
| value    | [`Boolean`](https://schema.org/Boolean) | A boolean value indicating whether this ammenity is available.                                                          |

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# CustomerAccount

This page describes the CustomerAccount type.

## **EARLY RELEASE NOTICE**

This class represents a draft that is designed to inform the OpenActive specification work with implementation feedback. IT IS STILL SUBJECT TO CHANGE, as the [Customer Accounts proposal](https://github.com/openactive/customer-accounts) evolves.

## **Properties**

### **Optional properties**

| Property              | Expected Type                                                                                                                                                                                                       | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| @type                 | [`Text`](https://schema.org/Text)                                                                                                                                                                                   | Must always be present and set to `"@type": "CustomerAccount"`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| @id                   | [`URL`](https://schema.org/URL)                                                                                                                                                                                     | <p>A unique URI-based identifier for the record.</p><p><code>@id</code> properties are used as identifiers for compatibility with JSON-LD. The value of such a property must always be an absolute URI that provides a stable globally unique identifier for the resource, as described in <a href="https://tools.ietf.org/html/rfc3986">RFC3986</a>.</p><p>The primary purpose of the URI format in this context is to provide natural namespacing for the identifier. Hence, the URI itself may not resolve to a valid endpoint, but must use a domain name controlled by the resource owner (the organisation responsible for the OpenActive open data feed).</p><p><br>Example</p><p><code>"@id": "<https://id.bookingsystem.example.com/customer-accounts/fdc14503-275e-46d3-9922-45b986c9f9aa>"</code></p> |
| accessPass            | Array of [`Barcode`](https://developer.openactive.io/data-model/types/barcode)                                                                                                                                      | The barcode, QR code, magnetic stripe, or swipe card associated with this Customer Account, within their own namespaces.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| accountNumber         | [`Text`](https://schema.org/Text)                                                                                                                                                                                   | The customer-facing identifier for the Customer Account.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| customer              | <p><a href="https://developer.openactive.io/data-model/types/person"><code>Person</code></a><br>- or -<br><a href="https://developer.openactive.io/data-model/types/organization"><code>Organization</code></a></p> | The person or organization to whom this Customer Account belongs.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| entitlement           | Array of [`Entitlement`](https://developer.openactive.io/data-model/types/entitlement)                                                                                                                              | The current valid and active entitlements associated with this customer. Note that expired or inactive entitlements are not included in this list.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| hasHiddenEntitlements | [`Boolean`](https://schema.org/Boolean)                                                                                                                                                                             | <p>Whether there are any additional entitlements (other than those listed in entitlement) or other types of discounts are associated with the Customer Account that will influence pricing, and therefore whether the pricing for the entitlement in the feed should be treated as indicative.</p><p><br>Example</p><p><code>"hasHiddenEntitlements": "true"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| identifier            | [`Text`](https://schema.org/Text)                                                                                                                                                                                   | <p>The identifier of the Customer Account used by the Booking System.</p><p><br>Example</p><p><code>"identifier": "fdc14503-275e-46d3-9922-45b986c9f9aa"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| outstandingAction     | Array of [`Action`](https://developer.openactive.io/data-model/types/action)                                                                                                                                        | Outstanding actions on this Customer Account, such as the resolution of outstanding debts or membership renewal. These may prevent the Customer from making bookings.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# DataCatalog

This page describes the DataCatalog type.

## **EARLY RELEASE NOTICE**

This class represents a draft that is designed to inform the OpenActive specification work with implementation feedback. It is mostly stable, as it based entirely on schema.org. HOWEVER, IT IS STILL SUBJECT TO CHANGE, as the [Dataset API Discovery specification](https://openactive.io/dataset-api-discovery/EditorsDraft/) evolves.

This type is derived from <https://schema.org/DataCatalog>, which means that any of this type's properties within schema.org may also be used. Note however the properties on this page must be used in preference if a relevant property is available.

## **Properties**

### **Required properties**

| Property  | Expected Type                                                                   | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| --------- | ------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| @type     | [`Text`](https://schema.org/Text)                                               | Must always be present and set to `"@type": "DataCatalog"`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| @id       | [`URL`](https://schema.org/URL)                                                 | <p>A unique URI-based identifier for the record.</p><p><code>@id</code> properties are used as identifiers for compatibility with JSON-LD. The value of such a property must always be an absolute URI that provides a stable globally unique identifier for the resource, as described in <a href="https://tools.ietf.org/html/rfc3986">RFC3986</a>.</p><p>The primary purpose of the URI format in this context is to provide natural namespacing for the identifier. Hence, the URI itself may not resolve to a valid endpoint, but must use a domain name controlled by the resource owner (the organisation responsible for the OpenActive open data feed).</p><p><br>Example</p><p><code>"@id": "<https://opendata.leisurecloud.live/api/datacatalog>"</code></p> |
| license   | [`URL`](https://schema.org/URL)                                                 | Must always be present and set to `"license": "https://creativecommons.org/licenses/by/4.0/"`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| name      | [`Text`](https://schema.org/Text)                                               | <p>The name of the <code>DataCatalog</code></p><p><br>Example</p><p><code>"name": "Acme Leisure Sessions and Facilities"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| publisher | [`Organization`](https://developer.openactive.io/data-model/types/organization) | <p>The organization ultimately responsible for maintaining this <code>DataCatalog</code>.</p><p><br>Example</p><p><code>"publisher": {</code><br>  <code>"@type": "Organization",</code><br>  <code>"name": "Central Speedball Association",</code><br>  <code>"url": "<http://www.speedball-world.com>"</code><br><code>}</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                   |

### **Required options**

The `DataCatalog` must include either `hasPart` if it is a collection of smaller `DataCatalog`s, or `dataset` if it is a collection of dataset sites.

| Property | Expected Type                            | Description                                                                                                                                                                                                                                                                                                                                             |
| -------- | ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| hasPart  | Array of [`URL`](https://schema.org/URL) | <p>The URLs of each smaller <code>DataCatalog</code> within this <code>DataCatalog</code> collection.</p><p><br>Example</p><p><code>"hasPart": \[</code><br>  <code>"<https://opendata.leisurecloud.live/api/datacatalog>",</code><br>  <code>"<https://openactivedatacatalog.legendonlineservices.co.uk/api/DataCatalog>"</code><br><code>]</code></p> |
| dataset  | Array of [`URL`](https://schema.org/URL) | <p>The URLs of the dataset sites within this <code>DataCatalog</code>.</p><p><br>Example</p><p><code>"dataset": \[</code><br>  <code>"<https://opendata.exercise-anywhere.com/>",</code><br>  <code>"<https://www.participant.co.uk/participant/openactive/>"</code><br><code>]</code></p>                                                              |

### **Recommended properties**

| Property      | Expected Type                                                                                                                               | Description                                                                                                                                                                                           |
| ------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| datePublished | <p><a href="https://schema.org/DateTime"><code>DateTime</code></a><br>- or -<br><a href="https://schema.org/Date"><code>Date</code></a></p> | <p>The date this <code>DataCatalog</code> was first published. Can be specified as a schema:Date or schema:DateTime.</p><p><br>Example</p><p><code>"datePublished": "2018-01-27T12:00:00Z"</code></p> |

### **Optional properties**

| Property     | Expected Type                             | Description                                                                                                                                 |
| ------------ | ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
| dateModified | [`DateTime`](https://schema.org/DateTime) | <p>The date this <code>DataCatalog</code> was last updated.</p><p><br>Example</p><p><code>"dateModified": "2018-01-27T12:00:00Z"</code></p> |

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# DataDownload

This page describes the DataDownload type.

## **EARLY RELEASE NOTICE**

This class represents a draft that is designed to inform the OpenActive specification work with implementation feedback. IT IS SUBJECT TO CHANGE, as the [Dataset API Discovery specification](https://openactive.io/dataset-api-discovery/EditorsDraft/) evolves.

This type is derived from <https://schema.org/DataDownload>, which means that any of this type's properties within schema.org may also be used. Note however the properties on this page must be used in preference if a relevant property is available.

## **Properties**

### **Required properties**

| Property       | Expected Type                     | Description                                                                                                                                                                                       |
| -------------- | --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| @type          | [`Text`](https://schema.org/Text) | Must always be present and set to `"@type": "DataDownload"`                                                                                                                                       |
| additionalType | [`URL`](https://schema.org/URL)   | <p>A fully qualified reference to the class that is at the root of the items in the RPDE feed.</p><p><br>Example</p><p><code>"additionalType": "<https://openactive.io/SessionSeries>"</code></p> |
| contentUrl     | [`URL`](https://schema.org/URL)   | <p>The URL of the RPDE data feed.</p><p><br>Example</p><p><code>"contentUrl": "<https://opendata.leisurecloud.live/api/feeds/fusion-lifestyle-fl-live-session-series>"</code></p>                 |
| encodingFormat | [`Text`](https://schema.org/Text) | Must always be present and set to `"encodingFormat": "application/vnd.openactive.rpde+json; version=1"`                                                                                           |
| name           | [`Text`](https://schema.org/Text) | <p>The name of the type of feed</p><p><br>Example</p><p><code>"name": "SessionSeries"</code></p>                                                                                                  |

### **Optional properties**

| Property   | Expected Type                     | Description                                                                                                              |
| ---------- | --------------------------------- | ------------------------------------------------------------------------------------------------------------------------ |
| identifier | [`Text`](https://schema.org/Text) | <p>A local non-URI identifier for the resource</p><p><br>Example</p><p><code>"identifier": "ScheduledSession"</code></p> |

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# Dataset

This page describes the Dataset type.

## **EARLY RELEASE NOTICE**

This class represents a draft that is designed to inform the OpenActive specification work with implementation feedback. It is mostly stable, as it based almost entirely on schema.org. HOWEVER, IT IS STILL SUBJECT TO CHANGE, as the [Dataset API Discovery specification](https://openactive.io/dataset-api-discovery/EditorsDraft/) evolves.

This type is derived from <https://schema.org/Dataset>, which means that any of this type's properties within schema.org may also be used. Note however the properties on this page must be used in preference if a relevant property is available.

## **Properties**

### **Required properties**

| Property      | Expected Type                                                                            | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| ------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| @type         | [`Text`](https://schema.org/Text)                                                        | Must always be present and set to `"@type": "Dataset"`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| @id           | [`URL`](https://schema.org/URL)                                                          | <p>A unique URI-based identifier for the record.</p><p><code>@id</code> properties are used as identifiers for compatibility with JSON-LD. The value of such a property must always be an absolute URI that provides a stable globally unique identifier for the resource, as described in <a href="https://tools.ietf.org/html/rfc3986">RFC3986</a>.</p><p>The primary purpose of the URI format in this context is to provide natural namespacing for the identifier. Hence, the URI itself may not resolve to a valid endpoint, but must use a domain name controlled by the resource owner (the organisation responsible for the OpenActive open data feed).</p><p><br>Example</p><p><code>"@id": "<https://opendata.fusion-lifestyle.com/OpenActive/>"</code></p> |
| description   | [`Text`](https://schema.org/Text)                                                        | <p>A plain text description of the <code>Dataset</code>, which must not include HTML or other markup.</p><p><br>Example</p><p><code>"description": "Near real-time availability and rich descriptions relating to the sessions and facilities available from {OrganisationName}, published using the OpenActive Modelling Specification 2.0."</code></p>                                                                                                                                                                                                                                                                                                                                                                                                               |
| discussionUrl | [`URL`](https://schema.org/URL)                                                          | <p>A URL that can be used to raise issues related to the <code>Dataset</code> via a public forum.</p><p><br>Example</p><p><code>"discussionUrl": "<https://github.com/gladstonemrm/FusionLifestyle/issues>"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| distribution  | Array of [`DataDownload`](https://developer.openactive.io/data-model/types/datadownload) | <p>An array of feeds within the dataset</p><p><br>Example</p><p><code>"distribution": \[</code><br>  <code>{</code><br>    <code>"@type": "DataDownload",</code><br>    <code>"name": "FacilityUse",</code><br>    <code>"additionalType": "<https://openactive.io/FacilityUse>",</code><br>    <code>"encodingFormat": "application/vnd.openactive.rpde+json; version=1",</code><br>    <code>"contentUrl": "<https://opendata.leisurecloud.live/api/feeds/fusion-lifestyle-fl-live-facility-uses>"</code><br>  <code>}</code><br><code>]</code></p>                                                                                                                                                                                                                  |
| documentation | [`URL`](https://schema.org/URL)                                                          | <p>A link to documentation related to the <code>Dataset</code>, or a link to the OpenActive developer documentation using <code><https://permalink.openactive.io/dataset-site/open-data-documentation></code> if no Dataset-specific documentation is available.</p><p><br>Example</p><p><code>"documentation": "<https://permalink.openactive.io/dataset-site/open-data-documentation>"</code></p>                                                                                                                                                                                                                                                                                                                                                                    |
| inLanguage    | Array of [`Text`](https://schema.org/Text)                                               | <p>An array of languages included in the Dataset's content. Please use one of the language codes from the IETF BCP 47 standard.</p><p><br>Example</p><p><code>"inLanguage": \[</code><br>  <code>"en-GB"</code><br><code>]</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| keywords      | Array of [`Text`](https://schema.org/Text)                                               | <p>Keywords for search engine optimisation</p><p><br>Example</p><p><code>"keywords": \[</code><br>  <code>"Sessions",</code><br>  <code>"Facilities",</code><br>  <code>"Activities",</code><br>  <code>"Sports",</code><br>  <code>"Physical Activity",</code><br>  <code>"OpenActive"</code><br><code>]</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| license       | [`URL`](https://schema.org/URL)                                                          | Must always be present and set to `"license": "https://creativecommons.org/licenses/by/4.0/"`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| name          | [`Text`](https://schema.org/Text)                                                        | <p>The name of the <code>Dataset</code></p><p><br>Example</p><p><code>"name": "Acme Leisure Sessions and Facilities"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| publisher     | [`Organization`](https://developer.openactive.io/data-model/types/organization)          | <p>The organization ultimately responsible for this <code>Dataset</code>.</p><p><br>Example</p><p><code>"publisher": {</code><br>  <code>"@type": "Organization",</code><br>  <code>"name": "Central Speedball Association",</code><br>  <code>"url": "<http://www.speedball-world.com>"</code><br><code>}</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| schemaVersion | [`URL`](https://schema.org/URL)                                                          | <p>Indicates the version of OpenActive Modelling Opportunity Data Specification with which this <code>Dataset</code> conforms, by specifying its URL.</p><p><br>Example</p><p><code>"schemaVersion": "<https://openactive.io/modelling-opportunity-data/2.0/>"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| url           | [`URL`](https://schema.org/URL)                                                          | <p>The URL of the dataset site.</p><p><br>Example</p><p><code>"url": "<https://opendata.fusion-lifestyle.com/OpenActive/>"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |

### **Recommended properties**

| Property        | Expected Type                                                                                                                               | Description                                                                                                                                                                                                                                                    |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| backgroundImage | [`ImageObject`](https://developer.openactive.io/data-model/types/imageobject)                                                               | <p>A background image for the <code>Dataset</code>.</p><p><br>Example</p><p><code>"backgroundImage": {</code><br>  <code>"@type": "ImageObject",</code><br>  <code>"url": "<http://example.com/static/image/speedball_large.jpg>"</code><br><code>}</code></p> |
| dateModified    | [`DateTime`](https://schema.org/DateTime)                                                                                                   | <p>The date this <code>Dataset</code> was last updated. For RPDE feeds this may simply be the date and time that the Dataset Site was rendered, which may be cached.</p><p><br>Example</p><p><code>"dateModified": "2018-01-27T12:00:00Z"</code></p>           |
| datePublished   | <p><a href="https://schema.org/DateTime"><code>DateTime</code></a><br>- or -<br><a href="https://schema.org/Date"><code>Date</code></a></p> | <p>The date this <code>Dataset</code> was first published. Can be specified as a schema:Date or schema:DateTime.</p><p><br>Example</p><p><code>"datePublished": "2018-01-27T12:00:00Z"</code></p>                                                              |

### **Optional properties**

| Property       | Expected Type                                                                       | Description                                                                                              |
| -------------- | ----------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- |
| accessService  | [`WebAPI`](https://developer.openactive.io/data-model/types/webapi)                 | Information about the Open Booking API. Note this property is in EARLY RELEASE AND IS SUBJECT TO CHANGE. |
| bookingService | [`BookingService`](https://developer.openactive.io/data-model/types/bookingservice) | Information about the Booking System or publishing platform                                              |

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# DropdownFormFieldSpecification

This page describes the DropdownFormFieldSpecification type.

This type is derived from <https://schema.org/PropertyValueSpecification>, which means that any of this type's properties within schema.org may also be used. Note however the properties on this page must be used in preference if a relevant property is available.

## **Properties**

### **Required properties**

| Property    | Expected Type                              | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| ----------- | ------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| @type       | [`Text`](https://schema.org/Text)          | Must always be present and set to `"@type": "DropdownFormFieldSpecification"`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| @id         | [`URL`](https://schema.org/URL)            | <p>A unique URI-based identifier for the record.</p><p><code>@id</code> properties are used as identifiers for compatibility with JSON-LD. The value of such a property must always be an absolute URI that provides a stable globally unique identifier for the resource, as described in <a href="https://tools.ietf.org/html/rfc3986">RFC3986</a>.</p><p>The primary purpose of the URI format in this context is to provide natural namespacing for the identifier. Hence, the URI itself may not resolve to a valid endpoint, but must use a domain name controlled by the resource owner (the organisation responsible for the OpenActive open data feed).</p><p><br>Example</p><p><code>"@id": "<https://example.com/gender>"</code></p> |
| name        | [`Text`](https://schema.org/Text)          | Display label for the field.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| valueOption | Array of [`Text`](https://schema.org/Text) | Specifies an array of display values for the dropdown.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |

### **Recommended properties**

| Property    | Expected Type                     | Description                                                                             |
| ----------- | --------------------------------- | --------------------------------------------------------------------------------------- |
| description | [`Text`](https://schema.org/Text) | Descriptive help plain text for the field, which must not include HTML or other markup. |

### **Optional properties**

| Property      | Expected Type                           | Description                                                                   |
| ------------- | --------------------------------------- | ----------------------------------------------------------------------------- |
| valueRequired | [`Boolean`](https://schema.org/Boolean) | Specifies that a value for the field is required to proceed with the booking. |

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# DynamicPayment

This page describes the DynamicPayment type.

## **Properties**

### **Optional properties**

| Property           | Expected Type                                                                              | Description                                                                                                                                                                                  |
| ------------------ | ------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| @type              | [`Text`](https://schema.org/Text)                                                          | Must always be present and set to `"@type": "DynamicPayment"`                                                                                                                                |
| accountId          | [`Text`](https://schema.org/Text)                                                          | A reference used by the Seller to group transactions, which is used to aid reconciliation.                                                                                                   |
| additionalProperty | Array of [`PropertyValue`](https://developer.openactive.io/data-model/types/propertyvalue) | PropertyValue that contains a text value useful for reconciliation.                                                                                                                          |
| identifier         | [`Text`](https://schema.org/Text)                                                          | <p>The identifier of the payment held by the Broker and/or Payment Provider.</p><p><br>Example</p><p><code>"identifier": "SB1234"</code></p>                                                 |
| name               | [`Text`](https://schema.org/Text)                                                          | Optional free text description of the payment method for the Booking System, to help the Seller in discussions with the Customer (e.g. 'AcmeBroker Points' or 'AcmeBroker via Credit Card'). |
| paymentMethod      | [`PaymentMethod`](http://purl.org/goodrelations/v1#PaymentMethod)                          | paymentMethod must not be used, and is reserved for future versions of this specification.                                                                                                   |
| paymentProviderId  | [`Text`](https://schema.org/Text)                                                          | A reference to the specific Payment Provider that is used.                                                                                                                                   |

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# Entitlement

This page describes the Entitlement type.

## **EARLY RELEASE NOTICE**

This class represents a draft that is designed to inform the OpenActive specification work with implementation feedback. IT IS STILL SUBJECT TO CHANGE, as the [Customer Accounts proposal](https://github.com/openactive/customer-accounts) evolves.

## **Properties**

### **Optional properties**

| Property              | Expected Type                                                                                                                              | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| @type                 | [`Text`](https://schema.org/Text)                                                                                                          | Must always be present and set to `"@type": "Entitlement"`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| entitlementType       | <p><a href="https://developer.openactive.io/data-model/types/concept"><code>Concept</code></a><br>- or -<br><code>@id</code> reference</p> | <p>For the request, this is the value of the @id of the Concept being referenced. For the response, this the full Concept object including the @id and prefLabel.</p><p><br>Example</p><p><code>"entitlementType": {</code><br>  <code>"@type": "Concept",</code><br>  <code>"@id": "<https://data.mcractive.com/openactive/entitlement-list#5e78bcbe-36db-425a-9064-bf96d09cc351>",</code><br>  <code>"prefLabel": "MCRactive Adult Resident",</code><br>  <code>"inScheme": "<https://data.mcractive.com/openactive/entitlement-list>"</code><br><code>}</code></p> |
| evidenceRequestAction | [`Action`](https://developer.openactive.io/data-model/types/action)                                                                        | Any evidence request associated with the entitlement.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| validFrom             | [`Date`](https://schema.org/Date)                                                                                                          | The date the entitlement becomes valid. This must be in the past.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| validUntil            | [`Date`](https://schema.org/Date)                                                                                                          | The date that the entitlement is no longer valid. This must be in the future.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# EventSeries

This page describes the EventSeries type.

This type is derived from <https://pending.schema.org/EventSeries>, which means that any of this type's properties within schema.org may also be used. Note however the properties on this page must be used in preference if a relevant property is available.

## **Properties**

### **Required properties**

| Property  | Expected Type                                                                                                                                                                                                       | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| @type     | [`Text`](https://schema.org/Text)                                                                                                                                                                                   | Must always be present and set to `"@type": "EventSeries"`                                                                                                                                                                                                                                                                                                                                                                                                                      |
| activity  | Array of [`Concept`](https://developer.openactive.io/data-model/types/concept)                                                                                                                                      | <p>Specifies the physical activity or activities that will take place during an event.</p><p><br>Example</p><p><code>"activity": \[</code><br>  <code>{</code><br>    <code>"@type": "Concept",</code><br>    <code>"@id": "<https://openactive.io/activity-list#5e78bcbe-36db-425a-9064-bf96d09cc351>",</code><br>    <code>"prefLabel": "Bodypump™",</code><br>    <code>"inScheme": "<https://openactive.io/activity-list>"</code><br>  <code>}</code><br><code>]</code></p> |
| name      | [`Text`](https://schema.org/Text)                                                                                                                                                                                   | <p>The name of the event</p><p><br>Example</p><p><code>"name": "Speedball"</code></p>                                                                                                                                                                                                                                                                                                                                                                                           |
| organizer | <p><a href="https://developer.openactive.io/data-model/types/organization"><code>Organization</code></a><br>- or -<br><a href="https://developer.openactive.io/data-model/types/person"><code>Person</code></a></p> | <p>The person or organization ultimately responsible for an event. An organizer might be an schema:Organization or a schema:Person.</p><p><br>Example</p><p><code>"organizer": {</code><br>  <code>"@type": "Organization",</code><br>  <code>"@id": "<https://id.bookingsystem.example.com/organizers/1>",</code><br>  <code>"name": "Central Speedball Association",</code><br>  <code>"url": "<http://www.speedball-world.com>"</code><br><code>}</code></p>                 |

### **Required options**

An `id` and/or `identifier` must be provided in order to allow data users to group `EventSeries` together consistently.

| Property   | Expected Type                                                                                                                                                                                                                                                                                                                                                                                | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| @id        | [`URL`](https://schema.org/URL)                                                                                                                                                                                                                                                                                                                                                              | <p>A unique URI-based identifier for the record.</p><p><code>@id</code> properties are used as identifiers for compatibility with JSON-LD. The value of such a property must always be an absolute URI that provides a stable globally unique identifier for the resource, as described in <a href="https://tools.ietf.org/html/rfc3986">RFC3986</a>.</p><p>The primary purpose of the URI format in this context is to provide natural namespacing for the identifier. Hence, the URI itself may not resolve to a valid endpoint, but must use a domain name controlled by the resource owner (the organisation responsible for the OpenActive open data feed).</p><p><br>Example</p><p><code>"@id": "<https://api.example.com/event-series/12345>"</code></p> |
| identifier | <p><a href="https://schema.org/Text"><code>Text</code></a><br>- or -<br><a href="https://developer.openactive.io/data-model/types/propertyvalue"><code>PropertyValue</code></a><br>- or -<br>Array of <a href="https://developer.openactive.io/data-model/types/propertyvalue"><code>PropertyValue</code></a><br>- or -<br><a href="https://schema.org/Integer"><code>Integer</code></a></p> | <p>A local non-URI identifier for the resource</p><p><br>Example</p><p><code>"identifier": "SB1234"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |

### **Recommended properties**

| Property          | Expected Type                                                                                                                                                                             | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| @id               | [`URL`](https://schema.org/URL)                                                                                                                                                           | <p>A unique URI-based identifier for the record.</p><p><code>@id</code> properties are used as identifiers for compatibility with JSON-LD. The value of such a property must always be an absolute URI that provides a stable globally unique identifier for the resource, as described in <a href="https://tools.ietf.org/html/rfc3986">RFC3986</a>.</p><p>The primary purpose of the URI format in this context is to provide natural namespacing for the identifier. Hence, the URI itself may not resolve to a valid endpoint, but must use a domain name controlled by the resource owner (the organisation responsible for the OpenActive open data feed).</p><p><br>Example</p><p><code>"@id": "<https://api.example.com/event-series/12345>"</code></p> |
| ageRange          | [`QuantitativeValue`](https://developer.openactive.io/data-model/types/quantitativevalue)                                                                                                 | <p>Indicates that an event is recommended as being suitable for or is targetted at a specific age range.</p><p><br>Example</p><p><code>"ageRange": {</code><br>  <code>"@type": "QuantitativeValue",</code><br>  <code>"minValue": 50,</code><br>  <code>"maxValue": 60</code><br><code>}</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| description       | [`Text`](https://schema.org/Text)                                                                                                                                                         | <p>A plain text description of the event, which must not include HTML or other markup.</p><p><br>Example</p><p><code>"description": "A fast paced game that incorporates netball, handball and football."</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| genderRestriction | [`GenderRestrictionType`](https://openactive.io/GenderRestrictionType)                                                                                                                    | <p>Indicates that an event is restricted to male, female or a mixed audience. This information must be displayed prominently to the user before booking. If a gender restriction isn't specified then applications should assume that an event is suitable for a mixed audience.</p><p><br>Example</p><p><code>"genderRestriction": "<https://openactive.io/FemaleOnly>"</code></p>                                                                                                                                                                                                                                                                                                                                                                             |
| image             | Array of [`ImageObject`](https://developer.openactive.io/data-model/types/imageobject)                                                                                                    | <p>An image or photo that depicts the event, e.g. a photo taken at a previous event.</p><p><br>Example</p><p><code>"image": \[</code><br>  <code>{</code><br>    <code>"@type": "ImageObject",</code><br>    <code>"url": "<http://example.com/static/image/speedball_large.jpg>",</code><br>    <code>"thumbnail": \[</code><br>      <code>{</code><br>        <code>"@type": "ImageObject",</code><br>        <code>"url": "<http://example.com/static/image/speedball_thumbnail.jpg>"</code><br>      <code>}</code><br>    <code>]</code><br>  <code>}</code><br><code>]</code></p>                                                                                                                                                                        |
| isCoached         | [`Boolean`](https://schema.org/Boolean)                                                                                                                                                   | <p>A boolean property that indicates whether an Event will be coached. This flag allows an Event to be marked as being coached without having to specify a named individual as a coach. This addresses both privacy concerns and also scenarios where the actual coach may only be decided on the day.</p><p><br>Example</p><p><code>"isCoached": "true"</code></p>                                                                                                                                                                                                                                                                                                                                                                                             |
| level             | <p>Array of <a href="https://schema.org/Text"><code>Text</code></a><br>- or -<br>Array of <a href="https://developer.openactive.io/data-model/types/concept"><code>Concept</code></a></p> | <p>A general purpose property for specifying the suitability of an event for different participant “levels”. E.g. <code>Beginner</code>, <code>Intermediate</code>, <code>Advanced</code>. Or in the case of martial arts, specific belt requirements.</p><p><br>Example</p><p><code>"level": \[</code><br>  <code>"Beginner"</code><br><code>]</code></p>                                                                                                                                                                                                                                                                                                                                                                                                      |
| programme         | [`Brand`](https://developer.openactive.io/data-model/types/brand)                                                                                                                         | <p>Indicates that an event will be organised according to a specific Programme.</p><p><br>Example</p><p><code>"programme": {</code><br>  <code>"@type": "Brand",</code><br>  <code>"name": "Play Ball!",</code><br>  <code>"url": "<http://example.org/brand/play-ball>"</code><br><code>}</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                           |

### **Optional properties**

| Property                                | Expected Type                                                                                                                                                                             | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| --------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| accessibilityInformation                | [`Text`](https://schema.org/Text)                                                                                                                                                         | <p>Provide additional, specific documentation for participants about how disabilities are, or can be supported at the Event.</p><p><br>Example</p><p><code>"accessibilityInformation": "This route has been British Cycling assessed as an accessible route, meaning it is suitable for the majority of adaptive bikes. The route will have no or low levels of traffic, there will be plenty of space and will have a good surface throughout. If you have any questions about using this route on an adaptive bike on this ride, please use visit <https://www.letsride.co.uk/accessibility> or call 0123 456 7000 and ask for the Recreation team."</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| accessibilitySupport                    | Array of [`Concept`](https://developer.openactive.io/data-model/types/concept)                                                                                                            | <p>Used to specify the types of disabilities or impairments that are supported at an event.</p><p><br>Example</p><p><code>"accessibilitySupport": \[</code><br>  <code>{</code><br>    <code>"@type": "Concept",</code><br>    <code>"@id": "<https://openactive.io/accessibility-support#1393f2dc-3fcc-4be9-a99f-f1e51f5ad277>",</code><br>    <code>"prefLabel": "Visual impairment",</code><br>    <code>"inScheme": "<https://openactive.io/accessibility-support>"</code><br>  <code>}</code><br><code>]</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| additionalAdmissionRestriction          | Array of [`Text`](https://schema.org/Text)                                                                                                                                                | <p>Free text restrictions that must be displayed prominently to the user before booking. This property must only contain restrictions not described by <code>oa:ageRestriction</code> or <code>oa:genderRestriction</code>.</p><p><br>Example</p><p><code>"additionalAdmissionRestriction": \[</code><br>  <code>"Participants younger than 12 must be accompanied by an adult",</code><br>  <code>"Participants must be comfortable standing for long periods of time"</code><br><code>]</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| ageRestriction                          | [`QuantitativeValue`](https://developer.openactive.io/data-model/types/quantitativevalue)                                                                                                 | <p>The enforced attendee age range requirement of the Event or Offer, that must be displayed prominently to the user before booking.</p><p><br>Example</p><p><code>"ageRestriction": {</code><br>  <code>"@type": "QuantitativeValue",</code><br>  <code>"minValue": 15,</code><br>  <code>"maxValue": 60</code><br><code>}</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| attendeeInstructions                    | [`Text`](https://schema.org/Text)                                                                                                                                                         | <p>Provides additional notes and instructions for event attendees, for example more information on how to find the event, what to bring, etc. The value of this property must not include HTML or other markup.</p><p><br>Example</p><p><code>"attendeeInstructions": "Ensure you bring trainers and a bottle of water."</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| category                                | <p>Array of <a href="https://developer.openactive.io/data-model/types/concept"><code>Concept</code></a><br>- or -<br>Array of <a href="https://schema.org/Text"><code>Text</code></a></p> | <p>Provides a set of tags that help categorise and describe an event, e.g. its intensity, purpose, etc.</p><p><br>Example</p><p><code>"category": \[</code><br>  <code>"High Intensity"</code><br><code>]</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| contributor                             | Array of [`Person`](https://developer.openactive.io/data-model/types/person)                                                                                                              | <p>A Person who contributes to the facilitation of the Event.</p><p><br>Example</p><p><code>"contributor": \[</code><br>  <code>{</code><br>    <code>"@type": "Person",</code><br>    <code>"familyName": "Smith",</code><br>    <code>"givenName": "Nicole",</code><br>    <code>"@id": "<https://example.com/locations/1234ABCD/leaders/89>",</code><br>    <code>"identifier": 89</code><br>  <code>}</code><br><code>]</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| customerAccountBookingRestriction       | Array of [`Text`](https://schema.org/Text)                                                                                                                                                | <p>Free text restrictions to display to the Customer at the browse stage, that may apply when using a Customer Account to make the booking.</p><p>Note that this property is in EARLY RELEASE AND IS SUBJECT TO CHANGE, as the <a href="https://github.com/openactive/customer-accounts">Customer Accounts proposal</a> evolves.</p><p><br>Example</p><p><code>"customerAccountBookingRestriction": \[</code><br>  <code>"Gold members only",</code><br>  <code>"Gym induction required"</code><br><code>]</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| duration                                | [`Duration`](https://schema.org/Duration)                                                                                                                                                 | <p>The duration of the event given in \[ISO8601] format.</p><p><br>Example</p><p><code>"duration": "PT1H"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| eventAttendanceMode                     | [`EventAttendanceModeEnumeration`](https://schema.org/EventAttendanceModeEnumeration)                                                                                                     | <p>The eventAttendanceMode of an event indicates whether it occurs online, offline, or a mix.</p><p><br>Example</p><p><code>"eventAttendanceMode": "<https://schema.org/OnlineEventAttendanceMode>"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| eventStatus                             | [`EventStatusType`](https://schema.org/EventStatusType)                                                                                                                                   | <p>The status of an event. Can be used to indicate rescheduled or cancelled events</p><p><br>Example</p><p><code>"eventStatus": "<https://schema.org/EventScheduled>"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| isAccessibleForFree                     | [`Boolean`](https://schema.org/Boolean)                                                                                                                                                   | <p>Whether the Event is accessible without charge.</p><p><br>Example</p><p><code>"isAccessibleForFree": "true"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| isOpenBookingWithCustomerAccountAllowed | [`Boolean`](https://schema.org/Boolean)                                                                                                                                                   | <p>Indicates that a Customer Account may be used to book that opportunity.</p><p>Note that this property is in EARLY RELEASE AND IS SUBJECT TO CHANGE, as the <a href="https://github.com/openactive/customer-accounts">Customer Accounts proposal</a> evolves.</p><p><br>Example</p><p><code>"isOpenBookingWithCustomerAccountAllowed": "true"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| leader                                  | Array of [`Person`](https://developer.openactive.io/data-model/types/person)                                                                                                              | <p>Refers to a person (schema:Person) who will be leading an event. E.g. a coach. This is a more specific role than an organiser or a contributor. The person will need to have given their consent for their personal information to be present in the Open Data.</p><p><br>Example</p><p><code>"leader": \[</code><br>  <code>{</code><br>    <code>"@type": "Person",</code><br>    <code>"familyName": "Smith",</code><br>    <code>"givenName": "Nicole",</code><br>    <code>"gender": "<https://schema.org/Male>",</code><br>    <code>"@id": "<https://example.com/locations/1234ABCD/leaders/89>",</code><br>    <code>"identifier": 89</code><br>  <code>}</code><br><code>]</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| location                                | <p><a href="https://developer.openactive.io/data-model/types/place"><code>Place</code></a><br>- or -<br><code>@id</code> reference</p>                                                    | <p>The location at which the event will take place. Or, in the case of events that may span multiple locations, the initial meeting or starting point.</p><p>Locations must be specified as a <a href="https://github.com/openactive/developer-documentation/blob/master/models/place/README.md">Place</a> complete with a fully described geographic location and/or address.</p><p><br>Example</p><p><code>"location": {</code><br>  <code>"@type": "Place",</code><br>  <code>"@id": "<https://example.com/locations/1234ABCD>",</code><br>  <code>"identifier": "1234ABCD",</code><br>  <code>"address": {</code><br>    <code>"addressLocality": "New Malden",</code><br>    <code>"addressRegion": "London",</code><br>    <code>"postalCode": "NW5 3DU",</code><br>    <code>"streetAddress": "Raynes Park High School, 46A West Barnes Lane",</code><br>    <code>"@type": "PostalAddress"</code><br>  <code>},</code><br>  <code>"description": "Raynes Park High School in London",</code><br>  <code>"geo": {</code><br>    <code>"latitude": 51.4034423828125,</code><br>    <code>"longitude": -0.2369088977575302,</code><br>    <code>"@type": "GeoCoordinates"</code><br>  <code>},</code><br>  <code>"name": "Raynes Park High School",</code><br>  <code>"telephone": "01253 473934"</code><br><code>}</code></p> |
| maximumAttendeeCapacity                 | [`Integer`](https://schema.org/Integer)                                                                                                                                                   | <p>The maximum capacity of the Event.</p><p><br>Example</p><p><code>"maximumAttendeeCapacity": 30</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| maximumVirtualAttendeeCapacity          | [`Integer`](https://schema.org/Integer)                                                                                                                                                   | <p>Indicates the maximum number of connections to a shared virtual space.</p><p><br>Example</p><p><code>"maximumVirtualAttendeeCapacity": 20</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| meetingPoint                            | [`Text`](https://schema.org/Text)                                                                                                                                                         | <p>Instructions for the attendees of an Event about where they should meet the organizer or leader at the start of the event. Some larger locations may have several possible meeting points, so this property provides additional more specific directions.</p><p><br>Example</p><p><code>"meetingPoint": "At the entrance to the park"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| offers                                  | Array of [`Offer`](https://developer.openactive.io/data-model/types/offer)                                                                                                                | <p>An array of schema:Offer that include the price of attending.</p><p><br>Example</p><p><code>"offers": \[</code><br>  <code>{</code><br>    <code>"@type": "Offer",</code><br>    <code>"identifier": "OX-AD",</code><br>    <code>"name": "Adult",</code><br>    <code>"price": 3.3,</code><br>    <code>"priceCurrency": "GBP",</code><br>    <code>"url": "<https://profile.everyoneactive.com/booking?Site=0140&Activities=1402CBP20150217&Culture=en-GB>"</code><br>  <code>}</code><br><code>]</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| remainingAttendeeCapacity               | [`Integer`](https://schema.org/Integer)                                                                                                                                                   | <p>The number of places that are still available for the Event.</p><p><br>Example</p><p><code>"remainingAttendeeCapacity": 20</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| schedulingNote                          | [`Text`](https://schema.org/Text)                                                                                                                                                         | <p>Provides a note from an organizer relating to how this Event is scheduled.</p><p><br>Example</p><p><code>"schedulingNote": "This event doesn't run during school holidays"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| subEvent                                | Array of [`Event`](https://developer.openactive.io/data-model/types/event)                                                                                                                | Relates a parent event to a child event. Properties describing the parent event can be assumed to apply to the child, unless otherwise specified. A child event might be a specific instance of an Event within a schedule                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| superEvent                              | [`Event`](https://developer.openactive.io/data-model/types/event)                                                                                                                         | Relates a child event to a parent event. Properties describing the parent event can be assumed to apply to the child, unless otherwise specified. A parent event might specify a recurring schedule, of which the child event is one specific instance                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| url                                     | [`URL`](https://schema.org/URL)                                                                                                                                                           | <p>A URL to a web page (or section of a page) that describes the event.</p><p><br>Example</p><p><code>"url": "<https://example.com/event/1234>"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |

### **Beta Extension properties**

These properties are defined in the [OpenActive Beta Extension](https://openactive.io/ns-beta). The OpenActive Beta Extension is defined as a convenience to help document properties that are in active testing and review by the community. Publishers should not assume that properties in the beta namespace will either be added to the core specification or be included in the namespace over the long term.

| Property                             | Expected Type                                                                               | Description                                                                                                                                                                                                                                                                                                                                      |
| ------------------------------------ | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| beta:affiliatedLocation              | [`Place`](https://schema.org/Place)                                                         | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/227">Proposal #227</a></p><p>The physical location affiliated with the virtual event, for example the original location of the event before it was moved online.</p>                                                                                                 |
| beta:attendeeCount                   | [`Integer`](https://schema.org/Integer)                                                     | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/274">Proposal #274</a></p><p>For events that have an unlimited number of tickets, captures the number of attendees (actual attendance).</p>                                                                                                                          |
| beta:bookingChannel                  | Array of [`BookingChannelType`](https://openactive.io/ns-beta#BookingChannelType)           | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/161">Proposal #161</a></p><p>The channels through which a booking can be made.</p>                                                                                                                                                                                   |
| beta:contactPoint                    | [`ContactPoint`](https://schema.org/ContactPoint)                                           | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/113">Proposal #113</a></p><p>Contact details for an Event, where they are not specifically related to the <code>organizer</code> or <code>leader</code>.</p>                                                                                                         |
| beta:distance                        | [`QuantitativeValue`](https://schema.org/QuantitativeValue)                                 | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/275">Proposal #275</a></p><p>The distance of a run, cycle or other activity. Must also include units.</p>                                                                                                                                                            |
| beta:donationPaymentUrl              | [`URL`](https://schema.org/URL)                                                             | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/234">Proposal #234</a></p><p>The URL of the webpage where the activity provider accepts donations.</p>                                                                                                                                                               |
| beta:estimatedDuration               | [`QuantitativeValue`](https://schema.org/QuantitativeValue)                                 | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/201">Proposal #201</a></p><p>A property that allows an Event duration to be represented as a range (e.g. 0-30mins, 30-60mins, 60-90mins, 90+).</p>                                                                                                                   |
| beta:facilitySetting                 | [`FacilitySettingType`](https://openactive.io/ns-beta#FacilitySettingType)                  | <p><a href="https://github.com/openactive/facility-types/issues/1">Proposal #1</a></p><p>Whether the event or facility is indoor or outdoor.</p>                                                                                                                                                                                                 |
| beta:formattedDescription            | [`Text`](https://schema.org/Text)                                                           | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/276">Proposal #276</a></p><p>Sometimes a description is stored with formatting (e.g. href, bold, italics, embedded YouTube videos). This formatting can be useful for data consumers. This property must contain HTML.</p>                                           |
| beta:isFirstSessionAccessibleForFree | [`Boolean`](https://schema.org/Boolean)                                                     | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/232">Proposal #232</a></p><p>A property that indicates whether the first session is free.</p>                                                                                                                                                                        |
| beta:isInteractivityPreferred        | [`Boolean`](https://schema.org/Boolean)                                                     | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/230">Proposal #230</a></p><p>Indicates whether the virtual event is interactive (e.g. Zoom with participant microphones and cameras on), or is just a one-way broadcast (e.g. Facebook Live, Instagram Live, Zoom with participant microphones and cameras off).</p> |
| beta:isScheduledAsSlots              | [`Boolean`](https://schema.org/Boolean)                                                     | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/301">Proposal #301</a></p><p>A property that indicates whether the event contains a high frequency of occurrences. Intended as a UI hint for interfaces that represent these occurrences.</p>                                                                        |
| beta:isVirtuallyCoached              | [`Boolean`](https://schema.org/Boolean)                                                     | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/71">Proposal #71</a></p><p>A property that indicates whether the event is led by a virtual coach. Only relevant if an event <code>isCoached</code>. If not provided is assumed to be <code>false</code>.</p>                                                         |
| beta:isWheelchairAccessible          | [`Boolean`](https://schema.org/Boolean)                                                     | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/166">Proposal #166</a></p><p>A property that details whether the event is suitable for wheelchair access. Placed on Event as this field could be used to detail whether the Event is suitable, as well as the Place.</p>                                             |
| beta:offerValidityPeriod             | [`Duration`](https://schema.org/Duration)                                                   | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/204">Proposal #204</a></p><p>Duration before the event for which the associated Offers are valid</p>                                                                                                                                                                 |
| beta:participantSuppliedEquipment    | [`RequiredStatusType`](https://developer.openactive.io/data-model/types/requiredstatustype) | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/229">Proposal #229</a></p><p>Indicates whether the participant must or may supply equipment for use in the Event.</p>                                                                                                                                                |
| beta:registrationCount               | [`Integer`](https://schema.org/Integer)                                                     | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/273">Proposal #273</a></p><p>For events that have an unlimited number of tickets, captures the number of registrations (intention to attend).</p>                                                                                                                    |
| beta:sportsActivityLocation          | Array of [`SportsActivityLocation`](https://schema.org/SportsActivityLocation)              | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/110">Proposal #110</a></p><p>Internal location of the event, e.g. Court 1</p>                                                                                                                                                                                        |
| beta:video                           | Array of [`VideoObject`](https://schema.org/VideoObject)                                    | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/88">Proposal #88</a></p><p>A related video object.</p>                                                                                                                                                                                                               |
| beta:virtualLocation                 | [`VirtualLocation`](https://pending.schema.org/VirtualLocation)                             | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/224">Proposal #224</a></p><p>Describes a means of electronic access to a shared virtual space.</p>                                                                                                                                                                   |

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# Event

This page describes the Event type.

This type is derived from <https://schema.org/Event>, which means that any of this type's properties within schema.org may also be used. Note however the properties on this page must be used in preference if a relevant property is available.

## **Properties**

### **Required properties**

| Property  | Expected Type                                                                                                                                                                                                       | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| @type     | [`Text`](https://schema.org/Text)                                                                                                                                                                                   | Must always be present and set to `"@type": "Event"`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| @id       | [`URL`](https://schema.org/URL)                                                                                                                                                                                     | <p>A unique URI-based identifier for the record.</p><p><code>@id</code> properties are used as identifiers for compatibility with JSON-LD. The value of such a property must always be an absolute URI that provides a stable globally unique identifier for the resource, as described in <a href="https://tools.ietf.org/html/rfc3986">RFC3986</a>.</p><p>The primary purpose of the URI format in this context is to provide natural namespacing for the identifier. Hence, the URI itself may not resolve to a valid endpoint, but must use a domain name controlled by the resource owner (the organisation responsible for the OpenActive open data feed).</p><p><br>Example</p><p><code>"@id": "<https://api.example.com/events/12345>"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| activity  | Array of [`Concept`](https://developer.openactive.io/data-model/types/concept)                                                                                                                                      | <p>Specifies the physical activity or activities that will take place during an event.</p><p><br>Example</p><p><code>"activity": \[</code><br>  <code>{</code><br>    <code>"@type": "Concept",</code><br>    <code>"@id": "<https://openactive.io/activity-list#5e78bcbe-36db-425a-9064-bf96d09cc351>",</code><br>    <code>"prefLabel": "Bodypump™",</code><br>    <code>"inScheme": "<https://openactive.io/activity-list>"</code><br>  <code>}</code><br><code>]</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| location  | <p><a href="https://developer.openactive.io/data-model/types/place"><code>Place</code></a><br>- or -<br><code>@id</code> reference</p>                                                                              | <p>The location at which the event will take place. Or, in the case of events that may span multiple locations, the initial meeting or starting point.</p><p>Locations must be specified as a <a href="https://github.com/openactive/developer-documentation/blob/master/models/place/README.md">Place</a> complete with a fully described geographic location and/or address.</p><p><br>Example</p><p><code>"location": {</code><br>  <code>"@type": "Place",</code><br>  <code>"@id": "<https://example.com/locations/1234ABCD>",</code><br>  <code>"identifier": "1234ABCD",</code><br>  <code>"address": {</code><br>    <code>"addressLocality": "New Malden",</code><br>    <code>"addressRegion": "London",</code><br>    <code>"postalCode": "NW5 3DU",</code><br>    <code>"streetAddress": "Raynes Park High School, 46A West Barnes Lane",</code><br>    <code>"@type": "PostalAddress"</code><br>  <code>},</code><br>  <code>"description": "Raynes Park High School in London",</code><br>  <code>"geo": {</code><br>    <code>"latitude": 51.4034423828125,</code><br>    <code>"longitude": -0.2369088977575302,</code><br>    <code>"@type": "GeoCoordinates"</code><br>  <code>},</code><br>  <code>"name": "Raynes Park High School",</code><br>  <code>"telephone": "01253 473934"</code><br><code>}</code></p> |
| name      | [`Text`](https://schema.org/Text)                                                                                                                                                                                   | <p>The name of the event</p><p><br>Example</p><p><code>"name": "Speedball"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| offers    | Array of [`Offer`](https://developer.openactive.io/data-model/types/offer)                                                                                                                                          | <p>An array of schema:Offer that include the price of attending.</p><p><br>Example</p><p><code>"offers": \[</code><br>  <code>{</code><br>    <code>"@type": "Offer",</code><br>    <code>"identifier": "OX-AD",</code><br>    <code>"name": "Adult",</code><br>    <code>"price": 3.3,</code><br>    <code>"priceCurrency": "GBP",</code><br>    <code>"url": "<https://profile.everyoneactive.com/booking?Site=0140&Activities=1402CBP20150217&Culture=en-GB>"</code><br>  <code>}</code><br><code>]</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| organizer | <p><a href="https://developer.openactive.io/data-model/types/organization"><code>Organization</code></a><br>- or -<br><a href="https://developer.openactive.io/data-model/types/person"><code>Person</code></a></p> | <p>The person or organization ultimately responsible for an event. An organizer might be an schema:Organization or a schema:Person.</p><p><br>Example</p><p><code>"organizer": {</code><br>  <code>"@type": "Organization",</code><br>  <code>"@id": "<https://id.bookingsystem.example.com/organizers/1>",</code><br>  <code>"name": "Central Speedball Association",</code><br>  <code>"url": "<http://www.speedball-world.com>"</code><br><code>}</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| startDate | [`DateTime`](https://schema.org/DateTime)                                                                                                                                                                           | <p>The start date and time of the event. Can be specified as a schema:DateTime.</p><p><br>Example</p><p><code>"startDate": "2018-01-27T12:00:00Z"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| url       | [`URL`](https://schema.org/URL)                                                                                                                                                                                     | <p>A URL to a web page (or section of a page) that describes the event.</p><p><br>Example</p><p><code>"url": "<https://example.com/event/1234>"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |

### **Recommended properties**

| Property                  | Expected Type                                                                                                                                                                             | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| ------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ageRange                  | [`QuantitativeValue`](https://developer.openactive.io/data-model/types/quantitativevalue)                                                                                                 | <p>Indicates that an event is recommended as being suitable for or is targetted at a specific age range.</p><p><br>Example</p><p><code>"ageRange": {</code><br>  <code>"@type": "QuantitativeValue",</code><br>  <code>"minValue": 50,</code><br>  <code>"maxValue": 60</code><br><code>}</code></p>                                                                                                                                                                                                                                                                                                                                                                                              |
| description               | [`Text`](https://schema.org/Text)                                                                                                                                                         | <p>A plain text description of the event, which must not include HTML or other markup.</p><p><br>Example</p><p><code>"description": "A fast paced game that incorporates netball, handball and football."</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| endDate                   | [`DateTime`](https://schema.org/DateTime)                                                                                                                                                 | <p>The end date and time of the event. Can be specified as a schema:DateTime</p><p>It is recommended that publishers provide either an schema:endDate or a schema:duration for an event.</p><p><br>Example</p><p><code>"endDate": "2018-01-27T12:00:00Z"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                               |
| eventStatus               | [`EventStatusType`](https://schema.org/EventStatusType)                                                                                                                                   | <p>The status of an event. Can be used to indicate rescheduled or cancelled events</p><p><br>Example</p><p><code>"eventStatus": "<https://schema.org/EventScheduled>"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| genderRestriction         | [`GenderRestrictionType`](https://openactive.io/GenderRestrictionType)                                                                                                                    | <p>Indicates that an event is restricted to male, female or a mixed audience. This information must be displayed prominently to the user before booking. If a gender restriction isn't specified then applications should assume that an event is suitable for a mixed audience.</p><p><br>Example</p><p><code>"genderRestriction": "<https://openactive.io/FemaleOnly>"</code></p>                                                                                                                                                                                                                                                                                                               |
| image                     | Array of [`ImageObject`](https://developer.openactive.io/data-model/types/imageobject)                                                                                                    | <p>An image or photo that depicts the event, e.g. a photo taken at a previous event.</p><p><br>Example</p><p><code>"image": \[</code><br>  <code>{</code><br>    <code>"@type": "ImageObject",</code><br>    <code>"url": "<http://example.com/static/image/speedball_large.jpg>",</code><br>    <code>"thumbnail": \[</code><br>      <code>{</code><br>        <code>"@type": "ImageObject",</code><br>        <code>"url": "<http://example.com/static/image/speedball_thumbnail.jpg>"</code><br>      <code>}</code><br>    <code>]</code><br>  <code>}</code><br><code>]</code></p>                                                                                                          |
| leader                    | Array of [`Person`](https://developer.openactive.io/data-model/types/person)                                                                                                              | <p>Refers to a person (schema:Person) who will be leading an event. E.g. a coach. This is a more specific role than an organiser or a contributor. The person will need to have given their consent for their personal information to be present in the Open Data.</p><p><br>Example</p><p><code>"leader": \[</code><br>  <code>{</code><br>    <code>"@type": "Person",</code><br>    <code>"familyName": "Smith",</code><br>    <code>"givenName": "Nicole",</code><br>    <code>"gender": "<https://schema.org/Male>",</code><br>    <code>"@id": "<https://example.com/locations/1234ABCD/leaders/89>",</code><br>    <code>"identifier": 89</code><br>  <code>}</code><br><code>]</code></p> |
| level                     | <p>Array of <a href="https://schema.org/Text"><code>Text</code></a><br>- or -<br>Array of <a href="https://developer.openactive.io/data-model/types/concept"><code>Concept</code></a></p> | <p>A general purpose property for specifying the suitability of an event for different participant “levels”. E.g. <code>Beginner</code>, <code>Intermediate</code>, <code>Advanced</code>. Or in the case of martial arts, specific belt requirements.</p><p><br>Example</p><p><code>"level": \[</code><br>  <code>"Beginner"</code><br><code>]</code></p>                                                                                                                                                                                                                                                                                                                                        |
| maximumAttendeeCapacity   | [`Integer`](https://schema.org/Integer)                                                                                                                                                   | <p>The maximum capacity of the Event.</p><p><br>Example</p><p><code>"maximumAttendeeCapacity": 30</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| remainingAttendeeCapacity | [`Integer`](https://schema.org/Integer)                                                                                                                                                   | <p>The number of places that are still available for the Event.</p><p><br>Example</p><p><code>"remainingAttendeeCapacity": 20</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |

### **Optional properties**

| Property                                | Expected Type                                                                                                                                                                                                                                                                                                                                                                                | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| --------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| accessibilityInformation                | [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                            | <p>Provide additional, specific documentation for participants about how disabilities are, or can be supported at the Event.</p><p><br>Example</p><p><code>"accessibilityInformation": "This route has been British Cycling assessed as an accessible route, meaning it is suitable for the majority of adaptive bikes. The route will have no or low levels of traffic, there will be plenty of space and will have a good surface throughout. If you have any questions about using this route on an adaptive bike on this ride, please use visit <https://www.letsride.co.uk/accessibility> or call 0123 456 7000 and ask for the Recreation team."</code></p> |
| accessibilitySupport                    | Array of [`Concept`](https://developer.openactive.io/data-model/types/concept)                                                                                                                                                                                                                                                                                                               | <p>Used to specify the types of disabilities or impairments that are supported at an event.</p><p><br>Example</p><p><code>"accessibilitySupport": \[</code><br>  <code>{</code><br>    <code>"@type": "Concept",</code><br>    <code>"@id": "<https://openactive.io/accessibility-support#1393f2dc-3fcc-4be9-a99f-f1e51f5ad277>",</code><br>    <code>"prefLabel": "Visual impairment",</code><br>    <code>"inScheme": "<https://openactive.io/accessibility-support>"</code><br>  <code>}</code><br><code>]</code></p>                                                                                                                                          |
| additionalAdmissionRestriction          | Array of [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                   | <p>Free text restrictions that must be displayed prominently to the user before booking. This property must only contain restrictions not described by <code>oa:ageRestriction</code> or <code>oa:genderRestriction</code>.</p><p><br>Example</p><p><code>"additionalAdmissionRestriction": \[</code><br>  <code>"Participants younger than 12 must be accompanied by an adult",</code><br>  <code>"Participants must be comfortable standing for long periods of time"</code><br><code>]</code></p>                                                                                                                                                              |
| ageRestriction                          | [`QuantitativeValue`](https://developer.openactive.io/data-model/types/quantitativevalue)                                                                                                                                                                                                                                                                                                    | <p>The enforced attendee age range requirement of the Event or Offer, that must be displayed prominently to the user before booking.</p><p><br>Example</p><p><code>"ageRestriction": {</code><br>  <code>"@type": "QuantitativeValue",</code><br>  <code>"minValue": 15,</code><br>  <code>"maxValue": 60</code><br><code>}</code></p>                                                                                                                                                                                                                                                                                                                            |
| attendeeInstructions                    | [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                            | <p>Provides additional notes and instructions for event attendees, for example more information on how to find the event, what to bring, etc. The value of this property must not include HTML or other markup.</p><p><br>Example</p><p><code>"attendeeInstructions": "Ensure you bring trainers and a bottle of water."</code></p>                                                                                                                                                                                                                                                                                                                               |
| category                                | <p>Array of <a href="https://developer.openactive.io/data-model/types/concept"><code>Concept</code></a><br>- or -<br>Array of <a href="https://schema.org/Text"><code>Text</code></a></p>                                                                                                                                                                                                    | <p>Provides a set of tags that help categorise and describe an event, e.g. its intensity, purpose, etc.</p><p><br>Example</p><p><code>"category": \[</code><br>  <code>"High Intensity"</code><br><code>]</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| contributor                             | Array of [`Person`](https://developer.openactive.io/data-model/types/person)                                                                                                                                                                                                                                                                                                                 | <p>A Person who contributes to the facilitation of the Event.</p><p><br>Example</p><p><code>"contributor": \[</code><br>  <code>{</code><br>    <code>"@type": "Person",</code><br>    <code>"familyName": "Smith",</code><br>    <code>"givenName": "Nicole",</code><br>    <code>"@id": "<https://example.com/locations/1234ABCD/leaders/89>",</code><br>    <code>"identifier": 89</code><br>  <code>}</code><br><code>]</code></p>                                                                                                                                                                                                                            |
| customerAccountBookingRestriction       | Array of [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                   | <p>Free text restrictions to display to the Customer at the browse stage, that may apply when using a Customer Account to make the booking.</p><p>Note that this property is in EARLY RELEASE AND IS SUBJECT TO CHANGE, as the <a href="https://github.com/openactive/customer-accounts">Customer Accounts proposal</a> evolves.</p><p><br>Example</p><p><code>"customerAccountBookingRestriction": \[</code><br>  <code>"Gold members only",</code><br>  <code>"Gym induction required"</code><br><code>]</code></p>                                                                                                                                             |
| duration                                | [`Duration`](https://schema.org/Duration)                                                                                                                                                                                                                                                                                                                                                    | <p>The duration of the event given in \[ISO8601] format.</p><p><br>Example</p><p><code>"duration": "PT1H"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| eventAttendanceMode                     | [`EventAttendanceModeEnumeration`](https://schema.org/EventAttendanceModeEnumeration)                                                                                                                                                                                                                                                                                                        | <p>The eventAttendanceMode of an event indicates whether it occurs online, offline, or a mix.</p><p><br>Example</p><p><code>"eventAttendanceMode": "<https://schema.org/OnlineEventAttendanceMode>"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| identifier                              | <p><a href="https://schema.org/Text"><code>Text</code></a><br>- or -<br><a href="https://developer.openactive.io/data-model/types/propertyvalue"><code>PropertyValue</code></a><br>- or -<br>Array of <a href="https://developer.openactive.io/data-model/types/propertyvalue"><code>PropertyValue</code></a><br>- or -<br><a href="https://schema.org/Integer"><code>Integer</code></a></p> | <p>A local non-URI identifier for the resource</p><p><br>Example</p><p><code>"identifier": "SB1234"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| isAccessibleForFree                     | [`Boolean`](https://schema.org/Boolean)                                                                                                                                                                                                                                                                                                                                                      | <p>Whether the Event is accessible without charge.</p><p><br>Example</p><p><code>"isAccessibleForFree": "true"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| isCoached                               | [`Boolean`](https://schema.org/Boolean)                                                                                                                                                                                                                                                                                                                                                      | <p>A boolean property that indicates whether an Event will be coached. This flag allows an Event to be marked as being coached without having to specify a named individual as a coach. This addresses both privacy concerns and also scenarios where the actual coach may only be decided on the day.</p><p><br>Example</p><p><code>"isCoached": "true"</code></p>                                                                                                                                                                                                                                                                                               |
| isOpenBookingWithCustomerAccountAllowed | [`Boolean`](https://schema.org/Boolean)                                                                                                                                                                                                                                                                                                                                                      | <p>Indicates that a Customer Account may be used to book that opportunity.</p><p>Note that this property is in EARLY RELEASE AND IS SUBJECT TO CHANGE, as the <a href="https://github.com/openactive/customer-accounts">Customer Accounts proposal</a> evolves.</p><p><br>Example</p><p><code>"isOpenBookingWithCustomerAccountAllowed": "true"</code></p>                                                                                                                                                                                                                                                                                                        |
| maximumVirtualAttendeeCapacity          | [`Integer`](https://schema.org/Integer)                                                                                                                                                                                                                                                                                                                                                      | <p>Indicates the maximum number of connections to a shared virtual space.</p><p><br>Example</p><p><code>"maximumVirtualAttendeeCapacity": 20</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| meetingPoint                            | [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                            | <p>Instructions for the attendees of an Event about where they should meet the organizer or leader at the start of the event. Some larger locations may have several possible meeting points, so this property provides additional more specific directions.</p><p><br>Example</p><p><code>"meetingPoint": "At the entrance to the park"</code></p>                                                                                                                                                                                                                                                                                                               |
| programme                               | [`Brand`](https://developer.openactive.io/data-model/types/brand)                                                                                                                                                                                                                                                                                                                            | <p>Indicates that an event will be organised according to a specific Programme.</p><p><br>Example</p><p><code>"programme": {</code><br>  <code>"@type": "Brand",</code><br>  <code>"name": "Play Ball!",</code><br>  <code>"url": "<http://example.org/brand/play-ball>"</code><br><code>}</code></p>                                                                                                                                                                                                                                                                                                                                                             |
| schedulingNote                          | [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                            | <p>Provides a note from an organizer relating to how this Event is scheduled.</p><p><br>Example</p><p><code>"schedulingNote": "This event doesn't run during school holidays"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| subEvent                                | Array of [`Event`](https://developer.openactive.io/data-model/types/event)                                                                                                                                                                                                                                                                                                                   | Relates a parent event to a child event. Properties describing the parent event can be assumed to apply to the child, unless otherwise specified. A child event might be a specific instance of an Event within a schedule                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| superEvent                              | [`Event`](https://developer.openactive.io/data-model/types/event)                                                                                                                                                                                                                                                                                                                            | Relates a child event to a parent event. Properties describing the parent event can be assumed to apply to the child, unless otherwise specified. A parent event might specify a recurring schedule, of which the child event is one specific instance                                                                                                                                                                                                                                                                                                                                                                                                            |

### **Beta Extension properties**

These properties are defined in the [OpenActive Beta Extension](https://openactive.io/ns-beta). The OpenActive Beta Extension is defined as a convenience to help document properties that are in active testing and review by the community. Publishers should not assume that properties in the beta namespace will either be added to the core specification or be included in the namespace over the long term.

| Property                             | Expected Type                                                                               | Description                                                                                                                                                                                                                                                                                                                                      |
| ------------------------------------ | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| beta:affiliatedLocation              | [`Place`](https://schema.org/Place)                                                         | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/227">Proposal #227</a></p><p>The physical location affiliated with the virtual event, for example the original location of the event before it was moved online.</p>                                                                                                 |
| beta:attendeeCount                   | [`Integer`](https://schema.org/Integer)                                                     | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/274">Proposal #274</a></p><p>For events that have an unlimited number of tickets, captures the number of attendees (actual attendance).</p>                                                                                                                          |
| beta:bookingChannel                  | Array of [`BookingChannelType`](https://openactive.io/ns-beta#BookingChannelType)           | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/161">Proposal #161</a></p><p>The channels through which a booking can be made.</p>                                                                                                                                                                                   |
| beta:contactPoint                    | [`ContactPoint`](https://schema.org/ContactPoint)                                           | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/113">Proposal #113</a></p><p>Contact details for an Event, where they are not specifically related to the <code>organizer</code> or <code>leader</code>.</p>                                                                                                         |
| beta:distance                        | [`QuantitativeValue`](https://schema.org/QuantitativeValue)                                 | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/275">Proposal #275</a></p><p>The distance of a run, cycle or other activity. Must also include units.</p>                                                                                                                                                            |
| beta:donationPaymentUrl              | [`URL`](https://schema.org/URL)                                                             | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/234">Proposal #234</a></p><p>The URL of the webpage where the activity provider accepts donations.</p>                                                                                                                                                               |
| beta:estimatedDuration               | [`QuantitativeValue`](https://schema.org/QuantitativeValue)                                 | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/201">Proposal #201</a></p><p>A property that allows an Event duration to be represented as a range (e.g. 0-30mins, 30-60mins, 60-90mins, 90+).</p>                                                                                                                   |
| beta:facilitySetting                 | [`FacilitySettingType`](https://openactive.io/ns-beta#FacilitySettingType)                  | <p><a href="https://github.com/openactive/facility-types/issues/1">Proposal #1</a></p><p>Whether the event or facility is indoor or outdoor.</p>                                                                                                                                                                                                 |
| beta:formattedDescription            | [`Text`](https://schema.org/Text)                                                           | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/276">Proposal #276</a></p><p>Sometimes a description is stored with formatting (e.g. href, bold, italics, embedded YouTube videos). This formatting can be useful for data consumers. This property must contain HTML.</p>                                           |
| beta:isFirstSessionAccessibleForFree | [`Boolean`](https://schema.org/Boolean)                                                     | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/232">Proposal #232</a></p><p>A property that indicates whether the first session is free.</p>                                                                                                                                                                        |
| beta:isInteractivityPreferred        | [`Boolean`](https://schema.org/Boolean)                                                     | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/230">Proposal #230</a></p><p>Indicates whether the virtual event is interactive (e.g. Zoom with participant microphones and cameras on), or is just a one-way broadcast (e.g. Facebook Live, Instagram Live, Zoom with participant microphones and cameras off).</p> |
| beta:isScheduledAsSlots              | [`Boolean`](https://schema.org/Boolean)                                                     | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/301">Proposal #301</a></p><p>A property that indicates whether the event contains a high frequency of occurrences. Intended as a UI hint for interfaces that represent these occurrences.</p>                                                                        |
| beta:isVirtuallyCoached              | [`Boolean`](https://schema.org/Boolean)                                                     | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/71">Proposal #71</a></p><p>A property that indicates whether the event is led by a virtual coach. Only relevant if an event <code>isCoached</code>. If not provided is assumed to be <code>false</code>.</p>                                                         |
| beta:isWheelchairAccessible          | [`Boolean`](https://schema.org/Boolean)                                                     | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/166">Proposal #166</a></p><p>A property that details whether the event is suitable for wheelchair access. Placed on Event as this field could be used to detail whether the Event is suitable, as well as the Place.</p>                                             |
| beta:offerValidityPeriod             | [`Duration`](https://schema.org/Duration)                                                   | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/204">Proposal #204</a></p><p>Duration before the event for which the associated Offers are valid</p>                                                                                                                                                                 |
| beta:participantSuppliedEquipment    | [`RequiredStatusType`](https://developer.openactive.io/data-model/types/requiredstatustype) | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/229">Proposal #229</a></p><p>Indicates whether the participant must or may supply equipment for use in the Event.</p>                                                                                                                                                |
| beta:registrationCount               | [`Integer`](https://schema.org/Integer)                                                     | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/273">Proposal #273</a></p><p>For events that have an unlimited number of tickets, captures the number of registrations (intention to attend).</p>                                                                                                                    |
| beta:sportsActivityLocation          | Array of [`SportsActivityLocation`](https://schema.org/SportsActivityLocation)              | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/110">Proposal #110</a></p><p>Internal location of the event, e.g. Court 1</p>                                                                                                                                                                                        |
| beta:video                           | Array of [`VideoObject`](https://schema.org/VideoObject)                                    | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/88">Proposal #88</a></p><p>A related video object.</p>                                                                                                                                                                                                               |
| beta:virtualLocation                 | [`VirtualLocation`](https://pending.schema.org/VirtualLocation)                             | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/224">Proposal #224</a></p><p>Describes a means of electronic access to a shared virtual space.</p>                                                                                                                                                                   |

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# FacilityUse

This page describes the FacilityUse type.

## **Properties**

### **Required properties**

| Property | Expected Type                                                                                                                          | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| -------- | -------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| @type    | [`Text`](https://schema.org/Text)                                                                                                      | Must always be present and set to `"@type": "FacilityUse"`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| @id      | [`URL`](https://schema.org/URL)                                                                                                        | <p>A unique URI-based identifier for the record.</p><p><code>@id</code> properties are used as identifiers for compatibility with JSON-LD. The value of such a property must always be an absolute URI that provides a stable globally unique identifier for the resource, as described in <a href="https://tools.ietf.org/html/rfc3986">RFC3986</a>.</p><p>The primary purpose of the URI format in this context is to provide natural namespacing for the identifier. Hence, the URI itself may not resolve to a valid endpoint, but must use a domain name controlled by the resource owner (the organisation responsible for the OpenActive open data feed).</p><p><br>Example</p><p><code>"@id": "<https://api.example.com/facility-uses/12345>"</code></p>                                                                                                                                                                                                                                                |
| location | <p><a href="https://developer.openactive.io/data-model/types/place"><code>Place</code></a><br>- or -<br><code>@id</code> reference</p> | <p>The location at which the facility use will take place.</p><p><br>Example</p><p><code>"location": {</code><br>  <code>"@type": "Place",</code><br>  <code>"address": {</code><br>    <code>"addressLocality": "New Malden",</code><br>    <code>"addressRegion": "London",</code><br>    <code>"postalCode": "NW5 3DU",</code><br>    <code>"streetAddress": "Raynes Park High School, 46A West Barnes Lane",</code><br>    <code>"@type": "PostalAddress"</code><br>  <code>},</code><br>  <code>"description": "Raynes Park High School in London",</code><br>  <code>"geo": {</code><br>    <code>"latitude": 51.4034423828125,</code><br>    <code>"longitude": -0.2369088977575302,</code><br>    <code>"@type": "GeoCoordinates"</code><br>  <code>},</code><br>  <code>"@id": "<https://example.com/locations/1234ABCD>",</code><br>  <code>"identifier": "1234ABCD",</code><br>  <code>"name": "Raynes Park High School",</code><br>  <code>"telephone": "01253 473934"</code><br><code>}</code></p> |
| name     | [`Text`](https://schema.org/Text)                                                                                                      | <p>The name of the facility use</p><p><br>Example</p><p><code>"name": "Speedball"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| provider | [`Organization`](https://developer.openactive.io/data-model/types/organization)                                                        | <p>The organisation responsible for providing the facility</p><p><br>Example</p><p><code>"provider": {</code><br>  <code>"@type": "Organization",</code><br>  <code>"name": "Central Speedball Association",</code><br>  <code>"url": "<http://www.speedball-world.com>"</code><br><code>}</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| url      | [`URL`](https://schema.org/URL)                                                                                                        | <p>A URL to a web page (or section of a page) that describes the facility use.</p><p><br>Example</p><p><code>"url": "<https://example.com/facility-use/1234>"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |

### **Required options**

Support for the `facilityType` property has been added to tooling and documentation ahead of inclusion in the next point release of the OpenActive Modelling Opportunity Data specification, as agreed on [the W3C call 2021-06-02](https://github.com/openactive/facility-types/issues/1#issuecomment-853759213). On this basis of this discussion, following the next point release, only `facilityType` will be required.

| Property     | Expected Type                                                                  | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| ------------ | ------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| facilityType | Array of [`Concept`](https://developer.openactive.io/data-model/types/concept) | <p>Specifies the types of facility being described.</p><p>NOTE: this property has been added to tooling and documentation ahead of inclusion in the next point release of the OpenActive Modelling Opportunity Data specification, as agreed on <a href="https://github.com/openactive/facility-types/issues/1#issuecomment-853759213">the W3C call 2021-06-02</a>.</p><p><br>Example</p><p><code>"facilityType": \[</code><br>  <code>{</code><br>    <code>"@type": "Concept",</code><br>    <code>"@id": "<https://openactive.io/facility-types#bba8ae59-d152-40bc-85cc-88c5375696d4>",</code><br>    <code>"prefLabel": "Tennis Court",</code><br>    <code>"inScheme": "<https://openactive.io/facility-types>"</code><br>  <code>}</code><br><code>]</code></p> |
| activity     | Array of [`Concept`](https://developer.openactive.io/data-model/types/concept) | <p><strong>DEPRECATED</strong>: Use <code>facilityType</code> instead of <code>activity</code> within <code>FacilityUse</code> and <code>IndividualFacilityUse</code>, as the <code>facilityType</code> controlled vocabulary has been designed specifically for facilities.</p><p>Specifies the physical activity or activities that will take place during a facility use.</p><p><br>Example</p><p><code>"activity": \[</code><br>  <code>{</code><br>    <code>"@type": "Concept",</code><br>    <code>"@id": "<https://openactive.io/activity-list#c0360db0-a817-4bae-9167-40f89b49fc9e>",</code><br>    <code>"prefLabel": "Badminton",</code><br>    <code>"inScheme": "<https://openactive.io/activity-list>"</code><br>  <code>}</code><br><code>]</code></p> |

### **Recommended properties**

| Property       | Expected Type                                                                                                      | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| -------------- | ------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| description    | [`Text`](https://schema.org/Text)                                                                                  | <p>A plain text description of the facility use, which must not include HTML or other markup.</p><p><br>Example</p><p><code>"description": "An fast paced game that incorporates netball, handball and football."</code></p>                                                                                                                                                                                                                                         |
| hoursAvailable | Array of [`OpeningHoursSpecification`](https://developer.openactive.io/data-model/types/openinghoursspecification) | The times the facility use is available                                                                                                                                                                                                                                                                                                                                                                                                                              |
| image          | Array of [`ImageObject`](https://developer.openactive.io/data-model/types/imageobject)                             | <p>An image or photo that depicts the facility use, e.g. a photo taken at a previous event.</p><p><br>Example</p><p><code>"image": \[</code><br>  <code>{</code><br>    <code>"thumbnail": "<http://example.com/static/image/speedball_thumbnail.jpg>",</code><br>    <code>"@type": "ImageObject",</code><br>    <code>"url": "<http://example.com/static/image/speedball_large.jpg>"</code><br>  <code>}</code><br><code>]</code></p>                              |
| offers         | Array of [`Offer`](https://developer.openactive.io/data-model/types/offer)                                         | <p>An array of schema:Offer that include the price of booking.</p><p><br>Example</p><p><code>"offers": {</code><br>  <code>"@type": "Offer",</code><br>  <code>"identifier": "OX-AD",</code><br>  <code>"name": "Adult",</code><br>  <code>"price": 7.5,</code><br>  <code>"priceCurrency": "GBP",</code><br>  <code>"url": "<https://profile.everyoneactive.com/booking?Site=0140&#x26;Activities=1402CBP20150217&#x26;Culture=en-GB>"</code><br><code>}</code></p> |

### **Optional properties**

| Property                                | Expected Type                                                                                                                                                                                                                                                                                                                                                                                | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| --------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| accessibilityInformation                | [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                            | <p>Provide additional, specific documentation for participants about how disabilities are, or can be supported at the Event.</p><p><br>Example</p><p><code>"accessibilityInformation": "This route has been British Cycling assessed as an accessible route, meaning it is suitable for the majority of adaptive bikes. The route will have no or low levels of traffic, there will be plenty of space and will have a good surface throughout. If you have any questions about using this route on an adaptive bike on this ride, please use visit <https://www.letsride.co.uk/accessibility> or call 0123 456 7000 and ask for the Recreation team."</code></p> |
| accessibilitySupport                    | Array of [`Concept`](https://developer.openactive.io/data-model/types/concept)                                                                                                                                                                                                                                                                                                               | <p>Used to specify the types of disabilities or impairments that are supported at an event.</p><p><br>Example</p><p><code>"accessibilitySupport": \[</code><br>  <code>{</code><br>    <code>"@type": "Concept",</code><br>    <code>"@id": "<https://openactive.io/accessibility-support#1393f2dc-3fcc-4be9-a99f-f1e51f5ad277>",</code><br>    <code>"prefLabel": "Visual impairment",</code><br>    <code>"inScheme": "<https://openactive.io/accessibility-support>"</code><br>  <code>}</code><br><code>]</code></p>                                                                                                                                          |
| additionalAdmissionRestriction          | Array of [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                   | <p>Free text restrictions that must be displayed prominently to the user before booking. This property must only contain restrictions not described by <code>oa:ageRestriction</code> or <code>oa:genderRestriction</code>.</p><p><br>Example</p><p><code>"additionalAdmissionRestriction": \[</code><br>  <code>"Participants younger than 12 must be accompanied by an adult",</code><br>  <code>"Participants must be comfortable standing for long periods of time"</code><br><code>]</code></p>                                                                                                                                                              |
| attendeeInstructions                    | [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                            | <p>Provides additional notes and instructions for users of a facility, for example more information on how to find it, what to bring, etc. The value of this property must not include HTML or other markup.</p><p><br>Example</p><p><code>"attendeeInstructions": "The tennis court is locked with a keycode, so please ensure you book online in advance to gain access."</code></p>                                                                                                                                                                                                                                                                            |
| category                                | <p>Array of <a href="https://developer.openactive.io/data-model/types/concept"><code>Concept</code></a><br>- or -<br>Array of <a href="https://schema.org/Text"><code>Text</code></a></p>                                                                                                                                                                                                    | <p>Provides a set of tags that help categorise and describe a facility.</p><p><br>Example</p><p><code>"category": \[</code><br>  <code>{</code><br>    <code>"@type": "Concept",</code><br>    <code>"@id": "<https://example.com/reference/categories#Top%20Club%20Level>",</code><br>    <code>"inScheme": "<https://example.com/reference/categories>",</code><br>    <code>"prefLabel": "Top Club Level"</code><br>  <code>}</code><br><code>]</code></p>                                                                                                                                                                                                     |
| customerAccountBookingRestriction       | Array of [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                   | <p>Free text restrictions to display to the Customer at the browse stage, that may apply when using a Customer Account to make the booking.</p><p>Note that this property is in EARLY RELEASE AND IS SUBJECT TO CHANGE, as the <a href="https://github.com/openactive/customer-accounts">Customer Accounts proposal</a> evolves.</p><p><br>Example</p><p><code>"customerAccountBookingRestriction": \[</code><br>  <code>"Gold members only",</code><br>  <code>"Gym induction required"</code><br><code>]</code></p>                                                                                                                                             |
| event                                   | Array of [`Slot`](https://developer.openactive.io/data-model/types/slot)                                                                                                                                                                                                                                                                                                                     | <p>An array of slots of availability of this FacilityUse.</p><p><br>Example</p><p><code>"event": \[</code><br>  <code>{</code><br>    <code>"@type": "Slot",</code><br>    <code>"@id": "<http://www.example.org/api/facility-uses/432#/event/2018-03-01T10:00:00Z>",</code><br>    <code>"startDate": "2018-03-01T11:00:00Z",</code><br>    <code>"endDate": "2018-03-01T11:30:00Z",</code><br>    <code>"duration": "PT30M",</code><br>    <code>"remainingUses": 3,</code><br>    <code>"maximumUses": 6</code><br>  <code>}</code><br><code>]</code></p>                                                                                                      |
| identifier                              | <p><a href="https://schema.org/Text"><code>Text</code></a><br>- or -<br><a href="https://developer.openactive.io/data-model/types/propertyvalue"><code>PropertyValue</code></a><br>- or -<br>Array of <a href="https://developer.openactive.io/data-model/types/propertyvalue"><code>PropertyValue</code></a><br>- or -<br><a href="https://schema.org/Integer"><code>Integer</code></a></p> | <p>A local non-URI identifier for the resource</p><p><br>Example</p><p><code>"identifier": "SB1234"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| individualFacilityUse                   | Array of [`IndividualFacilityUse`](https://developer.openactive.io/data-model/types/individualfacilityuse)                                                                                                                                                                                                                                                                                   | <p>Inverse of the oa:aggregateFacilityUse property. Relates a oa:FacilityUse (e.g. an opportunity to play tennis at a specific location) to an oa:IndividualFacilityUse (e.g. an opportunity to play tennis on a specific court).</p><p><br>Example</p><p><code>"individualFacilityUse": \[</code><br>  <code>{</code><br>    <code>"@type": "IndividualFacilityUse",</code><br>    <code>"@id": "<http://www.example.org/facility-uses/1/individual-facility-uses/1>",</code><br>    <code>"name": "Tennis Court 1"</code><br>  <code>}</code><br><code>]</code></p>                                                                                             |
| isOpenBookingWithCustomerAccountAllowed | [`Boolean`](https://schema.org/Boolean)                                                                                                                                                                                                                                                                                                                                                      | <p>Indicates that a Customer Account may be used to book that opportunity.</p><p>Note that this property is in EARLY RELEASE AND IS SUBJECT TO CHANGE, as the <a href="https://github.com/openactive/customer-accounts">Customer Accounts proposal</a> evolves.</p><p><br>Example</p><p><code>"isOpenBookingWithCustomerAccountAllowed": "true"</code></p>                                                                                                                                                                                                                                                                                                        |

### **Beta Extension properties**

These properties are defined in the [OpenActive Beta Extension](https://openactive.io/ns-beta). The OpenActive Beta Extension is defined as a convenience to help document properties that are in active testing and review by the community. Publishers should not assume that properties in the beta namespace will either be added to the core specification or be included in the namespace over the long term.

| Property                    | Expected Type                                                                     | Description                                                                                                                                                                                                                                                                                                 |
| --------------------------- | --------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| beta:bookingChannel         | Array of [`BookingChannelType`](https://openactive.io/ns-beta#BookingChannelType) | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/161">Proposal #161</a></p><p>The channels through which a booking can be made.</p>                                                                                                                                              |
| beta:facilityAttribute      | Array of [`Concept`](http://www.w3.org/2004/02/skos/core#Concept)                 | <p><a href="https://github.com/openactive/facility-types/issues/1">Proposal #1</a></p><p>Attributes associated with the facility in use. See <a href="https://openactive.io/facility-attribute-list/"><https://openactive.io/facility-attribute-list/></a>.</p>                                             |
| beta:facilitySetting        | [`FacilitySettingType`](https://openactive.io/ns-beta#FacilitySettingType)        | <p><a href="https://github.com/openactive/facility-types/issues/1">Proposal #1</a></p><p>Whether the event or facility is indoor or outdoor.</p>                                                                                                                                                            |
| beta:facilityType           | Array of [`Concept`](http://www.w3.org/2004/02/skos/core#Concept)                 | <p><strong>DEPRECATED</strong>: Please use <code>facilityType</code> instead.</p><p><a href="https://github.com/openactive/facility-types/issues/1">Proposal #1</a></p><p>The type of facility in use. See <a href="https://openactive.io/facility-types/"><https://openactive.io/facility-types/></a>.</p> |
| beta:formattedDescription   | [`Text`](https://schema.org/Text)                                                 | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/276">Proposal #276</a></p><p>Sometimes a description is stored with formatting (e.g. href, bold, italics, embedded YouTube videos). This formatting can be useful for data consumers. This property must contain HTML.</p>      |
| beta:isWheelchairAccessible | [`Boolean`](https://schema.org/Boolean)                                           | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/166">Proposal #166</a></p><p>A property that details whether the event is suitable for wheelchair access. Placed on Event as this field could be used to detail whether the Event is suitable, as well as the Place.</p>        |
| beta:offerValidityPeriod    | [`Duration`](https://schema.org/Duration)                                         | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/204">Proposal #204</a></p><p>Duration before the event for which the associated Offers are valid</p>                                                                                                                            |
| beta:sportsActivityLocation | Array of [`SportsActivityLocation`](https://schema.org/SportsActivityLocation)    | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/110">Proposal #110</a></p><p>Internal location of the event, e.g. Court 1</p>                                                                                                                                                   |
| beta:video                  | Array of [`VideoObject`](https://schema.org/VideoObject)                          | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/88">Proposal #88</a></p><p>A related video object.</p>                                                                                                                                                                          |

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# FileUploadFormFieldSpecification

This page describes the FileUploadFormFieldSpecification type.

This type is derived from <https://schema.org/PropertyValueSpecification>, which means that any of this type's properties within schema.org may also be used. Note however the properties on this page must be used in preference if a relevant property is available.

## **Properties**

### **Required properties**

| Property | Expected Type                     | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| -------- | --------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| @type    | [`Text`](https://schema.org/Text) | Must always be present and set to `"@type": "FileUploadFormFieldSpecification"`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| @id      | [`URL`](https://schema.org/URL)   | <p>A unique URI-based identifier for the record.</p><p><code>@id</code> properties are used as identifiers for compatibility with JSON-LD. The value of such a property must always be an absolute URI that provides a stable globally unique identifier for the resource, as described in <a href="https://tools.ietf.org/html/rfc3986">RFC3986</a>.</p><p>The primary purpose of the URI format in this context is to provide natural namespacing for the identifier. Hence, the URI itself may not resolve to a valid endpoint, but must use a domain name controlled by the resource owner (the organisation responsible for the OpenActive open data feed).</p><p><br>Example</p><p><code>"@id": "<https://example.com/question1>"</code></p> |
| name     | [`Text`](https://schema.org/Text) | Display label for the field.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |

### **Recommended properties**

| Property    | Expected Type                     | Description                                                                             |
| ----------- | --------------------------------- | --------------------------------------------------------------------------------------- |
| description | [`Text`](https://schema.org/Text) | Descriptive help plain text for the field, which must not include HTML or other markup. |

### **Optional properties**

| Property      | Expected Type                           | Description                                                                   |
| ------------- | --------------------------------------- | ----------------------------------------------------------------------------- |
| valueRequired | [`Boolean`](https://schema.org/Boolean) | Specifies that a value for the field is required to proceed with the booking. |

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# GeoCoordinates

This page describes the GeoCoordinates type.

This type is derived from <https://schema.org/GeoCoordinates>, which means that any of this type's properties within schema.org may also be used. Note however the properties on this page must be used in preference if a relevant property is available.

## **Properties**

### **Required properties**

| Property  | Expected Type                         | Description                                                                                                                     |
| --------- | ------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| @type     | [`Text`](https://schema.org/Text)     | Must always be present and set to `"@type": "GeoCoordinates"`                                                                   |
| latitude  | [`Number`](https://schema.org/Number) | <p>The latitude of a location. For example 51.522338 (WGS 84).</p><p><br>Example</p><p><code>"latitude": 51.522338</code></p>   |
| longitude | [`Number`](https://schema.org/Number) | <p>The longitude of a location. For example -0.083437 (WGS 84).</p><p><br>Example</p><p><code>"longitude": -0.083437</code></p> |

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# HeadlineEvent

This page describes the HeadlineEvent type.

This type is derived from <https://schema.org/Event>, which means that any of this type's properties within schema.org may also be used. Note however the properties on this page must be used in preference if a relevant property is available.

## **Properties**

### **Required properties**

| Property  | Expected Type                                                                                                                                                                                                       | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| @type     | [`Text`](https://schema.org/Text)                                                                                                                                                                                   | Must always be present and set to `"@type": "HeadlineEvent"`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| @id       | [`URL`](https://schema.org/URL)                                                                                                                                                                                     | <p>A unique URI-based identifier for the record.</p><p><code>@id</code> properties are used as identifiers for compatibility with JSON-LD. The value of such a property must always be an absolute URI that provides a stable globally unique identifier for the resource, as described in <a href="https://tools.ietf.org/html/rfc3986">RFC3986</a>.</p><p>The primary purpose of the URI format in this context is to provide natural namespacing for the identifier. Hence, the URI itself may not resolve to a valid endpoint, but must use a domain name controlled by the resource owner (the organisation responsible for the OpenActive open data feed).</p><p><br>Example</p><p><code>"@id": "<https://api.example.com/headline-events/12345>"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| activity  | Array of [`Concept`](https://developer.openactive.io/data-model/types/concept)                                                                                                                                      | <p>Specifies the physical activity or activities that will take place during an event.</p><p><br>Example</p><p><code>"activity": \[</code><br>  <code>{</code><br>    <code>"@type": "Concept",</code><br>    <code>"@id": "<https://openactive.io/activity-list#5e78bcbe-36db-425a-9064-bf96d09cc351>",</code><br>    <code>"prefLabel": "Bodypump™",</code><br>    <code>"inScheme": "<https://openactive.io/activity-list>"</code><br>  <code>}</code><br><code>]</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| location  | <p><a href="https://developer.openactive.io/data-model/types/place"><code>Place</code></a><br>- or -<br><code>@id</code> reference</p>                                                                              | <p>The location at which the event will take place. Or, in the case of events that may span multiple locations, the initial meeting or starting point.</p><p>Locations must be specified as a <a href="https://github.com/openactive/developer-documentation/blob/master/models/place/README.md">Place</a> complete with a fully described geographic location and/or address.</p><p><br>Example</p><p><code>"location": {</code><br>  <code>"@type": "Place",</code><br>  <code>"@id": "<https://example.com/locations/1234ABCD>",</code><br>  <code>"identifier": "1234ABCD",</code><br>  <code>"address": {</code><br>    <code>"addressLocality": "New Malden",</code><br>    <code>"addressRegion": "London",</code><br>    <code>"postalCode": "NW5 3DU",</code><br>    <code>"streetAddress": "Raynes Park High School, 46A West Barnes Lane",</code><br>    <code>"@type": "PostalAddress"</code><br>  <code>},</code><br>  <code>"description": "Raynes Park High School in London",</code><br>  <code>"geo": {</code><br>    <code>"latitude": 51.4034423828125,</code><br>    <code>"longitude": -0.2369088977575302,</code><br>    <code>"@type": "GeoCoordinates"</code><br>  <code>},</code><br>  <code>"name": "Raynes Park High School",</code><br>  <code>"telephone": "01253 473934"</code><br><code>}</code></p> |
| name      | [`Text`](https://schema.org/Text)                                                                                                                                                                                   | <p>The name of the event</p><p><br>Example</p><p><code>"name": "Speedball"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| organizer | <p><a href="https://developer.openactive.io/data-model/types/organization"><code>Organization</code></a><br>- or -<br><a href="https://developer.openactive.io/data-model/types/person"><code>Person</code></a></p> | <p>The person or organization ultimately responsible for an event. An organizer might be an schema:Organization or a schema:Person.</p><p><br>Example</p><p><code>"organizer": {</code><br>  <code>"@type": "Organization",</code><br>  <code>"@id": "<https://id.bookingsystem.example.com/organizers/1>",</code><br>  <code>"name": "Central Speedball Association",</code><br>  <code>"url": "<http://www.speedball-world.com>"</code><br><code>}</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| startDate | [`DateTime`](https://schema.org/DateTime)                                                                                                                                                                           | <p>The start date and time of the event. Can be specified as a schema:DateTime.</p><p><br>Example</p><p><code>"startDate": "2018-01-27T12:00:00Z"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| url       | [`URL`](https://schema.org/URL)                                                                                                                                                                                     | <p>A URL to a web page (or section of a page) that describes the event.</p><p><br>Example</p><p><code>"url": "<https://example.com/event/1234>"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |

### **Recommended properties**

| Property                  | Expected Type                                                                                                                                                                             | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| ------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ageRange                  | [`QuantitativeValue`](https://developer.openactive.io/data-model/types/quantitativevalue)                                                                                                 | <p>Indicates that an event is recommended as being suitable for or is targetted at a specific age range.</p><p><br>Example</p><p><code>"ageRange": {</code><br>  <code>"@type": "QuantitativeValue",</code><br>  <code>"minValue": 50,</code><br>  <code>"maxValue": 60</code><br><code>}</code></p>                                                                                                                                                                                                                                                                                                                                                                                              |
| description               | [`Text`](https://schema.org/Text)                                                                                                                                                         | <p>A plain text description of the event, which must not include HTML or other markup.</p><p><br>Example</p><p><code>"description": "A fast paced game that incorporates netball, handball and football."</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| endDate                   | [`DateTime`](https://schema.org/DateTime)                                                                                                                                                 | <p>The end date and time of the event. Can be specified as a schema:DateTime</p><p>It is recommended that publishers provide either an schema:endDate or a schema:duration for an event.</p><p><br>Example</p><p><code>"endDate": "2018-01-27T12:00:00Z"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                               |
| eventStatus               | [`EventStatusType`](https://schema.org/EventStatusType)                                                                                                                                   | <p>The status of an event. Can be used to indicate rescheduled or cancelled events</p><p><br>Example</p><p><code>"eventStatus": "<https://schema.org/EventScheduled>"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| genderRestriction         | [`GenderRestrictionType`](https://openactive.io/GenderRestrictionType)                                                                                                                    | <p>Indicates that an event is restricted to male, female or a mixed audience. This information must be displayed prominently to the user before booking. If a gender restriction isn't specified then applications should assume that an event is suitable for a mixed audience.</p><p><br>Example</p><p><code>"genderRestriction": "<https://openactive.io/FemaleOnly>"</code></p>                                                                                                                                                                                                                                                                                                               |
| image                     | Array of [`ImageObject`](https://developer.openactive.io/data-model/types/imageobject)                                                                                                    | <p>An image or photo that depicts the event, e.g. a photo taken at a previous event.</p><p><br>Example</p><p><code>"image": \[</code><br>  <code>{</code><br>    <code>"@type": "ImageObject",</code><br>    <code>"url": "<http://example.com/static/image/speedball_large.jpg>",</code><br>    <code>"thumbnail": \[</code><br>      <code>{</code><br>        <code>"@type": "ImageObject",</code><br>        <code>"url": "<http://example.com/static/image/speedball_thumbnail.jpg>"</code><br>      <code>}</code><br>    <code>]</code><br>  <code>}</code><br><code>]</code></p>                                                                                                          |
| leader                    | Array of [`Person`](https://developer.openactive.io/data-model/types/person)                                                                                                              | <p>Refers to a person (schema:Person) who will be leading an event. E.g. a coach. This is a more specific role than an organiser or a contributor. The person will need to have given their consent for their personal information to be present in the Open Data.</p><p><br>Example</p><p><code>"leader": \[</code><br>  <code>{</code><br>    <code>"@type": "Person",</code><br>    <code>"familyName": "Smith",</code><br>    <code>"givenName": "Nicole",</code><br>    <code>"gender": "<https://schema.org/Male>",</code><br>    <code>"@id": "<https://example.com/locations/1234ABCD/leaders/89>",</code><br>    <code>"identifier": 89</code><br>  <code>}</code><br><code>]</code></p> |
| level                     | <p>Array of <a href="https://schema.org/Text"><code>Text</code></a><br>- or -<br>Array of <a href="https://developer.openactive.io/data-model/types/concept"><code>Concept</code></a></p> | <p>A general purpose property for specifying the suitability of an event for different participant “levels”. E.g. <code>Beginner</code>, <code>Intermediate</code>, <code>Advanced</code>. Or in the case of martial arts, specific belt requirements.</p><p><br>Example</p><p><code>"level": \[</code><br>  <code>"Beginner"</code><br><code>]</code></p>                                                                                                                                                                                                                                                                                                                                        |
| maximumAttendeeCapacity   | [`Integer`](https://schema.org/Integer)                                                                                                                                                   | <p>The maximum capacity of the Event.</p><p><br>Example</p><p><code>"maximumAttendeeCapacity": 30</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| offers                    | Array of [`Offer`](https://developer.openactive.io/data-model/types/offer)                                                                                                                | <p>An array of schema:Offer that include the price of attending.</p><p><br>Example</p><p><code>"offers": \[</code><br>  <code>{</code><br>    <code>"@type": "Offer",</code><br>    <code>"identifier": "OX-AD",</code><br>    <code>"name": "Adult",</code><br>    <code>"price": 3.3,</code><br>    <code>"priceCurrency": "GBP",</code><br>    <code>"url": "<https://profile.everyoneactive.com/booking?Site=0140&Activities=1402CBP20150217&Culture=en-GB>"</code><br>  <code>}</code><br><code>]</code></p>                                                                                                                                                                                 |
| remainingAttendeeCapacity | [`Integer`](https://schema.org/Integer)                                                                                                                                                   | <p>The number of places that are still available for the Event.</p><p><br>Example</p><p><code>"remainingAttendeeCapacity": 20</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |

### **Optional properties**

| Property                                | Expected Type                                                                                                                                                                                                                                                                                                                                                                                | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| --------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| accessibilityInformation                | [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                            | <p>Provide additional, specific documentation for participants about how disabilities are, or can be supported at the Event.</p><p><br>Example</p><p><code>"accessibilityInformation": "This route has been British Cycling assessed as an accessible route, meaning it is suitable for the majority of adaptive bikes. The route will have no or low levels of traffic, there will be plenty of space and will have a good surface throughout. If you have any questions about using this route on an adaptive bike on this ride, please use visit <https://www.letsride.co.uk/accessibility> or call 0123 456 7000 and ask for the Recreation team."</code></p> |
| accessibilitySupport                    | Array of [`Concept`](https://developer.openactive.io/data-model/types/concept)                                                                                                                                                                                                                                                                                                               | <p>Used to specify the types of disabilities or impairments that are supported at an event.</p><p><br>Example</p><p><code>"accessibilitySupport": \[</code><br>  <code>{</code><br>    <code>"@type": "Concept",</code><br>    <code>"@id": "<https://openactive.io/accessibility-support#1393f2dc-3fcc-4be9-a99f-f1e51f5ad277>",</code><br>    <code>"prefLabel": "Visual impairment",</code><br>    <code>"inScheme": "<https://openactive.io/accessibility-support>"</code><br>  <code>}</code><br><code>]</code></p>                                                                                                                                          |
| additionalAdmissionRestriction          | Array of [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                   | <p>Free text restrictions that must be displayed prominently to the user before booking. This property must only contain restrictions not described by <code>oa:ageRestriction</code> or <code>oa:genderRestriction</code>.</p><p><br>Example</p><p><code>"additionalAdmissionRestriction": \[</code><br>  <code>"Participants younger than 12 must be accompanied by an adult",</code><br>  <code>"Participants must be comfortable standing for long periods of time"</code><br><code>]</code></p>                                                                                                                                                              |
| ageRestriction                          | [`QuantitativeValue`](https://developer.openactive.io/data-model/types/quantitativevalue)                                                                                                                                                                                                                                                                                                    | <p>The enforced attendee age range requirement of the Event or Offer, that must be displayed prominently to the user before booking.</p><p><br>Example</p><p><code>"ageRestriction": {</code><br>  <code>"@type": "QuantitativeValue",</code><br>  <code>"minValue": 15,</code><br>  <code>"maxValue": 60</code><br><code>}</code></p>                                                                                                                                                                                                                                                                                                                            |
| attendeeInstructions                    | [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                            | <p>Provides additional notes and instructions for event attendees, for example more information on how to find the event, what to bring, etc. The value of this property must not include HTML or other markup.</p><p><br>Example</p><p><code>"attendeeInstructions": "Ensure you bring trainers and a bottle of water."</code></p>                                                                                                                                                                                                                                                                                                                               |
| category                                | <p>Array of <a href="https://developer.openactive.io/data-model/types/concept"><code>Concept</code></a><br>- or -<br>Array of <a href="https://schema.org/Text"><code>Text</code></a></p>                                                                                                                                                                                                    | <p>Provides a set of tags that help categorise and describe an event, e.g. its intensity, purpose, etc.</p><p><br>Example</p><p><code>"category": \[</code><br>  <code>"High Intensity"</code><br><code>]</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| contributor                             | Array of [`Person`](https://developer.openactive.io/data-model/types/person)                                                                                                                                                                                                                                                                                                                 | <p>A Person who contributes to the facilitation of the Event.</p><p><br>Example</p><p><code>"contributor": \[</code><br>  <code>{</code><br>    <code>"@type": "Person",</code><br>    <code>"familyName": "Smith",</code><br>    <code>"givenName": "Nicole",</code><br>    <code>"@id": "<https://example.com/locations/1234ABCD/leaders/89>",</code><br>    <code>"identifier": 89</code><br>  <code>}</code><br><code>]</code></p>                                                                                                                                                                                                                            |
| customerAccountBookingRestriction       | Array of [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                   | <p>Free text restrictions to display to the Customer at the browse stage, that may apply when using a Customer Account to make the booking.</p><p>Note that this property is in EARLY RELEASE AND IS SUBJECT TO CHANGE, as the <a href="https://github.com/openactive/customer-accounts">Customer Accounts proposal</a> evolves.</p><p><br>Example</p><p><code>"customerAccountBookingRestriction": \[</code><br>  <code>"Gold members only",</code><br>  <code>"Gym induction required"</code><br><code>]</code></p>                                                                                                                                             |
| duration                                | [`Duration`](https://schema.org/Duration)                                                                                                                                                                                                                                                                                                                                                    | <p>The duration of the event given in \[ISO8601] format.</p><p><br>Example</p><p><code>"duration": "PT1H"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| eventAttendanceMode                     | [`EventAttendanceModeEnumeration`](https://schema.org/EventAttendanceModeEnumeration)                                                                                                                                                                                                                                                                                                        | <p>The eventAttendanceMode of an event indicates whether it occurs online, offline, or a mix.</p><p><br>Example</p><p><code>"eventAttendanceMode": "<https://schema.org/OnlineEventAttendanceMode>"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| identifier                              | <p><a href="https://schema.org/Text"><code>Text</code></a><br>- or -<br><a href="https://developer.openactive.io/data-model/types/propertyvalue"><code>PropertyValue</code></a><br>- or -<br>Array of <a href="https://developer.openactive.io/data-model/types/propertyvalue"><code>PropertyValue</code></a><br>- or -<br><a href="https://schema.org/Integer"><code>Integer</code></a></p> | <p>A local non-URI identifier for the resource</p><p><br>Example</p><p><code>"identifier": "SB1234"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| isAccessibleForFree                     | [`Boolean`](https://schema.org/Boolean)                                                                                                                                                                                                                                                                                                                                                      | <p>Whether the Event is accessible without charge.</p><p><br>Example</p><p><code>"isAccessibleForFree": "true"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| isCoached                               | [`Boolean`](https://schema.org/Boolean)                                                                                                                                                                                                                                                                                                                                                      | <p>A boolean property that indicates whether an Event will be coached. This flag allows an Event to be marked as being coached without having to specify a named individual as a coach. This addresses both privacy concerns and also scenarios where the actual coach may only be decided on the day.</p><p><br>Example</p><p><code>"isCoached": "true"</code></p>                                                                                                                                                                                                                                                                                               |
| isOpenBookingWithCustomerAccountAllowed | [`Boolean`](https://schema.org/Boolean)                                                                                                                                                                                                                                                                                                                                                      | <p>Indicates that a Customer Account may be used to book that opportunity.</p><p>Note that this property is in EARLY RELEASE AND IS SUBJECT TO CHANGE, as the <a href="https://github.com/openactive/customer-accounts">Customer Accounts proposal</a> evolves.</p><p><br>Example</p><p><code>"isOpenBookingWithCustomerAccountAllowed": "true"</code></p>                                                                                                                                                                                                                                                                                                        |
| maximumVirtualAttendeeCapacity          | [`Integer`](https://schema.org/Integer)                                                                                                                                                                                                                                                                                                                                                      | <p>Indicates the maximum number of connections to a shared virtual space.</p><p><br>Example</p><p><code>"maximumVirtualAttendeeCapacity": 20</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| meetingPoint                            | [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                            | <p>Instructions for the attendees of an Event about where they should meet the organizer or leader at the start of the event. Some larger locations may have several possible meeting points, so this property provides additional more specific directions.</p><p><br>Example</p><p><code>"meetingPoint": "At the entrance to the park"</code></p>                                                                                                                                                                                                                                                                                                               |
| programme                               | [`Brand`](https://developer.openactive.io/data-model/types/brand)                                                                                                                                                                                                                                                                                                                            | <p>Indicates that an event will be organised according to a specific Programme.</p><p><br>Example</p><p><code>"programme": {</code><br>  <code>"@type": "Brand",</code><br>  <code>"name": "Play Ball!",</code><br>  <code>"url": "<http://example.org/brand/play-ball>"</code><br><code>}</code></p>                                                                                                                                                                                                                                                                                                                                                             |
| schedulingNote                          | [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                            | <p>Provides a note from an organizer relating to how this Event is scheduled.</p><p><br>Example</p><p><code>"schedulingNote": "This event doesn't run during school holidays"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| subEvent                                | Array of [`Event`](https://developer.openactive.io/data-model/types/event)                                                                                                                                                                                                                                                                                                                   | Relates a parent event to a child event. Properties describing the parent event can be assumed to apply to the child, unless otherwise specified. A child event might be a specific instance of an Event within a schedule                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| superEvent                              | [`Event`](https://developer.openactive.io/data-model/types/event)                                                                                                                                                                                                                                                                                                                            | Relates a child event to a parent event. Properties describing the parent event can be assumed to apply to the child, unless otherwise specified. A parent event might specify a recurring schedule, of which the child event is one specific instance                                                                                                                                                                                                                                                                                                                                                                                                            |

### **Beta Extension properties**

These properties are defined in the [OpenActive Beta Extension](https://openactive.io/ns-beta). The OpenActive Beta Extension is defined as a convenience to help document properties that are in active testing and review by the community. Publishers should not assume that properties in the beta namespace will either be added to the core specification or be included in the namespace over the long term.

| Property                             | Expected Type                                                                               | Description                                                                                                                                                                                                                                                                                                                                      |
| ------------------------------------ | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| beta:affiliatedLocation              | [`Place`](https://schema.org/Place)                                                         | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/227">Proposal #227</a></p><p>The physical location affiliated with the virtual event, for example the original location of the event before it was moved online.</p>                                                                                                 |
| beta:attendeeCount                   | [`Integer`](https://schema.org/Integer)                                                     | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/274">Proposal #274</a></p><p>For events that have an unlimited number of tickets, captures the number of attendees (actual attendance).</p>                                                                                                                          |
| beta:bookingChannel                  | Array of [`BookingChannelType`](https://openactive.io/ns-beta#BookingChannelType)           | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/161">Proposal #161</a></p><p>The channels through which a booking can be made.</p>                                                                                                                                                                                   |
| beta:contactPoint                    | [`ContactPoint`](https://schema.org/ContactPoint)                                           | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/113">Proposal #113</a></p><p>Contact details for an Event, where they are not specifically related to the <code>organizer</code> or <code>leader</code>.</p>                                                                                                         |
| beta:distance                        | [`QuantitativeValue`](https://schema.org/QuantitativeValue)                                 | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/275">Proposal #275</a></p><p>The distance of a run, cycle or other activity. Must also include units.</p>                                                                                                                                                            |
| beta:donationPaymentUrl              | [`URL`](https://schema.org/URL)                                                             | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/234">Proposal #234</a></p><p>The URL of the webpage where the activity provider accepts donations.</p>                                                                                                                                                               |
| beta:estimatedDuration               | [`QuantitativeValue`](https://schema.org/QuantitativeValue)                                 | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/201">Proposal #201</a></p><p>A property that allows an Event duration to be represented as a range (e.g. 0-30mins, 30-60mins, 60-90mins, 90+).</p>                                                                                                                   |
| beta:facilitySetting                 | [`FacilitySettingType`](https://openactive.io/ns-beta#FacilitySettingType)                  | <p><a href="https://github.com/openactive/facility-types/issues/1">Proposal #1</a></p><p>Whether the event or facility is indoor or outdoor.</p>                                                                                                                                                                                                 |
| beta:formattedDescription            | [`Text`](https://schema.org/Text)                                                           | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/276">Proposal #276</a></p><p>Sometimes a description is stored with formatting (e.g. href, bold, italics, embedded YouTube videos). This formatting can be useful for data consumers. This property must contain HTML.</p>                                           |
| beta:isFirstSessionAccessibleForFree | [`Boolean`](https://schema.org/Boolean)                                                     | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/232">Proposal #232</a></p><p>A property that indicates whether the first session is free.</p>                                                                                                                                                                        |
| beta:isInteractivityPreferred        | [`Boolean`](https://schema.org/Boolean)                                                     | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/230">Proposal #230</a></p><p>Indicates whether the virtual event is interactive (e.g. Zoom with participant microphones and cameras on), or is just a one-way broadcast (e.g. Facebook Live, Instagram Live, Zoom with participant microphones and cameras off).</p> |
| beta:isScheduledAsSlots              | [`Boolean`](https://schema.org/Boolean)                                                     | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/301">Proposal #301</a></p><p>A property that indicates whether the event contains a high frequency of occurrences. Intended as a UI hint for interfaces that represent these occurrences.</p>                                                                        |
| beta:isVirtuallyCoached              | [`Boolean`](https://schema.org/Boolean)                                                     | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/71">Proposal #71</a></p><p>A property that indicates whether the event is led by a virtual coach. Only relevant if an event <code>isCoached</code>. If not provided is assumed to be <code>false</code>.</p>                                                         |
| beta:isWheelchairAccessible          | [`Boolean`](https://schema.org/Boolean)                                                     | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/166">Proposal #166</a></p><p>A property that details whether the event is suitable for wheelchair access. Placed on Event as this field could be used to detail whether the Event is suitable, as well as the Place.</p>                                             |
| beta:offerValidityPeriod             | [`Duration`](https://schema.org/Duration)                                                   | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/204">Proposal #204</a></p><p>Duration before the event for which the associated Offers are valid</p>                                                                                                                                                                 |
| beta:participantSuppliedEquipment    | [`RequiredStatusType`](https://developer.openactive.io/data-model/types/requiredstatustype) | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/229">Proposal #229</a></p><p>Indicates whether the participant must or may supply equipment for use in the Event.</p>                                                                                                                                                |
| beta:registrationCount               | [`Integer`](https://schema.org/Integer)                                                     | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/273">Proposal #273</a></p><p>For events that have an unlimited number of tickets, captures the number of registrations (intention to attend).</p>                                                                                                                    |
| beta:sportsActivityLocation          | Array of [`SportsActivityLocation`](https://schema.org/SportsActivityLocation)              | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/110">Proposal #110</a></p><p>Internal location of the event, e.g. Court 1</p>                                                                                                                                                                                        |
| beta:video                           | Array of [`VideoObject`](https://schema.org/VideoObject)                                    | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/88">Proposal #88</a></p><p>A related video object.</p>                                                                                                                                                                                                               |
| beta:virtualLocation                 | [`VirtualLocation`](https://pending.schema.org/VirtualLocation)                             | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/224">Proposal #224</a></p><p>Describes a means of electronic access to a shared virtual space.</p>                                                                                                                                                                   |

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# ImageObject

This page describes the ImageObject type.

This type is derived from <https://schema.org/ImageObject>, which means that any of this type's properties within schema.org may also be used. Note however the properties on this page must be used in preference if a relevant property is available.

## **Properties**

### **Required properties**

| Property | Expected Type                     | Description                                                                                                                                          |
| -------- | --------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| @type    | [`Text`](https://schema.org/Text) | Must always be present and set to `"@type": "ImageObject"`                                                                                           |
| url      | [`URL`](https://schema.org/URL)   | <p>The URL for the display resolution image.</p><p><br>Example</p><p><code>"url": "<http://example.com/static/image/speedball_large.jpg>"</code></p> |

### **Optional properties**

| Property  | Expected Type                                                                          | Description                                                                                  |
| --------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- |
| height    | [`Integer`](https://schema.org/Integer)                                                | <p>The height of the media in pixels.</p><p><br>Example</p><p><code>"height": 300</code></p> |
| thumbnail | Array of [`ImageObject`](https://developer.openactive.io/data-model/types/imageobject) | The URL for a thumbnail image for an image.                                                  |
| width     | [`Integer`](https://schema.org/Integer)                                                | <p>The width of the media in pixels.</p><p><br>Example</p><p><code>"width": 400</code></p>   |

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# IndividualFacilityUse

This page describes the IndividualFacilityUse type.

## **Properties**

### **Required properties**

| Property | Expected Type                                                                                                                          | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| -------- | -------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| @type    | [`Text`](https://schema.org/Text)                                                                                                      | Must always be present and set to `"@type": "IndividualFacilityUse"`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| @id      | [`URL`](https://schema.org/URL)                                                                                                        | <p>A unique URI-based identifier for the record.</p><p><code>@id</code> properties are used as identifiers for compatibility with JSON-LD. The value of such a property must always be an absolute URI that provides a stable globally unique identifier for the resource, as described in <a href="https://tools.ietf.org/html/rfc3986">RFC3986</a>.</p><p>The primary purpose of the URI format in this context is to provide natural namespacing for the identifier. Hence, the URI itself may not resolve to a valid endpoint, but must use a domain name controlled by the resource owner (the organisation responsible for the OpenActive open data feed).</p><p><br>Example</p><p><code>"@id": "<https://api.example.com/individual-facility-uses/12345>"</code></p>                                                                                                                                                                                                                                     |
| location | <p><a href="https://developer.openactive.io/data-model/types/place"><code>Place</code></a><br>- or -<br><code>@id</code> reference</p> | <p>The location at which the facility use will take place.</p><p><br>Example</p><p><code>"location": {</code><br>  <code>"@type": "Place",</code><br>  <code>"address": {</code><br>    <code>"addressLocality": "New Malden",</code><br>    <code>"addressRegion": "London",</code><br>    <code>"postalCode": "NW5 3DU",</code><br>    <code>"streetAddress": "Raynes Park High School, 46A West Barnes Lane",</code><br>    <code>"@type": "PostalAddress"</code><br>  <code>},</code><br>  <code>"description": "Raynes Park High School in London",</code><br>  <code>"geo": {</code><br>    <code>"latitude": 51.4034423828125,</code><br>    <code>"longitude": -0.2369088977575302,</code><br>    <code>"@type": "GeoCoordinates"</code><br>  <code>},</code><br>  <code>"@id": "<https://example.com/locations/1234ABCD>",</code><br>  <code>"identifier": "1234ABCD",</code><br>  <code>"name": "Raynes Park High School",</code><br>  <code>"telephone": "01253 473934"</code><br><code>}</code></p> |
| name     | [`Text`](https://schema.org/Text)                                                                                                      | <p>The name of the facility use</p><p><br>Example</p><p><code>"name": "Speedball"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| provider | [`Organization`](https://developer.openactive.io/data-model/types/organization)                                                        | <p>The organisation responsible for providing the facility</p><p><br>Example</p><p><code>"provider": {</code><br>  <code>"@type": "Organization",</code><br>  <code>"name": "Central Speedball Association",</code><br>  <code>"url": "<http://www.speedball-world.com>"</code><br><code>}</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| url      | [`URL`](https://schema.org/URL)                                                                                                        | <p>A URL to a web page (or section of a page) that describes the facility use.</p><p><br>Example</p><p><code>"url": "<https://example.com/facility-use/1234>"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |

### **Required options**

Support for the `facilityType` property has been added to tooling and documentation ahead of inclusion in the next point release of the OpenActive Modelling Opportunity Data specification, as agreed on [the W3C call 2021-06-02](https://github.com/openactive/facility-types/issues/1#issuecomment-853759213). On this basis of this discussion, following the next point release, only `facilityType` will be required.

| Property     | Expected Type                                                                  | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| ------------ | ------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| facilityType | Array of [`Concept`](https://developer.openactive.io/data-model/types/concept) | <p>Specifies the types of facility being described.</p><p>NOTE: this property has been added to tooling and documentation ahead of inclusion in the next point release of the OpenActive Modelling Opportunity Data specification, as agreed on <a href="https://github.com/openactive/facility-types/issues/1#issuecomment-853759213">the W3C call 2021-06-02</a>.</p><p><br>Example</p><p><code>"facilityType": \[</code><br>  <code>{</code><br>    <code>"@type": "Concept",</code><br>    <code>"@id": "<https://openactive.io/facility-types#bba8ae59-d152-40bc-85cc-88c5375696d4>",</code><br>    <code>"prefLabel": "Tennis Court",</code><br>    <code>"inScheme": "<https://openactive.io/facility-types>"</code><br>  <code>}</code><br><code>]</code></p> |
| activity     | Array of [`Concept`](https://developer.openactive.io/data-model/types/concept) | <p><strong>DEPRECATED</strong>: Use <code>facilityType</code> instead of <code>activity</code> within <code>FacilityUse</code> and <code>IndividualFacilityUse</code>, as the <code>facilityType</code> controlled vocabulary has been designed specifically for facilities.</p><p>Specifies the physical activity or activities that will take place during a facility use.</p><p><br>Example</p><p><code>"activity": \[</code><br>  <code>{</code><br>    <code>"@type": "Concept",</code><br>    <code>"@id": "<https://openactive.io/activity-list#c0360db0-a817-4bae-9167-40f89b49fc9e>",</code><br>    <code>"prefLabel": "Badminton",</code><br>    <code>"inScheme": "<https://openactive.io/activity-list>"</code><br>  <code>}</code><br><code>]</code></p> |

### **Recommended properties**

| Property       | Expected Type                                                                                                      | Description                                                                                                                                                                                                                                                                                                                                                                                                                             |
| -------------- | ------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| description    | [`Text`](https://schema.org/Text)                                                                                  | <p>A plain text description of the facility use, which must not include HTML or other markup.</p><p><br>Example</p><p><code>"description": "An fast paced game that incorporates netball, handball and football."</code></p>                                                                                                                                                                                                            |
| hoursAvailable | Array of [`OpeningHoursSpecification`](https://developer.openactive.io/data-model/types/openinghoursspecification) | The times the facility use is available                                                                                                                                                                                                                                                                                                                                                                                                 |
| image          | Array of [`ImageObject`](https://developer.openactive.io/data-model/types/imageobject)                             | <p>An image or photo that depicts the facility use, e.g. a photo taken at a previous event.</p><p><br>Example</p><p><code>"image": \[</code><br>  <code>{</code><br>    <code>"thumbnail": "<http://example.com/static/image/speedball_thumbnail.jpg>",</code><br>    <code>"@type": "ImageObject",</code><br>    <code>"url": "<http://example.com/static/image/speedball_large.jpg>"</code><br>  <code>}</code><br><code>]</code></p> |

### **Optional properties**

| Property                                | Expected Type                                                                                                                                                                                                                                                                                                                                                                                | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| --------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| accessibilityInformation                | [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                            | <p>Provide additional, specific documentation for participants about how disabilities are, or can be supported at the Event.</p><p><br>Example</p><p><code>"accessibilityInformation": "This route has been British Cycling assessed as an accessible route, meaning it is suitable for the majority of adaptive bikes. The route will have no or low levels of traffic, there will be plenty of space and will have a good surface throughout. If you have any questions about using this route on an adaptive bike on this ride, please use visit <https://www.letsride.co.uk/accessibility> or call 0123 456 7000 and ask for the Recreation team."</code></p> |
| accessibilitySupport                    | Array of [`Concept`](https://developer.openactive.io/data-model/types/concept)                                                                                                                                                                                                                                                                                                               | <p>Used to specify the types of disabilities or impairments that are supported at an event.</p><p><br>Example</p><p><code>"accessibilitySupport": \[</code><br>  <code>{</code><br>    <code>"@type": "Concept",</code><br>    <code>"@id": "<https://openactive.io/accessibility-support#1393f2dc-3fcc-4be9-a99f-f1e51f5ad277>",</code><br>    <code>"prefLabel": "Visual impairment",</code><br>    <code>"inScheme": "<https://openactive.io/accessibility-support>"</code><br>  <code>}</code><br><code>]</code></p>                                                                                                                                          |
| additionalAdmissionRestriction          | Array of [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                   | <p>Free text restrictions that must be displayed prominently to the user before booking. This property must only contain restrictions not described by <code>oa:ageRestriction</code> or <code>oa:genderRestriction</code>.</p><p><br>Example</p><p><code>"additionalAdmissionRestriction": \[</code><br>  <code>"Participants younger than 12 must be accompanied by an adult",</code><br>  <code>"Participants must be comfortable standing for long periods of time"</code><br><code>]</code></p>                                                                                                                                                              |
| aggregateFacilityUse                    | [`FacilityUse`](https://developer.openactive.io/data-model/types/facilityuse)                                                                                                                                                                                                                                                                                                                | Inverse of the oa:individualFacilityUse property. Relates an oa:IndividualFacilityUse (e.g. an opportunity to play tennis on a specific court) to a oa:FacilityUse (e.g. an opportunity to play tennis at a specific location).                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| attendeeInstructions                    | [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                            | <p>Provides additional notes and instructions for users of a facility, for example more information on how to find it, what to bring, etc. The value of this property must not include HTML or other markup.</p><p><br>Example</p><p><code>"attendeeInstructions": "The tennis court is locked with a keycode, so please ensure you book online in advance to gain access."</code></p>                                                                                                                                                                                                                                                                            |
| category                                | <p>Array of <a href="https://developer.openactive.io/data-model/types/concept"><code>Concept</code></a><br>- or -<br>Array of <a href="https://schema.org/Text"><code>Text</code></a></p>                                                                                                                                                                                                    | <p>Provides a set of tags that help categorise and describe a facility.</p><p><br>Example</p><p><code>"category": \[</code><br>  <code>{</code><br>    <code>"@type": "Concept",</code><br>    <code>"@id": "<https://example.com/reference/categories#Top%20Club%20Level>",</code><br>    <code>"inScheme": "<https://example.com/reference/categories>",</code><br>    <code>"prefLabel": "Top Club Level"</code><br>  <code>}</code><br><code>]</code></p>                                                                                                                                                                                                     |
| customerAccountBookingRestriction       | Array of [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                   | <p>Free text restrictions to display to the Customer at the browse stage, that may apply when using a Customer Account to make the booking.</p><p>Note that this property is in EARLY RELEASE AND IS SUBJECT TO CHANGE, as the <a href="https://github.com/openactive/customer-accounts">Customer Accounts proposal</a> evolves.</p><p><br>Example</p><p><code>"customerAccountBookingRestriction": \[</code><br>  <code>"Gold members only",</code><br>  <code>"Gym induction required"</code><br><code>]</code></p>                                                                                                                                             |
| event                                   | Array of [`Slot`](https://developer.openactive.io/data-model/types/slot)                                                                                                                                                                                                                                                                                                                     | <p>An array of slots of availability of this IndividualFacilityUse.</p><p><br>Example</p><p><code>"event": \[</code><br>  <code>{</code><br>    <code>"@type": "Slot",</code><br>    <code>"@id": "<http://www.example.org/api/individual-facility-uses/432#/event/2018-03-01T10:00:00Z>",</code><br>    <code>"startDate": "2018-03-01T11:00:00Z",</code><br>    <code>"endDate": "2018-03-01T11:30:00Z",</code><br>    <code>"duration": "PT30M",</code><br>    <code>"remainingUses": 0,</code><br>    <code>"maximumUses": 1</code><br>  <code>}</code><br><code>]</code></p>                                                                                 |
| identifier                              | <p><a href="https://schema.org/Text"><code>Text</code></a><br>- or -<br><a href="https://developer.openactive.io/data-model/types/propertyvalue"><code>PropertyValue</code></a><br>- or -<br>Array of <a href="https://developer.openactive.io/data-model/types/propertyvalue"><code>PropertyValue</code></a><br>- or -<br><a href="https://schema.org/Integer"><code>Integer</code></a></p> | <p>A local non-URI identifier for the resource</p><p><br>Example</p><p><code>"identifier": "SB1234"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| isOpenBookingWithCustomerAccountAllowed | [`Boolean`](https://schema.org/Boolean)                                                                                                                                                                                                                                                                                                                                                      | <p>Indicates that a Customer Account may be used to book that opportunity.</p><p>Note that this property is in EARLY RELEASE AND IS SUBJECT TO CHANGE, as the <a href="https://github.com/openactive/customer-accounts">Customer Accounts proposal</a> evolves.</p><p><br>Example</p><p><code>"isOpenBookingWithCustomerAccountAllowed": "true"</code></p>                                                                                                                                                                                                                                                                                                        |
| offers                                  | Array of [`Offer`](https://developer.openactive.io/data-model/types/offer)                                                                                                                                                                                                                                                                                                                   | <p>An array of schema:Offer that include the price of booking.</p><p><br>Example</p><p><code>"offers": {</code><br>  <code>"@type": "Offer",</code><br>  <code>"identifier": "OX-AD",</code><br>  <code>"name": "Adult",</code><br>  <code>"price": 7.5,</code><br>  <code>"priceCurrency": "GBP",</code><br>  <code>"url": "<https://profile.everyoneactive.com/booking?Site=0140&#x26;Activities=1402CBP20150217&#x26;Culture=en-GB>"</code><br><code>}</code></p>                                                                                                                                                                                              |

### **Beta Extension properties**

These properties are defined in the [OpenActive Beta Extension](https://openactive.io/ns-beta). The OpenActive Beta Extension is defined as a convenience to help document properties that are in active testing and review by the community. Publishers should not assume that properties in the beta namespace will either be added to the core specification or be included in the namespace over the long term.

| Property                    | Expected Type                                                                     | Description                                                                                                                                                                                                                                                                                                 |
| --------------------------- | --------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| beta:bookingChannel         | Array of [`BookingChannelType`](https://openactive.io/ns-beta#BookingChannelType) | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/161">Proposal #161</a></p><p>The channels through which a booking can be made.</p>                                                                                                                                              |
| beta:facilityAttribute      | Array of [`Concept`](http://www.w3.org/2004/02/skos/core#Concept)                 | <p><a href="https://github.com/openactive/facility-types/issues/1">Proposal #1</a></p><p>Attributes associated with the facility in use. See <a href="https://openactive.io/facility-attribute-list/"><https://openactive.io/facility-attribute-list/></a>.</p>                                             |
| beta:facilitySetting        | [`FacilitySettingType`](https://openactive.io/ns-beta#FacilitySettingType)        | <p><a href="https://github.com/openactive/facility-types/issues/1">Proposal #1</a></p><p>Whether the event or facility is indoor or outdoor.</p>                                                                                                                                                            |
| beta:facilityType           | Array of [`Concept`](http://www.w3.org/2004/02/skos/core#Concept)                 | <p><strong>DEPRECATED</strong>: Please use <code>facilityType</code> instead.</p><p><a href="https://github.com/openactive/facility-types/issues/1">Proposal #1</a></p><p>The type of facility in use. See <a href="https://openactive.io/facility-types/"><https://openactive.io/facility-types/></a>.</p> |
| beta:formattedDescription   | [`Text`](https://schema.org/Text)                                                 | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/276">Proposal #276</a></p><p>Sometimes a description is stored with formatting (e.g. href, bold, italics, embedded YouTube videos). This formatting can be useful for data consumers. This property must contain HTML.</p>      |
| beta:isWheelchairAccessible | [`Boolean`](https://schema.org/Boolean)                                           | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/166">Proposal #166</a></p><p>A property that details whether the event is suitable for wheelchair access. Placed on Event as this field could be used to detail whether the Event is suitable, as well as the Place.</p>        |
| beta:offerValidityPeriod    | [`Duration`](https://schema.org/Duration)                                         | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/204">Proposal #204</a></p><p>Duration before the event for which the associated Offers are valid</p>                                                                                                                            |
| beta:sportsActivityLocation | Array of [`SportsActivityLocation`](https://schema.org/SportsActivityLocation)    | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/110">Proposal #110</a></p><p>Internal location of the event, e.g. Court 1</p>                                                                                                                                                   |
| beta:video                  | Array of [`VideoObject`](https://schema.org/VideoObject)                          | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/88">Proposal #88</a></p><p>A related video object.</p>                                                                                                                                                                          |

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# InternalApplicationError

This page describes the InternalApplicationError type.

## **Error Use Case**

An unexpected exception has been thrown by the application.

## **Properties**

### **Required properties**

| Property | Expected Type                     | Description                                                             |
| -------- | --------------------------------- | ----------------------------------------------------------------------- |
| @type    | [`Text`](https://schema.org/Text) | Must always be present and set to `"@type": "InternalApplicationError"` |

### **Recommended properties**

| Property    | Expected Type                     | Description                                                                                                                                                                                                                                                                                                                                                                   |
| ----------- | --------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| description | [`Text`](https://schema.org/Text) | <p>A plain-text human-readable explanation specific to this occurrence of the problem, providing specific information about why the error occurred in this particular case. This description must not include HTML or other markup.</p><p><br>Example</p><p><code>"description": "No customer details supplied. These must be supplied for calls to C2, P, and B."</code></p> |
| instance    | [`URL`](https://schema.org/URL)   | A URI reference that identifies the specific occurrence of the problem. It may or may not yield further information if dereferenced.                                                                                                                                                                                                                                          |
| name        | [`Text`](https://schema.org/Text) | <p>A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization.</p><p><br>Example</p><p><code>"name": "An unexpected exception has been thrown by the application."</code></p>                                                                                                |

### **Optional properties**

| Property   | Expected Type                           | Description                                           |
| ---------- | --------------------------------------- | ----------------------------------------------------- |
| requestId  | [`Text`](https://schema.org/Text)       | Used by technical support for diagnostics purposes.   |
| statusCode | [`Integer`](https://schema.org/Integer) | Must always be present and set to `"statusCode": 500` |

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# InternalLibraryConfigurationError

This page describes the InternalLibraryConfigurationError type.

## **Error Use Case**

An exception has been thrown due to the misconfiguration of an OpenActive SDK library or component.

## **Properties**

### **Required properties**

| Property | Expected Type                     | Description                                                                      |
| -------- | --------------------------------- | -------------------------------------------------------------------------------- |
| @type    | [`Text`](https://schema.org/Text) | Must always be present and set to `"@type": "InternalLibraryConfigurationError"` |

### **Recommended properties**

| Property    | Expected Type                     | Description                                                                                                                                                                                                                                                                                                                                                                   |
| ----------- | --------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| description | [`Text`](https://schema.org/Text) | <p>A plain-text human-readable explanation specific to this occurrence of the problem, providing specific information about why the error occurred in this particular case. This description must not include HTML or other markup.</p><p><br>Example</p><p><code>"description": "No customer details supplied. These must be supplied for calls to C2, P, and B."</code></p> |
| instance    | [`URL`](https://schema.org/URL)   | A URI reference that identifies the specific occurrence of the problem. It may or may not yield further information if dereferenced.                                                                                                                                                                                                                                          |
| name        | [`Text`](https://schema.org/Text) | <p>A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization.</p><p><br>Example</p><p><code>"name": "An exception has been thrown due to the misconfiguration of an OpenActive SDK library or component."</code></p>                                                        |

### **Optional properties**

| Property   | Expected Type                           | Description                                           |
| ---------- | --------------------------------------- | ----------------------------------------------------- |
| requestId  | [`Text`](https://schema.org/Text)       | Used by technical support for diagnostics purposes.   |
| statusCode | [`Integer`](https://schema.org/Integer) | Must always be present and set to `"statusCode": 500` |

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# InternalLibraryError

This page describes the InternalLibraryError type.

## **Error Use Case**

An unexpected exception has been thrown by an OpenActive SDK library or component.

## **Properties**

### **Required properties**

| Property | Expected Type                     | Description                                                         |
| -------- | --------------------------------- | ------------------------------------------------------------------- |
| @type    | [`Text`](https://schema.org/Text) | Must always be present and set to `"@type": "InternalLibraryError"` |

### **Recommended properties**

| Property    | Expected Type                     | Description                                                                                                                                                                                                                                                                                                                                                                   |
| ----------- | --------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| description | [`Text`](https://schema.org/Text) | <p>A plain-text human-readable explanation specific to this occurrence of the problem, providing specific information about why the error occurred in this particular case. This description must not include HTML or other markup.</p><p><br>Example</p><p><code>"description": "No customer details supplied. These must be supplied for calls to C2, P, and B."</code></p> |
| instance    | [`URL`](https://schema.org/URL)   | A URI reference that identifies the specific occurrence of the problem. It may or may not yield further information if dereferenced.                                                                                                                                                                                                                                          |
| name        | [`Text`](https://schema.org/Text) | <p>A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization.</p><p><br>Example</p><p><code>"name": "An unexpected exception has been thrown by an OpenActive SDK library or component."</code></p>                                                                         |

### **Optional properties**

| Property   | Expected Type                           | Description                                           |
| ---------- | --------------------------------------- | ----------------------------------------------------- |
| requestId  | [`Text`](https://schema.org/Text)       | Used by technical support for diagnostics purposes.   |
| statusCode | [`Integer`](https://schema.org/Integer) | Must always be present and set to `"statusCode": 500` |

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# Lease

This page describes the Lease type.

## **Properties**

### **Optional properties**

| Property     | Expected Type                                                                                                                                                                                                                                                                                                                                                                                | Description                                                                                                                                    |
| ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| @type        | [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                            | Must always be present and set to `"@type": "Lease"`                                                                                           |
| identifier   | <p><a href="https://schema.org/Text"><code>Text</code></a><br>- or -<br><a href="https://developer.openactive.io/data-model/types/propertyvalue"><code>PropertyValue</code></a><br>- or -<br>Array of <a href="https://developer.openactive.io/data-model/types/propertyvalue"><code>PropertyValue</code></a><br>- or -<br><a href="https://schema.org/Integer"><code>Integer</code></a></p> | <p>Optional identifier of the Lease if useful for audit or debugging purposes.</p><p><br>Example</p><p><code>"identifier": "SB1234"</code></p> |
| leaseExpires | [`DateTime`](https://schema.org/DateTime)                                                                                                                                                                                                                                                                                                                                                    | Expiry DateTime of the Lease in ISO 8601 format                                                                                                |

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# LocationFeatureSpecification

This page describes the LocationFeatureSpecification type.

This type is derived from <https://schema.org/LocationFeatureSpecification>, which means that any of this type's properties within schema.org may also be used. Note however the properties on this page must be used in preference if a relevant property is available.

## **Properties**

### **Required properties**

| Property | Expected Type                           | Description                                                                                                             |
| -------- | --------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
| @type    | [`Text`](https://schema.org/Text)       | Must always be present and set to `"@type": "LocationFeatureSpecification"`                                             |
| name     | [`Text`](https://schema.org/Text)       | <p>A string, suitable for presentation in user interfaces.</p><p><br>Example</p><p><code>"name": "Bike Shed"</code></p> |
| value    | [`Boolean`](https://schema.org/Boolean) | A boolean value indicating whether this ammenity is available.                                                          |

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# Lockers

This page describes the Lockers type.

This type is derived from <https://schema.org/LocationFeatureSpecification>, which means that any of this type's properties within schema.org may also be used. Note however the properties on this page must be used in preference if a relevant property is available.

## **Properties**

### **Required properties**

| Property | Expected Type                           | Description                                                                                                                  |
| -------- | --------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
| @type    | [`Text`](https://schema.org/Text)       | Must always be present and set to `"@type": "Lockers"`                                                                       |
| name     | [`Text`](https://schema.org/Text)       | <p>A string, suitable for presentation in user interfaces.</p><p><br>Example</p><p><code>"name": "Indoor Lockers"</code></p> |
| value    | [`Boolean`](https://schema.org/Boolean) | A boolean value indicating whether this ammenity is available.                                                               |

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# MediaObject

This page describes the MediaObject type.

This type is derived from <https://schema.org/MediaObject>, which means that any of this type's properties within schema.org may also be used. Note however the properties on this page must be used in preference if a relevant property is available.

## **Properties**

### **Required properties**

| Property | Expected Type                     | Description                                                                                                                               |
| -------- | --------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| @type    | [`Text`](https://schema.org/Text) | Must always be present and set to `"@type": "MediaObject"`                                                                                |
| url      | [`URL`](https://schema.org/URL)   | <p>The URL for the page containing the media.</p><p><br>Example</p><p><code>"url": "<https://example.com/media/stayin/getfit>"</code></p> |

### **Optional properties**

| Property   | Expected Type                                                                          | Description                                                                                                                                                                                                                                                                           |
| ---------- | -------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| contentUrl | [`URL`](https://schema.org/URL)                                                        | <p>Actual bytes of the media object, for example the image file or video file.</p><p><br>Example</p><p><code>"contentUrl": "<https://example.com/media/stayin/getfit>"</code></p>                                                                                                     |
| embedUrl   | [`URL`](https://schema.org/URL)                                                        | <p>A URL pointing to a player for a specific video. In general, this is the information in the src element of an embed tag and should not be the same as the content of the loc tag.</p><p><br>Example</p><p><code>"embedUrl": "<https://example.com/media/stayin/getfit>"</code></p> |
| height     | [`Integer`](https://schema.org/Integer)                                                | <p>The height of the media in pixels.</p><p><br>Example</p><p><code>"height": 300</code></p>                                                                                                                                                                                          |
| thumbnail  | Array of [`ImageObject`](https://developer.openactive.io/data-model/types/imageobject) | The URL for a thumbnail image for the media.                                                                                                                                                                                                                                          |
| width      | [`Integer`](https://schema.org/Integer)                                                | <p>The width of the media in pixels.</p><p><br>Example</p><p><code>"width": 400</code></p>                                                                                                                                                                                            |

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# OfferOverride

This page describes the OfferOverride type.

This type is derived from <https://schema.org/Offer>, which means that any of this type's properties within schema.org may also be used. Note however the properties on this page must be used in preference if a relevant property is available.

## **Properties**

### **Optional properties**

| Property                   | Expected Type                                                                                                                                                                                                                                                                                                                                                                                | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| @type                      | [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                            | Must always be present and set to `"@type": "OfferOverride"`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| @id                        | [`URL`](https://schema.org/URL)                                                                                                                                                                                                                                                                                                                                                              | <p>A unique URI-based identifier for the record.</p><p><code>@id</code> properties are used as identifiers for compatibility with JSON-LD. The value of such a property must always be an absolute URI that provides a stable globally unique identifier for the resource, as described in <a href="https://tools.ietf.org/html/rfc3986">RFC3986</a>.</p><p>The primary purpose of the URI format in this context is to provide natural namespacing for the identifier. Hence, the URI itself may not resolve to a valid endpoint, but must use a domain name controlled by the resource owner (the organisation responsible for the OpenActive open data feed).</p><p><br>Example</p><p><code>"@id": "<https://api.example.com/session-series/12345#/offers/2>"</code></p> |
| acceptedPaymentMethod      | Array of [`PaymentMethod`](http://purl.org/goodrelations/v1#PaymentMethod)                                                                                                                                                                                                                                                                                                                   | <p>Indicates the offline payment methods accepted by this provider.</p><p><br>Example</p><p><code>"acceptedPaymentMethod": \[</code><br>  <code>"<http://purl.org/goodrelations/v1#Cash>",</code><br>  <code>"<http://purl.org/goodrelations/v1#PaymentMethodCreditCard>"</code><br><code>]</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| description                | [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                            | <p>A plain text description of the Offer, which must not include HTML or other markup.</p><p><br>Example</p><p><code>"description": "Concession requirements are available at <https://www.fusion-lifestyle.com/>. Proof of entitlement to concession membership must be provided when you visit the centre."</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| identifier                 | <p><a href="https://schema.org/Text"><code>Text</code></a><br>- or -<br><a href="https://developer.openactive.io/data-model/types/propertyvalue"><code>PropertyValue</code></a><br>- or -<br>Array of <a href="https://developer.openactive.io/data-model/types/propertyvalue"><code>PropertyValue</code></a><br>- or -<br><a href="https://schema.org/Integer"><code>Integer</code></a></p> | <p>A local non-URI identifier for the resource</p><p><br>Example</p><p><code>"identifier": "SB1234"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| name                       | [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                            | <p>The name of the Offer suitable for communication to participants.</p><p><br>Example</p><p><code>"name": "Speedball winger position"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| openBookingFlowRequirement | Array of [`OpenBookingFlowRequirement`](https://openactive.io/OpenBookingFlowRequirement)                                                                                                                                                                                                                                                                                                    | Can include <https://openactive.io/OpenBookingIntakeForm>, <https://openactive.io/OpenBookingAttendeeDetails>, <https://openactive.io/OpenBookingApproval>, <https://openactive.io/OpenBookingNegotiation>, <https://openactive.io/OpenBookingMessageExchange>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| price                      | [`Number`](https://schema.org/Number)                                                                                                                                                                                                                                                                                                                                                        | <p>The offer price of the activity.</p><p>This price should be specified without currency symbols and as a floating point number with two decimal places.</p><p>The currency of the price should be expressed in the priceCurrency field.</p><p>Includes or excludes tax depending on the taxMode of the seller.</p><p><br>Example</p><p><code>"price": 33</code></p>                                                                                                                                                                                                                                                                                                                                                                                                       |
| priceCurrency              | [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                            | <p>The currency of the price. Specified as a 3-letter ISO 4217 value. If an Offer has a zero price, then this property is not required. Otherwise the priceCurrency must be specified.</p><p><br>Example</p><p><code>"priceCurrency": "GBP"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| url                        | [`URL`](https://schema.org/URL)                                                                                                                                                                                                                                                                                                                                                              | <p>URL describing the offer</p><p><br>Example</p><p><code>"url": "<http://www.rphs.org.uk/>"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |

### **Beta Extension properties**

These properties are defined in the [OpenActive Beta Extension](https://openactive.io/ns-beta). The OpenActive Beta Extension is defined as a convenience to help document properties that are in active testing and review by the community. Publishers should not assume that properties in the beta namespace will either be added to the core specification or be included in the namespace over the long term.

| Property       | Expected Type                                               | Description                                                                                                                                                       |
| -------------- | ----------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| beta:partySize | [`QuantitativeValue`](https://schema.org/QuantitativeValue) | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/250">Proposal #250</a></p><p>Number of people the reservation should accommodate.</p> |

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# Offer

This page describes the Offer type.

This type is derived from <https://schema.org/Offer>, which means that any of this type's properties within schema.org may also be used. Note however the properties on this page must be used in preference if a relevant property is available.

## **Properties**

### **Optional properties**

| Property                            | Expected Type                                                                                                                                                                                                                                                                                                                                                                                | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| ----------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| @type                               | [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                            | Must always be present and set to `"@type": "Offer"`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| @id                                 | [`URL`](https://schema.org/URL)                                                                                                                                                                                                                                                                                                                                                              | <p>A unique URI-based identifier for the record.</p><p><code>@id</code> properties are used as identifiers for compatibility with JSON-LD. The value of such a property must always be an absolute URI that provides a stable globally unique identifier for the resource, as described in <a href="https://tools.ietf.org/html/rfc3986">RFC3986</a>.</p><p>The primary purpose of the URI format in this context is to provide natural namespacing for the identifier. Hence, the URI itself may not resolve to a valid endpoint, but must use a domain name controlled by the resource owner (the organisation responsible for the OpenActive open data feed).</p><p><br>Example</p><p><code>"@id": "<https://api.example.com/session-series/12345#/offers/2>"</code></p>                                                                                                                                                   |
| acceptedPaymentMethod               | Array of [`PaymentMethod`](http://purl.org/goodrelations/v1#PaymentMethod)                                                                                                                                                                                                                                                                                                                   | <p>Indicates the offline payment methods accepted by this provider.</p><p><br>Example</p><p><code>"acceptedPaymentMethod": \[</code><br>  <code>"<http://purl.org/goodrelations/v1#Cash>",</code><br>  <code>"<http://purl.org/goodrelations/v1#PaymentMethodCreditCard>"</code><br><code>]</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| ageRange                            | [`QuantitativeValue`](https://developer.openactive.io/data-model/types/quantitativevalue)                                                                                                                                                                                                                                                                                                    | <p><strong>DEPRECATED</strong>: Use <code>ageRestriction</code> instead of <code>ageRange</code> within the <code>Offer</code> for cases where the <code>Offer</code> is age restricted.</p><p>Indicates that an Offer is only applicable to a specific age range.</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| ageRestriction                      | [`QuantitativeValue`](https://developer.openactive.io/data-model/types/quantitativevalue)                                                                                                                                                                                                                                                                                                    | <p>Indicates that an Offer can only be purchased by participants within a specific age range. Specified as a QuantitativeValue with minValue and maxValue properties. This must be displayed prominently to the user when selecting an <code>Offer</code> or before booking.</p><p><br>Example</p><p><code>"ageRestriction": {</code><br>  <code>"@type": "QuantitativeValue",</code><br>  <code>"minValue": 15,</code><br>  <code>"maxValue": 60</code><br><code>}</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| allowCustomerCancellationFullRefund | [`Boolean`](https://schema.org/Boolean)                                                                                                                                                                                                                                                                                                                                                      | Whether the opportunity can be cancelled with a full refund at any time before the `startDate`, or before the `latestCancellationBeforeStartDate` if provided.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| description                         | [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                            | <p>A plain text description of the Offer, which must not include HTML or other markup.</p><p><br>Example</p><p><code>"description": "Concession requirements are available at <https://www.fusion-lifestyle.com/>. Proof of entitlement to concession membership must be provided when you visit the centre."</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| eligibleEntitlementType             | Array of [`Concept`](https://developer.openactive.io/data-model/types/concept)                                                                                                                                                                                                                                                                                                               | <p>Offers in open data can be marked as requiring an entitlement type via <code>eligibleEntitlementType</code>. The same Offer may be applicable to multiple entitlement types, and the Customer must have at least one matching entitlement type to qualify for the Offer.</p><p>Note that this property is in EARLY RELEASE AND IS SUBJECT TO CHANGE, as the <a href="https://github.com/openactive/customer-accounts">Customer Accounts proposal</a> evolves.</p><p><br>Example</p><p><code>"eligibleEntitlementType": \[</code><br>  <code>{</code><br>    <code>"@type": "Concept",</code><br>    <code>"@id": "<https://data.mcractive.com/openactive/entitlement-list#5e78bcbe-36db-425a-9064-bf96d09cc351>",</code><br>    <code>"prefLabel": "MCRactive Adult Resident",</code><br>    <code>"inScheme": "<https://data.mcractive.com/openactive/entitlement-list>"</code><br>  <code>}</code><br><code>]</code></p> |
| identifier                          | <p><a href="https://schema.org/Text"><code>Text</code></a><br>- or -<br><a href="https://developer.openactive.io/data-model/types/propertyvalue"><code>PropertyValue</code></a><br>- or -<br>Array of <a href="https://developer.openactive.io/data-model/types/propertyvalue"><code>PropertyValue</code></a><br>- or -<br><a href="https://schema.org/Integer"><code>Integer</code></a></p> | <p>A local non-URI identifier for the resource</p><p><br>Example</p><p><code>"identifier": "SB1234"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| latestCancellationBeforeStartDate   | [`Duration`](https://schema.org/Duration)                                                                                                                                                                                                                                                                                                                                                    | The duration before the startDate during which this Offer may not be cancelled, given in ISO 8601 format.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| name                                | [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                            | <p>The name of the Offer suitable for communication to participants.</p><p><br>Example</p><p><code>"name": "Speedball winger position"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| openBookingFlowRequirement          | Array of [`OpenBookingFlowRequirement`](https://openactive.io/OpenBookingFlowRequirement)                                                                                                                                                                                                                                                                                                    | Can include <https://openactive.io/OpenBookingIntakeForm>, <https://openactive.io/OpenBookingAttendeeDetails>, <https://openactive.io/OpenBookingApproval>, <https://openactive.io/OpenBookingNegotiation>, <https://openactive.io/OpenBookingMessageExchange>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| openBookingInAdvance                | [`RequiredStatusType`](https://openactive.io/RequiredStatusType)                                                                                                                                                                                                                                                                                                                             | <p>Indicates whether to accept this offer, a participant must book in advance, whether they must pay on attending, or have option to do either. Values must be one of <a href="https://openactive.io/Required"><https://openactive.io/Required></a>, <a href="https://openactive.io/Optional"><https://openactive.io/Optional></a> or <a href="https://openactive.io/Unavailable"><https://openactive.io/Unavailable></a>.</p><p><br>Example</p><p><code>"openBookingInAdvance": "<https://openactive.io/Required>"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                |
| openBookingPrepayment               | [`RequiredStatusType`](https://openactive.io/RequiredStatusType)                                                                                                                                                                                                                                                                                                                             | <p>Indicates whether to accept this offer, a participant must pay in advance, pay when attending, or have the option to do either. Values must be one of <a href="https://openactive.io/Required"><https://openactive.io/Required></a>, <a href="https://openactive.io/Optional"><https://openactive.io/Optional></a> or <a href="https://openactive.io/Unavailable"><https://openactive.io/Unavailable></a>.</p><p><br>Example</p><p><code>"openBookingPrepayment": "<https://openactive.io/Required>"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                            |
| price                               | [`Number`](https://schema.org/Number)                                                                                                                                                                                                                                                                                                                                                        | <p>The offer price of the activity.</p><p>This price should be specified without currency symbols and as a floating point number with two decimal places.</p><p>The currency of the price should be expressed in the priceCurrency field.</p><p>Includes or excludes tax depending on the taxMode of the seller.</p><p><br>Example</p><p><code>"price": 33</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| priceCurrency                       | [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                            | <p>The currency of the price. Specified as a 3-letter ISO 4217 value. If an Offer has a zero price, then this property is not required. Otherwise the priceCurrency must be specified.</p><p><br>Example</p><p><code>"priceCurrency": "GBP"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| url                                 | [`URL`](https://schema.org/URL)                                                                                                                                                                                                                                                                                                                                                              | <p>URL describing the offer</p><p><br>Example</p><p><code>"url": "<http://www.rphs.org.uk/>"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| validFromBeforeStartDate            | [`Duration`](https://schema.org/Duration)                                                                                                                                                                                                                                                                                                                                                    | The duration before the `startDate` for which this `Offer` is valid, given in ISO 8601 format. This is a relatively-defined equivalent of `schema:validFrom`, to allow for `Offer` inheritance.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| validThroughBeforeStartDate         | [`Duration`](https://schema.org/Duration)                                                                                                                                                                                                                                                                                                                                                    | The duration before the `startDate` after which the `Offer` is no longer valid, given in ISO 8601 format. This is a relatively-defined equivalent of `schema:validThrough`, to allow for `Offer` inheritance.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |

### **Beta Extension properties**

These properties are defined in the [OpenActive Beta Extension](https://openactive.io/ns-beta). The OpenActive Beta Extension is defined as a convenience to help document properties that are in active testing and review by the community. Publishers should not assume that properties in the beta namespace will either be added to the core specification or be included in the namespace over the long term.

| Property       | Expected Type                                               | Description                                                                                                                                                       |
| -------------- | ----------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| beta:partySize | [`QuantitativeValue`](https://schema.org/QuantitativeValue) | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/250">Proposal #250</a></p><p>Number of people the reservation should accommodate.</p> |

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# OnDemandEvent

This page describes the OnDemandEvent type.

This type is derived from <https://schema.org/OnDemandEvent>, which means that any of this type's properties within schema.org may also be used. Note however the properties on this page must be used in preference if a relevant property is available.

## **Properties**

### **Required properties**

| Property  | Expected Type                                                                                                                                                                                                       | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| @type     | [`Text`](https://schema.org/Text)                                                                                                                                                                                   | Must always be present and set to `"@type": "OnDemandEvent"`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| @id       | [`URL`](https://schema.org/URL)                                                                                                                                                                                     | <p>A unique URI-based identifier for the record.</p><p><code>@id</code> properties are used as identifiers for compatibility with JSON-LD. The value of such a property must always be an absolute URI that provides a stable globally unique identifier for the resource, as described in <a href="https://tools.ietf.org/html/rfc3986">RFC3986</a>.</p><p>The primary purpose of the URI format in this context is to provide natural namespacing for the identifier. Hence, the URI itself may not resolve to a valid endpoint, but must use a domain name controlled by the resource owner (the organisation responsible for the OpenActive open data feed).</p><p><br>Example</p><p><code>"@id": "<https://api.example.com/on-demand-events/12345>"</code></p> |
| activity  | Array of [`Concept`](https://developer.openactive.io/data-model/types/concept)                                                                                                                                      | <p>Specifies the physical activity or activities that will take place during an event.</p><p><br>Example</p><p><code>"activity": \[</code><br>  <code>{</code><br>    <code>"@type": "Concept",</code><br>    <code>"@id": "<https://openactive.io/activity-list#5e78bcbe-36db-425a-9064-bf96d09cc351>",</code><br>    <code>"prefLabel": "Bodypump™",</code><br>    <code>"inScheme": "<https://openactive.io/activity-list>"</code><br>  <code>}</code><br><code>]</code></p>                                                                                                                                                                                                                                                                                     |
| name      | [`Text`](https://schema.org/Text)                                                                                                                                                                                   | <p>The name of the event</p><p><br>Example</p><p><code>"name": "Speedball"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| offers    | Array of [`Offer`](https://developer.openactive.io/data-model/types/offer)                                                                                                                                          | <p>An array of schema:Offer that include the price of attending.</p><p><br>Example</p><p><code>"offers": \[</code><br>  <code>{</code><br>    <code>"@type": "Offer",</code><br>    <code>"identifier": "OX-AD",</code><br>    <code>"name": "Adult",</code><br>    <code>"price": 3.3,</code><br>    <code>"priceCurrency": "GBP",</code><br>    <code>"url": "<https://profile.everyoneactive.com/booking?Site=0140&Activities=1402CBP20150217&Culture=en-GB>"</code><br>  <code>}</code><br><code>]</code></p>                                                                                                                                                                                                                                                   |
| organizer | <p><a href="https://developer.openactive.io/data-model/types/organization"><code>Organization</code></a><br>- or -<br><a href="https://developer.openactive.io/data-model/types/person"><code>Person</code></a></p> | <p>The person or organization ultimately responsible for an event. An organizer might be an schema:Organization or a schema:Person.</p><p><br>Example</p><p><code>"organizer": {</code><br>  <code>"@type": "Organization",</code><br>  <code>"@id": "<https://id.bookingsystem.example.com/organizers/1>",</code><br>  <code>"name": "Central Speedball Association",</code><br>  <code>"url": "<http://www.speedball-world.com>"</code><br><code>}</code></p>                                                                                                                                                                                                                                                                                                     |
| url       | [`URL`](https://schema.org/URL)                                                                                                                                                                                     | <p>A URL to a web page (or section of a page) that describes the event.</p><p><br>Example</p><p><code>"url": "<https://example.com/event/1234>"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |

### **Recommended properties**

| Property          | Expected Type                                                                                                                                                                             | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ageRange          | [`QuantitativeValue`](https://developer.openactive.io/data-model/types/quantitativevalue)                                                                                                 | <p>Indicates that an event is recommended as being suitable for or is targetted at a specific age range.</p><p><br>Example</p><p><code>"ageRange": {</code><br>  <code>"@type": "QuantitativeValue",</code><br>  <code>"minValue": 50,</code><br>  <code>"maxValue": 60</code><br><code>}</code></p>                                                                                                                                                                                                                                                                                                                            |
| description       | [`Text`](https://schema.org/Text)                                                                                                                                                         | <p>A plain text description of the event, which must not include HTML or other markup.</p><p><br>Example</p><p><code>"description": "A fast paced game that incorporates netball, handball and football."</code></p>                                                                                                                                                                                                                                                                                                                                                                                                            |
| duration          | [`Duration`](https://schema.org/Duration)                                                                                                                                                 | <p>The duration of the event given in \[ISO8601] format.</p><p><br>Example</p><p><code>"duration": "PT1H"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| genderRestriction | [`GenderRestrictionType`](https://openactive.io/GenderRestrictionType)                                                                                                                    | <p>Indicates that an event is restricted to male, female or a mixed audience. This information must be displayed prominently to the user before booking. If a gender restriction isn't specified then applications should assume that an event is suitable for a mixed audience.</p><p><br>Example</p><p><code>"genderRestriction": "<https://openactive.io/FemaleOnly>"</code></p>                                                                                                                                                                                                                                             |
| image             | Array of [`ImageObject`](https://developer.openactive.io/data-model/types/imageobject)                                                                                                    | <p>An image or photo that depicts the event, e.g. a photo taken at a previous event.</p><p><br>Example</p><p><code>"image": \[</code><br>  <code>{</code><br>    <code>"@type": "ImageObject",</code><br>    <code>"url": "<http://example.com/static/image/speedball_large.jpg>",</code><br>    <code>"thumbnail": \[</code><br>      <code>{</code><br>        <code>"@type": "ImageObject",</code><br>        <code>"url": "<http://example.com/static/image/speedball_thumbnail.jpg>"</code><br>      <code>}</code><br>    <code>]</code><br>  <code>}</code><br><code>]</code></p>                                        |
| level             | <p>Array of <a href="https://schema.org/Text"><code>Text</code></a><br>- or -<br>Array of <a href="https://developer.openactive.io/data-model/types/concept"><code>Concept</code></a></p> | <p>A general purpose property for specifying the suitability of an event for different participant “levels”. E.g. <code>Beginner</code>, <code>Intermediate</code>, <code>Advanced</code>. Or in the case of martial arts, specific belt requirements.</p><p><br>Example</p><p><code>"level": \[</code><br>  <code>"Beginner"</code><br><code>]</code></p>                                                                                                                                                                                                                                                                      |
| workFeatured      | [`MediaObject`](https://developer.openactive.io/data-model/types/mediaobject)                                                                                                             | <p>A video, audio or other media that represents the actual recording of the <code>OnDemandEvent</code>.</p><p><br>Example</p><p><code>"workFeatured": {</code><br>  <code>"@type": "VideoObject",</code><br>  <code>"url": "<https://www.youtube.com/watch?v=3fbCs0GVjgQ>",</code><br>  <code>"embedUrl": "<https://www.youtube.com/embed/3fbCs0GVjgQ>",</code><br>  <code>"thumbnail": \[</code><br>    <code>{</code><br>      <code>"@type": "ImageObject",</code><br>      <code>"url": "<http://example.com/static/image/speedball_thumbnail.jpg>"</code><br>    <code>}</code><br>  <code>]</code><br><code>}</code></p> |

### **Optional properties**

| Property                                | Expected Type                                                                                                                                                                                                                                                                                                                                                                                | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| --------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| accessibilityInformation                | [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                            | <p>Provide additional, specific documentation for participants about how disabilities are, or can be supported at the Event.</p><p><br>Example</p><p><code>"accessibilityInformation": "This route has been British Cycling assessed as an accessible route, meaning it is suitable for the majority of adaptive bikes. The route will have no or low levels of traffic, there will be plenty of space and will have a good surface throughout. If you have any questions about using this route on an adaptive bike on this ride, please use visit <https://www.letsride.co.uk/accessibility> or call 0123 456 7000 and ask for the Recreation team."</code></p>                                 |
| accessibilitySupport                    | Array of [`Concept`](https://developer.openactive.io/data-model/types/concept)                                                                                                                                                                                                                                                                                                               | <p>Used to specify the types of disabilities or impairments that are supported at an event.</p><p><br>Example</p><p><code>"accessibilitySupport": \[</code><br>  <code>{</code><br>    <code>"@type": "Concept",</code><br>    <code>"@id": "<https://openactive.io/accessibility-support#1393f2dc-3fcc-4be9-a99f-f1e51f5ad277>",</code><br>    <code>"prefLabel": "Visual impairment",</code><br>    <code>"inScheme": "<https://openactive.io/accessibility-support>"</code><br>  <code>}</code><br><code>]</code></p>                                                                                                                                                                          |
| additionalAdmissionRestriction          | Array of [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                   | <p>Free text restrictions that must be displayed prominently to the user before booking. This property must only contain restrictions not described by <code>oa:ageRestriction</code> or <code>oa:genderRestriction</code>.</p><p><br>Example</p><p><code>"additionalAdmissionRestriction": \[</code><br>  <code>"Participants younger than 12 must be accompanied by an adult",</code><br>  <code>"Participants must be comfortable standing for long periods of time"</code><br><code>]</code></p>                                                                                                                                                                                              |
| ageRestriction                          | [`QuantitativeValue`](https://developer.openactive.io/data-model/types/quantitativevalue)                                                                                                                                                                                                                                                                                                    | <p>The enforced attendee age range requirement of the Event or Offer, that must be displayed prominently to the user before booking.</p><p><br>Example</p><p><code>"ageRestriction": {</code><br>  <code>"@type": "QuantitativeValue",</code><br>  <code>"minValue": 15,</code><br>  <code>"maxValue": 60</code><br><code>}</code></p>                                                                                                                                                                                                                                                                                                                                                            |
| attendeeInstructions                    | [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                            | <p>Provides additional notes and instructions for event attendees, for example more information on how to find the event, what to bring, etc. The value of this property must not include HTML or other markup.</p><p><br>Example</p><p><code>"attendeeInstructions": "Ensure you bring trainers and a bottle of water."</code></p>                                                                                                                                                                                                                                                                                                                                                               |
| category                                | <p>Array of <a href="https://developer.openactive.io/data-model/types/concept"><code>Concept</code></a><br>- or -<br>Array of <a href="https://schema.org/Text"><code>Text</code></a></p>                                                                                                                                                                                                    | <p>Provides a set of tags that help categorise and describe an event, e.g. its intensity, purpose, etc.</p><p><br>Example</p><p><code>"category": \[</code><br>  <code>"High Intensity"</code><br><code>]</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| contributor                             | Array of [`Person`](https://developer.openactive.io/data-model/types/person)                                                                                                                                                                                                                                                                                                                 | <p>A Person who contributes to the facilitation of the Event.</p><p><br>Example</p><p><code>"contributor": \[</code><br>  <code>{</code><br>    <code>"@type": "Person",</code><br>    <code>"familyName": "Smith",</code><br>    <code>"givenName": "Nicole",</code><br>    <code>"@id": "<https://example.com/locations/1234ABCD/leaders/89>",</code><br>    <code>"identifier": 89</code><br>  <code>}</code><br><code>]</code></p>                                                                                                                                                                                                                                                            |
| customerAccountBookingRestriction       | Array of [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                   | <p>Free text restrictions to display to the Customer at the browse stage, that may apply when using a Customer Account to make the booking.</p><p>Note that this property is in EARLY RELEASE AND IS SUBJECT TO CHANGE, as the <a href="https://github.com/openactive/customer-accounts">Customer Accounts proposal</a> evolves.</p><p><br>Example</p><p><code>"customerAccountBookingRestriction": \[</code><br>  <code>"Gold members only",</code><br>  <code>"Gym induction required"</code><br><code>]</code></p>                                                                                                                                                                             |
| identifier                              | <p><a href="https://schema.org/Text"><code>Text</code></a><br>- or -<br><a href="https://developer.openactive.io/data-model/types/propertyvalue"><code>PropertyValue</code></a><br>- or -<br>Array of <a href="https://developer.openactive.io/data-model/types/propertyvalue"><code>PropertyValue</code></a><br>- or -<br><a href="https://schema.org/Integer"><code>Integer</code></a></p> | <p>A local non-URI identifier for the resource</p><p><br>Example</p><p><code>"identifier": "SB1234"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| isAccessibleForFree                     | [`Boolean`](https://schema.org/Boolean)                                                                                                                                                                                                                                                                                                                                                      | <p>Whether the Event is accessible without charge.</p><p><br>Example</p><p><code>"isAccessibleForFree": "true"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| isCoached                               | [`Boolean`](https://schema.org/Boolean)                                                                                                                                                                                                                                                                                                                                                      | <p>A boolean property that indicates whether an Event will be coached. This flag allows an Event to be marked as being coached without having to specify a named individual as a coach. This addresses both privacy concerns and also scenarios where the actual coach may only be decided on the day.</p><p><br>Example</p><p><code>"isCoached": "true"</code></p>                                                                                                                                                                                                                                                                                                                               |
| isOpenBookingWithCustomerAccountAllowed | [`Boolean`](https://schema.org/Boolean)                                                                                                                                                                                                                                                                                                                                                      | <p>Indicates that a Customer Account may be used to book that opportunity.</p><p>Note that this property is in EARLY RELEASE AND IS SUBJECT TO CHANGE, as the <a href="https://github.com/openactive/customer-accounts">Customer Accounts proposal</a> evolves.</p><p><br>Example</p><p><code>"isOpenBookingWithCustomerAccountAllowed": "true"</code></p>                                                                                                                                                                                                                                                                                                                                        |
| leader                                  | Array of [`Person`](https://developer.openactive.io/data-model/types/person)                                                                                                                                                                                                                                                                                                                 | <p>Refers to a person (schema:Person) who will be leading an event. E.g. a coach. This is a more specific role than an organiser or a contributor. The person will need to have given their consent for their personal information to be present in the Open Data.</p><p><br>Example</p><p><code>"leader": \[</code><br>  <code>{</code><br>    <code>"@type": "Person",</code><br>    <code>"familyName": "Smith",</code><br>    <code>"givenName": "Nicole",</code><br>    <code>"gender": "<https://schema.org/Male>",</code><br>    <code>"@id": "<https://example.com/locations/1234ABCD/leaders/89>",</code><br>    <code>"identifier": 89</code><br>  <code>}</code><br><code>]</code></p> |
| programme                               | [`Brand`](https://developer.openactive.io/data-model/types/brand)                                                                                                                                                                                                                                                                                                                            | <p>Indicates that an event will be organised according to a specific Programme.</p><p><br>Example</p><p><code>"programme": {</code><br>  <code>"@type": "Brand",</code><br>  <code>"name": "Play Ball!",</code><br>  <code>"url": "<http://example.org/brand/play-ball>"</code><br><code>}</code></p>                                                                                                                                                                                                                                                                                                                                                                                             |
| superEvent                              | [`Event`](https://developer.openactive.io/data-model/types/event)                                                                                                                                                                                                                                                                                                                            | Relates an `OnDemandEvent` to an `EventSeries`.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |

### **Beta Extension properties**

These properties are defined in the [OpenActive Beta Extension](https://openactive.io/ns-beta). The OpenActive Beta Extension is defined as a convenience to help document properties that are in active testing and review by the community. Publishers should not assume that properties in the beta namespace will either be added to the core specification or be included in the namespace over the long term.

| Property                             | Expected Type                                                                               | Description                                                                                                                                                                                                                                                                                                                                      |
| ------------------------------------ | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| beta:affiliatedLocation              | [`Place`](https://schema.org/Place)                                                         | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/227">Proposal #227</a></p><p>The physical location affiliated with the virtual event, for example the original location of the event before it was moved online.</p>                                                                                                 |
| beta:attendeeCount                   | [`Integer`](https://schema.org/Integer)                                                     | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/274">Proposal #274</a></p><p>For events that have an unlimited number of tickets, captures the number of attendees (actual attendance).</p>                                                                                                                          |
| beta:bookingChannel                  | Array of [`BookingChannelType`](https://openactive.io/ns-beta#BookingChannelType)           | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/161">Proposal #161</a></p><p>The channels through which a booking can be made.</p>                                                                                                                                                                                   |
| beta:contactPoint                    | [`ContactPoint`](https://schema.org/ContactPoint)                                           | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/113">Proposal #113</a></p><p>Contact details for an Event, where they are not specifically related to the <code>organizer</code> or <code>leader</code>.</p>                                                                                                         |
| beta:distance                        | [`QuantitativeValue`](https://schema.org/QuantitativeValue)                                 | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/275">Proposal #275</a></p><p>The distance of a run, cycle or other activity. Must also include units.</p>                                                                                                                                                            |
| beta:donationPaymentUrl              | [`URL`](https://schema.org/URL)                                                             | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/234">Proposal #234</a></p><p>The URL of the webpage where the activity provider accepts donations.</p>                                                                                                                                                               |
| beta:estimatedDuration               | [`QuantitativeValue`](https://schema.org/QuantitativeValue)                                 | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/201">Proposal #201</a></p><p>A property that allows an Event duration to be represented as a range (e.g. 0-30mins, 30-60mins, 60-90mins, 90+).</p>                                                                                                                   |
| beta:facilitySetting                 | [`FacilitySettingType`](https://openactive.io/ns-beta#FacilitySettingType)                  | <p><a href="https://github.com/openactive/facility-types/issues/1">Proposal #1</a></p><p>Whether the event or facility is indoor or outdoor.</p>                                                                                                                                                                                                 |
| beta:formattedDescription            | [`Text`](https://schema.org/Text)                                                           | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/276">Proposal #276</a></p><p>Sometimes a description is stored with formatting (e.g. href, bold, italics, embedded YouTube videos). This formatting can be useful for data consumers. This property must contain HTML.</p>                                           |
| beta:isFirstSessionAccessibleForFree | [`Boolean`](https://schema.org/Boolean)                                                     | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/232">Proposal #232</a></p><p>A property that indicates whether the first session is free.</p>                                                                                                                                                                        |
| beta:isInteractivityPreferred        | [`Boolean`](https://schema.org/Boolean)                                                     | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/230">Proposal #230</a></p><p>Indicates whether the virtual event is interactive (e.g. Zoom with participant microphones and cameras on), or is just a one-way broadcast (e.g. Facebook Live, Instagram Live, Zoom with participant microphones and cameras off).</p> |
| beta:isScheduledAsSlots              | [`Boolean`](https://schema.org/Boolean)                                                     | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/301">Proposal #301</a></p><p>A property that indicates whether the event contains a high frequency of occurrences. Intended as a UI hint for interfaces that represent these occurrences.</p>                                                                        |
| beta:isVirtuallyCoached              | [`Boolean`](https://schema.org/Boolean)                                                     | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/71">Proposal #71</a></p><p>A property that indicates whether the event is led by a virtual coach. Only relevant if an event <code>isCoached</code>. If not provided is assumed to be <code>false</code>.</p>                                                         |
| beta:isWheelchairAccessible          | [`Boolean`](https://schema.org/Boolean)                                                     | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/166">Proposal #166</a></p><p>A property that details whether the event is suitable for wheelchair access. Placed on Event as this field could be used to detail whether the Event is suitable, as well as the Place.</p>                                             |
| beta:offerValidityPeriod             | [`Duration`](https://schema.org/Duration)                                                   | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/204">Proposal #204</a></p><p>Duration before the event for which the associated Offers are valid</p>                                                                                                                                                                 |
| beta:participantSuppliedEquipment    | [`RequiredStatusType`](https://developer.openactive.io/data-model/types/requiredstatustype) | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/229">Proposal #229</a></p><p>Indicates whether the participant must or may supply equipment for use in the Event.</p>                                                                                                                                                |
| beta:registrationCount               | [`Integer`](https://schema.org/Integer)                                                     | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/273">Proposal #273</a></p><p>For events that have an unlimited number of tickets, captures the number of registrations (intention to attend).</p>                                                                                                                    |
| beta:sportsActivityLocation          | Array of [`SportsActivityLocation`](https://schema.org/SportsActivityLocation)              | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/110">Proposal #110</a></p><p>Internal location of the event, e.g. Court 1</p>                                                                                                                                                                                        |
| beta:video                           | Array of [`VideoObject`](https://schema.org/VideoObject)                                    | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/88">Proposal #88</a></p><p>A related video object.</p>                                                                                                                                                                                                               |
| beta:virtualLocation                 | [`VirtualLocation`](https://pending.schema.org/VirtualLocation)                             | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/224">Proposal #224</a></p><p>Describes a means of electronic access to a shared virtual space.</p>                                                                                                                                                                   |

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# OpenBookingError

This page describes the OpenBookingError type.

## **Properties**

### **Required properties**

| Property | Expected Type                     | Description                                                     |
| -------- | --------------------------------- | --------------------------------------------------------------- |
| @type    | [`Text`](https://schema.org/Text) | Must always be present and set to `"@type": "OpenBookingError"` |

### **Recommended properties**

| Property    | Expected Type                     | Description                                                                                                                                                                                                                                                                                                                                                                   |
| ----------- | --------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| description | [`Text`](https://schema.org/Text) | <p>A plain-text human-readable explanation specific to this occurrence of the problem, providing specific information about why the error occurred in this particular case. This description must not include HTML or other markup.</p><p><br>Example</p><p><code>"description": "No customer details supplied. These must be supplied for calls to C2, P, and B."</code></p> |
| instance    | [`URL`](https://schema.org/URL)   | A URI reference that identifies the specific occurrence of the problem. It may or may not yield further information if dereferenced.                                                                                                                                                                                                                                          |
| name        | [`Text`](https://schema.org/Text) | <p>A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization.</p><p><br>Example</p><p><code>"name": "No customer details supplied"</code></p>                                                                                                                               |

### **Optional properties**

| Property   | Expected Type                           | Description                                         |
| ---------- | --------------------------------------- | --------------------------------------------------- |
| requestId  | [`Text`](https://schema.org/Text)       | Used by technical support for diagnostics purposes. |
| statusCode | [`Integer`](https://schema.org/Integer) | An integer representing the HTTP status code.       |

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# OpeningHoursSpecification

This page describes the OpeningHoursSpecification type.

This type is derived from <https://schema.org/OpeningHoursSpecification>, which means that any of this type's properties within schema.org may also be used. Note however the properties on this page must be used in preference if a relevant property is available.

## **Properties**

### **Required properties**

| Property  | Expected Type                                        | Description                                                                                                                                                                                                                                                                                                                                                                                  |
| --------- | ---------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| @type     | [`Text`](https://schema.org/Text)                    | Must always be present and set to `"@type": "OpeningHoursSpecification"`                                                                                                                                                                                                                                                                                                                     |
| closes    | [`Time`](https://schema.org/Time)                    | <p>The closing time. Set "00:00" for the value of <code>opens</code> and <code>closes</code> to indicated the <code>Place</code> is closed on the specified days.</p><p><br>Example</p><p><code>"closes": "17:00"</code></p>                                                                                                                                                                 |
| dayOfWeek | Array of [`DayOfWeek`](https://schema.org/DayOfWeek) | <p>Defines the days of the week upon which the <code>opens</code> and <code>closes</code> values are specified. Note this property is optional when used within <code>specialOpeningHoursSpecification</code>.</p><p><br>Example</p><p><code>"dayOfWeek": \[</code><br>  <code>"<https://schema.org/Saturday>",</code><br>  <code>"<https://schema.org/Sunday>"</code><br><code>]</code></p> |
| opens     | [`Time`](https://schema.org/Time)                    | <p>The opening time. Set "00:00" for the value of <code>opens</code> and <code>closes</code> to indicated the <code>Place</code> is closed on the specified days.</p><p><br>Example</p><p><code>"opens": "09:00"</code></p>                                                                                                                                                                  |

### **Optional properties**

| Property     | Expected Type                     | Description                                                                                                                                                                                                                                                                                |
| ------------ | --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| validFrom    | [`Date`](https://schema.org/Date) | <p>The date when the item becomes valid. The item will be valid at the beginning of the specified day. Note this property is required when used within <code>specialOpeningHoursSpecification</code>.</p><p><br>Example</p><p><code>"validFrom": "2018-01-22"</code></p>                   |
| validThrough | [`Date`](https://schema.org/Date) | <p>The date after which the item is no longer valid. The item will cease to be valid at the end of the specified day. Note this property is required when used within <code>specialOpeningHoursSpecification</code>.</p><p><br>Example</p><p><code>"validThrough": "2018-01-27"</code></p> |

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# OrderItem

This page describes the OrderItem type.

This type is derived from <https://schema.org/OrderItem>, which means that any of this type's properties within schema.org may also be used. Note however the properties on this page must be used in preference if a relevant property is available.

## **Properties**

### **Optional properties**

<table><thead><tr><th>Property</th><th>Expected Type</th><th>Description</th></tr></thead><tbody><tr><td>@type</td><td><a href="https://schema.org/Text"><code>Text</code></a></td><td>Must always be present and set to <code>"@type": "OrderItem"</code></td></tr><tr><td>@id</td><td><a href="https://schema.org/URL"><code>URL</code></a></td><td><p>A unique URI-based identifier for the record.</p><p><code>@id</code> properties are used as identifiers for compatibility with JSON-LD. The value of such a property must always be an absolute URI that provides a stable globally unique identifier for the resource, as described in <a href="https://tools.ietf.org/html/rfc3986">RFC3986</a>.</p><p>The primary purpose of the URI format in this context is to provide natural namespacing for the identifier. Hence, the URI itself may not resolve to a valid endpoint, but must use a domain name controlled by the resource owner (the organisation responsible for the OpenActive open data feed).</p><p><br>Example</p><p><code>"@id": "https://api.example.com/orders/1a80eca5-99f1-4e9a-81da-937e5621b246#/orderedItem/12345"</code></p></td></tr><tr><td>acceptedOffer</td><td><a href="https://developer.openactive.io/data-model/types/offer"><code>Offer</code></a><br>- or -<br><code>@id</code> reference</td><td>The offer from the associated orderedItem that has been selected by the Customer. The price of this includes or excludes tax depending on the taxMode of the Order.</td></tr><tr><td>accessChannel</td><td><a href="https://developer.openactive.io/data-model/types/virtuallocation"><code>VirtualLocation</code></a></td><td>Channel through which the user can participate in the Opportunity. Not applicable for an OrderQuote.</td></tr><tr><td>accessCode</td><td>Array of <a href="https://developer.openactive.io/data-model/types/propertyvalue"><code>PropertyValue</code></a></td><td>PropertyValue that contains a text value usable for entrance. Not applicable for an OrderQuote.</td></tr><tr><td>accessPass</td><td>Array of <a href="https://developer.openactive.io/data-model/types/imageobject"><code>ImageObject</code></a></td><td>ImageObject or Barcode that contains reference to an asset (e.g. Barcode, QR code image or PDF) usable for entrance. Not applicable for an OrderQuote.</td></tr><tr><td>attendee</td><td><a href="https://developer.openactive.io/data-model/types/person"><code>Person</code></a></td><td>The person attending the Opportunity related to the OrderItem.</td></tr><tr><td>attendeeDetailsRequired</td><td>Array of <a href="https://schema.org/Property"><code>Property</code></a></td><td>The properties of <code>schema:Person</code> that are required to describe an <code>attendee</code> for this <code>OrderItem</code>.</td></tr><tr><td>cancellationMessage</td><td><a href="https://schema.org/Text"><code>Text</code></a></td><td>A message set by the Seller in the event of Opportunity cancellation, only applicable for an <code>Order</code> and where the <code>OrderItem</code> has <code>orderItemStatus</code> set to <code>https://openactive.io/SellerCancelled</code></td></tr><tr><td>customerNotice</td><td><a href="https://schema.org/Text"><code>Text</code></a></td><td>A message set by the Seller to trigger a notification to the Customer, only applicable for an <code>Order</code> and where the <code>OrderItem</code> has <code>orderItemStatus</code> set to <code>https://openactive.io/OrderItemConfirmed</code> or <code>https://openactive.io/CustomerAttended</code></td></tr><tr><td>error</td><td>Array of <a href="https://developer.openactive.io/data-model/types/openbookingerror"><code>OpenBookingError</code></a></td><td>Array of errors related to the OrderItem being included in the Order, only applicable for an OrderQuote.</td></tr><tr><td>orderItemIntakeForm</td><td>Array of <a href="https://developer.openactive.io/data-model/types/propertyvaluespecification"><code>PropertyValueSpecification</code></a></td><td>PropertyValueSpecifications that describe fields in the orderItemIntakeForm.</td></tr><tr><td>orderItemIntakeFormResponse</td><td>Array of <a href="https://developer.openactive.io/data-model/types/propertyvalue"><code>PropertyValue</code></a></td><td>PropertyValues that contains a text value responses to the orderItemIntakeForm.</td></tr><tr><td>orderItemStatus</td><td><a href="https://openactive.io/OrderItemStatus"><code>OrderItemStatus</code></a></td><td><pre><code>  &#x3C;/td>
&#x3C;/tr>
&#x3C;tr>
  &#x3C;td style="text-align:left">&#x3C;b>orderedItem&#x3C;/b>&#x3C;/td>
  &#x3C;td style="text-align:left">
    &#x3C;a href="https://developer.openactive.io/data-model/types/event">&#x3C;code>Event&#x3C;/code>&#x3C;/a>&#x3C;br/> - or - &#x3C;br/>&#x3C;code>@id&#x3C;/code> reference
  &#x3C;/td>
  &#x3C;td style="text-align:left">
    &#x3C;p>The specific bookable Thing that has been selected by the Customer. See the [Modelling-Opportunity-Data] for more information on these types. Note that the Broker Request and Orders feed only require id within these objects to be included; in these contexts, all other properties are ignored.&#x3C;/p>
  &#x3C;/td>
&#x3C;/tr>
&#x3C;tr>
  &#x3C;td style="text-align:left">&#x3C;b>position&#x3C;/b>&#x3C;/td>
  &#x3C;td style="text-align:left">
    &#x3C;a href="https://schema.org/Integer">&#x3C;code>Integer&#x3C;/code>&#x3C;/a>
  &#x3C;/td>
  &#x3C;td style="text-align:left">
    &#x3C;p>An integer representing the order of OrderItems within the array.&#x3C;/p>
  &#x3C;/td>
&#x3C;/tr>
&#x3C;tr>
  &#x3C;td style="text-align:left">&#x3C;b>unitTaxSpecification&#x3C;/b>&#x3C;/td>
  &#x3C;td style="text-align:left">
    Array of &#x3C;a href="https://developer.openactive.io/data-model/types/taxchargespecification">&#x3C;code>TaxChargeSpecification&#x3C;/code>&#x3C;/a>
  &#x3C;/td>
  &#x3C;td style="text-align:left">
    &#x3C;p>Breakdown of tax payable for the OrderItem.&#x3C;/p>
  &#x3C;/td>
&#x3C;/tr>
</code></pre></td></tr></tbody></table>

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# OrderProposal

This page describes the OrderProposal type.

This type is derived from <https://schema.org/Order>, which means that any of this type's properties within schema.org may also be used. Note however the properties on this page must be used in preference if a relevant property is available.

## **Properties**

### **Optional properties**

<table><thead><tr><th>Property</th><th>Expected Type</th><th>Description</th></tr></thead><tbody><tr><td>@type</td><td><a href="https://schema.org/Text"><code>Text</code></a></td><td>Must always be present and set to <code>"@type": "OrderProposal"</code></td></tr><tr><td>@id</td><td><a href="https://schema.org/URL"><code>URL</code></a></td><td><p>A unique URI-based identifier for the record.</p><p><code>@id</code> properties are used as identifiers for compatibility with JSON-LD. The value of such a property must always be an absolute URI that provides a stable globally unique identifier for the resource, as described in <a href="https://tools.ietf.org/html/rfc3986">RFC3986</a>.</p><p>The primary purpose of the URI format in this context is to provide natural namespacing for the identifier. Hence, the URI itself may not resolve to a valid endpoint, but must use a domain name controlled by the resource owner (the organisation responsible for the OpenActive open data feed).</p><p><br>Example</p><p><code>"@id": "https://api.example.com/order-proposals/1a80eca5-99f1-4e9a-81da-937e5621b246"</code></p></td></tr><tr><td>bookingService</td><td><a href="https://developer.openactive.io/data-model/types/bookingservice"><code>BookingService</code></a></td><td>Details about the Booking System</td></tr><tr><td>broker</td><td><a href="https://developer.openactive.io/data-model/types/organization"><code>Organization</code></a></td><td>The organisation or developer providing an application that allows Customers to make bookings. Those applications will be clients of the API defined in this specification. If brokerRole is set to <a href="https://openactive.io/NoBroker">https://openactive.io/NoBroker</a> this is not required.</td></tr><tr><td>brokerRole</td><td><a href="https://openactive.io/BrokerType"><code>BrokerType</code></a></td><td>Either <a href="https://openactive.io/AgentBroker">https://openactive.io/AgentBroker</a>, <a href="https://openactive.io/ResellerBroker">https://openactive.io/ResellerBroker</a> or <a href="https://openactive.io/NoBroker">https://openactive.io/NoBroker</a>, as agreed in advance between the Broker and Seller.</td></tr><tr><td>customer</td><td><a href="https://developer.openactive.io/data-model/types/person"><code>Person</code></a><br>- or -<br><a href="https://developer.openactive.io/data-model/types/organization"><code>Organization</code></a></td><td>The person or organization purchasing the Order.</td></tr><tr><td>identifier</td><td><a href="https://schema.org/Text"><code>Text</code></a></td><td><p>The Order UUID of the Order, OrderQuote or OrderProposal, which is required within the Orders feed.</p><p><br>Example</p><p><code>"identifier": "123e4567-e89b-12d3-a456-426614174000"</code></p></td></tr><tr><td>lease</td><td><a href="https://developer.openactive.io/data-model/types/lease"><code>Lease</code></a></td><td>The Lease on the OrderItems which lasts for the duration specified by the Booking System.</td></tr><tr><td>orderCreationStatus</td><td><a href="https://openactive.io/OrderCreationStatus"><code>OrderCreationStatus</code></a></td><td>This property is internal to the Broker in this version of the specification.</td></tr><tr><td>orderCustomerNote</td><td><a href="https://schema.org/Text"><code>Text</code></a></td><td><pre><code>  &#x3C;/td>
&#x3C;/tr>
&#x3C;tr>
  &#x3C;td style="text-align:left">&#x3C;b>orderNumber&#x3C;/b>&#x3C;/td>
  &#x3C;td style="text-align:left">
    &#x3C;a href="https://schema.org/Text">&#x3C;code>Text&#x3C;/code>&#x3C;/a>
  &#x3C;/td>
  &#x3C;td style="text-align:left">
    &#x3C;p>The Customer-facing identifier of the Order.&#x3C;/p>
  &#x3C;/td>
&#x3C;/tr>
&#x3C;tr>
  &#x3C;td style="text-align:left">&#x3C;b>orderProposalStatus&#x3C;/b>&#x3C;/td>
  &#x3C;td style="text-align:left">
    &#x3C;a href="https://openactive.io/OrderProposalStatus">&#x3C;code>OrderProposalStatus&#x3C;/code>&#x3C;/a>
  &#x3C;/td>
  &#x3C;td style="text-align:left">

\</td>
\</tr>
\<tr>
\<td style="text-align:left">\<b>orderProposalVersion\</b>\</td>
\<td style="text-align:left">
\<a href="[https://schema.org/URL">\&#x3C;code>URL\&#x3C;/code>\&#x3C;/a>](https://schema.org/URL">\&#x3C;code>URL\&#x3C;/code>\&#x3C;/a>)
\</td>
\<td style="text-align:left">
\<p>The unique URL representing this version of the  OrderProposal, or the version of the OrderProposal to which this Order is related.\</p>
\</td>
\</tr>
\<tr>
\<td style="text-align:left">\<b>orderSellerNote\</b>\</td>
\<td style="text-align:left">
\<a href="[https://schema.org/Text">\&#x3C;code>Text\&#x3C;/code>\&#x3C;/a>](https://schema.org/Text">\&#x3C;code>Text\&#x3C;/code>\&#x3C;/a>)
\</td>
\<td style="text-align:left">

\</td>
\</tr>
\<tr>
\<td style="text-align:left">\<b>orderedItem\</b>\</td>
\<td style="text-align:left">
Array of \<a href="[https://developer.openactive.io/data-model/types/orderitem">\&#x3C;code>OrderItem\&#x3C;/code>\&#x3C;/a>](https://developer.openactive.io/data-model/types/orderitem">\&#x3C;code>OrderItem\&#x3C;/code>\&#x3C;/a>)
\</td>
\<td style="text-align:left">
\<p>The items that constitute the Order.\</p>
\</td>
\</tr>
\<tr>
\<td style="text-align:left">\<b>payment\</b>\</td>
\<td style="text-align:left">
\<a href="[https://developer.openactive.io/data-model/types/payment">\&#x3C;code>Payment\&#x3C;/code>\&#x3C;/a>](https://developer.openactive.io/data-model/types/payment">\&#x3C;code>Payment\&#x3C;/code>\&#x3C;/a>)
\</td>
\<td style="text-align:left">
\<p>The payment associated with the Order by the Broker. It is required for cases where a payment has been taken.\</p>
\</td>
\</tr>
\<tr>
\<td style="text-align:left">\<b>seller\</b>\</td>
\<td style="text-align:left">
\<a href="[https://developer.openactive.io/data-model/types/organization">\&#x3C;code>Organization\&#x3C;/code>\&#x3C;/a>\&#x3C;br/>](https://developer.openactive.io/data-model/types/organization">\&#x3C;code>Organization\&#x3C;/code>\&#x3C;/a>\&#x3C;br/>) - or - \<br/>\<a href="[https://developer.openactive.io/data-model/types/person">\&#x3C;code>Person\&#x3C;/code>\&#x3C;/a>\&#x3C;br/>](https://developer.openactive.io/data-model/types/person">\&#x3C;code>Person\&#x3C;/code>\&#x3C;/a>\&#x3C;br/>) - or - \<br/>\<code>@id\</code> reference
\</td>
\<td style="text-align:left">
\<p>The organisation (schema:Organization) or person (schema:Person) providing access to events or facilities via a Booking System. e.g. a leisure provider or independent instructor running a yoga classes.\</p>
\</td>
\</tr>
\<tr>
\<td style="text-align:left">\<b>taxCalculationExcluded\</b>\</td>
\<td style="text-align:left">
\<a href="[https://schema.org/Boolean">\&#x3C;code>Boolean\&#x3C;/code>\&#x3C;/a>](https://schema.org/Boolean">\&#x3C;code>Boolean\&#x3C;/code>\&#x3C;/a>)
\</td>
\<td style="text-align:left">
\<p>Set to true when business-to-business tax calculation is required by the seller or brokerRole settings, but not supported by the Broker.\</p>
\</td>
\</tr>
\<tr>
\<td style="text-align:left">\<b>totalPaymentDue\</b>\</td>
\<td style="text-align:left">
\<a href="[https://developer.openactive.io/data-model/types/pricespecification">\&#x3C;code>PriceSpecification\&#x3C;/code>\&#x3C;/a>](https://developer.openactive.io/data-model/types/pricespecification">\&#x3C;code>PriceSpecification\&#x3C;/code>\&#x3C;/a>)
\</td>
\<td style="text-align:left">

\</td>
\</tr>
\<tr>
\<td style="text-align:left">\<b>totalPaymentTax\</b>\</td>
\<td style="text-align:left">
Array of \<a href="[https://developer.openactive.io/data-model/types/taxchargespecification">\&#x3C;code>TaxChargeSpecification\&#x3C;/code>\&#x3C;/a>](https://developer.openactive.io/data-model/types/taxchargespecification">\&#x3C;code>TaxChargeSpecification\&#x3C;/code>\&#x3C;/a>)
\</td>
\<td style="text-align:left">
\<p>Breakdown of tax payable for the Order.\</p>
\</td>
\</tr> </code></pre></td></tr></tbody></table>

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# OrderQuote

This page describes the OrderQuote type.

This type is derived from <https://schema.org/Order>, which means that any of this type's properties within schema.org may also be used. Note however the properties on this page must be used in preference if a relevant property is available.

## **Properties**

### **Optional properties**

<table><thead><tr><th>Property</th><th>Expected Type</th><th>Description</th></tr></thead><tbody><tr><td>@type</td><td><a href="https://schema.org/Text"><code>Text</code></a></td><td>Must always be present and set to <code>"@type": "OrderQuote"</code></td></tr><tr><td>@id</td><td><a href="https://schema.org/URL"><code>URL</code></a></td><td><p>A unique URI-based identifier for the record.</p><p><code>@id</code> properties are used as identifiers for compatibility with JSON-LD. The value of such a property must always be an absolute URI that provides a stable globally unique identifier for the resource, as described in <a href="https://tools.ietf.org/html/rfc3986">RFC3986</a>.</p><p>The primary purpose of the URI format in this context is to provide natural namespacing for the identifier. Hence, the URI itself may not resolve to a valid endpoint, but must use a domain name controlled by the resource owner (the organisation responsible for the OpenActive open data feed).</p><p><br>Example</p><p><code>"@id": "https://api.example.com/order-quotes/1a80eca5-99f1-4e9a-81da-937e5621b246"</code></p></td></tr><tr><td>bookingService</td><td><a href="https://developer.openactive.io/data-model/types/bookingservice"><code>BookingService</code></a></td><td>Details about the Booking System</td></tr><tr><td>broker</td><td><a href="https://developer.openactive.io/data-model/types/organization"><code>Organization</code></a></td><td>The organisation or developer providing an application that allows Customers to make bookings. Those applications will be clients of the API defined in this specification. If brokerRole is set to <a href="https://openactive.io/NoBroker">https://openactive.io/NoBroker</a> this is not required.</td></tr><tr><td>brokerRole</td><td><a href="https://openactive.io/BrokerType"><code>BrokerType</code></a></td><td>Either <a href="https://openactive.io/AgentBroker">https://openactive.io/AgentBroker</a>, <a href="https://openactive.io/ResellerBroker">https://openactive.io/ResellerBroker</a> or <a href="https://openactive.io/NoBroker">https://openactive.io/NoBroker</a>, as agreed in advance between the Broker and Seller.</td></tr><tr><td>customer</td><td><a href="https://developer.openactive.io/data-model/types/person"><code>Person</code></a><br>- or -<br><a href="https://developer.openactive.io/data-model/types/organization"><code>Organization</code></a></td><td>The person or organization purchasing the Order.</td></tr><tr><td>identifier</td><td><a href="https://schema.org/Text"><code>Text</code></a></td><td><p>The Order UUID of the Order, OrderQuote or OrderProposal, which is required within the Orders feed.</p><p><br>Example</p><p><code>"identifier": "123e4567-e89b-12d3-a456-426614174000"</code></p></td></tr><tr><td>lease</td><td><a href="https://developer.openactive.io/data-model/types/lease"><code>Lease</code></a></td><td>The Lease on the OrderItems which lasts for the duration specified by the Booking System.</td></tr><tr><td>orderCreationStatus</td><td><a href="https://openactive.io/OrderCreationStatus"><code>OrderCreationStatus</code></a></td><td>This property is internal to the Broker in this version of the specification.</td></tr><tr><td>orderNumber</td><td><a href="https://schema.org/Text"><code>Text</code></a></td><td>The Customer-facing identifier of the Order.</td></tr><tr><td>orderProposalVersion</td><td><a href="https://schema.org/URL"><code>URL</code></a></td><td>The unique URL representing this version of the OrderProposal, or the version of the OrderProposal to which this Order is related.</td></tr><tr><td>orderRequiresApproval</td><td><a href="https://schema.org/Boolean"><code>Boolean</code></a></td><td>Whether the Booking Flow with Approval must be used to book the set of OrderItems included. must be true if any of the OrderItems require approval.</td></tr><tr><td>orderedItem</td><td>Array of <a href="https://developer.openactive.io/data-model/types/orderitem"><code>OrderItem</code></a></td><td>The items that constitute the Order.</td></tr><tr><td>payment</td><td><a href="https://developer.openactive.io/data-model/types/payment"><code>Payment</code></a></td><td>The payment associated with the Order by the Broker. It is required for cases where a payment has been taken.</td></tr><tr><td>seller</td><td><a href="https://developer.openactive.io/data-model/types/organization"><code>Organization</code></a><br>- or -<br><a href="https://developer.openactive.io/data-model/types/person"><code>Person</code></a><br>- or -<br><code>@id</code> reference</td><td>The organisation (schema:Organization) or person (schema:Person) providing access to events or facilities via a Booking System. e.g. a leisure provider or independent instructor running a yoga classes.</td></tr><tr><td>taxCalculationExcluded</td><td><a href="https://schema.org/Boolean"><code>Boolean</code></a></td><td>Set to true when business-to-business tax calculation is required by the seller or brokerRole settings, but not supported by the Broker.</td></tr><tr><td>totalPaymentDue</td><td><a href="https://developer.openactive.io/data-model/types/pricespecification"><code>PriceSpecification</code></a></td><td><pre><code>  &#x3C;/td>
&#x3C;/tr>
&#x3C;tr>
  &#x3C;td style="text-align:left">&#x3C;b>totalPaymentTax&#x3C;/b>&#x3C;/td>
  &#x3C;td style="text-align:left">
    Array of &#x3C;a href="https://developer.openactive.io/data-model/types/taxchargespecification">&#x3C;code>TaxChargeSpecification&#x3C;/code>&#x3C;/a>
  &#x3C;/td>
  &#x3C;td style="text-align:left">
    &#x3C;p>Breakdown of tax payable for the Order.&#x3C;/p>
  &#x3C;/td>
&#x3C;/tr>
</code></pre></td></tr></tbody></table>

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# Order

This page describes the Order type.

This type is derived from <https://schema.org/Order>, which means that any of this type's properties within schema.org may also be used. Note however the properties on this page must be used in preference if a relevant property is available.

## **Properties**

### **Optional properties**

<table><thead><tr><th>Property</th><th>Expected Type</th><th>Description</th></tr></thead><tbody><tr><td>@type</td><td><a href="https://schema.org/Text"><code>Text</code></a></td><td>Must always be present and set to <code>"@type": "Order"</code></td></tr><tr><td>@id</td><td><a href="https://schema.org/URL"><code>URL</code></a></td><td><p>A unique URI-based identifier for the record.</p><p><code>@id</code> properties are used as identifiers for compatibility with JSON-LD. The value of such a property must always be an absolute URI that provides a stable globally unique identifier for the resource, as described in <a href="https://tools.ietf.org/html/rfc3986">RFC3986</a>.</p><p>The primary purpose of the URI format in this context is to provide natural namespacing for the identifier. Hence, the URI itself may not resolve to a valid endpoint, but must use a domain name controlled by the resource owner (the organisation responsible for the OpenActive open data feed).</p><p><br>Example</p><p><code>"@id": "https://api.example.com/orders/1a80eca5-99f1-4e9a-81da-937e5621b246"</code></p></td></tr><tr><td>bookingService</td><td><a href="https://developer.openactive.io/data-model/types/bookingservice"><code>BookingService</code></a></td><td>Details about the Booking System</td></tr><tr><td>broker</td><td><a href="https://developer.openactive.io/data-model/types/organization"><code>Organization</code></a></td><td>The organisation or developer providing an application that allows Customers to make bookings. Those applications will be clients of the API defined in this specification. If brokerRole is set to <a href="https://openactive.io/NoBroker">https://openactive.io/NoBroker</a> this is not required.</td></tr><tr><td>brokerRole</td><td><a href="https://openactive.io/BrokerType"><code>BrokerType</code></a></td><td>Either <a href="https://openactive.io/AgentBroker">https://openactive.io/AgentBroker</a>, <a href="https://openactive.io/ResellerBroker">https://openactive.io/ResellerBroker</a> or <a href="https://openactive.io/NoBroker">https://openactive.io/NoBroker</a>, as agreed in advance between the Broker and Seller.</td></tr><tr><td>customer</td><td><a href="https://developer.openactive.io/data-model/types/person"><code>Person</code></a><br>- or -<br><a href="https://developer.openactive.io/data-model/types/organization"><code>Organization</code></a></td><td>The person or organization purchasing the Order.</td></tr><tr><td>identifier</td><td><a href="https://schema.org/Text"><code>Text</code></a></td><td><p>The Order UUID of the Order, OrderQuote or OrderProposal, which is required within the Orders feed.</p><p><br>Example</p><p><code>"identifier": "123e4567-e89b-12d3-a456-426614174000"</code></p></td></tr><tr><td>orderCreationStatus</td><td><a href="https://openactive.io/OrderCreationStatus"><code>OrderCreationStatus</code></a></td><td>This property is internal to the Broker in this version of the specification.</td></tr><tr><td>orderNumber</td><td><a href="https://schema.org/Text"><code>Text</code></a></td><td>The Customer-facing identifier of the Order.</td></tr><tr><td>orderProposalVersion</td><td><a href="https://schema.org/URL"><code>URL</code></a></td><td>The unique URL representing this version of the OrderProposal, or the version of the OrderProposal to which this Order is related.</td></tr><tr><td>orderedItem</td><td>Array of <a href="https://developer.openactive.io/data-model/types/orderitem"><code>OrderItem</code></a></td><td>The items that constitute the Order.</td></tr><tr><td>payment</td><td><a href="https://developer.openactive.io/data-model/types/payment"><code>Payment</code></a></td><td>The payment associated with the Order by the Broker. It is required for cases where a payment has been taken.</td></tr><tr><td>seller</td><td><a href="https://developer.openactive.io/data-model/types/organization"><code>Organization</code></a><br>- or -<br><a href="https://developer.openactive.io/data-model/types/person"><code>Person</code></a><br>- or -<br><code>@id</code> reference</td><td>The organisation (schema:Organization) or person (schema:Person) providing access to events or facilities via a Booking System. e.g. a leisure provider or independent instructor running a yoga classes.</td></tr><tr><td>taxCalculationExcluded</td><td><a href="https://schema.org/Boolean"><code>Boolean</code></a></td><td>Set to true when business-to-business tax calculation is required by the seller or brokerRole settings, but not supported by the Broker.</td></tr><tr><td>totalPaymentDue</td><td><a href="https://developer.openactive.io/data-model/types/pricespecification"><code>PriceSpecification</code></a></td><td><pre><code>  &#x3C;/td>
&#x3C;/tr>
&#x3C;tr>
  &#x3C;td style="text-align:left">&#x3C;b>totalPaymentTax&#x3C;/b>&#x3C;/td>
  &#x3C;td style="text-align:left">
    Array of &#x3C;a href="https://developer.openactive.io/data-model/types/taxchargespecification">&#x3C;code>TaxChargeSpecification&#x3C;/code>&#x3C;/a>
  &#x3C;/td>
  &#x3C;td style="text-align:left">
    &#x3C;p>Breakdown of tax payable for the Order.&#x3C;/p>
  &#x3C;/td>
&#x3C;/tr>
</code></pre></td></tr></tbody></table>

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# Organization

This page describes the Organization type.

This type is derived from <https://schema.org/Organization>, which means that any of this type's properties within schema.org may also be used. Note however the properties on this page must be used in preference if a relevant property is available.

## **Properties**

### **Required properties**

| Property | Expected Type                     | Description                                                                                                      |
| -------- | --------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
| name     | [`Text`](https://schema.org/Text) | <p>The name of the Organization</p><p><br>Example</p><p><code>"name": "Central Speedball Association"</code></p> |

### **Recommended properties**

| Property  | Expected Type                            | Description                                                                                                                                                                                                                                                                                       |
| --------- | ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| sameAs    | Array of [`URL`](https://schema.org/URL) | <p>Lists the URL(s) of the official social media profile pages associated with the organization.</p><p><br>Example</p><p><code>"sameAs": \[</code><br>  <code>"<https://www.facebook.com/everyoneactive/>",</code><br>  <code>"<https://twitter.com/everyoneactive>"</code><br><code>]</code></p> |
| telephone | [`Text`](https://schema.org/Text)        | <p>The telephone number of the Organization</p><p><br>Example</p><p><code>"telephone": "01234 567890"</code></p>                                                                                                                                                                                  |
| url       | [`URL`](https://schema.org/URL)          | <p>A definitive canonical URL for the Organization.</p><p><br>Example</p><p><code>"url": "<http://www.speedball-world.com>"</code></p>                                                                                                                                                            |

### **Optional properties**

| Property             | Expected Type                                                                                                                                                                                                                                                                                                                                                                                | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| @type                | [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                            | Must always be present and set to `"@type": "Organization"`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| @id                  | [`URL`](https://schema.org/URL)                                                                                                                                                                                                                                                                                                                                                              | <p>A unique URI-based identifier for the record.</p><p><code>@id</code> properties are used as identifiers for compatibility with JSON-LD. The value of such a property must always be an absolute URI that provides a stable globally unique identifier for the resource, as described in <a href="https://tools.ietf.org/html/rfc3986">RFC3986</a>.</p><p>The primary purpose of the URI format in this context is to provide natural namespacing for the identifier. Hence, the URI itself may not resolve to a valid endpoint, but must use a domain name controlled by the resource owner (the organisation responsible for the OpenActive open data feed).</p><p><br>Example</p><p><code>"@id": "<https://id.bookingsystem.example.com/organizers/1>"</code></p> |
| address              | [`PostalAddress`](https://developer.openactive.io/data-model/types/postaladdress)                                                                                                                                                                                                                                                                                                            | Address of the Seller, used on tax receipts.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| description          | [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                            | <p>A plain text description of the Organization, which must not include HTML or other markup.</p><p><br>Example</p><p><code>"description": "The national governing body of cycling"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| email                | [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                            | <p>General enquiries e-mail address for the organization.</p><p><br>Example</p><p><code>"email": "<info@example.com>"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| hasAccount           | <p><a href="https://developer.openactive.io/data-model/types/customeraccount"><code>CustomerAccount</code></a><br>- or -<br><code>@id</code> reference</p>                                                                                                                                                                                                                                   | <p>Reference to the CustomerAccount associated with this Customer, for use within the Open Booking API flow.</p><p>Note that this property is in EARLY RELEASE AND IS SUBJECT TO CHANGE, as the <a href="https://github.com/openactive/customer-accounts">Customer Accounts proposal</a> evolves.</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| identifier           | <p><a href="https://schema.org/Text"><code>Text</code></a><br>- or -<br><a href="https://developer.openactive.io/data-model/types/propertyvalue"><code>PropertyValue</code></a><br>- or -<br>Array of <a href="https://developer.openactive.io/data-model/types/propertyvalue"><code>PropertyValue</code></a><br>- or -<br><a href="https://schema.org/Integer"><code>Integer</code></a></p> | <p>A local non-URI identifier for the resource</p><p><br>Example</p><p><code>"identifier": "SB1234"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| isOpenBookingAllowed | [`Boolean`](https://schema.org/Boolean)                                                                                                                                                                                                                                                                                                                                                      | <p>Indicates whether the Seller allows open booking or not</p><p><br>Example</p><p><code>"isOpenBookingAllowed": "true"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| legalName            | [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                            | <p>The official name of the organization, e.g. the registered company name.</p><p><br>Example</p><p><code>"legalName": "Central Speedball Ltd"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| logo                 | [`ImageObject`](https://developer.openactive.io/data-model/types/imageobject)                                                                                                                                                                                                                                                                                                                | <p>A logo for the Organization.</p><p><br>Example</p><p><code>"logo": {</code><br>  <code>"@type": "ImageObject",</code><br>  <code>"url": "<http://example.com/static/image/speedball_large.jpg>"</code><br><code>}</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| taxMode              | [`TaxMode`](https://openactive.io/TaxMode)                                                                                                                                                                                                                                                                                                                                                   | Either <https://openactive.io/TaxNet> or <https://openactive.io/TaxGross>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| termsOfService       | Array of [`Terms`](https://developer.openactive.io/data-model/types/terms)                                                                                                                                                                                                                                                                                                                   | The terms of service of the Seller.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| vatID                | [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                            | The Value-added Tax ID of the of the Seller.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |

### **Beta Extension properties**

These properties are defined in the [OpenActive Beta Extension](https://openactive.io/ns-beta). The OpenActive Beta Extension is defined as a convenience to help document properties that are in active testing and review by the community. Publishers should not assume that properties in the beta namespace will either be added to the core specification or be included in the namespace over the long term.

| Property                  | Expected Type                                            | Description                                                                                                                                                                                                                                                                                            |
| ------------------------- | -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| beta:formalCriteriaMet    | Array of [`URL`](https://schema.org/URL)                 | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/236">Proposal #236</a></p><p>An array of URLs, each of which describe the formal criteria that are met by the organizer.</p>                                                                                               |
| beta:formattedDescription | [`Text`](https://schema.org/Text)                        | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/276">Proposal #276</a></p><p>Sometimes a description is stored with formatting (e.g. href, bold, italics, embedded YouTube videos). This formatting can be useful for data consumers. This property must contain HTML.</p> |
| beta:video                | Array of [`VideoObject`](https://schema.org/VideoObject) | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/88">Proposal #88</a></p><p>A related video object.</p>                                                                                                                                                                     |

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# ParagraphFormFieldSpecification

This page describes the ParagraphFormFieldSpecification type.

This type is derived from <https://schema.org/PropertyValueSpecification>, which means that any of this type's properties within schema.org may also be used. Note however the properties on this page must be used in preference if a relevant property is available.

## **Properties**

### **Required properties**

| Property | Expected Type                     | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| -------- | --------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| @type    | [`Text`](https://schema.org/Text) | Must always be present and set to `"@type": "ParagraphFormFieldSpecification"`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| @id      | [`URL`](https://schema.org/URL)   | <p>A unique URI-based identifier for the record.</p><p><code>@id</code> properties are used as identifiers for compatibility with JSON-LD. The value of such a property must always be an absolute URI that provides a stable globally unique identifier for the resource, as described in <a href="https://tools.ietf.org/html/rfc3986">RFC3986</a>.</p><p>The primary purpose of the URI format in this context is to provide natural namespacing for the identifier. Hence, the URI itself may not resolve to a valid endpoint, but must use a domain name controlled by the resource owner (the organisation responsible for the OpenActive open data feed).</p><p><br>Example</p><p><code>"@id": "<https://example.com/question1>"</code></p> |
| name     | [`Text`](https://schema.org/Text) | Display label for the field.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |

### **Recommended properties**

| Property    | Expected Type                     | Description                                                                             |
| ----------- | --------------------------------- | --------------------------------------------------------------------------------------- |
| description | [`Text`](https://schema.org/Text) | Descriptive help plain text for the field, which must not include HTML or other markup. |

### **Optional properties**

| Property      | Expected Type                           | Description                                                                   |
| ------------- | --------------------------------------- | ----------------------------------------------------------------------------- |
| valueRequired | [`Boolean`](https://schema.org/Boolean) | Specifies that a value for the field is required to proceed with the booking. |

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# Parking

This page describes the Parking type.

This type is derived from <https://schema.org/LocationFeatureSpecification>, which means that any of this type's properties within schema.org may also be used. Note however the properties on this page must be used in preference if a relevant property is available.

## **Properties**

### **Required properties**

| Property | Expected Type                           | Description                                                                                                                    |
| -------- | --------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ |
| @type    | [`Text`](https://schema.org/Text)       | Must always be present and set to `"@type": "Parking"`                                                                         |
| name     | [`Text`](https://schema.org/Text)       | <p>A string, suitable for presentation in user interfaces.</p><p><br>Example</p><p><code>"name": "Roadside Parking"</code></p> |
| value    | [`Boolean`](https://schema.org/Boolean) | A boolean value indicating whether this ammenity is available.                                                                 |

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# PartialSchedule

This page describes the PartialSchedule type.

This type is derived from <https://pending.schema.org/Schedule>, which means that any of this type's properties within schema.org may also be used. Note however the properties on this page must be used in preference if a relevant property is available.

## **Properties**

### **Required properties**

| Property | Expected Type                     | Description                                                    |
| -------- | --------------------------------- | -------------------------------------------------------------- |
| @type    | [`Text`](https://schema.org/Text) | Must always be present and set to `"@type": "PartialSchedule"` |

### **Recommended properties**

| Property        | Expected Type                             | Description                                                                                                                                                                                                          |
| --------------- | ----------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| endTime         | [`Time`](https://schema.org/Time)         | <p>The end time of the event.</p><p><br>Example</p><p><code>"endTime": "12:00:00"</code></p>                                                                                                                         |
| repeatFrequency | [`Duration`](https://schema.org/Duration) | <p>Defines the frequency at which Events will occur according to a Schedule. The intervals between events should be defined as a Duration of time.</p><p><br>Example</p><p><code>"repeatFrequency": "P1D"</code></p> |
| startTime       | [`Time`](https://schema.org/Time)         | <p>The start time of the event.</p><p><br>Example</p><p><code>"startTime": "12:00:00"</code></p>                                                                                                                     |

### **Optional properties**

| Property         | Expected Type                                                                                                                                                   | Description                                                                                                                                                                                                                                                                                                                                                                                                |
| ---------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| byDay            | <p>Array of <a href="https://schema.org/DayOfWeek"><code>DayOfWeek</code></a><br>- or -<br>Array of <a href="https://schema.org/Text"><code>Text</code></a></p> | <p>Defines the day of the week upon which the Event takes place.</p><p>When using string values, this MUST conform to iCal BYDAY rule.</p><p><br>Example</p><p><code>"byDay": \[</code><br>  <code>"<https://schema.org/Monday>"</code><br><code>]</code></p>                                                                                                                                              |
| byMonth          | Array of [`Integer`](https://schema.org/Integer)                                                                                                                | <p>Defines the months of the year on which the Event takes place. Specified as an integer between 1 and 12, with 1 representing January.</p><p><br>Example</p><p><code>"byMonth": \[</code><br>  <code>2</code><br><code>]</code></p>                                                                                                                                                                      |
| byMonthDay       | Array of [`Integer`](https://schema.org/Integer)                                                                                                                | <p>Defines the days of the month on which the Event takes place. Specified as an integer between 1 and 31</p><p><br>Example</p><p><code>"byMonthDay": \[</code><br>  <code>28</code><br><code>]</code></p>                                                                                                                                                                                                 |
| duration         | [`Duration`](https://schema.org/Duration)                                                                                                                       | <p>The duration of the event given in \[ISO8601] format.</p><p><br>Example</p><p><code>"duration": "PT1H"</code></p>                                                                                                                                                                                                                                                                                       |
| endDate          | [`Date`](https://schema.org/Date)                                                                                                                               | <p>The end date of the schedule.</p><p><br>Example</p><p><code>"endDate": "2018-01-27"</code></p>                                                                                                                                                                                                                                                                                                          |
| exceptDate       | <p>Array of <a href="https://schema.org/Date"><code>Date</code></a><br>- or -<br>Array of <a href="https://schema.org/DateTime"><code>DateTime</code></a></p>   | <p>Exception dates where the schedule should not generate an event.</p><p><br>Example</p><p><code>"exceptDate": \[</code><br>  <code>"2016-04-13T17:10:00Z",</code><br>  <code>"2016-09-14T17:10:00Z",</code><br>  <code>"2016-12-14T18:10:00Z",</code><br>  <code>"2016-12-21T18:10:00Z",</code><br>  <code>"2016-12-28T18:10:00Z",</code><br>  <code>"2017-01-04T18:10:00Z"</code><br><code>]</code></p> |
| repeatCount      | [`Integer`](https://schema.org/Integer)                                                                                                                         | <p>Defines the number of times a recurring Event will take place.</p><p><br>Example</p><p><code>"repeatCount": 3</code></p>                                                                                                                                                                                                                                                                                |
| scheduleTimezone | [`Text`](https://schema.org/Text)                                                                                                                               | <p>Indicates the timezone for which the time(s) indicated in the Schedule are given. The value provided should be among those listed in the IANA Time Zone Database.</p><p><br>Example</p><p><code>"scheduleTimezone": "Europe/London"</code></p>                                                                                                                                                          |
| startDate        | [`Date`](https://schema.org/Date)                                                                                                                               | <p>The start date of the event.</p><p><br>Example</p><p><code>"startDate": "2018-01-27"</code></p>                                                                                                                                                                                                                                                                                                         |

### **Beta Extension properties**

These properties are defined in the [OpenActive Beta Extension](https://openactive.io/ns-beta). The OpenActive Beta Extension is defined as a convenience to help document properties that are in active testing and review by the community. Publishers should not assume that properties in the beta namespace will either be added to the core specification or be included in the namespace over the long term.

| Property      | Expected Type                     | Description                                                                                                                                                                                                                                                                            |
| ------------- | --------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| beta:timeZone | [`Text`](https://schema.org/Text) | <p><strong>DEPRECATED</strong>: Please use <code>scheduleTimezone</code> instead.</p><p><a href="https://github.com/openactive/modelling-opportunity-data/issues/197">Proposal #197</a></p><p>The time zone used to generate occurrences, same as iCal TZID. E.g. 'Europe/London'.</p> |
| beta:timeZone | [`Text`](https://schema.org/Text) | <p><strong>DEPRECATED</strong>: Please use <code>scheduleTimezone</code> instead.</p><p><a href="https://github.com/openactive/modelling-opportunity-data/issues/197">Proposal #197</a></p><p>The time zone used to generate occurrences, same as iCal TZID. E.g. 'Europe/London'.</p> |

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# Payment

This page describes the Payment type.

## **Properties**

### **Optional properties**

| Property           | Expected Type                                                                              | Description                                                                                                                                                                                  |
| ------------------ | ------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| @type              | [`Text`](https://schema.org/Text)                                                          | Must always be present and set to `"@type": "Payment"`                                                                                                                                       |
| accountId          | [`Text`](https://schema.org/Text)                                                          | A reference used by the Seller to group transactions, which is used to aid reconciliation.                                                                                                   |
| additionalProperty | Array of [`PropertyValue`](https://developer.openactive.io/data-model/types/propertyvalue) | PropertyValue that contains a text value useful for reconciliation.                                                                                                                          |
| identifier         | [`Text`](https://schema.org/Text)                                                          | <p>The identifier of the payment held by the Broker and/or Payment Provider.</p><p><br>Example</p><p><code>"identifier": "SB1234"</code></p>                                                 |
| name               | [`Text`](https://schema.org/Text)                                                          | Optional free text description of the payment method for the Booking System, to help the Seller in discussions with the Customer (e.g. 'AcmeBroker Points' or 'AcmeBroker via Credit Card'). |
| paymentMethod      | [`PaymentMethod`](http://purl.org/goodrelations/v1#PaymentMethod)                          | paymentMethod must not be used, and is reserved for future versions of this specification.                                                                                                   |
| paymentProviderId  | [`Text`](https://schema.org/Text)                                                          | A reference to the specific Payment Provider that is used.                                                                                                                                   |

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# Person

This page describes the Person type.

This type is derived from <https://schema.org/Person>, which means that any of this type's properties within schema.org may also be used. Note however the properties on this page must be used in preference if a relevant property is available.

## **Properties**

### **Optional properties**

| Property             | Expected Type                                                                                                                                                                                                                                                                                                                                                                                | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| @type                | [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                            | Must always be present and set to `"@type": "Person"`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| @id                  | [`URL`](https://schema.org/URL)                                                                                                                                                                                                                                                                                                                                                              | <p>A unique URI-based identifier for the record.</p><p><code>@id</code> properties are used as identifiers for compatibility with JSON-LD. The value of such a property must always be an absolute URI that provides a stable globally unique identifier for the resource, as described in <a href="https://tools.ietf.org/html/rfc3986">RFC3986</a>.</p><p>The primary purpose of the URI format in this context is to provide natural namespacing for the identifier. Hence, the URI itself may not resolve to a valid endpoint, but must use a domain name controlled by the resource owner (the organisation responsible for the OpenActive open data feed).</p><p><br>Example</p><p><code>"@id": "<https://id.bookingsystem.example.com/people/12345>"</code></p> |
| address              | [`PostalAddress`](https://developer.openactive.io/data-model/types/postaladdress)                                                                                                                                                                                                                                                                                                            | Address of the Seller, used on tax receipts.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| description          | [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                            | <p>A plain text description of the Person, which must not include HTML or other markup.</p><p><br>Example</p><p><code>"description": "The leader of the coaching team"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| email                | [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                            | <p>The e-mail address of the person.</p><p>This person must have given permission for their personal information to be shared as part of the open data.</p><p><br>Example</p><p><code>"email": "<jane.smith@example.com>"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| emergencyContact     | [`Person`](https://developer.openactive.io/data-model/types/person)                                                                                                                                                                                                                                                                                                                          | Person to contact in case of emergencies related to this Person.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| familyName           | [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                            | <p>A last name for the person.</p><p>This person must have given permission for their personal information to be shared as part of the open data.</p><p><br>Example</p><p><code>"familyName": "Thompson"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| gender               | <p><a href="https://schema.org/GenderType"><code>GenderType</code></a><br>- or -<br><a href="https://schema.org/Text"><code>Text</code></a></p>                                                                                                                                                                                                                                              | <p>Indicates the gender of the person. While <code><https://schema.org/Male></code> and <code><https://schema.org/Female></code> may be used, text strings are also acceptable for people who do not identify as a binary gender.</p><p><br>Example</p><p><code>"gender": "<https://schema.org/Female>"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| givenName            | [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                            | <p>A first name for the person.</p><p>This person must have given permission for their personal information to be shared as part of the open data.</p><p><br>Example</p><p><code>"givenName": "Daley"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| hasAccount           | <p><a href="https://developer.openactive.io/data-model/types/customeraccount"><code>CustomerAccount</code></a><br>- or -<br><code>@id</code> reference</p>                                                                                                                                                                                                                                   | <p>Reference to the CustomerAccount associated with this Customer, for use within the Open Booking API flow.</p><p>Note that this property is in EARLY RELEASE AND IS SUBJECT TO CHANGE, as the <a href="https://github.com/openactive/customer-accounts">Customer Accounts proposal</a> evolves.</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| identifier           | <p><a href="https://schema.org/Text"><code>Text</code></a><br>- or -<br><a href="https://developer.openactive.io/data-model/types/propertyvalue"><code>PropertyValue</code></a><br>- or -<br>Array of <a href="https://developer.openactive.io/data-model/types/propertyvalue"><code>PropertyValue</code></a><br>- or -<br><a href="https://schema.org/Integer"><code>Integer</code></a></p> | <p>A local non-URI identifier for the resource</p><p><br>Example</p><p><code>"identifier": "SB1234"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| isOpenBookingAllowed | [`Boolean`](https://schema.org/Boolean)                                                                                                                                                                                                                                                                                                                                                      | <p>Indicates whether the Seller allows open booking</p><p><br>Example</p><p><code>"isOpenBookingAllowed": "true"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| jobTitle             | [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                            | <p>The job title of a person</p><p>This person must have given permission for their personal information to be shared as part of the open data.</p><p><br>Example</p><p><code>"jobTitle": "Team Captain"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| legalName            | [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                            | <p>The official name of the organization, e.g. the registered company name.</p><p><br>Example</p><p><code>"legalName": "Central Speedball Ltd"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| logo                 | [`ImageObject`](https://developer.openactive.io/data-model/types/imageobject)                                                                                                                                                                                                                                                                                                                | <p>A logo for the person.</p><p><br>Example</p><p><code>"logo": {</code><br>  <code>"@type": "ImageObject",</code><br>  <code>"url": "<http://example.com/static/image/speedball_large.jpg>"</code><br><code>}</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| name                 | [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                            | <p>A full name for the person.</p><p>This person must have given permission for their personal information to be shared as part of the open data.</p><p><br>Example</p><p><code>"name": "Daley Thompson"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| sameAs               | Array of [`URL`](https://schema.org/URL)                                                                                                                                                                                                                                                                                                                                                     | <p>Lists the URL(s) of the official social media profile pages associated with the person.</p><p><br>Example</p><p><code>"sameAs": "<https://example.org/example-org>"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| taxMode              | [`TaxMode`](https://openactive.io/TaxMode)                                                                                                                                                                                                                                                                                                                                                   | Either <https://openactive.io/TaxNet> or <https://openactive.io/TaxGross>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| telephone            | [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                            | <p>The telephone number of the person</p><p>This person must have given permission for their personal information to be shared as part of the open data.</p><p><br>Example</p><p><code>"telephone": "01234 567890"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| termsOfService       | Array of [`Terms`](https://developer.openactive.io/data-model/types/terms)                                                                                                                                                                                                                                                                                                                   | The terms of service of the Seller.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| url                  | [`URL`](https://schema.org/URL)                                                                                                                                                                                                                                                                                                                                                              | <p>A URL where more information about the person may be found</p><p><br>Example</p><p><code>"url": "<http://www.example.com/>"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| vatID                | [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                            | The Value-added Tax ID of the of the Seller.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |

### **Beta Extension properties**

These properties are defined in the [OpenActive Beta Extension](https://openactive.io/ns-beta). The OpenActive Beta Extension is defined as a convenience to help document properties that are in active testing and review by the community. Publishers should not assume that properties in the beta namespace will either be added to the core specification or be included in the namespace over the long term.

| Property                  | Expected Type                            | Description                                                                                                                                                                                                                                                                                            |
| ------------------------- | ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| beta:formalCriteriaMet    | Array of [`URL`](https://schema.org/URL) | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/236">Proposal #236</a></p><p>An array of URLs, each of which describe the formal criteria that are met by the organizer.</p>                                                                                               |
| beta:formattedDescription | [`Text`](https://schema.org/Text)        | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/276">Proposal #276</a></p><p>Sometimes a description is stored with formatting (e.g. href, bold, italics, embedded YouTube videos). This formatting can be useful for data consumers. This property must contain HTML.</p> |

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# Place

This page describes the Place type.

This type is derived from <https://schema.org/Place>, which means that any of this type's properties within schema.org may also be used. Note however the properties on this page must be used in preference if a relevant property is available.

## **Properties**

### **Required properties**

| Property | Expected Type                     | Description                                                                                         |
| -------- | --------------------------------- | --------------------------------------------------------------------------------------------------- |
| @type    | [`Text`](https://schema.org/Text) | Must always be present and set to `"@type": "Place"`                                                |
| name     | [`Text`](https://schema.org/Text) | <p>The name of the Place</p><p><br>Example</p><p><code>"name": "Raynes Park High School"</code></p> |

### **Required options**

While these properties are marked as recommended in the specification, a data publisher must provide as much detail in both `address` and `geo` for an event as possible.

| Property | Expected Type                                                                                                                                                                       | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| address  | <p><a href="https://developer.openactive.io/data-model/types/postaladdress"><code>PostalAddress</code></a><br>- or -<br><a href="https://schema.org/Text"><code>Text</code></a></p> | <p>A structured PostalAddress object for the Place.</p><p>Ideally the address should be provided using the PostalAddress structured format. Google Reserve requires <a href="https://schema.org/PostalAddress"><https://schema.org/PostalAddress></a> and will not accept plain text addresses.</p><p><br>Example</p><p><code>"address": {</code><br>  <code>"@type": "PostalAddress",</code><br>  <code>"streetAddress": "Raynes Park High School, 46A West Barnes Lane",</code><br>  <code>"addressLocality": "New Malden",</code><br>  <code>"addressRegion": "London",</code><br>  <code>"postalCode": "NW5 3DU",</code><br>  <code>"addressCountry": "GB"</code><br><code>}</code></p> |
| geo      | [`GeoCoordinates`](https://developer.openactive.io/data-model/types/geocoordinates)                                                                                                 | <p>The geo coordinates of the Place.</p><p><br>Example</p><p><code>"geo": {</code><br>  <code>"latitude": 51.4034423828125,</code><br>  <code>"longitude": -0.2369088977575302,</code><br>  <code>"@type": "GeoCoordinates"</code><br><code>}</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                    |

### **Recommended properties**

| Property                  | Expected Type                                                                                                            | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| ------------------------- | ------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| @id                       | [`URL`](https://schema.org/URL)                                                                                          | <p>A unique URI-based identifier for the record.</p><p><code>@id</code> properties are used as identifiers for compatibility with JSON-LD. The value of such a property must always be an absolute URI that provides a stable globally unique identifier for the resource, as described in <a href="https://tools.ietf.org/html/rfc3986">RFC3986</a>.</p><p>The primary purpose of the URI format in this context is to provide natural namespacing for the identifier. Hence, the URI itself may not resolve to a valid endpoint, but must use a domain name controlled by the resource owner (the organisation responsible for the OpenActive open data feed).</p><p><br>Example</p><p><code>"@id": "<https://id.bookingsystem.example.com/places/12345>"</code></p>                                                                                                                                                                                                                                                                                                                                           |
| amenityFeature            | Array of [`LocationFeatureSpecification`](https://developer.openactive.io/data-model/types/locationfeaturespecification) | <p>An array listing the Amenities of the Place.</p><p><br>Example</p><p><code>"amenityFeature": \[</code><br>  <code>{</code><br>    <code>"name": "Changing Facilities",</code><br>    <code>"value": true,</code><br>    <code>"@type": "ChangingFacilities"</code><br>  <code>},</code><br>  <code>{</code><br>    <code>"name": "Showers",</code><br>    <code>"value": false,</code><br>    <code>"@type": "Showers"</code><br>  <code>},</code><br>  <code>{</code><br>    <code>"name": "Lockers",</code><br>    <code>"value": true,</code><br>    <code>"@type": "Lockers"</code><br>  <code>},</code><br>  <code>{</code><br>    <code>"name": "Towels",</code><br>    <code>"value": false,</code><br>    <code>"@type": "Towels"</code><br>  <code>},</code><br>  <code>{</code><br>    <code>"name": "Creche",</code><br>    <code>"value": false,</code><br>    <code>"@type": "Creche"</code><br>  <code>},</code><br>  <code>{</code><br>    <code>"name": "Parking",</code><br>    <code>"value": true,</code><br>    <code>"@type": "Parking"</code><br>  <code>}</code><br><code>]</code></p> |
| description               | [`Text`](https://schema.org/Text)                                                                                        | <p>A plain text description of the Place, which must not include HTML or other markup.</p><p><br>Example</p><p><code>"description": "Raynes Park High School in London"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| image                     | Array of [`ImageObject`](https://developer.openactive.io/data-model/types/imageobject)                                   | <p>An image or photo that depicts the place, e.g. a photo taken at a previous event.</p><p><br>Example</p><p><code>"image": \[</code><br>  <code>{</code><br>    <code>"thumbnail": "<http://example.com/static/image/speedball_thumbnail.jpg>",</code><br>    <code>"@type": "ImageObject",</code><br>    <code>"url": "<http://example.com/static/image/speedball_large.jpg>"</code><br>  <code>}</code><br><code>]</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| openingHoursSpecification | Array of [`OpeningHoursSpecification`](https://developer.openactive.io/data-model/types/openinghoursspecification)       | The times the Place is open                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| telephone                 | [`Text`](https://schema.org/Text)                                                                                        | <p>The telephone number for the Place</p><p><br>Example</p><p><code>"telephone": "01253 473934"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| url                       | [`URL`](https://schema.org/URL)                                                                                          | <p>The website for the Place</p><p><br>Example</p><p><code>"url": "<http://www.rphs.org.uk/>"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |

### **Optional properties**

| Property                         | Expected Type                                                                                                                                                                                                                                                                                                                                                                                | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| -------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| containedInPlace                 | <p><a href="https://developer.openactive.io/data-model/types/place"><code>Place</code></a><br>- or -<br><code>@id</code> reference</p>                                                                                                                                                                                                                                                       | <p>The place within which this Place exists</p><p><br>Example</p><p><code>"containedInPlace": {</code><br>  <code>"@type": "Place",</code><br>  <code>"url": "<https://www.everyoneactive.com/centres/Middlesbrough-Sports-Village>",</code><br>  <code>"name": "Middlesbrough Sports Village"</code><br><code>}</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| containsPlace                    | Array of [`Place`](https://developer.openactive.io/data-model/types/place)                                                                                                                                                                                                                                                                                                                   | <p>A specific identifiable facility (<code>SportsActivityLocation</code>) or place (<code>Place</code>) that exist within this place</p><p><br>Example</p><p><code>"containsPlace": \[</code><br>  <code>{</code><br>    <code>"@type": "SportsActivityLocation",</code><br>    <code>"@id": "<https://api.example.com/places/1402CBP20150217/sports-activity-locations/3>",</code><br>    <code>"url": "<https://www.better.org.uk/leisure-centre/manchester/belle-vue-sports-village/facilities>",</code><br>    <code>"name": "Studio",</code><br>    <code>"description": "We have a great range of Fitness Classes at Belle Vue Leisure Centre including Group Cycle, Zumba, Pilates and much much more.",</code><br>    <code>"image": \[</code><br>      <code>{</code><br>        <code>"@type": "ImageObject",</code><br>        <code>"url": "<https://res-1.cloudinary.com/gll/image/upload/c_fit,f_auto,h_169,w_384/v1592158966/production/0065/7/66/PHOTO-2020-06-09-14-25-53_3.jpg>"</code><br>      <code>}</code><br>    <code>],</code><br>    <code>"specialOpeningHoursSpecification": \[</code><br>      <code>{</code><br>        <code>"@type": "OpeningHoursSpecification",</code><br>        <code>"opens": "00:00",</code><br>        <code>"closes": "00:00",</code><br>        <code>"validFrom": "2022-01-01",</code><br>        <code>"validThrough": "2022-12-31"</code><br>      <code>}</code><br>    <code>]</code><br>  <code>}</code><br><code>]</code></p> |
| email                            | [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                            | <p>General enquiries e-mail address for the Place.</p><p><br>Example</p><p><code>"email": "<info@example.com>"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| identifier                       | <p><a href="https://schema.org/Text"><code>Text</code></a><br>- or -<br><a href="https://developer.openactive.io/data-model/types/propertyvalue"><code>PropertyValue</code></a><br>- or -<br>Array of <a href="https://developer.openactive.io/data-model/types/propertyvalue"><code>PropertyValue</code></a><br>- or -<br><a href="https://schema.org/Integer"><code>Integer</code></a></p> | <p>A local non-URI identifier for the resource</p><p><br>Example</p><p><code>"identifier": "SB1234"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| specialOpeningHoursSpecification | Array of [`OpeningHoursSpecification`](https://developer.openactive.io/data-model/types/openinghoursspecification)                                                                                                                                                                                                                                                                           | Explicitly override general opening hours brought in scope by `schema:openingHoursSpecification`.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |

### **Beta Extension properties**

These properties are defined in the [OpenActive Beta Extension](https://openactive.io/ns-beta). The OpenActive Beta Extension is defined as a convenience to help document properties that are in active testing and review by the community. Publishers should not assume that properties in the beta namespace will either be added to the core specification or be included in the namespace over the long term.

| Property                  | Expected Type                                                     | Description                                                                                                                                                                                                                                                                                            |
| ------------------------- | ----------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| beta:formattedDescription | [`Text`](https://schema.org/Text)                                 | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/276">Proposal #276</a></p><p>Sometimes a description is stored with formatting (e.g. href, bold, italics, embedded YouTube videos). This formatting can be useful for data consumers. This property must contain HTML.</p> |
| beta:placeType            | Array of [`Concept`](http://www.w3.org/2004/02/skos/core#Concept) | <p><a href="https://github.com/openactive/place-types/issues/1">Proposal #1</a></p><p>The type of Place. See <a href="https://openactive.io/place-types/"><https://openactive.io/place-types/></a>.</p>                                                                                                |
| beta:serviceOperator      | [`Organization`](https://schema.org/Organization)                 | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/307">Proposal #307</a></p><p>The organization responsible for the operation of the <code>Place</code>.</p>                                                                                                                 |
| beta:video                | Array of [`VideoObject`](https://schema.org/VideoObject)          | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/88">Proposal #88</a></p><p>A related video object.</p>                                                                                                                                                                     |

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# PostalAddress

This page describes the PostalAddress type.

This type is derived from <https://schema.org/PostalAddress>, which means that any of this type's properties within schema.org may also be used. Note however the properties on this page must be used in preference if a relevant property is available.

## **Properties**

### **Required properties**

| Property        | Expected Type                     | Description                                                                                                                                             |
| --------------- | --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| @type           | [`Text`](https://schema.org/Text) | Must always be present and set to `"@type": "PostalAddress"`                                                                                            |
| addressCountry  | [`Text`](https://schema.org/Text) | <p>The country, expressed as a two-letter ISO 3166-1 alpha-2 country code.</p><p><br>Example</p><p><code>"addressCountry": "GB"</code></p>              |
| addressLocality | [`Text`](https://schema.org/Text) | <p>The locality, a suburb within a city or a town within a county or district.</p><p><br>Example</p><p><code>"addressLocality": "Shoreditch"</code></p> |
| addressRegion   | [`Text`](https://schema.org/Text) | <p>The region, either a city or a county or district.</p><p><br>Example</p><p><code>"addressRegion": "London"</code></p>                                |
| postalCode      | [`Text`](https://schema.org/Text) | <p>The postal code.</p><p><br>Example</p><p><code>"postalCode": "EC2A 4JE"</code></p>                                                                   |
| streetAddress   | [`Text`](https://schema.org/Text) | <p>The street address.</p><p><br>Example</p><p><code>"streetAddress": "Open Data Institute, Floor 3, 65 Clifton St"</code></p>                          |

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# PriceSpecification

This page describes the PriceSpecification type.

This type is derived from <https://schema.org/PriceSpecification>, which means that any of this type's properties within schema.org may also be used. Note however the properties on this page must be used in preference if a relevant property is available.

## **Properties**

### **Optional properties**

| Property              | Expected Type                                                    | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| --------------------- | ---------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| @type                 | [`Text`](https://schema.org/Text)                                | Must always be present and set to `"@type": "PriceSpecification"`                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| openBookingPrepayment | [`RequiredStatusType`](https://openactive.io/RequiredStatusType) | <p>Indicates if proceeding with booking requires a Customer to pay in advance, pay when attending, or have the option to do either. Values must be one of <a href="https://openactive.io/Required"><https://openactive.io/Required></a>, <a href="https://openactive.io/Optional"><https://openactive.io/Optional></a> or <a href="https://openactive.io/Unavailable"><https://openactive.io/Unavailable></a>.</p><p><br>Example</p><p><code>"openBookingPrepayment": "<https://openactive.io/Required>"</code></p> |
| price                 | [`Number`](https://schema.org/Number)                            | The total amount.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| priceCurrency         | [`Text`](https://schema.org/Text)                                | The currency of the price. Specified as a 3-letter ISO 4217 value. If a PriceSpecification has a zero price, then this property is not required. Otherwise the priceCurrency must be specified.                                                                                                                                                                                                                                                                                                                     |

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# PrivacyPolicy

This page describes the PrivacyPolicy type.

## **Properties**

### **Optional properties**

<table><thead><tr><th>Property</th><th>Expected Type</th><th>Description</th></tr></thead><tbody><tr><td>@type</td><td><a href="https://schema.org/Text"><code>Text</code></a></td><td>Must always be present and set to <code>"@type": "PrivacyPolicy"</code></td></tr><tr><td>dateModified</td><td><a href="https://schema.org/DateTime"><code>DateTime</code></a></td><td><p>The date and time at which the webpage containing the contents of the terms, located at the <code>url</code>, was last updated.</p><p><br>Example</p><p><code>"dateModified": "2018-01-27T12:00:00Z"</code></p></td></tr><tr><td>name</td><td><a href="https://schema.org/Text"><code>Text</code></a></td><td>The name of the terms. The name must distinguish this from other terms fields provided, e.g. 'Terms and Conditions' or 'Privacy Policy'.</td></tr><tr><td>requiresExplicitConsent</td><td><a href="https://schema.org/Boolean"><code>Boolean</code></a></td><td><pre><code>  &#x3C;/td>
&#x3C;/tr>
&#x3C;tr>
  &#x3C;td style="text-align:left">&#x3C;b>url&#x3C;/b>&#x3C;/td>
  &#x3C;td style="text-align:left">
    &#x3C;a href="https://schema.org/URL">&#x3C;code>URL&#x3C;/code>&#x3C;/a>
  &#x3C;/td>
  &#x3C;td style="text-align:left">
    &#x3C;p>The URL of the webpage containing the contents of the terms.&#x3C;/p>
  &#x3C;/td>
&#x3C;/tr>
</code></pre></td></tr></tbody></table>

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# PropertyValueSpecification

This page describes the PropertyValueSpecification type.

This type is derived from <https://schema.org/PropertyValueSpecification>, which means that any of this type's properties within schema.org may also be used. Note however the properties on this page must be used in preference if a relevant property is available.

## **Properties**

### **Optional properties**

| Property      | Expected Type                           | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| ------------- | --------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| @type         | [`Text`](https://schema.org/Text)       | Must always be present and set to `"@type": "PropertyValueSpecification"`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| @id           | [`URL`](https://schema.org/URL)         | <p>A unique URI-based identifier for the record.</p><p><code>@id</code> properties are used as identifiers for compatibility with JSON-LD. The value of such a property must always be an absolute URI that provides a stable globally unique identifier for the resource, as described in <a href="https://tools.ietf.org/html/rfc3986">RFC3986</a>.</p><p>The primary purpose of the URI format in this context is to provide natural namespacing for the identifier. Hence, the URI itself may not resolve to a valid endpoint, but must use a domain name controlled by the resource owner (the organisation responsible for the OpenActive open data feed).</p><p><br>Example</p><p><code>"@id": "<https://example.com/someid>"</code></p> |
| description   | [`Text`](https://schema.org/Text)       | Descriptive help plain text for the field, which must not include HTML or other markup.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| name          | [`Text`](https://schema.org/Text)       | Display label for the field.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| valueRequired | [`Boolean`](https://schema.org/Boolean) | Specifies that a value for the field is required to proceed with the booking.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# PropertyValue

This page describes the PropertyValue type.

This type is derived from <https://schema.org/PropertyValue>, which means that any of this type's properties within schema.org may also be used. Note however the properties on this page must be used in preference if a relevant property is available.

## **Properties**

### **Optional properties**

| Property    | Expected Type                                                                                                                                                                                                | Description                                                                                                                                                                  |
| ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| @type       | [`Text`](https://schema.org/Text)                                                                                                                                                                            | Must always be present and set to `"@type": "PropertyValue"`                                                                                                                 |
| description | [`Text`](https://schema.org/Text)                                                                                                                                                                            | Additional human-readable version of the value of the property.                                                                                                              |
| name        | [`Text`](https://schema.org/Text)                                                                                                                                                                            | <p>The name of this PropertyValue</p><p><br>Example</p><p><code>"name": "Vendor ID"</code></p>                                                                               |
| propertyID  | <p><a href="https://schema.org/URL"><code>URL</code></a><br>- or -<br><a href="https://schema.org/Text"><code>Text</code></a></p>                                                                            | <p>A commonly used identifier for the characteristic represented by the property</p><p><br>Example</p><p><code>"propertyID": "<https://example.com/photoconsent>"</code></p> |
| value       | <p><a href="https://schema.org/Text"><code>Text</code></a><br>- or -<br><a href="https://schema.org/Boolean"><code>Boolean</code></a><br>- or -<br><a href="https://schema.org/URL"><code>URL</code></a></p> | <p>The actual value of this identifier</p><p><br>Example</p><p><code>"value": "SB1234"</code></p>                                                                            |

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# QuantitativeValue

This page describes the QuantitativeValue type.

This type is derived from <https://schema.org/QuantitativeValue>, which means that any of this type's properties within schema.org may also be used. Note however the properties on this page must be used in preference if a relevant property is available.

## **Properties**

### **Required properties**

| Property | Expected Type                     | Description                                                      |
| -------- | --------------------------------- | ---------------------------------------------------------------- |
| @type    | [`Text`](https://schema.org/Text) | Must always be present and set to `"@type": "QuantitativeValue"` |

### **Optional properties**

| Property | Expected Type                           | Description                                                                              |
| -------- | --------------------------------------- | ---------------------------------------------------------------------------------------- |
| maxValue | [`Integer`](https://schema.org/Integer) | <p>The maximum value, inclusive.</p><p><br>Example</p><p><code>"maxValue": 60</code></p> |
| minValue | [`Integer`](https://schema.org/Integer) | <p>The minimum value, inclusive.</p><p><br>Example</p><p><code>"minValue": 16</code></p> |

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# Schedule

This page describes the Schedule type.

This type is derived from <https://pending.schema.org/Schedule>, which means that any of this type's properties within schema.org may also be used. Note however the properties on this page must be used in preference if a relevant property is available.

## **Properties**

### **Required properties**

| Property           | Expected Type                     | Description                                                                                                                                                                                                                                       |
| ------------------ | --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| @type              | [`Text`](https://schema.org/Text) | Must always be present and set to `"@type": "Schedule"`                                                                                                                                                                                           |
| endTime            | [`Time`](https://schema.org/Time) | <p>The end time of the event.</p><p><br>Example</p><p><code>"endTime": "12:00:00"</code></p>                                                                                                                                                      |
| scheduleTimezone   | [`Text`](https://schema.org/Text) | <p>Indicates the timezone for which the time(s) indicated in the Schedule are given. The value provided should be among those listed in the IANA Time Zone Database.</p><p><br>Example</p><p><code>"scheduleTimezone": "Europe/London"</code></p> |
| scheduledEventType | [`Text`](https://schema.org/Text) | <p>The type of event this schedule related to.</p><p><br>Example</p><p><code>"scheduledEventType": "Event"</code></p>                                                                                                                             |
| startTime          | [`Time`](https://schema.org/Time) | <p>The start time of the event.</p><p><br>Example</p><p><code>"startTime": "12:00:00"</code></p>                                                                                                                                                  |

### **Required options**

While these properties are marked as optional, a data publisher must provide either a `byDay`, `byMonth`, `byMonthDay` or `repeatFrequency` for a schedule.

| Property        | Expected Type                                                                                                                                                   | Description                                                                                                                                                                                                                                                   |
| --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| byDay           | <p>Array of <a href="https://schema.org/DayOfWeek"><code>DayOfWeek</code></a><br>- or -<br>Array of <a href="https://schema.org/Text"><code>Text</code></a></p> | <p>Defines the day of the week upon which the Event takes place.</p><p>When using string values, this MUST conform to iCal BYDAY rule.</p><p><br>Example</p><p><code>"byDay": \[</code><br>  <code>"<https://schema.org/Monday>"</code><br><code>]</code></p> |
| byMonth         | Array of [`Integer`](https://schema.org/Integer)                                                                                                                | <p>Defines the months of the year on which the Event takes place. Specified as an integer between 1 and 12, with 1 representing January.</p><p><br>Example</p><p><code>"byMonth": \[</code><br>  <code>2</code><br><code>]</code></p>                         |
| byMonthDay      | Array of [`Integer`](https://schema.org/Integer)                                                                                                                | <p>Defines the days of the month on which the Event takes place. Specified as an integer between 1 and 31</p><p><br>Example</p><p><code>"byMonthDay": \[</code><br>  <code>28</code><br><code>]</code></p>                                                    |
| repeatFrequency | [`Duration`](https://schema.org/Duration)                                                                                                                       | <p>Defines the frequency at which Events will occur according to a Schedule. The intervals between events should be defined as a Duration of time.</p><p><br>Example</p><p><code>"repeatFrequency": "P1D"</code></p>                                          |

### **Recommended properties**

| Property    | Expected Type                             | Description                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| ----------- | ----------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| duration    | [`Duration`](https://schema.org/Duration) | <p>The duration of the event given in \[ISO8601] format.</p><p><br>Example</p><p><code>"duration": "PT1H"</code></p>                                                                                                                                                                                                                                                                                                                           |
| endDate     | [`Date`](https://schema.org/Date)         | <p>The end date of the schedule.</p><p><br>Example</p><p><code>"endDate": "2018-01-27"</code></p>                                                                                                                                                                                                                                                                                                                                              |
| idTemplate  | [`Text`](https://schema.org/Text)         | <p>An RFC6570 compliant URI template that can be used to generate a unique identifier (<code>@id</code>) for every event described by the schedule. This property is required if the data provider is supporting third-party booking via the Open Booking API, or providing complimentary individual <code>subEvent</code>s.</p><p><br>Example</p><p><code>"idTemplate": "<https://api.example.org/session-series/123/{startDate}>"</code></p> |
| startDate   | [`Date`](https://schema.org/Date)         | <p>The start date of the event.</p><p><br>Example</p><p><code>"startDate": "2018-01-27"</code></p>                                                                                                                                                                                                                                                                                                                                             |
| urlTemplate | [`Text`](https://schema.org/Text)         | <p>An RFC6570 compliant URI template that can be used to generate a unique <code>url</code> for every event described by the schedule. This property is required if the data provider wants to provide participants with a unique URL to book to attend an event.</p><p><br>Example</p><p><code>"urlTemplate": "<https://example.org/session-series/123/{startDate}>"</code></p>                                                               |

### **Optional properties**

| Property    | Expected Type                                                                                                                                                 | Description                                                                                                                                                                                                                                                                                                                                                                                                |
| ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| exceptDate  | <p>Array of <a href="https://schema.org/Date"><code>Date</code></a><br>- or -<br>Array of <a href="https://schema.org/DateTime"><code>DateTime</code></a></p> | <p>Exception dates where the schedule should not generate an event.</p><p><br>Example</p><p><code>"exceptDate": \[</code><br>  <code>"2016-04-13T17:10:00Z",</code><br>  <code>"2016-09-14T17:10:00Z",</code><br>  <code>"2016-12-14T18:10:00Z",</code><br>  <code>"2016-12-21T18:10:00Z",</code><br>  <code>"2016-12-28T18:10:00Z",</code><br>  <code>"2017-01-04T18:10:00Z"</code><br><code>]</code></p> |
| repeatCount | [`Integer`](https://schema.org/Integer)                                                                                                                       | <p>Defines the number of times a recurring Event will take place.</p><p><br>Example</p><p><code>"repeatCount": 3</code></p>                                                                                                                                                                                                                                                                                |

### **Beta Extension properties**

These properties are defined in the [OpenActive Beta Extension](https://openactive.io/ns-beta). The OpenActive Beta Extension is defined as a convenience to help document properties that are in active testing and review by the community. Publishers should not assume that properties in the beta namespace will either be added to the core specification or be included in the namespace over the long term.

| Property      | Expected Type                     | Description                                                                                                                                                                                                                                                                            |
| ------------- | --------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| beta:timeZone | [`Text`](https://schema.org/Text) | <p><strong>DEPRECATED</strong>: Please use <code>scheduleTimezone</code> instead.</p><p><a href="https://github.com/openactive/modelling-opportunity-data/issues/197">Proposal #197</a></p><p>The time zone used to generate occurrences, same as iCal TZID. E.g. 'Europe/London'.</p> |

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# ScheduledSession

This page describes the ScheduledSession type.

This type is derived from <https://schema.org/Event>, which means that any of this type's properties within schema.org may also be used. Note however the properties on this page must be used in preference if a relevant property is available.

## **Properties**

### **Required properties**

| Property  | Expected Type                             | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| --------- | ----------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| @type     | [`Text`](https://schema.org/Text)         | Must always be present and set to `"@type": "ScheduledSession"`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| @id       | [`URL`](https://schema.org/URL)           | <p>A unique URI-based identifier for the record.</p><p><code>@id</code> properties are used as identifiers for compatibility with JSON-LD. The value of such a property must always be an absolute URI that provides a stable globally unique identifier for the resource, as described in <a href="https://tools.ietf.org/html/rfc3986">RFC3986</a>.</p><p>The primary purpose of the URI format in this context is to provide natural namespacing for the identifier. Hence, the URI itself may not resolve to a valid endpoint, but must use a domain name controlled by the resource owner (the organisation responsible for the OpenActive open data feed).</p><p><br>Example</p><p><code>"@id": "<https://api.example.com/scheduled-sessions/12345>"</code></p> |
| startDate | [`DateTime`](https://schema.org/DateTime) | <p>The start date and time of the event.</p><p><br>Example</p><p><code>"startDate": "2018-01-27T12:00:00Z"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |

### **Recommended properties**

| Property                  | Expected Type                                                                | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| ------------------------- | ---------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| endDate                   | [`DateTime`](https://schema.org/DateTime)                                    | <p>The end date and time of the event.</p><p>It is recommended that publishers provide either an schema:endDate or a schema:duration for an event.</p><p><br>Example</p><p><code>"endDate": "2018-01-27T12:00:00Z"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| eventStatus               | [`EventStatusType`](https://schema.org/EventStatusType)                      | <p>The status of an event. Can be used to indicate rescheduled or cancelled events</p><p><br>Example</p><p><code>"eventStatus": "<https://schema.org/EventScheduled>"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| leader                    | Array of [`Person`](https://developer.openactive.io/data-model/types/person) | <p>Refers to a person (schema:Person) who will be leading an event. E.g. a coach. This is a more specific role than an organiser or a contributor. The person will need to have given their consent for their personal information to be present in the Open Data.</p><p><br>Example</p><p><code>"leader": \[</code><br>  <code>{</code><br>    <code>"@type": "Person",</code><br>    <code>"familyName": "Smith",</code><br>    <code>"givenName": "Nicole",</code><br>    <code>"gender": "<https://schema.org/Male>",</code><br>    <code>"@id": "<https://example.com/locations/1234ABCD/leaders/89>",</code><br>    <code>"identifier": 89</code><br>  <code>}</code><br><code>]</code></p> |
| maximumAttendeeCapacity   | [`Integer`](https://schema.org/Integer)                                      | <p>The maximum capacity of the Event.</p><p><br>Example</p><p><code>"maximumAttendeeCapacity": 30</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| offers                    | Array of [`Offer`](https://developer.openactive.io/data-model/types/offer)   | <p>An array of schema:Offer that include the price of attending.</p><p><br>Example</p><p><code>"offers": \[</code><br>  <code>{</code><br>    <code>"@type": "Offer",</code><br>    <code>"identifier": "OX-AD",</code><br>    <code>"name": "Adult",</code><br>    <code>"price": 3.3,</code><br>    <code>"priceCurrency": "GBP",</code><br>    <code>"url": "<https://profile.everyoneactive.com/booking?Site=0140&Activities=1402CBP20150217&Culture=en-GB>"</code><br>  <code>}</code><br><code>]</code></p>                                                                                                                                                                                 |
| remainingAttendeeCapacity | [`Integer`](https://schema.org/Integer)                                      | <p>The number of places that are still available for the Event.</p><p><br>Example</p><p><code>"remainingAttendeeCapacity": 20</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| url                       | [`URL`](https://schema.org/URL)                                              | <p>A URL to a web page (or section of a page) that describes the event.</p><p><br>Example</p><p><code>"url": "<https://example.com/event/1234>"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |

### **Optional properties**

| Property                                | Expected Type                                                                                                                                                                                                                                                                                                                                                                                | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| --------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| accessibilityInformation                | [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                            | <p>Provide additional, specific documentation for participants about how disabilities are, or can be supported at the Event.</p><p><br>Example</p><p><code>"accessibilityInformation": "This route has been British Cycling assessed as an accessible route, meaning it is suitable for the majority of adaptive bikes. The route will have no or low levels of traffic, there will be plenty of space and will have a good surface throughout. If you have any questions about using this route on an adaptive bike on this ride, please use visit <https://www.letsride.co.uk/accessibility> or call 0123 456 7000 and ask for the Recreation team."</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| accessibilitySupport                    | Array of [`Concept`](https://developer.openactive.io/data-model/types/concept)                                                                                                                                                                                                                                                                                                               | <p>Used to specify the types of disabilities or impairments that are supported at an event.</p><p><br>Example</p><p><code>"accessibilitySupport": \[</code><br>  <code>{</code><br>    <code>"@type": "Concept",</code><br>    <code>"@id": "<https://openactive.io/accessibility-support#1393f2dc-3fcc-4be9-a99f-f1e51f5ad277>",</code><br>    <code>"prefLabel": "Visual impairment",</code><br>    <code>"inScheme": "<https://openactive.io/accessibility-support>"</code><br>  <code>}</code><br><code>]</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| activity                                | Array of [`Concept`](https://developer.openactive.io/data-model/types/concept)                                                                                                                                                                                                                                                                                                               | <p>Specifies the physical activity or activities that will take place during an event.</p><p><br>Example</p><p><code>"activity": \[</code><br>  <code>{</code><br>    <code>"@type": "Concept",</code><br>    <code>"@id": "<https://openactive.io/activity-list#5e78bcbe-36db-425a-9064-bf96d09cc351>",</code><br>    <code>"prefLabel": "Bodypump™",</code><br>    <code>"inScheme": "<https://openactive.io/activity-list>"</code><br>  <code>}</code><br><code>]</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| additionalAdmissionRestriction          | Array of [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                   | <p>Free text restrictions that must be displayed prominently to the user before booking. This property must only contain restrictions not described by <code>oa:ageRestriction</code> or <code>oa:genderRestriction</code>.</p><p><br>Example</p><p><code>"additionalAdmissionRestriction": \[</code><br>  <code>"Participants younger than 12 must be accompanied by an adult",</code><br>  <code>"Participants must be comfortable standing for long periods of time"</code><br><code>]</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| ageRange                                | [`QuantitativeValue`](https://developer.openactive.io/data-model/types/quantitativevalue)                                                                                                                                                                                                                                                                                                    | <p>Indicates that an event is recommended as being suitable for or is targetted at a specific age range.</p><p><br>Example</p><p><code>"ageRange": {</code><br>  <code>"@type": "QuantitativeValue",</code><br>  <code>"minValue": 50,</code><br>  <code>"maxValue": 60</code><br><code>}</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| ageRestriction                          | [`QuantitativeValue`](https://developer.openactive.io/data-model/types/quantitativevalue)                                                                                                                                                                                                                                                                                                    | <p>The enforced attendee age range requirement of the Event or Offer, that must be displayed prominently to the user before booking.</p><p><br>Example</p><p><code>"ageRestriction": {</code><br>  <code>"@type": "QuantitativeValue",</code><br>  <code>"minValue": 15,</code><br>  <code>"maxValue": 60</code><br><code>}</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| attendeeInstructions                    | [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                            | <p>Provides additional notes and instructions for event attendees, for example more information on how to find the event, what to bring, etc. The value of this property must not include HTML or other markup.</p><p><br>Example</p><p><code>"attendeeInstructions": "Ensure you bring trainers and a bottle of water."</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| category                                | <p>Array of <a href="https://developer.openactive.io/data-model/types/concept"><code>Concept</code></a><br>- or -<br>Array of <a href="https://schema.org/Text"><code>Text</code></a></p>                                                                                                                                                                                                    | <p>Provides a set of tags that help categorise and describe an event, e.g. its intensity, purpose, etc.</p><p><br>Example</p><p><code>"category": \[</code><br>  <code>"High Intensity"</code><br><code>]</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| contributor                             | Array of [`Person`](https://developer.openactive.io/data-model/types/person)                                                                                                                                                                                                                                                                                                                 | <p>A Person who contributes to the facilitation of the Event.</p><p><br>Example</p><p><code>"contributor": \[</code><br>  <code>{</code><br>    <code>"@type": "Person",</code><br>    <code>"familyName": "Smith",</code><br>    <code>"givenName": "Nicole",</code><br>    <code>"@id": "<https://example.com/locations/1234ABCD/leaders/89>",</code><br>    <code>"identifier": 89</code><br>  <code>}</code><br><code>]</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| customerAccountBookingRestriction       | Array of [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                   | <p>Free text restrictions to display to the Customer at the browse stage, that may apply when using a Customer Account to make the booking.</p><p>Note that this property is in EARLY RELEASE AND IS SUBJECT TO CHANGE, as the <a href="https://github.com/openactive/customer-accounts">Customer Accounts proposal</a> evolves.</p><p><br>Example</p><p><code>"customerAccountBookingRestriction": \[</code><br>  <code>"Gold members only",</code><br>  <code>"Gym induction required"</code><br><code>]</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| description                             | [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                            | <p>A plain text description of the event, which must not include HTML or other markup.</p><p><br>Example</p><p><code>"description": "A fast paced game that incorporates netball, handball and football."</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| duration                                | [`Duration`](https://schema.org/Duration)                                                                                                                                                                                                                                                                                                                                                    | <p>The duration of the event given in \[ISO8601] format.</p><p><br>Example</p><p><code>"duration": "PT1H"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| eventAttendanceMode                     | [`EventAttendanceModeEnumeration`](https://schema.org/EventAttendanceModeEnumeration)                                                                                                                                                                                                                                                                                                        | <p>The eventAttendanceMode of an event indicates whether it occurs online, offline, or a mix.</p><p><br>Example</p><p><code>"eventAttendanceMode": "<https://schema.org/OnlineEventAttendanceMode>"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| genderRestriction                       | [`GenderRestrictionType`](https://openactive.io/GenderRestrictionType)                                                                                                                                                                                                                                                                                                                       | <p>Indicates that an event is restricted to male, female or a mixed audience. This information must be displayed prominently to the user before booking. If a gender restriction isn't specified then applications should assume that an event is suitable for a mixed audience.</p><p><br>Example</p><p><code>"genderRestriction": "<https://openactive.io/FemaleOnly>"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| identifier                              | <p><a href="https://schema.org/Text"><code>Text</code></a><br>- or -<br><a href="https://developer.openactive.io/data-model/types/propertyvalue"><code>PropertyValue</code></a><br>- or -<br>Array of <a href="https://developer.openactive.io/data-model/types/propertyvalue"><code>PropertyValue</code></a><br>- or -<br><a href="https://schema.org/Integer"><code>Integer</code></a></p> | <p>A local non-URI identifier for the resource</p><p><br>Example</p><p><code>"identifier": "SB1234"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| image                                   | Array of [`ImageObject`](https://developer.openactive.io/data-model/types/imageobject)                                                                                                                                                                                                                                                                                                       | <p>An image or photo that depicts the event, e.g. a photo taken at a previous event.</p><p><br>Example</p><p><code>"image": \[</code><br>  <code>{</code><br>    <code>"@type": "ImageObject",</code><br>    <code>"url": "<http://example.com/static/image/speedball_large.jpg>",</code><br>    <code>"thumbnail": \[</code><br>      <code>{</code><br>        <code>"@type": "ImageObject",</code><br>        <code>"url": "<http://example.com/static/image/speedball_thumbnail.jpg>"</code><br>      <code>}</code><br>    <code>]</code><br>  <code>}</code><br><code>]</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| isAccessibleForFree                     | [`Boolean`](https://schema.org/Boolean)                                                                                                                                                                                                                                                                                                                                                      | <p>Whether the Event is accessible without charge.</p><p><br>Example</p><p><code>"isAccessibleForFree": "true"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| isCoached                               | [`Boolean`](https://schema.org/Boolean)                                                                                                                                                                                                                                                                                                                                                      | <p>A boolean property that indicates whether an Event will be coached. This flag allows an Event to be marked as being coached without having to specify a named individual as a coach. This addresses both privacy concerns and also scenarios where the actual coach may only be decided on the day.</p><p><br>Example</p><p><code>"isCoached": "true"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| isOpenBookingWithCustomerAccountAllowed | [`Boolean`](https://schema.org/Boolean)                                                                                                                                                                                                                                                                                                                                                      | <p>Indicates that a Customer Account may be used to book that opportunity.</p><p>Note that this property is in EARLY RELEASE AND IS SUBJECT TO CHANGE, as the <a href="https://github.com/openactive/customer-accounts">Customer Accounts proposal</a> evolves.</p><p><br>Example</p><p><code>"isOpenBookingWithCustomerAccountAllowed": "true"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| level                                   | <p>Array of <a href="https://schema.org/Text"><code>Text</code></a><br>- or -<br>Array of <a href="https://developer.openactive.io/data-model/types/concept"><code>Concept</code></a></p>                                                                                                                                                                                                    | <p>A general purpose property for specifying the suitability of an event for different participant “levels”. E.g. <code>Beginner</code>, <code>Intermediate</code>, <code>Advanced</code>. Or in the case of martial arts, specific belt requirements.</p><p><br>Example</p><p><code>"level": \[</code><br>  <code>"Beginner"</code><br><code>]</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| location                                | <p><a href="https://developer.openactive.io/data-model/types/place"><code>Place</code></a><br>- or -<br><code>@id</code> reference</p>                                                                                                                                                                                                                                                       | <p>The location at which the event will take place. Or, in the case of events that may span multiple locations, the initial meeting or starting point.</p><p>Locations must be specified as a <a href="https://github.com/openactive/developer-documentation/blob/master/models/place/README.md">Place</a> complete with a fully described geographic location and/or address.</p><p><br>Example</p><p><code>"location": {</code><br>  <code>"@type": "Place",</code><br>  <code>"@id": "<https://example.com/locations/1234ABCD>",</code><br>  <code>"identifier": "1234ABCD",</code><br>  <code>"address": {</code><br>    <code>"addressLocality": "New Malden",</code><br>    <code>"addressRegion": "London",</code><br>    <code>"postalCode": "NW5 3DU",</code><br>    <code>"streetAddress": "Raynes Park High School, 46A West Barnes Lane",</code><br>    <code>"@type": "PostalAddress"</code><br>  <code>},</code><br>  <code>"description": "Raynes Park High School in London",</code><br>  <code>"geo": {</code><br>    <code>"latitude": 51.4034423828125,</code><br>    <code>"longitude": -0.2369088977575302,</code><br>    <code>"@type": "GeoCoordinates"</code><br>  <code>},</code><br>  <code>"name": "Raynes Park High School",</code><br>  <code>"telephone": "01253 473934"</code><br><code>}</code></p> |
| maximumVirtualAttendeeCapacity          | [`Integer`](https://schema.org/Integer)                                                                                                                                                                                                                                                                                                                                                      | <p>Indicates the maximum number of connections to a shared virtual space.</p><p><br>Example</p><p><code>"maximumVirtualAttendeeCapacity": 20</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| meetingPoint                            | [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                            | <p>Instructions for the attendees of an Event about where they should meet the organizer or leader at the start of the event. Some larger locations may have several possible meeting points, so this property provides additional more specific directions.</p><p><br>Example</p><p><code>"meetingPoint": "At the entrance to the park"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| name                                    | [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                            | <p>The name of the event</p><p><br>Example</p><p><code>"name": "Speedball"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| programme                               | [`Brand`](https://developer.openactive.io/data-model/types/brand)                                                                                                                                                                                                                                                                                                                            | <p>Indicates that an event will be organised according to a specific Programme.</p><p><br>Example</p><p><code>"programme": {</code><br>  <code>"@type": "Brand",</code><br>  <code>"name": "Play Ball!",</code><br>  <code>"url": "<http://example.org/brand/play-ball>"</code><br><code>}</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| schedulingNote                          | [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                            | <p>Provides a note from an organizer relating to how this Event is scheduled.</p><p><br>Example</p><p><code>"schedulingNote": "This event doesn't run during school holidays"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| superEvent                              | <p><a href="https://developer.openactive.io/data-model/types/event"><code>Event</code></a><br>- or -<br><code>@id</code> reference</p>                                                                                                                                                                                                                                                       | Relates a child event to a parent event. Properties describing the parent event can be assumed to apply to the child, unless otherwise specified. A parent event might specify a recurring schedule, of which the child event is one specific instance                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |

### **Beta Extension properties**

These properties are defined in the [OpenActive Beta Extension](https://openactive.io/ns-beta). The OpenActive Beta Extension is defined as a convenience to help document properties that are in active testing and review by the community. Publishers should not assume that properties in the beta namespace will either be added to the core specification or be included in the namespace over the long term.

| Property                             | Expected Type                                                                               | Description                                                                                                                                                                                                                                                                                                                                      |
| ------------------------------------ | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| beta:affiliatedLocation              | [`Place`](https://schema.org/Place)                                                         | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/227">Proposal #227</a></p><p>The physical location affiliated with the virtual event, for example the original location of the event before it was moved online.</p>                                                                                                 |
| beta:attendeeCount                   | [`Integer`](https://schema.org/Integer)                                                     | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/274">Proposal #274</a></p><p>For events that have an unlimited number of tickets, captures the number of attendees (actual attendance).</p>                                                                                                                          |
| beta:bookingChannel                  | Array of [`BookingChannelType`](https://openactive.io/ns-beta#BookingChannelType)           | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/161">Proposal #161</a></p><p>The channels through which a booking can be made.</p>                                                                                                                                                                                   |
| beta:contactPoint                    | [`ContactPoint`](https://schema.org/ContactPoint)                                           | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/113">Proposal #113</a></p><p>Contact details for an Event, where they are not specifically related to the <code>organizer</code> or <code>leader</code>.</p>                                                                                                         |
| beta:distance                        | [`QuantitativeValue`](https://schema.org/QuantitativeValue)                                 | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/275">Proposal #275</a></p><p>The distance of a run, cycle or other activity. Must also include units.</p>                                                                                                                                                            |
| beta:donationPaymentUrl              | [`URL`](https://schema.org/URL)                                                             | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/234">Proposal #234</a></p><p>The URL of the webpage where the activity provider accepts donations.</p>                                                                                                                                                               |
| beta:estimatedDuration               | [`QuantitativeValue`](https://schema.org/QuantitativeValue)                                 | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/201">Proposal #201</a></p><p>A property that allows an Event duration to be represented as a range (e.g. 0-30mins, 30-60mins, 60-90mins, 90+).</p>                                                                                                                   |
| beta:facilitySetting                 | [`FacilitySettingType`](https://openactive.io/ns-beta#FacilitySettingType)                  | <p><a href="https://github.com/openactive/facility-types/issues/1">Proposal #1</a></p><p>Whether the event or facility is indoor or outdoor.</p>                                                                                                                                                                                                 |
| beta:formattedDescription            | [`Text`](https://schema.org/Text)                                                           | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/276">Proposal #276</a></p><p>Sometimes a description is stored with formatting (e.g. href, bold, italics, embedded YouTube videos). This formatting can be useful for data consumers. This property must contain HTML.</p>                                           |
| beta:isFirstSessionAccessibleForFree | [`Boolean`](https://schema.org/Boolean)                                                     | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/232">Proposal #232</a></p><p>A property that indicates whether the first session is free.</p>                                                                                                                                                                        |
| beta:isInteractivityPreferred        | [`Boolean`](https://schema.org/Boolean)                                                     | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/230">Proposal #230</a></p><p>Indicates whether the virtual event is interactive (e.g. Zoom with participant microphones and cameras on), or is just a one-way broadcast (e.g. Facebook Live, Instagram Live, Zoom with participant microphones and cameras off).</p> |
| beta:isScheduledAsSlots              | [`Boolean`](https://schema.org/Boolean)                                                     | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/301">Proposal #301</a></p><p>A property that indicates whether the event contains a high frequency of occurrences. Intended as a UI hint for interfaces that represent these occurrences.</p>                                                                        |
| beta:isVirtuallyCoached              | [`Boolean`](https://schema.org/Boolean)                                                     | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/71">Proposal #71</a></p><p>A property that indicates whether the event is led by a virtual coach. Only relevant if an event <code>isCoached</code>. If not provided is assumed to be <code>false</code>.</p>                                                         |
| beta:isWheelchairAccessible          | [`Boolean`](https://schema.org/Boolean)                                                     | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/166">Proposal #166</a></p><p>A property that details whether the event is suitable for wheelchair access. Placed on Event as this field could be used to detail whether the Event is suitable, as well as the Place.</p>                                             |
| beta:offerValidityPeriod             | [`Duration`](https://schema.org/Duration)                                                   | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/204">Proposal #204</a></p><p>Duration before the event for which the associated Offers are valid</p>                                                                                                                                                                 |
| beta:participantSuppliedEquipment    | [`RequiredStatusType`](https://developer.openactive.io/data-model/types/requiredstatustype) | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/229">Proposal #229</a></p><p>Indicates whether the participant must or may supply equipment for use in the Event.</p>                                                                                                                                                |
| beta:registrationCount               | [`Integer`](https://schema.org/Integer)                                                     | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/273">Proposal #273</a></p><p>For events that have an unlimited number of tickets, captures the number of registrations (intention to attend).</p>                                                                                                                    |
| beta:sportsActivityLocation          | Array of [`SportsActivityLocation`](https://schema.org/SportsActivityLocation)              | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/110">Proposal #110</a></p><p>Internal location of the event, e.g. Court 1</p>                                                                                                                                                                                        |
| beta:video                           | Array of [`VideoObject`](https://schema.org/VideoObject)                                    | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/88">Proposal #88</a></p><p>A related video object.</p>                                                                                                                                                                                                               |
| beta:virtualLocation                 | [`VirtualLocation`](https://pending.schema.org/VirtualLocation)                             | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/224">Proposal #224</a></p><p>Describes a means of electronic access to a shared virtual space.</p>                                                                                                                                                                   |

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# SessionSeries

This page describes the SessionSeries type.

This type is derived from <https://schema.org/Event>, which means that any of this type's properties within schema.org may also be used. Note however the properties on this page must be used in preference if a relevant property is available.

## **Properties**

### **Required properties**

| Property  | Expected Type                                                                                                                                                                                                       | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| @type     | [`Text`](https://schema.org/Text)                                                                                                                                                                                   | Must always be present and set to `"@type": "SessionSeries"`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| @id       | [`URL`](https://schema.org/URL)                                                                                                                                                                                     | <p>A unique URI-based identifier for the record.</p><p><code>@id</code> properties are used as identifiers for compatibility with JSON-LD. The value of such a property must always be an absolute URI that provides a stable globally unique identifier for the resource, as described in <a href="https://tools.ietf.org/html/rfc3986">RFC3986</a>.</p><p>The primary purpose of the URI format in this context is to provide natural namespacing for the identifier. Hence, the URI itself may not resolve to a valid endpoint, but must use a domain name controlled by the resource owner (the organisation responsible for the OpenActive open data feed).</p><p><br>Example</p><p><code>"@id": "<https://api.example.com/session-series/12345>"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| activity  | Array of [`Concept`](https://developer.openactive.io/data-model/types/concept)                                                                                                                                      | <p>Specifies the physical activity or activities that will take place during an event.</p><p><br>Example</p><p><code>"activity": \[</code><br>  <code>{</code><br>    <code>"@type": "Concept",</code><br>    <code>"@id": "<https://openactive.io/activity-list#5e78bcbe-36db-425a-9064-bf96d09cc351>",</code><br>    <code>"prefLabel": "Bodypump™",</code><br>    <code>"inScheme": "<https://openactive.io/activity-list>"</code><br>  <code>}</code><br><code>]</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| location  | <p><a href="https://developer.openactive.io/data-model/types/place"><code>Place</code></a><br>- or -<br><code>@id</code> reference</p>                                                                              | <p>The location at which the event will take place. Or, in the case of events that may span multiple locations, the initial meeting or starting point.</p><p>Locations must be specified as a <a href="https://github.com/openactive/developer-documentation/blob/master/models/place/README.md">Place</a> complete with a fully described geographic location and/or address.</p><p><br>Example</p><p><code>"location": {</code><br>  <code>"@type": "Place",</code><br>  <code>"@id": "<https://example.com/locations/1234ABCD>",</code><br>  <code>"identifier": "1234ABCD",</code><br>  <code>"address": {</code><br>    <code>"addressLocality": "New Malden",</code><br>    <code>"addressRegion": "London",</code><br>    <code>"postalCode": "NW5 3DU",</code><br>    <code>"streetAddress": "Raynes Park High School, 46A West Barnes Lane",</code><br>    <code>"@type": "PostalAddress"</code><br>  <code>},</code><br>  <code>"description": "Raynes Park High School in London",</code><br>  <code>"geo": {</code><br>    <code>"latitude": 51.4034423828125,</code><br>    <code>"longitude": -0.2369088977575302,</code><br>    <code>"@type": "GeoCoordinates"</code><br>  <code>},</code><br>  <code>"name": "Raynes Park High School",</code><br>  <code>"telephone": "01253 473934"</code><br><code>}</code></p> |
| name      | [`Text`](https://schema.org/Text)                                                                                                                                                                                   | <p>The name of the event</p><p><br>Example</p><p><code>"name": "Speedball"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| offers    | Array of [`Offer`](https://developer.openactive.io/data-model/types/offer)                                                                                                                                          | <p>An array of schema:Offer that include the price of attending.</p><p><br>Example</p><p><code>"offers": \[</code><br>  <code>{</code><br>    <code>"@type": "Offer",</code><br>    <code>"identifier": "OX-AD",</code><br>    <code>"name": "Adult",</code><br>    <code>"price": 3.3,</code><br>    <code>"priceCurrency": "GBP",</code><br>    <code>"url": "<https://profile.everyoneactive.com/booking?Site=0140&Activities=1402CBP20150217&Culture=en-GB>"</code><br>  <code>}</code><br><code>]</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| organizer | <p><a href="https://developer.openactive.io/data-model/types/organization"><code>Organization</code></a><br>- or -<br><a href="https://developer.openactive.io/data-model/types/person"><code>Person</code></a></p> | <p>The person or organization ultimately responsible for an event. An organizer might be an schema:Organization or a schema:Person.</p><p><br>Example</p><p><code>"organizer": {</code><br>  <code>"@type": "Organization",</code><br>  <code>"@id": "<https://id.bookingsystem.example.com/organizers/1>",</code><br>  <code>"name": "Central Speedball Association",</code><br>  <code>"url": "<http://www.speedball-world.com>"</code><br><code>}</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| url       | [`URL`](https://schema.org/URL)                                                                                                                                                                                     | <p>A URL to a web page (or section of a page) that describes the event.</p><p><br>Example</p><p><code>"url": "<https://example.com/event/1234>"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |

### **Recommended properties**

| Property          | Expected Type                                                                                                                                                                             | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ageRange          | [`QuantitativeValue`](https://developer.openactive.io/data-model/types/quantitativevalue)                                                                                                 | <p>Indicates that an event is recommended as being suitable for or is targetted at a specific age range.</p><p><br>Example</p><p><code>"ageRange": {</code><br>  <code>"@type": "QuantitativeValue",</code><br>  <code>"minValue": 50,</code><br>  <code>"maxValue": 60</code><br><code>}</code></p>                                                                                                                                                                                                                                                                                                                                                                                              |
| description       | [`Text`](https://schema.org/Text)                                                                                                                                                         | <p>A plain text description of the event, which must not include HTML or other markup.</p><p><br>Example</p><p><code>"description": "A fast paced game that incorporates netball, handball and football."</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| genderRestriction | [`GenderRestrictionType`](https://openactive.io/GenderRestrictionType)                                                                                                                    | <p>Indicates that an event is restricted to male, female or a mixed audience. This information must be displayed prominently to the user before booking. If a gender restriction isn't specified then applications should assume that an event is suitable for a mixed audience.</p><p><br>Example</p><p><code>"genderRestriction": "<https://openactive.io/FemaleOnly>"</code></p>                                                                                                                                                                                                                                                                                                               |
| image             | Array of [`ImageObject`](https://developer.openactive.io/data-model/types/imageobject)                                                                                                    | <p>An image or photo that depicts the event, e.g. a photo taken at a previous event.</p><p><br>Example</p><p><code>"image": \[</code><br>  <code>{</code><br>    <code>"@type": "ImageObject",</code><br>    <code>"url": "<http://example.com/static/image/speedball_large.jpg>",</code><br>    <code>"thumbnail": \[</code><br>      <code>{</code><br>        <code>"@type": "ImageObject",</code><br>        <code>"url": "<http://example.com/static/image/speedball_thumbnail.jpg>"</code><br>      <code>}</code><br>    <code>]</code><br>  <code>}</code><br><code>]</code></p>                                                                                                          |
| leader            | Array of [`Person`](https://developer.openactive.io/data-model/types/person)                                                                                                              | <p>Refers to a person (schema:Person) who will be leading an event. E.g. a coach. This is a more specific role than an organiser or a contributor. The person will need to have given their consent for their personal information to be present in the Open Data.</p><p><br>Example</p><p><code>"leader": \[</code><br>  <code>{</code><br>    <code>"@type": "Person",</code><br>    <code>"familyName": "Smith",</code><br>    <code>"givenName": "Nicole",</code><br>    <code>"gender": "<https://schema.org/Male>",</code><br>    <code>"@id": "<https://example.com/locations/1234ABCD/leaders/89>",</code><br>    <code>"identifier": 89</code><br>  <code>}</code><br><code>]</code></p> |
| level             | <p>Array of <a href="https://schema.org/Text"><code>Text</code></a><br>- or -<br>Array of <a href="https://developer.openactive.io/data-model/types/concept"><code>Concept</code></a></p> | <p>A general purpose property for specifying the suitability of an event for different participant “levels”. E.g. <code>Beginner</code>, <code>Intermediate</code>, <code>Advanced</code>. Or in the case of martial arts, specific belt requirements.</p><p><br>Example</p><p><code>"level": \[</code><br>  <code>"Beginner"</code><br><code>]</code></p>                                                                                                                                                                                                                                                                                                                                        |

### **Optional properties**

| Property                                | Expected Type                                                                                                                                                                                                                                                                                                                                                                                | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| --------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| accessibilityInformation                | [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                            | <p>Provide additional, specific documentation for participants about how disabilities are, or can be supported at the Event.</p><p><br>Example</p><p><code>"accessibilityInformation": "This route has been British Cycling assessed as an accessible route, meaning it is suitable for the majority of adaptive bikes. The route will have no or low levels of traffic, there will be plenty of space and will have a good surface throughout. If you have any questions about using this route on an adaptive bike on this ride, please use visit <https://www.letsride.co.uk/accessibility> or call 0123 456 7000 and ask for the Recreation team."</code></p> |
| accessibilitySupport                    | Array of [`Concept`](https://developer.openactive.io/data-model/types/concept)                                                                                                                                                                                                                                                                                                               | <p>Used to specify the types of disabilities or impairments that are supported at an event.</p><p><br>Example</p><p><code>"accessibilitySupport": \[</code><br>  <code>{</code><br>    <code>"@type": "Concept",</code><br>    <code>"@id": "<https://openactive.io/accessibility-support#1393f2dc-3fcc-4be9-a99f-f1e51f5ad277>",</code><br>    <code>"prefLabel": "Visual impairment",</code><br>    <code>"inScheme": "<https://openactive.io/accessibility-support>"</code><br>  <code>}</code><br><code>]</code></p>                                                                                                                                          |
| additionalAdmissionRestriction          | Array of [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                   | <p>Free text restrictions that must be displayed prominently to the user before booking. This property must only contain restrictions not described by <code>oa:ageRestriction</code> or <code>oa:genderRestriction</code>.</p><p><br>Example</p><p><code>"additionalAdmissionRestriction": \[</code><br>  <code>"Participants younger than 12 must be accompanied by an adult",</code><br>  <code>"Participants must be comfortable standing for long periods of time"</code><br><code>]</code></p>                                                                                                                                                              |
| ageRestriction                          | [`QuantitativeValue`](https://developer.openactive.io/data-model/types/quantitativevalue)                                                                                                                                                                                                                                                                                                    | <p>The enforced attendee age range requirement of the Event or Offer, that must be displayed prominently to the user before booking.</p><p><br>Example</p><p><code>"ageRestriction": {</code><br>  <code>"@type": "QuantitativeValue",</code><br>  <code>"minValue": 15,</code><br>  <code>"maxValue": 60</code><br><code>}</code></p>                                                                                                                                                                                                                                                                                                                            |
| attendeeInstructions                    | [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                            | <p>Provides additional notes and instructions for event attendees, for example more information on how to find the event, what to bring, etc. The value of this property must not include HTML or other markup.</p><p><br>Example</p><p><code>"attendeeInstructions": "Ensure you bring trainers and a bottle of water."</code></p>                                                                                                                                                                                                                                                                                                                               |
| category                                | <p>Array of <a href="https://developer.openactive.io/data-model/types/concept"><code>Concept</code></a><br>- or -<br>Array of <a href="https://schema.org/Text"><code>Text</code></a></p>                                                                                                                                                                                                    | <p>Provides a set of tags that help categorise and describe an event, e.g. its intensity, purpose, etc.</p><p><br>Example</p><p><code>"category": \[</code><br>  <code>"High Intensity"</code><br><code>]</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| contributor                             | Array of [`Person`](https://developer.openactive.io/data-model/types/person)                                                                                                                                                                                                                                                                                                                 | <p>A Person who contributes to the facilitation of the Event.</p><p><br>Example</p><p><code>"contributor": \[</code><br>  <code>{</code><br>    <code>"@type": "Person",</code><br>    <code>"familyName": "Smith",</code><br>    <code>"givenName": "Nicole",</code><br>    <code>"@id": "<https://example.com/locations/1234ABCD/leaders/89>",</code><br>    <code>"identifier": 89</code><br>  <code>}</code><br><code>]</code></p>                                                                                                                                                                                                                            |
| customerAccountBookingRestriction       | Array of [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                   | <p>Free text restrictions to display to the Customer at the browse stage, that may apply when using a Customer Account to make the booking.</p><p>Note that this property is in EARLY RELEASE AND IS SUBJECT TO CHANGE, as the <a href="https://github.com/openactive/customer-accounts">Customer Accounts proposal</a> evolves.</p><p><br>Example</p><p><code>"customerAccountBookingRestriction": \[</code><br>  <code>"Gold members only",</code><br>  <code>"Gym induction required"</code><br><code>]</code></p>                                                                                                                                             |
| duration                                | [`Duration`](https://schema.org/Duration)                                                                                                                                                                                                                                                                                                                                                    | <p>The duration of the event given in \[ISO8601] format.</p><p><br>Example</p><p><code>"duration": "PT1H"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| endDate                                 | [`DateTime`](https://schema.org/DateTime)                                                                                                                                                                                                                                                                                                                                                    | <p>The end date and time of the event. Can be specified as a schema:DateTime</p><p>It is recommended that publishers provide either an schema:endDate or a schema:duration for an event.</p><p><br>Example</p><p><code>"endDate": "2018-01-27T12:00:00Z"</code></p>                                                                                                                                                                                                                                                                                                                                                                                               |
| eventAttendanceMode                     | [`EventAttendanceModeEnumeration`](https://schema.org/EventAttendanceModeEnumeration)                                                                                                                                                                                                                                                                                                        | <p>The eventAttendanceMode of an event indicates whether it occurs online, offline, or a mix.</p><p><br>Example</p><p><code>"eventAttendanceMode": "<https://schema.org/OnlineEventAttendanceMode>"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| eventSchedule                           | Array of [`Schedule`](https://developer.openactive.io/data-model/types/schedule)                                                                                                                                                                                                                                                                                                             | <p>A an array of oa:Schedule or oa:PartialSchedule, which represents a recurrence pattern.</p><p><br>Example</p><p><code>"eventSchedule": \[</code><br>  <code>{</code><br>    <code>"@type": "PartialSchedule",</code><br>    <code>"repeatFrequency": "P1W",</code><br>    <code>"startTime": "20:15",</code><br>    <code>"endTime": "20:45",</code><br>    <code>"byDay": \[</code><br>      <code>"<http://schema.org/Tuesday>"</code><br>    <code>],</code><br>    <code>"scheduleTimezone": "Europe/London"</code><br>  <code>}</code><br><code>]</code></p>                                                                                              |
| eventStatus                             | [`EventStatusType`](https://schema.org/EventStatusType)                                                                                                                                                                                                                                                                                                                                      | <p>The status of an event. Can be used to indicate rescheduled or cancelled events</p><p><br>Example</p><p><code>"eventStatus": "<https://schema.org/EventScheduled>"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| identifier                              | <p><a href="https://schema.org/Text"><code>Text</code></a><br>- or -<br><a href="https://developer.openactive.io/data-model/types/propertyvalue"><code>PropertyValue</code></a><br>- or -<br>Array of <a href="https://developer.openactive.io/data-model/types/propertyvalue"><code>PropertyValue</code></a><br>- or -<br><a href="https://schema.org/Integer"><code>Integer</code></a></p> | <p>A local non-URI identifier for the resource</p><p><br>Example</p><p><code>"identifier": "SB1234"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| isAccessibleForFree                     | [`Boolean`](https://schema.org/Boolean)                                                                                                                                                                                                                                                                                                                                                      | <p>Whether the Event is accessible without charge.</p><p><br>Example</p><p><code>"isAccessibleForFree": "true"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| isCoached                               | [`Boolean`](https://schema.org/Boolean)                                                                                                                                                                                                                                                                                                                                                      | <p>A boolean property that indicates whether an Event will be coached. This flag allows an Event to be marked as being coached without having to specify a named individual as a coach. This addresses both privacy concerns and also scenarios where the actual coach may only be decided on the day.</p><p><br>Example</p><p><code>"isCoached": "true"</code></p>                                                                                                                                                                                                                                                                                               |
| isOpenBookingWithCustomerAccountAllowed | [`Boolean`](https://schema.org/Boolean)                                                                                                                                                                                                                                                                                                                                                      | <p>Indicates that a Customer Account may be used to book that opportunity.</p><p>Note that this property is in EARLY RELEASE AND IS SUBJECT TO CHANGE, as the <a href="https://github.com/openactive/customer-accounts">Customer Accounts proposal</a> evolves.</p><p><br>Example</p><p><code>"isOpenBookingWithCustomerAccountAllowed": "true"</code></p>                                                                                                                                                                                                                                                                                                        |
| maximumAttendeeCapacity                 | [`Integer`](https://schema.org/Integer)                                                                                                                                                                                                                                                                                                                                                      | <p>The maximum capacity of the Event.</p><p><br>Example</p><p><code>"maximumAttendeeCapacity": 30</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| maximumVirtualAttendeeCapacity          | [`Integer`](https://schema.org/Integer)                                                                                                                                                                                                                                                                                                                                                      | <p>Indicates the maximum number of connections to a shared virtual space.</p><p><br>Example</p><p><code>"maximumVirtualAttendeeCapacity": 20</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| meetingPoint                            | [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                            | <p>Instructions for the attendees of an Event about where they should meet the organizer or leader at the start of the event. Some larger locations may have several possible meeting points, so this property provides additional more specific directions.</p><p><br>Example</p><p><code>"meetingPoint": "At the entrance to the park"</code></p>                                                                                                                                                                                                                                                                                                               |
| programme                               | [`Brand`](https://developer.openactive.io/data-model/types/brand)                                                                                                                                                                                                                                                                                                                            | <p>Indicates that an event will be organised according to a specific Programme.</p><p><br>Example</p><p><code>"programme": {</code><br>  <code>"@type": "Brand",</code><br>  <code>"name": "Play Ball!",</code><br>  <code>"url": "<http://example.org/brand/play-ball>"</code><br><code>}</code></p>                                                                                                                                                                                                                                                                                                                                                             |
| schedulingNote                          | [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                            | <p>Provides a note from an organizer relating to how this Event is scheduled.</p><p><br>Example</p><p><code>"schedulingNote": "This event doesn't run during school holidays"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| startDate                               | [`DateTime`](https://schema.org/DateTime)                                                                                                                                                                                                                                                                                                                                                    | <p>The start date and time of the event. Can be specified as a schema:DateTime.</p><p><br>Example</p><p><code>"startDate": "2018-01-27T12:00:00Z"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| subEvent                                | Array of [`ScheduledSession`](https://developer.openactive.io/data-model/types/scheduledsession)                                                                                                                                                                                                                                                                                             | Relates a parent event to a child event. Properties describing the parent event can be assumed to apply to the child, unless otherwise specified. A child event might be a specific instance of an Event within a schedule                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| superEvent                              | [`Event`](https://developer.openactive.io/data-model/types/event)                                                                                                                                                                                                                                                                                                                            | Relates a child event to a parent event. Properties describing the parent event can be assumed to apply to the child, unless otherwise specified. A parent event might specify a recurring schedule, of which the child event is one specific instance                                                                                                                                                                                                                                                                                                                                                                                                            |

### **Beta Extension properties**

These properties are defined in the [OpenActive Beta Extension](https://openactive.io/ns-beta). The OpenActive Beta Extension is defined as a convenience to help document properties that are in active testing and review by the community. Publishers should not assume that properties in the beta namespace will either be added to the core specification or be included in the namespace over the long term.

| Property                             | Expected Type                                                                               | Description                                                                                                                                                                                                                                                                                                                                      |
| ------------------------------------ | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| beta:affiliatedLocation              | [`Place`](https://schema.org/Place)                                                         | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/227">Proposal #227</a></p><p>The physical location affiliated with the virtual event, for example the original location of the event before it was moved online.</p>                                                                                                 |
| beta:attendeeCount                   | [`Integer`](https://schema.org/Integer)                                                     | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/274">Proposal #274</a></p><p>For events that have an unlimited number of tickets, captures the number of attendees (actual attendance).</p>                                                                                                                          |
| beta:bookingChannel                  | Array of [`BookingChannelType`](https://openactive.io/ns-beta#BookingChannelType)           | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/161">Proposal #161</a></p><p>The channels through which a booking can be made.</p>                                                                                                                                                                                   |
| beta:contactPoint                    | [`ContactPoint`](https://schema.org/ContactPoint)                                           | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/113">Proposal #113</a></p><p>Contact details for an Event, where they are not specifically related to the <code>organizer</code> or <code>leader</code>.</p>                                                                                                         |
| beta:distance                        | [`QuantitativeValue`](https://schema.org/QuantitativeValue)                                 | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/275">Proposal #275</a></p><p>The distance of a run, cycle or other activity. Must also include units.</p>                                                                                                                                                            |
| beta:donationPaymentUrl              | [`URL`](https://schema.org/URL)                                                             | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/234">Proposal #234</a></p><p>The URL of the webpage where the activity provider accepts donations.</p>                                                                                                                                                               |
| beta:estimatedDuration               | [`QuantitativeValue`](https://schema.org/QuantitativeValue)                                 | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/201">Proposal #201</a></p><p>A property that allows an Event duration to be represented as a range (e.g. 0-30mins, 30-60mins, 60-90mins, 90+).</p>                                                                                                                   |
| beta:facilitySetting                 | [`FacilitySettingType`](https://openactive.io/ns-beta#FacilitySettingType)                  | <p><a href="https://github.com/openactive/facility-types/issues/1">Proposal #1</a></p><p>Whether the event or facility is indoor or outdoor.</p>                                                                                                                                                                                                 |
| beta:formattedDescription            | [`Text`](https://schema.org/Text)                                                           | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/276">Proposal #276</a></p><p>Sometimes a description is stored with formatting (e.g. href, bold, italics, embedded YouTube videos). This formatting can be useful for data consumers. This property must contain HTML.</p>                                           |
| beta:isFirstSessionAccessibleForFree | [`Boolean`](https://schema.org/Boolean)                                                     | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/232">Proposal #232</a></p><p>A property that indicates whether the first session is free.</p>                                                                                                                                                                        |
| beta:isInteractivityPreferred        | [`Boolean`](https://schema.org/Boolean)                                                     | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/230">Proposal #230</a></p><p>Indicates whether the virtual event is interactive (e.g. Zoom with participant microphones and cameras on), or is just a one-way broadcast (e.g. Facebook Live, Instagram Live, Zoom with participant microphones and cameras off).</p> |
| beta:isScheduledAsSlots              | [`Boolean`](https://schema.org/Boolean)                                                     | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/301">Proposal #301</a></p><p>A property that indicates whether the event contains a high frequency of occurrences. Intended as a UI hint for interfaces that represent these occurrences.</p>                                                                        |
| beta:isVirtuallyCoached              | [`Boolean`](https://schema.org/Boolean)                                                     | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/71">Proposal #71</a></p><p>A property that indicates whether the event is led by a virtual coach. Only relevant if an event <code>isCoached</code>. If not provided is assumed to be <code>false</code>.</p>                                                         |
| beta:isWheelchairAccessible          | [`Boolean`](https://schema.org/Boolean)                                                     | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/166">Proposal #166</a></p><p>A property that details whether the event is suitable for wheelchair access. Placed on Event as this field could be used to detail whether the Event is suitable, as well as the Place.</p>                                             |
| beta:offerValidityPeriod             | [`Duration`](https://schema.org/Duration)                                                   | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/204">Proposal #204</a></p><p>Duration before the event for which the associated Offers are valid</p>                                                                                                                                                                 |
| beta:participantSuppliedEquipment    | [`RequiredStatusType`](https://developer.openactive.io/data-model/types/requiredstatustype) | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/229">Proposal #229</a></p><p>Indicates whether the participant must or may supply equipment for use in the Event.</p>                                                                                                                                                |
| beta:registrationCount               | [`Integer`](https://schema.org/Integer)                                                     | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/273">Proposal #273</a></p><p>For events that have an unlimited number of tickets, captures the number of registrations (intention to attend).</p>                                                                                                                    |
| beta:sportsActivityLocation          | Array of [`SportsActivityLocation`](https://schema.org/SportsActivityLocation)              | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/110">Proposal #110</a></p><p>Internal location of the event, e.g. Court 1</p>                                                                                                                                                                                        |
| beta:video                           | Array of [`VideoObject`](https://schema.org/VideoObject)                                    | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/88">Proposal #88</a></p><p>A related video object.</p>                                                                                                                                                                                                               |
| beta:virtualLocation                 | [`VirtualLocation`](https://pending.schema.org/VirtualLocation)                             | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/224">Proposal #224</a></p><p>Describes a means of electronic access to a shared virtual space.</p>                                                                                                                                                                   |

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# ShortAnswerFormFieldSpecification

This page describes the ShortAnswerFormFieldSpecification type.

This type is derived from <https://schema.org/PropertyValueSpecification>, which means that any of this type's properties within schema.org may also be used. Note however the properties on this page must be used in preference if a relevant property is available.

## **Properties**

### **Required properties**

| Property | Expected Type                     | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| -------- | --------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| @type    | [`Text`](https://schema.org/Text) | Must always be present and set to `"@type": "ShortAnswerFormFieldSpecification"`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| @id      | [`URL`](https://schema.org/URL)   | <p>A unique URI-based identifier for the record.</p><p><code>@id</code> properties are used as identifiers for compatibility with JSON-LD. The value of such a property must always be an absolute URI that provides a stable globally unique identifier for the resource, as described in <a href="https://tools.ietf.org/html/rfc3986">RFC3986</a>.</p><p>The primary purpose of the URI format in this context is to provide natural namespacing for the identifier. Hence, the URI itself may not resolve to a valid endpoint, but must use a domain name controlled by the resource owner (the organisation responsible for the OpenActive open data feed).</p><p><br>Example</p><p><code>"@id": "<https://example.com/question1>"</code></p> |
| name     | [`Text`](https://schema.org/Text) | Display label for the field.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |

### **Recommended properties**

| Property    | Expected Type                     | Description                                                                             |
| ----------- | --------------------------------- | --------------------------------------------------------------------------------------- |
| description | [`Text`](https://schema.org/Text) | Descriptive help plain text for the field, which must not include HTML or other markup. |

### **Optional properties**

| Property      | Expected Type                           | Description                                                                   |
| ------------- | --------------------------------------- | ----------------------------------------------------------------------------- |
| valueRequired | [`Boolean`](https://schema.org/Boolean) | Specifies that a value for the field is required to proceed with the booking. |

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# Showers

This page describes the Showers type.

This type is derived from <https://schema.org/LocationFeatureSpecification>, which means that any of this type's properties within schema.org may also be used. Note however the properties on this page must be used in preference if a relevant property is available.

## **Properties**

### **Required properties**

| Property | Expected Type                           | Description                                                                                                                    |
| -------- | --------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ |
| @type    | [`Text`](https://schema.org/Text)       | Must always be present and set to `"@type": "Showers"`                                                                         |
| name     | [`Text`](https://schema.org/Text)       | <p>A string, suitable for presentation in user interfaces.</p><p><br>Example</p><p><code>"name": "Poolside Showers"</code></p> |
| value    | [`Boolean`](https://schema.org/Boolean) | A boolean value indicating whether this ammenity is available.                                                                 |

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# Slot

This page describes the Slot type.

This type is derived from <https://schema.org/Event>, which means that any of this type's properties within schema.org may also be used. Note however the properties on this page must be used in preference if a relevant property is available.

## **Properties**

### **Required properties**

| Property      | Expected Type                                                                                                                                      | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| @type         | [`Text`](https://schema.org/Text)                                                                                                                  | Must always be present and set to `"@type": "Slot"`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| @id           | [`URL`](https://schema.org/URL)                                                                                                                    | <p>A unique URI-based identifier for the record.</p><p><code>@id</code> properties are used as identifiers for compatibility with JSON-LD. The value of such a property must always be an absolute URI that provides a stable globally unique identifier for the resource, as described in <a href="https://tools.ietf.org/html/rfc3986">RFC3986</a>.</p><p>The primary purpose of the URI format in this context is to provide natural namespacing for the identifier. Hence, the URI itself may not resolve to a valid endpoint, but must use a domain name controlled by the resource owner (the organisation responsible for the OpenActive open data feed).</p><p><br>Example</p><p><code>"@id": "<https://api.example.com/slots/12345>"</code></p> |
| duration      | [`Duration`](https://schema.org/Duration)                                                                                                          | <p>The duration of the slot given in \[ISO8601] format.</p><p><br>Example</p><p><code>"duration": "PT1H"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| facilityUse   | <p><a href="https://developer.openactive.io/data-model/types/facilityuse"><code>FacilityUse</code></a><br>- or -<br><code>@id</code> reference</p> | <p><code>FacilityUse</code> or <code>IndividualFacilityUse</code> that has this <code>Slot</code>, either directly embedded or referenced by its <code>@id</code></p><p><br>Example</p><p><code>"facilityUse": "<https://example.com/facility-use/1>"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| offers        | Array of [`Offer`](https://developer.openactive.io/data-model/types/offer)                                                                         | <p>An array of schema:Offer that include the price of booking.</p><p><br>Example</p><p><code>"offers": {</code><br>  <code>"@type": "Offer",</code><br>  <code>"identifier": "OX-AD",</code><br>  <code>"name": "Adult",</code><br>  <code>"price": 7.5,</code><br>  <code>"priceCurrency": "GBP",</code><br>  <code>"url": "<https://profile.everyoneactive.com/booking?Site=0140&#x26;Activities=1402CBP20150217&#x26;Culture=en-GB>"</code><br><code>}</code></p>                                                                                                                                                                                                                                                                                     |
| remainingUses | [`Integer`](https://schema.org/Integer)                                                                                                            | <p>The remaining available courts or pitches at this time. Must be 0 or 1 for an IndividualFacilityUse.</p><p><br>Example</p><p><code>"remainingUses": 5</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| startDate     | [`DateTime`](https://schema.org/DateTime)                                                                                                          | <p>The start date and time of the slot.</p><p><br>Example</p><p><code>"startDate": "2018-01-27T12:00:00Z"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |

### **Recommended properties**

| Property    | Expected Type                           | Description                                                                                                                                                      |
| ----------- | --------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| maximumUses | [`Integer`](https://schema.org/Integer) | <p>The maximum available courts or pitches at this time. Must be 0 or 1 for an IndividualFacilityUse.</p><p><br>Example</p><p><code>"maximumUses": 16</code></p> |

### **Optional properties**

| Property                                | Expected Type                                                                                                                                                                                                                                                                                                                                                                                | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| --------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| additionalAdmissionRestriction          | Array of [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                   | <p>Free text restrictions that must be displayed prominently to the user before booking. This property must only contain restrictions not described by <code>oa:ageRestriction</code> or <code>oa:genderRestriction</code>.</p><p><br>Example</p><p><code>"additionalAdmissionRestriction": \[</code><br>  <code>"Participants younger than 12 must be accompanied by an adult",</code><br>  <code>"Participants must be comfortable standing for long periods of time"</code><br><code>]</code></p>                  |
| customerAccountBookingRestriction       | Array of [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                   | <p>Free text restrictions to display to the Customer at the browse stage, that may apply when using a Customer Account to make the booking.</p><p>Note that this property is in EARLY RELEASE AND IS SUBJECT TO CHANGE, as the <a href="https://github.com/openactive/customer-accounts">Customer Accounts proposal</a> evolves.</p><p><br>Example</p><p><code>"customerAccountBookingRestriction": \[</code><br>  <code>"Gold members only",</code><br>  <code>"Gym induction required"</code><br><code>]</code></p> |
| endDate                                 | [`DateTime`](https://schema.org/DateTime)                                                                                                                                                                                                                                                                                                                                                    | <p>The end date and time of the slot.</p><p>It is recommended that publishers provide either an schema:endDate or a schema:duration for an slot.</p><p><br>Example</p><p><code>"endDate": "2018-01-27T12:00:00Z"</code></p>                                                                                                                                                                                                                                                                                           |
| identifier                              | <p><a href="https://schema.org/Text"><code>Text</code></a><br>- or -<br><a href="https://developer.openactive.io/data-model/types/propertyvalue"><code>PropertyValue</code></a><br>- or -<br>Array of <a href="https://developer.openactive.io/data-model/types/propertyvalue"><code>PropertyValue</code></a><br>- or -<br><a href="https://schema.org/Integer"><code>Integer</code></a></p> | <p>A local non-URI identifier for the resource</p><p><br>Example</p><p><code>"identifier": "SB1234"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                        |
| isOpenBookingWithCustomerAccountAllowed | [`Boolean`](https://schema.org/Boolean)                                                                                                                                                                                                                                                                                                                                                      | <p>Indicates that a Customer Account may be used to book that opportunity.</p><p>Note that this property is in EARLY RELEASE AND IS SUBJECT TO CHANGE, as the <a href="https://github.com/openactive/customer-accounts">Customer Accounts proposal</a> evolves.</p><p><br>Example</p><p><code>"isOpenBookingWithCustomerAccountAllowed": "true"</code></p>                                                                                                                                                            |
| organizer                               | <p><a href="https://developer.openactive.io/data-model/types/organization"><code>Organization</code></a><br>- or -<br><a href="https://developer.openactive.io/data-model/types/person"><code>Person</code></a></p>                                                                                                                                                                          | <p>The person or organization ultimately responsible for an event. An organizer might be an schema:Organization or a schema:Person.</p><p><br>Example</p><p><code>"organizer": {</code><br>  <code>"@type": "Organization",</code><br>  <code>"@id": "<https://id.bookingsystem.example.com/organizers/1>",</code><br>  <code>"name": "Central Speedball Association",</code><br>  <code>"url": "<http://www.speedball-world.com>"</code><br><code>}</code></p>                                                       |
| url                                     | [`URL`](https://schema.org/URL)                                                                                                                                                                                                                                                                                                                                                              | <p>A URL to a web page (or section of a page) that describes the specific Slot.</p><p><br>Example</p><p><code>"url": "<https://example.com/slots/1234>"</code></p>                                                                                                                                                                                                                                                                                                                                                    |

### **Beta Extension properties**

These properties are defined in the [OpenActive Beta Extension](https://openactive.io/ns-beta). The OpenActive Beta Extension is defined as a convenience to help document properties that are in active testing and review by the community. Publishers should not assume that properties in the beta namespace will either be added to the core specification or be included in the namespace over the long term.

| Property                             | Expected Type                                                                               | Description                                                                                                                                                                                                                                                                                                                                      |
| ------------------------------------ | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| beta:affiliatedLocation              | [`Place`](https://schema.org/Place)                                                         | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/227">Proposal #227</a></p><p>The physical location affiliated with the virtual event, for example the original location of the event before it was moved online.</p>                                                                                                 |
| beta:attendeeCount                   | [`Integer`](https://schema.org/Integer)                                                     | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/274">Proposal #274</a></p><p>For events that have an unlimited number of tickets, captures the number of attendees (actual attendance).</p>                                                                                                                          |
| beta:bookingChannel                  | Array of [`BookingChannelType`](https://openactive.io/ns-beta#BookingChannelType)           | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/161">Proposal #161</a></p><p>The channels through which a booking can be made.</p>                                                                                                                                                                                   |
| beta:contactPoint                    | [`ContactPoint`](https://schema.org/ContactPoint)                                           | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/113">Proposal #113</a></p><p>Contact details for an Event, where they are not specifically related to the <code>organizer</code> or <code>leader</code>.</p>                                                                                                         |
| beta:distance                        | [`QuantitativeValue`](https://schema.org/QuantitativeValue)                                 | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/275">Proposal #275</a></p><p>The distance of a run, cycle or other activity. Must also include units.</p>                                                                                                                                                            |
| beta:donationPaymentUrl              | [`URL`](https://schema.org/URL)                                                             | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/234">Proposal #234</a></p><p>The URL of the webpage where the activity provider accepts donations.</p>                                                                                                                                                               |
| beta:estimatedDuration               | [`QuantitativeValue`](https://schema.org/QuantitativeValue)                                 | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/201">Proposal #201</a></p><p>A property that allows an Event duration to be represented as a range (e.g. 0-30mins, 30-60mins, 60-90mins, 90+).</p>                                                                                                                   |
| beta:facilitySetting                 | [`FacilitySettingType`](https://openactive.io/ns-beta#FacilitySettingType)                  | <p><a href="https://github.com/openactive/facility-types/issues/1">Proposal #1</a></p><p>Whether the event or facility is indoor or outdoor.</p>                                                                                                                                                                                                 |
| beta:formattedDescription            | [`Text`](https://schema.org/Text)                                                           | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/276">Proposal #276</a></p><p>Sometimes a description is stored with formatting (e.g. href, bold, italics, embedded YouTube videos). This formatting can be useful for data consumers. This property must contain HTML.</p>                                           |
| beta:isFirstSessionAccessibleForFree | [`Boolean`](https://schema.org/Boolean)                                                     | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/232">Proposal #232</a></p><p>A property that indicates whether the first session is free.</p>                                                                                                                                                                        |
| beta:isInteractivityPreferred        | [`Boolean`](https://schema.org/Boolean)                                                     | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/230">Proposal #230</a></p><p>Indicates whether the virtual event is interactive (e.g. Zoom with participant microphones and cameras on), or is just a one-way broadcast (e.g. Facebook Live, Instagram Live, Zoom with participant microphones and cameras off).</p> |
| beta:isScheduledAsSlots              | [`Boolean`](https://schema.org/Boolean)                                                     | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/301">Proposal #301</a></p><p>A property that indicates whether the event contains a high frequency of occurrences. Intended as a UI hint for interfaces that represent these occurrences.</p>                                                                        |
| beta:isVirtuallyCoached              | [`Boolean`](https://schema.org/Boolean)                                                     | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/71">Proposal #71</a></p><p>A property that indicates whether the event is led by a virtual coach. Only relevant if an event <code>isCoached</code>. If not provided is assumed to be <code>false</code>.</p>                                                         |
| beta:isWheelchairAccessible          | [`Boolean`](https://schema.org/Boolean)                                                     | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/166">Proposal #166</a></p><p>A property that details whether the event is suitable for wheelchair access. Placed on Event as this field could be used to detail whether the Event is suitable, as well as the Place.</p>                                             |
| beta:offerValidityPeriod             | [`Duration`](https://schema.org/Duration)                                                   | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/204">Proposal #204</a></p><p>Duration before the event for which the associated Offers are valid</p>                                                                                                                                                                 |
| beta:participantSuppliedEquipment    | [`RequiredStatusType`](https://developer.openactive.io/data-model/types/requiredstatustype) | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/229">Proposal #229</a></p><p>Indicates whether the participant must or may supply equipment for use in the Event.</p>                                                                                                                                                |
| beta:registrationCount               | [`Integer`](https://schema.org/Integer)                                                     | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/273">Proposal #273</a></p><p>For events that have an unlimited number of tickets, captures the number of registrations (intention to attend).</p>                                                                                                                    |
| beta:sportsActivityLocation          | Array of [`SportsActivityLocation`](https://schema.org/SportsActivityLocation)              | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/110">Proposal #110</a></p><p>Internal location of the event, e.g. Court 1</p>                                                                                                                                                                                        |
| beta:sportsActivityLocation          | Array of [`SportsActivityLocation`](https://schema.org/SportsActivityLocation)              | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/110">Proposal #110</a></p><p>Internal location of the event, e.g. Court 1</p>                                                                                                                                                                                        |
| beta:video                           | Array of [`VideoObject`](https://schema.org/VideoObject)                                    | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/88">Proposal #88</a></p><p>A related video object.</p>                                                                                                                                                                                                               |
| beta:virtualLocation                 | [`VirtualLocation`](https://pending.schema.org/VirtualLocation)                             | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/224">Proposal #224</a></p><p>Describes a means of electronic access to a shared virtual space.</p>                                                                                                                                                                   |

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# SportsActivityLocation

This page describes the SportsActivityLocation type.

This type is derived from <https://schema.org/SportsActivityLocation>, which means that any of this type's properties within schema.org may also be used. Note however the properties on this page must be used in preference if a relevant property is available.

## **Properties**

### **Required properties**

| Property | Expected Type                     | Description                                                                                                  |
| -------- | --------------------------------- | ------------------------------------------------------------------------------------------------------------ |
| @type    | [`Text`](https://schema.org/Text) | Must always be present and set to `"@type": "SportsActivityLocation"`                                        |
| name     | [`Text`](https://schema.org/Text) | <p>The name of the SportsActivityLocation</p><p><br>Example</p><p><code>"name": "Basketball Hall"</code></p> |

### **Recommended properties**

| Property    | Expected Type                                                                          | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| ----------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| @id         | [`URL`](https://schema.org/URL)                                                        | <p>A unique URI-based identifier for the record.</p><p><code>@id</code> properties are used as identifiers for compatibility with JSON-LD. The value of such a property must always be an absolute URI that provides a stable globally unique identifier for the resource, as described in <a href="https://tools.ietf.org/html/rfc3986">RFC3986</a>.</p><p>The primary purpose of the URI format in this context is to provide natural namespacing for the identifier. Hence, the URI itself may not resolve to a valid endpoint, but must use a domain name controlled by the resource owner (the organisation responsible for the OpenActive open data feed).</p><p><br>Example</p><p><code>"@id": "<https://id.bookingsystem.example.com/places/12345/sports-activity-locations/1>"</code></p> |
| description | [`Text`](https://schema.org/Text)                                                      | <p>A plain text description of the SportsActivityLocation, which must not include HTML or other markup.</p><p><br>Example</p><p><code>"description": "The National Basketball Performance Centre (NBPC) is part of Belle Vue Sports Village.</code></p><ul><li><code>It features a purpose-built hall with 3 courts developed to FIBA standards for international competition and a multi-sports hall with a further 2 basketball courts.The NBPC show court, which has basketball lines only, also features FIBA scoreboards, 24 second cubes, red LED fitted backboards and Olympic standard portable baskets.</code></li></ul><p><code>To book a court at the National Basketball Performance Centre, please use the link below or drop in to one of our Pay & Play sessions."</code></p>       |
| image       | Array of [`ImageObject`](https://developer.openactive.io/data-model/types/imageobject) | <p>An image or photo that depicts the specific SportsActivityLocation.</p><p><br>Example</p><p><code>"image": \[</code><br>  <code>{</code><br>    <code>"thumbnail": "<http://example.com/static/image/speedball_thumbnail.jpg>",</code><br>    <code>"@type": "ImageObject",</code><br>    <code>"url": "<http://example.com/static/image/speedball_large.jpg>"</code><br>  <code>}</code><br><code>]</code></p>                                                                                                                                                                                                                                                                                                                                                                                 |
| url         | [`URL`](https://schema.org/URL)                                                        | <p>A website URL that describes the SportsActivityLocation</p><p><br>Example</p><p><code>"url": "<https://www.better.org.uk/leisure-centre/manchester/belle-vue-sports-village/facilities>"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |

### **Optional properties**

| Property                         | Expected Type                                                                                                                                                                                                                                                                                                                                                                                | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| -------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| amenityFeature                   | Array of [`LocationFeatureSpecification`](https://developer.openactive.io/data-model/types/locationfeaturespecification)                                                                                                                                                                                                                                                                     | <p>An array listing the Amenities of the Place.</p><p><br>Example</p><p><code>"amenityFeature": \[</code><br>  <code>{</code><br>    <code>"name": "Changing Facilities",</code><br>    <code>"value": true,</code><br>    <code>"@type": "ChangingFacilities"</code><br>  <code>},</code><br>  <code>{</code><br>    <code>"name": "Showers",</code><br>    <code>"value": false,</code><br>    <code>"@type": "Showers"</code><br>  <code>},</code><br>  <code>{</code><br>    <code>"name": "Lockers",</code><br>    <code>"value": true,</code><br>    <code>"@type": "Lockers"</code><br>  <code>},</code><br>  <code>{</code><br>    <code>"name": "Towels",</code><br>    <code>"value": false,</code><br>    <code>"@type": "Towels"</code><br>  <code>},</code><br>  <code>{</code><br>    <code>"name": "Creche",</code><br>    <code>"value": false,</code><br>    <code>"@type": "Creche"</code><br>  <code>},</code><br>  <code>{</code><br>    <code>"name": "Parking",</code><br>    <code>"value": true,</code><br>    <code>"@type": "Parking"</code><br>  <code>}</code><br><code>]</code></p>                                                                                                                                                                                                                                                                                                                                                                               |
| containedInPlace                 | <p><a href="https://developer.openactive.io/data-model/types/place"><code>Place</code></a><br>- or -<br><code>@id</code> reference</p>                                                                                                                                                                                                                                                       | <p>The place within which this Place exists</p><p><br>Example</p><p><code>"containedInPlace": {</code><br>  <code>"@type": "Place",</code><br>  <code>"url": "<https://www.everyoneactive.com/centres/Middlesbrough-Sports-Village>",</code><br>  <code>"name": "Middlesbrough Sports Village"</code><br><code>}</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| containsPlace                    | Array of [`Place`](https://developer.openactive.io/data-model/types/place)                                                                                                                                                                                                                                                                                                                   | <p>A specific identifiable facility (<code>SportsActivityLocation</code>) or place (<code>Place</code>) that exist within this place</p><p><br>Example</p><p><code>"containsPlace": \[</code><br>  <code>{</code><br>    <code>"@type": "SportsActivityLocation",</code><br>    <code>"@id": "<https://api.example.com/places/1402CBP20150217/sports-activity-locations/3>",</code><br>    <code>"url": "<https://www.better.org.uk/leisure-centre/manchester/belle-vue-sports-village/facilities>",</code><br>    <code>"name": "Studio",</code><br>    <code>"description": "We have a great range of Fitness Classes at Belle Vue Leisure Centre including Group Cycle, Zumba, Pilates and much much more.",</code><br>    <code>"image": \[</code><br>      <code>{</code><br>        <code>"@type": "ImageObject",</code><br>        <code>"url": "<https://res-1.cloudinary.com/gll/image/upload/c_fit,f_auto,h_169,w_384/v1592158966/production/0065/7/66/PHOTO-2020-06-09-14-25-53_3.jpg>"</code><br>      <code>}</code><br>    <code>],</code><br>    <code>"specialOpeningHoursSpecification": \[</code><br>      <code>{</code><br>        <code>"@type": "OpeningHoursSpecification",</code><br>        <code>"opens": "00:00",</code><br>        <code>"closes": "00:00",</code><br>        <code>"validFrom": "2022-01-01",</code><br>        <code>"validThrough": "2022-12-31"</code><br>      <code>}</code><br>    <code>]</code><br>  <code>}</code><br><code>]</code></p> |
| email                            | [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                            | <p>General enquiries e-mail address for the Place.</p><p><br>Example</p><p><code>"email": "<info@example.com>"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| identifier                       | <p><a href="https://schema.org/Text"><code>Text</code></a><br>- or -<br><a href="https://developer.openactive.io/data-model/types/propertyvalue"><code>PropertyValue</code></a><br>- or -<br>Array of <a href="https://developer.openactive.io/data-model/types/propertyvalue"><code>PropertyValue</code></a><br>- or -<br><a href="https://schema.org/Integer"><code>Integer</code></a></p> | <p>A local non-URI identifier for the resource</p><p><br>Example</p><p><code>"identifier": "SB1234"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| openingHoursSpecification        | Array of [`OpeningHoursSpecification`](https://developer.openactive.io/data-model/types/openinghoursspecification)                                                                                                                                                                                                                                                                           | The times the SportsActivityLocation is open                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| specialOpeningHoursSpecification | Array of [`OpeningHoursSpecification`](https://developer.openactive.io/data-model/types/openinghoursspecification)                                                                                                                                                                                                                                                                           | Explicitly override general opening hours brought in scope by `schema:openingHoursSpecification`.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| telephone                        | [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                            | <p>The telephone number for the Place</p><p><br>Example</p><p><code>"telephone": "01253 473934"</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |

### **Beta Extension properties**

These properties are defined in the [OpenActive Beta Extension](https://openactive.io/ns-beta). The OpenActive Beta Extension is defined as a convenience to help document properties that are in active testing and review by the community. Publishers should not assume that properties in the beta namespace will either be added to the core specification or be included in the namespace over the long term.

| Property                  | Expected Type                                                     | Description                                                                                                                                                                                                                                                                                            |
| ------------------------- | ----------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| beta:formattedDescription | [`Text`](https://schema.org/Text)                                 | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/276">Proposal #276</a></p><p>Sometimes a description is stored with formatting (e.g. href, bold, italics, embedded YouTube videos). This formatting can be useful for data consumers. This property must contain HTML.</p> |
| beta:placeType            | Array of [`Concept`](http://www.w3.org/2004/02/skos/core#Concept) | <p><a href="https://github.com/openactive/place-types/issues/1">Proposal #1</a></p><p>The type of Place. See <a href="https://openactive.io/place-types/"><https://openactive.io/place-types/></a>.</p>                                                                                                |
| beta:serviceOperator      | [`Organization`](https://schema.org/Organization)                 | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/307">Proposal #307</a></p><p>The organization responsible for the operation of the <code>Place</code>.</p>                                                                                                                 |
| beta:video                | Array of [`VideoObject`](https://schema.org/VideoObject)          | <p><a href="https://github.com/openactive/modelling-opportunity-data/issues/88">Proposal #88</a></p><p>A related video object.</p>                                                                                                                                                                     |

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# TaxChargeSpecification

This page describes the TaxChargeSpecification type.

This type is derived from <https://schema.org/PriceSpecification>, which means that any of this type's properties within schema.org may also be used. Note however the properties on this page must be used in preference if a relevant property is available.

## **Properties**

### **Optional properties**

| Property      | Expected Type                                                                                                                                                                                                                                                                                                                                                                                | Description                                                                                                                                                                                     |
| ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| @type         | [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                            | Must always be present and set to `"@type": "TaxChargeSpecification"`                                                                                                                           |
| identifier    | <p><a href="https://schema.org/Text"><code>Text</code></a><br>- or -<br><a href="https://developer.openactive.io/data-model/types/propertyvalue"><code>PropertyValue</code></a><br>- or -<br>Array of <a href="https://developer.openactive.io/data-model/types/propertyvalue"><code>PropertyValue</code></a><br>- or -<br><a href="https://schema.org/Integer"><code>Integer</code></a></p> | <p>A local non-URI identifier for the resource</p><p><br>Example</p><p><code>"identifier": "SB1234"</code></p>                                                                                  |
| name          | [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                            | The name of the tax charge, e.g. "VAT at 0% for EU transactions"                                                                                                                                |
| price         | [`Number`](https://schema.org/Number)                                                                                                                                                                                                                                                                                                                                                        | The total amount.                                                                                                                                                                               |
| priceCurrency | [`Text`](https://schema.org/Text)                                                                                                                                                                                                                                                                                                                                                            | The currency of the price. Specified as a 3-letter ISO 4217 value. If a PriceSpecification has a zero price, then this property is not required. Otherwise the priceCurrency must be specified. |
| rate          | [`Number`](https://schema.org/Number)                                                                                                                                                                                                                                                                                                                                                        | The rate of VAT.                                                                                                                                                                                |

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# TermsOfUse

This page describes the TermsOfUse type.

## **Properties**

### **Optional properties**

<table><thead><tr><th>Property</th><th>Expected Type</th><th>Description</th></tr></thead><tbody><tr><td>@type</td><td><a href="https://schema.org/Text"><code>Text</code></a></td><td>Must always be present and set to <code>"@type": "TermsOfUse"</code></td></tr><tr><td>dateModified</td><td><a href="https://schema.org/DateTime"><code>DateTime</code></a></td><td><p>The date and time at which the webpage containing the contents of the terms, located at the <code>url</code>, was last updated.</p><p><br>Example</p><p><code>"dateModified": "2018-01-27T12:00:00Z"</code></p></td></tr><tr><td>name</td><td><a href="https://schema.org/Text"><code>Text</code></a></td><td>The name of the terms. The name must distinguish this from other terms fields provided, e.g. 'Terms and Conditions' or 'Privacy Policy'.</td></tr><tr><td>requiresExplicitConsent</td><td><a href="https://schema.org/Boolean"><code>Boolean</code></a></td><td><pre><code>  &#x3C;/td>
&#x3C;/tr>
&#x3C;tr>
  &#x3C;td style="text-align:left">&#x3C;b>url&#x3C;/b>&#x3C;/td>
  &#x3C;td style="text-align:left">
    &#x3C;a href="https://schema.org/URL">&#x3C;code>URL&#x3C;/code>&#x3C;/a>
  &#x3C;/td>
  &#x3C;td style="text-align:left">
    &#x3C;p>The URL of the webpage containing the contents of the terms.&#x3C;/p>
  &#x3C;/td>
&#x3C;/tr>
</code></pre></td></tr></tbody></table>

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# Terms

This page describes the Terms type.

## **Properties**

### **Optional properties**

<table><thead><tr><th>Property</th><th>Expected Type</th><th>Description</th></tr></thead><tbody><tr><td>@type</td><td><a href="https://schema.org/Text"><code>Text</code></a></td><td>Must always be present and set to <code>"@type": "Terms"</code></td></tr><tr><td>dateModified</td><td><a href="https://schema.org/DateTime"><code>DateTime</code></a></td><td><p>The date and time at which the webpage containing the contents of the terms, located at the <code>url</code>, was last updated.</p><p><br>Example</p><p><code>"dateModified": "2018-01-27T12:00:00Z"</code></p></td></tr><tr><td>name</td><td><a href="https://schema.org/Text"><code>Text</code></a></td><td>The name of the terms. The name must distinguish this from other terms fields provided, e.g. 'Terms and Conditions' or 'Privacy Policy'.</td></tr><tr><td>requiresExplicitConsent</td><td><a href="https://schema.org/Boolean"><code>Boolean</code></a></td><td><pre><code>  &#x3C;/td>
&#x3C;/tr>
&#x3C;tr>
  &#x3C;td style="text-align:left">&#x3C;b>url&#x3C;/b>&#x3C;/td>
  &#x3C;td style="text-align:left">
    &#x3C;a href="https://schema.org/URL">&#x3C;code>URL&#x3C;/code>&#x3C;/a>
  &#x3C;/td>
  &#x3C;td style="text-align:left">
    &#x3C;p>The URL of the webpage containing the contents of the terms.&#x3C;/p>
  &#x3C;/td>
&#x3C;/tr>
</code></pre></td></tr></tbody></table>

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".


# Toilets

This page describes the Toilets type.

This type is derived from <https://schema.org/LocationFeatureSpecification>, which means that any of this type's properties within schema.org may also be used. Note however the properties on this page must be used in preference if a relevant property is available.

## **Properties**

### **Required properties**

| Property | Expected Type                           | Description                                                                                                                  |
| -------- | --------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
| @type    | [`Text`](https://schema.org/Text)       | Must always be present and set to `"@type": "Toilets"`                                                                       |
| name     | [`Text`](https://schema.org/Text)       | <p>A string, suitable for presentation in user interfaces.</p><p><br>Example</p><p><code>"name": "Public Toilets"</code></p> |
| value    | [`Boolean`](https://schema.org/Boolean) | A boolean value indicating whether this ammenity is available.                                                               |

Except as otherwise noted, the content of this page is licensed under the [Creative Commons Attribution License (CC-BY V4.0)](https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the [MIT License](https://opensource.org/licenses/MIT), for anyone to access, use and share; using attribution "[OpenActive](https://www.openactive.io/)".




---

[Next Page](/llms-full.txt/1)

