You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The table below documents the changes that have been made to the Open Booking API specification’s Editor's Draft since the specification’s initial Candidate Release on 27 May 2019, including the rationale for each change.
This proposal seeks to ensure consensus exists on the changes made, which are all technical improvements and clarifications rather than functional or scope changes, and recommends the publishing of an updated Editor’s Draft as an official “CR2”.
This proposal includes 15 breaking changes, which are mostly simple property renames or other minor changes. Only a small number of these are likely to affect any existing implementation. These are highlighted in bold in the changelog below.
These changes are available to view in the current Editor's Draft here.
Process
The changes made are in response to feedback or tooling development, and are either minor error corrections, obvious clarifications, or obvious simplifications. They do not expand the scope of the existing specification, and tighten it up to aid implementation.
Where changes to the specification document are more substantial, an associated GitHub issue has been created for the change.
Please do comment on this issue (or the more specific issue if it exists), referencing the change number in this list if you have any concerns, questions, or feedback.
Note that some of the changes made below rely on proposed corresponding changes to the Modelling Specification, which must be formalised and released before this specification can be released.
`orderQuantity` was removed in a previous revision to the specification to simplify it, however the example was not updated. This change fixes the example to match the specification.
Fix inconsistency of the terms `totalTaxSpecification` and `totalPaymentTaxSpecification` used in the spec and the examples and rename instead to just `totalPaymentTax`
Breaking change: was introduced in August. Renaming of `totalPaymentTaxSpecification` property required.
This change makes it clearer that this property complements `schema:totalPaymentDue`
Switched to `@type` and `@id` in line with plans for new modelling spec and tooling.
Breaking change: was introduced in October. Renaming of `@type` `@id` properties required. OpenActive libraries already do this automatically.
The tooling work has made it clear that using the original JSON-LD terms for `@type` and `@id` will greatly simplify tooling implementation in the longer term. A proposal exists for such an update to the modelling specification, which is not a breaking change, due to the 2.0 specification allowing for either to be used. This change was made to the Open Booking API CR specification to ensure early adoption during booking work and within tooling being developed.
Include `seller` `@id` in requests for C1, C2, P and B. Not a breaking change as existing implementations should simply ignore this.
Although it was originally envisaged that the Seller ID could be derived from the authentication token by the Booking System, the variety of authentication approaches permissible within the specification mean that this is not always possible. Including the “seller” ID in requests ensure that both Broker and Booking System are explicit about their expectations, and makes it easier to implement on both sides in a variety of authentication scenarios.
Replace the definition of the `description` property within `OpenBookingError` from “A slightly longer, human-readable summary of the problem type. It largely SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization or to provide specific information about why the error occurred in that particular case.” to “A human-readable explanation specific to this occurrence of the problem, providing specific information about why the error occurred in this particular case.”
The error model was derived from RFC7807, however our definition of the Error “description” property was not correctly inferred. This change brings the error model in line with RFC7807 by updating the definition of the “description” property.
Rename `OpenBookingError` property `status` to `statusCode`
Breaking change: was introduced in November. Renaming of `status` property to `statusCode` required. OpenActive libraries already do this automatically.
Improved clarity of the definition of `name` and `statusCode` properties of OpenBookingError - such that they “MUST communicate the associated Use Case defined in this section of the specification” and “that MUST match the associated Status Code defined in this section of the specification”.
This change ensures that the `name` and `statusCode` are used correctly.
Removed minor version from media type, and added “Brokers will receive data in the most current format within that major version”.
Breaking change: media type needs to be updated to remove the trailing “.0”.
The media type versioning definition was overly complex, which added unnecessary complexity to implementations. The ability for brokers to request specific minor versions of responses, which by definition would not contain breaking changes, did not appear to merit the additional complexity required to implement this.
The spec now only includes major version the in media type, and does not allow locking down to minor version. This encourages non-breaking improvements to the API spec to be made, and for breaking changes to force a major version number increase.
Allowed the Seller to be an `schema:Organization` or `schema:Person`, including clarifying that a logo must be used for a `Person`, rather than a photo.
This brings the Open Booking API specification in line with the Modelling Specification 2.0, which allows for both.
Update the `customer` property to a MUST in the response to indicate that the `customer` must be reflected back.
Breaking change: customer property must now be included in response
In pre-CR versions of the specification the customer was not necessarily reflected back, however this was changed prior to the CR release for consistency. This change makes the model consistent with the rest of the specification.
Remove `invalidParams` and `method` from OpenBookingError, and update `instance` to match RFC7807.
Not a breaking change as unrecognised parameters are ignored by the Broker.
Implementation of `invalidParams` and `method` did not add any clear value, and also increased complexity. The error model now very closely reflects RFC7807.
Replace use of `attendeeInstructions` with restriction properties for booking restrictions.
Breaking change: if attendeeInstructions was being used for restrictions, new properties must be used instead
`attendeeInstructions` was being used incorrectly to describe booking restrictions, which was not in line with Modelling Opportunity Data 2.0. The specification has been updated to leverage this proposal instead.
Added specification for opportunity data properties
Not breaking as additional (removed) properties are ignored by the Broker, and required properties were already required in the modelling specification.
The current specification does not provide guidance on which opportunity data properties to include in responses, which will likely lead to increased complexity and unnecessary variance between implementations.
Added clarity to expectations around opportunity data for requests and responses, to make clear what the examples already show. Requests should include only @type and @id, and responses should include full opportunity data.
Clarify Orders feed property specification and processing in line with existing examples, by replacing the column in the `Order` data model table with more concrete paragraphs of text. Clearly define the model property statuses (borrowing text from the modelling specification), and also remove the implied granular “PATCH” that is problematic for implementers. Additionally introduce the concept of “Replacement” in order to make properties of the Orders feed optional where they do not provide any functional benefit.
Breaking change: if the Orders Feed previously did not supply the properties that were shown in the example, it may need properties added or removed to match. “Identifier” will also need to be added, though this is just the UUID which should already be readily available.
Improves clarity, and reduces the scope for misinterpretation and implementation divergence.
Align orderSellerNote and orderCustomerNote property specifications with the rest of the specification, as they were “RECOMMENDED” and should be “OPTIONAL” or N/A
The specification infers in multiple places that orderRequiresApproval is only present in C1/C2 (OrderQuote). This change adds a sentence to make this explicit.
Clarify prepayment, availableChannel, Offer, and OfferOverride. Specify the default behaviour already inferred by the specification explicitly, removing ambiguity around underspecified properties.
totalPaymentDue and totalPaymentTax must be calculated excluding any OrderItems that include errors, with the exception of IncompleteAttendeeDetailsError and IncompleteAttendeeDetailsError.
Breaking change: an update to the total tax calculation may be required
When OrderItems simply lack attendee details, they should be included in the totalPaymentDue, as this is much more intuitive. This was an oversight with the late introduction of attendee details into the specification.
Clarified that UUID must meet RFC4122, and made the paths in the examples explicit. Also clarified security around UUIDs being unique within authentication credentials. This was implied by examples and existing text, but could be open to interpretation.
Simplify API discovery in line with the direction of the Dataset API Discovery spec
Breaking change: if the endpoint paths did not follow the examples, they will be updated to match
The previous API discovery explanation was inconsistent and was more relevant to an older version of the specification. It was also inconsistent with the current direction of the Dataset API Discovery and schema.org. This change greatly simplifies discovery to just a Base Url, without impacting existing implementations that have followed the example paths. Also reduces testing surface area and makes swagger files more useful.
Clarified not to use `givenName` and `familyName` for the Seller, and use `name` instead. This is implied by the specification (which does not mention givenName and familyName in this context) but is not explicit.
Updated the definition of Broker to more clearly separate the API client from the actual economic actor by introducing the term “Booking Partner”: \
\
“Broker: The organisation, that provides an application allowing Customers to make bookings. For simplicity the API client is referred to as the Broker throughout this specification, however other API clients are permissible, and Booking Partner is the collective term for different types of clients of this API.” \
\
“The term Booking Partner is used to refer to the authenticating party represented by the Authentication Credentials, which is distinct from the Broker represented by the broker property. The Booking Partner may be a Broker, or a Middleware, or any other authenticating party (including the Seller if brokerRole is set to NoBroker).”
Improves clarity, with more subtle changes than proposed in 128, and no changes to diagrams
Clarify use of `schema:Person` for `attendee`, and the purpose and use of the `identifier` property for analytics.
““The `identifier` property MAY be provided by the Broker if a unique identifier for the Customer or `attendee` is available, to allow the Booking System to provide analytics based on repeat visits of the same guest. However such an `identifier` MUST only be matched only within each unique set of Authentication Credentials to prevent identifier collisions between Booking Partners.”
Clarify confusing specification around the payment reconciliation detail validation (including the inconsistent preconditions based on totalPaymentDue before it was known), by creating a dedicated section to explain this, and relaxing and simplifying the requirements.
Breaking change: Added MissingPaymentDetailsError to complement IncompletePaymentDetailsError.
Unlock additional experimentation for barcode extension point by allowing barcode to be supplied by the Broker
The specification inadvertently restricted experimentation around the supply of barcodes by the Broker. This minor change allows for such experimentation, without any change in behaviour if not supported.
Improved bookable cross-references, and renamed UnavailableOpportunityError OpportunityOfferPairNotBookableError
Breaking change: Renaming of `UnavailableOpportunityError` property to `OpportunityOfferPairNotBookableError` required. OpenActive libraries already do this automatically.
Make error name more self-documenting, as previous error name was ambiguous
Provide concrete recommendations around implementation of OAuth2 for Booking Systems to encourage convergence and define terms.
Note as these are recommendations only they are not breaking changes, and are designed to make implementation easier.
There is confusion amongst current implementers around how best to handle authentication - this change provides recommendations that facilitate convergence of authentication between booking systems, which will greatly simplify the Broker's integration requirements and lower the barrier to entry for them: especially for Booking Systems that support multiple Sellers.
Allow consent to terms to be remembered by the Broker when `requiresExplicitConsent` is used.
Previous recommendations for `requiresExplicitConsent` did not allow for consent to be remembered, which was inconsistent with the ability to remember Customer responses for attendee details, and additional details.
Rename `OrderConfirmed` and `OrderProposed` to `OrderItemConfirmed` and `OrderItemProposed`; as both enum values relate to the OrderItem rather than the Order
Breaking change: Renaming of `OrderConfirmed` and `OrderProposed` to `OrderItemConfirmed` and `OrderItemProposed` required. OpenActive libraries already do this automatically.
Improves clarity
The text was updated successfully, but these errors were encountered:
Proposer
ODI
Proposal
The table below documents the changes that have been made to the Open Booking API specification’s Editor's Draft since the specification’s initial Candidate Release on 27 May 2019, including the rationale for each change.
This proposal seeks to ensure consensus exists on the changes made, which are all technical improvements and clarifications rather than functional or scope changes, and recommends the publishing of an updated Editor’s Draft as an official “CR2”.
This proposal includes 15 breaking changes, which are mostly simple property renames or other minor changes. Only a small number of these are likely to affect any existing implementation. These are highlighted in bold in the changelog below.
These changes are available to view in the current Editor's Draft here.
Process
The changes made are in response to feedback or tooling development, and are either minor error corrections, obvious clarifications, or obvious simplifications. They do not expand the scope of the existing specification, and tighten it up to aid implementation.
Where changes to the specification document are more substantial, an associated GitHub issue has been created for the change.
Please do comment on this issue (or the more specific issue if it exists), referencing the change number in this list if you have any concerns, questions, or feedback.
Note that some of the changes made below rely on proposed corresponding changes to the Modelling Specification, which must be formalised and released before this specification can be released.
Changelog
8fb9f06
Breaking change: was introduced in August. Renaming of `totalPaymentTaxSpecification` property required.
ad5e76f
anythingotherBreaking change: was introduced in October. Renaming of `@type` `@id` properties required. OpenActive libraries already do this automatically.
96161d6
0639413
Breaking change: was introduced in November. Renaming of `status` property to `statusCode` required. OpenActive libraries already do this automatically.
8494554
Breaking change: media type needs to be updated to remove the trailing “.0”.
The spec now only includes major version the in media type, and does not allow locking down to minor version. This encourages non-breaking improvements to the API spec to be made, and for breaking changes to force a major version number increase.
97aec7e
Breaking change: customer property must now be included in response
b9928aa
Not a breaking change as unrecognised parameters are ignored by the Broker.
Breaking change: if attendeeInstructions was being used for restrictions, new properties must be used instead
2d13c35
Not breaking as additional (removed) properties are ignored by the Broker, and required properties were already required in the modelling specification.
4c5e876
Breaking change: if the Orders Feed previously did not supply the properties that were shown in the example, it may need properties added or removed to match. “Identifier” will also need to be added, though this is just the UUID which should already be readily available.
124
e1d2b4b
Breaking change: an update to the total tax calculation may be required
Breaking change: if the endpoint paths did not follow the examples, they will be updated to match
Breaking change: reflect back position `property` for C1, C2, P and B.
Breaking change: if examples were not followed, will need to include the “name” of the BookingService
““The `identifier` property MAY be provided by the Broker if a unique identifier for the Customer or `attendee` is available, to allow the Booking System to provide analytics based on repeat visits of the same guest. However such an `identifier` MUST only be matched only within each unique set of Authentication Credentials to prevent identifier collisions between Booking Partners.”
Add versioning policy to reflect the implication that new versions will be backwards aim to be backwards compatible.
Breaking change: Added MissingPaymentDetailsError to complement IncompletePaymentDetailsError.
Fixed OrderProposal example, and removed unnecessary and underspecified OrderItem ID requirement from OrderProposal
Breaking change: Renaming of `accessToken` property to `accessPass` required. OpenActive libraries already do this automatically.
Breaking change: Renaming of `UnavailableOpportunityError` property to `OpportunityOfferPairNotBookableError` required. OpenActive libraries already do this automatically.
Breaking change: Require `prepayment` property on `totalPaymentDue`, if prepayment has been implemented
Note as these are recommendations only they are not breaking changes, and are designed to make implementation easier.
Breaking change: Renaming of `OrderConfirmed` and `OrderProposed` to `OrderItemConfirmed` and `OrderItemProposed` required. OpenActive libraries already do this automatically.
The text was updated successfully, but these errors were encountered: