Skip to content

Commit 90edd27

Browse files
committed
Access control and other minor clarifications based on feedback
1 parent f2815ac commit 90edd27

File tree

2 files changed

+172
-98
lines changed

2 files changed

+172
-98
lines changed

EditorsDraft/edit.html

+66-25
Original file line numberDiff line numberDiff line change
@@ -314,6 +314,7 @@
314314
* __Dynamic pricing__ – allowing the <a>Broker</a> to vary pricing, where agreed with the <a>Seller</a>
315315
* __Booking approval__ – optional approval for <a>Booking Systems</a> that support or require approval for bookings
316316
* __Cancellation__ – <a>Customer</a> and <a>Seller</a> initiated cancellation
317+
* __Access control__ - text, images and barcodes that can be used by the <a>Customer</a> to access the activity
317318

318319
### Out of Scope in this version
319320

@@ -326,6 +327,7 @@
326327
* business-to-business tax calculation
327328
* cancellation fees
328329
* "subscriptions" to allow a <a>Customer</a> to participate ad-hoc in a <a>Seller's</a> activity, with such participation recorded for later reconciliation
330+
* refunds/cancellations after the opportunity has occurred
329331
* back-office systems between <a>Broker</a> and <a>Booking System</a>, such as for payment reconciliation
330332

331333
It is possible that future versions of this specification may include support
@@ -344,8 +346,8 @@
344346
The functionality that is currently defined as out of scope includes:
345347

346348
* __API authentication and security__ – while the specification recommends some best practices relating to authentication and security it does not mandate a specific means of securing an API. Implementers are free to choose the system that offers the best security for their platform and users.
347-
* __Payment processing__ – the design assumes that all payment handling will be carried out by the third-party application, in a separate payment flow. Booking systems and application developers are able to use the payment and reconciliation mechanisms that provide the best options for their <a>Customers</a>.
348-
* __API business models__ – the design is agnostic to any business models that might govern the use of the API, e.g. revenue-sharing or transaction processing fees
349+
* __Payment processing__ – the design assumes that all payment handling will be coordinated by the <a>Broker</a>, in a separate payment flow. <a>Brokers</a> are able to use the payment and reconciliation mechanisms that provide the best options for their <a>Sellers</a> and <a>Customers</a>.
350+
* __API business models__ – the design is agnostic to any business models that might govern the use or provision of the API, e.g. revenue-sharing or transaction processing fees.
349351
* __Opportunity discovery__ – finding, filtering and searching for opportunity data. This specification assumes that the client and server applications have already shared data about the relevant opportunities, e.g. via [[RPDE]] feed containing [[Modelling-Opportunity-Data]] data.
350352
* __API endpoint discovery__ – the <a>Broker</a> finding and connecting to the API endpoints included in this specification are included in the [[Dataset-API-Discovery]] specification.
351353

@@ -433,26 +435,16 @@
433435

434436
<dl class="typography">
435437
<dt><dfn>Customer</dfn></dt>
436-
<dd>The user who places a booking using an application provided by
437-
a <a>Broker</a>. The <a>Customer</a> is not necessarily the attendee,
438-
so e.g. a parent may book on behalf of their child.</dd>
438+
<dd>The user who places a booking using an application provided by a <a>Broker</a>. The <a>Customer</a> is not necessarily the attendee, so e.g. a parent may book on behalf of their child.</dd>
439439
<dt><dfn>Broker</dfn></dt>
440-
<dd>The organisation or developer providing an application that
441-
allows <a>Customers</a> to make bookings. Those applications will be
442-
clients of the API defined in this specification</dd>
440+
<dd>The organisation or developer providing an application that allows <a>Customers</a> to make bookings. Those applications will be clients of the API defined in this specification</dd>
443441
<dt><dfn>Booking System</dfn></dt>
444-
<dd>The organisation or developer providing an application that
445-
maintains bookable inventory on behalf of the <a>Seller</a>.
446-
The platform or service that provides a server-side implementation
447-
of this API.
442+
<dd>The organisation or developer providing an application that maintains bookable inventory on behalf of the <a>Seller</a>. The platform or service that provides a server-side implementation of this API.
448443
</dd>
449444
<dt><dfn>Seller</dfn></dt>
450-
<dd>The organisation providing access to events or facilities
451-
via a <a>Booking System</a>. e.g. a leisure provider running yoga classes.</dd>
445+
<dd>The organisation providing access to events or facilities via a <a>Booking System</a>. e.g. a leisure provider running yoga classes.</dd>
452446
<dt><dfn>Payment Provider</dfn></dt>
453-
<dd>The organisation providing payment processing between the
454-
<a>Customer</a>, <a>Broker</a> and
455-
<a>Seller</a>.</dd>
447+
<dd>The notional service providing payment processing between the <a>Customer</a>, <a>Broker</a> and <a>Seller</a>. Although this specification refers to the <a>Payment Provider</a> as a single notional service, it may in reality be composed of multiple connected services providing the same functionality to allow for the widest variety of business models.</dd>
456448
</dl>
457449

458450
</section>
@@ -979,6 +971,12 @@
979971

980972
<div class="issue" data-number="97"></div>
981973

974+
### Refund after the opportunity has occurred
975+
976+
Although a cancellation may be requested before the opportunity has occurred in order to trigger a refund, cancellation and refund after an opportunity has occurred is currently outside the scope of this specification.
977+
978+
Full and partial refunds after an opportunity has occurred MUST be handled out-of-band directly between the <a>Broker</a> and the <a>Seller</a>.
979+
982980
### Customer requested cancellation
983981

984982
<figure>
@@ -1147,14 +1145,59 @@
11471145
},
11481146
</pre>
11491147

1150-
Note that due to the variety of business models available in the OpenActive ecosystem, conformance to this specification requires that the use of any native payment functionality in the <a>Booking System</a> be optional, and the <a>Booking System</a> MUST always accept a lack of `paymentMethod` as indication of an external **Payment Processor** being used. To maximise flexibility of this extension point, `identifier` and `name` within `Payment` are NOT REQUIRED if `paymentMethod` is specified.
1148+
Note that due to the variety of business models available in the OpenActive ecosystem, conformance to this specification requires that the use of any native payment functionality in the <a>Booking System</a> be optional, and the <a>Booking System</a> MUST always accept a lack of `paymentMethod` as indication of an external <a>Payment Processor</a> being used. To maximise flexibility of this extension point, `identifier` and `name` within `Payment` are NOT REQUIRED if `paymentMethod` is specified.
1149+
11511150

1151+
## Access control
11521152

1153-
## Extension point for access control
1153+
For opportunities based at locations that have access control, it is RECOMMENDED that `OrderItem` include unique access control data within `accessCode` and `accessToken`. An `accessCode` SHOULD be provided for manual use in the event that an `accessToken` fails.
11541154

1155-
For opportunities based at locations that have access control, it is RECOMMENDED that `OrderItem` include unique access control data within `accessToken`.
1155+
### Text-based access control
11561156

1157-
<pre class="example" title="Example of accessToken">
1157+
PIN codes, Order identifiers, or simply the e-mail address of the <a>Customer</a> are all permissible for the purposes of access control.
1158+
1159+
In keeping with the Schema.org definition of `PropertyValue`, the `name` property SHOULD be used for the name of the property, and the `description` property SHOULD be used for any human-readable access control code(s).
1160+
1161+
<pre class="example" title="Example of accessCode used for a PIN Code">
1162+
"accessCode": [
1163+
{
1164+
"type": "PropertyValue",
1165+
"name": "PIN Code",
1166+
"description": "1234"
1167+
}
1168+
],
1169+
</pre>
1170+
1171+
<pre class="example" title="Example of accessCode used for a booking reference">
1172+
"accessCode": [
1173+
{
1174+
"type": "PropertyValue",
1175+
"name": "Booking Reference",
1176+
"description": "123456789"
1177+
}
1178+
],
1179+
</pre>
1180+
1181+
### Image-based access control
1182+
1183+
Images to be displayed to provide access, for example access tickets rendered by the booking system, MAY be included as an `ImageObject` within the `accessToken` array.
1184+
1185+
<pre class="example" title="Example of ImageObject in accessToken">
1186+
"accessToken": [
1187+
{
1188+
"type": "ImageObject",
1189+
"url": "https://access.example.com/476ac24c694da79c5e33731ebbb5f1"
1190+
}
1191+
],
1192+
</pre>
1193+
1194+
### Extension point for barcode-based access control
1195+
1196+
Access barcodes to be rendered by the <a>Broker</a> MAY be included as a `Barcode` within the `accessToken` array. Note that `Barcode` subclasses `ImageObject`, allowing it to contain a rendered barcode image URL in addition to the raw barcode details.
1197+
1198+
Due to the variety of barcode formats available, the specification expects the `Barcode` to include additional properties using a custom namespace, enough to allow the barcode to be reproduced by the <a>Broker</a>. This will help inform future versions of the specification.
1199+
1200+
<pre class="example" title="Example of Barcode in accessToken">
11581201
"accessToken": [
11591202
{
11601203
"type": "Barcode",
@@ -1164,9 +1207,6 @@
11641207
],
11651208
</pre>
11661209

1167-
Due to the variety of Barcode and QR code formats available, the specification expects the `Barcode` to include additional properties using a custom namespace, enough to allow the barcode to be reproduced by the <a>Broker</a>. This will help inform future versions of the specification.
1168-
1169-
11701210
</section>
11711211

11721212

@@ -1491,7 +1531,8 @@
14911531
| [`oa:unitTaxSpecification`](https://openactive.io/unitTaxSpecification) | - | REQUIRED | Array of [`oa:TaxChargeSpecification`](https://openactive.io/TaxChargeSpecification) | Breakdown of tax payable for the OrderItem. |
14921532
| [`schema:acceptedOffer`](http://schema.org/acceptedOffer) | REQUIRED | REQUIRED | [`schema:Offer`](https://schema.org/Offer) | The offer from the associated `orderedItem` that has been selected by the <a>Customer</a>. The price of which includes or excludes tax depending on the `taxMode` of the `Order`. |
14931533
| [`schema:orderedItem`](http://schema.org/orderedItem) | REQUIRED | REQUIRED | [`oa:ScheduledSession`](https://openactive.io/ScheduledSession), [`oa:Slot`](https://openactive.io/Slot), [`oa:HeadlineEvent`](https://openactive.io/HeadlineEvent), [`schema:Event`](https://schema.org/Event) or [`schema:CourseInstance`](https://schema.org/CourseInstance) | The specific bookable Thing that has been selected by the <a>Customer</a>. See the [[Modelling-Opportunity-Data]] for more information on these types. Note that the Broker Request and Orders feed only requires `id` within these objects to be included, all other properties are ignored. |
1494-
| [`oa:accessToken`](https://openactive.io/accessToken) | - | RECOMMENDED | Array of [`schema:Barcode`](https://schema.org/Barcode) | `Barcode` that contains reference to an asset (e.g. Barcode, QR code image or PDF) usable for entrance, not applicable for an `OrderQuote`. |
1534+
| [`schema:accessCode`](https://schema.org/accessCode) | - | RECOMMENDED | Array of [`schema:PropertyValue`](https://schema.org/PropertyValue) | `PropertyValue` that contains a text value usable for entrance. Not applicable for an `OrderQuote`. |
1535+
| [`oa:accessToken`](https://openactive.io/accessToken) | - | RECOMMENDED | Array of [`schema:ImageObject`](https://schema.org/ImageObject) | `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`. |
14951536
| [`oa:error`](https://openactive.io/error) | - | REQUIRED | Array of [`oa:OpenBookingError`](https://openactive.io/OpenBookingError) | Array of errors related to the OrderItem being included in the Order, only applicable for an `OrderQuote`. |
14961537
| [`oa:cancellationMessage`](https://openactive.io/cancellationMessage) | - | OPTIONAL | [`schema:Text`](https://schema.org/Text) | A message set by the <a>Seller</a> in the event of opportunity cancellation, only applicable for an `Order` and where the `OrderItem` has `orderItemStatus` set to `https://openactive.io/SellerCancelled` |
14971538

0 commit comments

Comments
 (0)