< Return to Summary | File Generated: Thu Apr 17 2025 12:19:17 GMT+0000 (Coordinated Universal Time)
Booking Flow: OpenBookingApprovalFlow
Opportunity Type: IndividualFacilityUseSlot
Feature: Notifications / Opportunity attendance updates (Implemented)
Test: Changes to an opportunity's attendance (via AttendeeAbsentSimulateAction) should update the Order Feed.
After B, invoke an AttendeeAbsentSimulateAction
. This should create an update in the Order Feed with the OrderItem's orderItemStatus changed to https://openactive.io/CustomerAttended
npm start -- --runInBand test/features/notifications/opportunity-attendance-updates/implemented/opportunity-attendance-update-customer-absent-test.js
The OpenActive Reference Implementation test result for this test can be used as a reference to help with debugging.
⚠️ 20 passed with 0 failures, 108 warnings and 0 suggestions
POST https://localhost:5001/api/openbooking/test-interface/datasets/uat-ci/opportunities
"application/vnd.openactive.booking+json; version=1"
"Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkIwNEY3QjkxREUzQjk0NzhDNjE4MzNGQjI0QUE1Q0RCIiwidHlwIjoiYXQrand0In0.eyJuYmYiOjE3NDQ4OTEyMjIsImV4cCI6MTc0NDg5NDgyMiwiaXNzIjoiaHR0cHM6Ly9sb2NhbGhvc3Q6NTAwMyIsImF1ZCI6Im9wZW5ib29raW5nIiwiY2xpZW50X2lkIjoiNDI0NzRiMzUtZGI3Ni00N2MzLWI4NTMtMzI0NzFhYjhhZjk1IiwiaHR0cHM6Ly9vcGVuYWN0aXZlLmlvL2NsaWVudElkIjoiNDI0NzRiMzUtZGI3Ni00N2MzLWI4NTMtMzI0NzFhYjhhZjk1Iiwic3ViIjoiMTAwIiwiYXV0aF90aW1lIjoxNzQ0ODkxMjIxLCJpZHAiOiJsb2NhbCIsImh0dHBzOi8vb3BlbmFjdGl2ZS5pby9zZWxsZXJJZCI6Imh0dHBzOi8vbG9jYWxob3N0OjUwMDEvYXBpL2lkZW50aWZpZXJzL3NlbGxlcnMvMSIsImp0aSI6IkUyMEU5NzhENzY5RjYyQTVDOTQzNTc1NDlFNTY1OTA2Iiwic2lkIjoiMEI3MkQyMUE5OENBMkQyRTRCMzkyN0I2Q0FEQUI3MkUiLCJpYXQiOjE3NDQ4OTEyMjIsInNjb3BlIjpbIm9wZW5pZCIsIm9wZW5hY3RpdmUtb3BlbmJvb2tpbmciLCJvcGVuYWN0aXZlLWlkZW50aXR5Iiwib2ZmbGluZV9hY2Nlc3MiXSwiYW1yIjpbInB3ZCJdfQ.YotCR76yalzTKWneRbkrMSc5vo-bv0J0lVHTprT5jn8vJP68Rr7jOMswm_k_w4zUBsZoelxJ35ZwJ7uQ1UFSniKDj4eJvEV5MjCFuZnaAONS43e0ZuvqAkGFi7wKQUMT4yjEg5j4bzHAUqg9LktGzy0su61R7APsD8vhw2G0hlnePUpI1ORJ9PBKd1Cp79qllaqunRTLsxgbRAA0-PAGUVm7eWBv7F-bt75UPvsAc-ZPHyLEJE2uaeUmpozr8-ZR1e-jMkoljo7g3GUJp34xy1aOhY5FM6hHOEcJuPX_7-4hfbCUgBppqFAQcevnkYjSnrLHBIE10slDcCQ5CYdwoQ"
{
"@type": "Slot",
"facilityUse": {
"@type": "IndividualFacilityUse",
"provider": {
"@type": "Organization",
"@id": "https://localhost:5001/api/identifiers/sellers/1"
}
},
"@context": [
"https://openactive.io/",
"https://openactive.io/test-interface"
],
"test:testOpportunityCriteria": "https://openactive.io/test-interface#TestOpportunityBookable",
"test:testOpenBookingFlow": "https://openactive.io/test-interface#OpenBookingApprovalFlow"
}
Response status code: 200 OK. Responded in 14.630863ms.
{
"@context": "https://openactive.io/",
"@type": "Slot",
"@id": "https://localhost:5001/api/identifiers/facility-uses/2492/individual-facility-uses/1/slots/20492"
}
GET http://localhost:3000/opportunity/https%3A%2F%2Flocalhost%3A5001%2Fapi%2Fidentifiers%2Ffacility-uses%2F2492%2Findividual-facility-uses%2F1%2Fslots%2F20492?useCacheIfAvailable=true
Response status code: 200 OK. Responded in 424.229593ms.
{
"state": "updated",
"id": "https://localhost:5001/api/identifiers/facility-uses/2492/individual-facility-uses/1/slots/20492",
"modified": "1744892416028",
"data": {
"@context": [
"https://openactive.io/"
],
"@type": "Slot",
"@id": "https://localhost:5001/api/identifiers/facility-uses/2492/individual-facility-uses/1/slots/20492",
"identifier": 20492,
"duration": "PT1H",
"facilityUse": {
"@type": "IndividualFacilityUse",
"@id": "https://localhost:5001/api/identifiers/facility-uses/2492/individual-facility-uses/1",
"name": "Court 1 on [OPEN BOOKING API TEST INTERFACE] Bookable Facility",
"aggregateFacilityUse": {
"@type": "FacilityUse",
"@id": "https://localhost:5001/api/identifiers/facility-uses/2492",
"identifier": 2492,
"name": "GOLDEN: [OPEN BOOKING API TEST INTERFACE] Bookable Facility",
"facilityType": [
{
"@type": "Concept",
"@id": "https://openactive.io/facility-types#a1f82b7a-1258-4d9a-8dc5-bfc2ae961651",
"inScheme": "https://openactive.io/facility-types",
"prefLabel": "Squash Court"
}
],
"location": {
"@type": "Place",
"@id": "https://example.com/place/1",
"identifier": 1,
"name": "Post-ercise Plaza",
"description": "Sorting Out Your Fitness One Parcel Lift at a Time! Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
"address": {
"@type": "PostalAddress",
"addressCountry": "GB",
"addressLocality": "Oxford",
"addressRegion": "Oxfordshire",
"postalCode": "OX1 1AA",
"streetAddress": "Kings Mead House"
},
"amenityFeature": [
{
"@type": "ChangingFacilities",
"name": "Changing Facilities",
"value": true
},
{
"@type": "Showers",
"name": "Showers",
"value": true
},
{
"@type": "Lockers",
"name": "Lockers",
"value": true
},
{
"@type": "Towels",
"name": "Towels",
"value": false
},
{
"@type": "Creche",
"name": "Creche",
"value": false
},
{
"@type": "Parking",
"name": "Parking",
"value": false
}
],
"geo": {
"@type": "GeoCoordinates",
"latitude": 51.7502,
"longitude": -1.2674
},
"image": [
{
"@type": "ImageObject",
"url": "https://upload.wikimedia.org/wikipedia/commons/e/e5/Oxford_StAldates_PostOffice.jpg"
}
],
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"closes": "17:30",
"dayOfWeek": [
"https://schema.org/Sunday"
],
"opens": "09:00"
},
{
"@type": "OpeningHoursSpecification",
"closes": "21:30",
"dayOfWeek": [
"https://schema.org/Monday"
],
"opens": "06:30"
},
{
"@type": "OpeningHoursSpecification",
"closes": "21:30",
"dayOfWeek": [
"https://schema.org/Tuesday"
],
"opens": "06:30"
},
{
"@type": "OpeningHoursSpecification",
"closes": "21:30",
"dayOfWeek": [
"https://schema.org/Wednesday"
],
"opens": "06:30"
},
{
"@type": "OpeningHoursSpecification",
"closes": "21:30",
"dayOfWeek": [
"https://schema.org/Thursday"
],
"opens": "06:30"
},
{
"@type": "OpeningHoursSpecification",
"closes": "21:30",
"dayOfWeek": [
"https://schema.org/Friday"
],
"opens": "06:30"
},
{
"@type": "OpeningHoursSpecification",
"closes": "17:30",
"dayOfWeek": [
"https://schema.org/Saturday"
],
"opens": "09:00"
}
],
"telephone": "01865 000001",
"url": "https://en.wikipedia.org/wiki/Post_Office_Limited"
},
"provider": {
"@type": "Organization",
"@id": "https://localhost:5001/api/identifiers/sellers/1",
"name": "Acme Fitness Ltd",
"isOpenBookingAllowed": true,
"sameAs": [
"https://socialmedia.com/AcmeFitnessLtd"
],
"taxMode": "https://openactive.io/TaxGross",
"telephone": "03346 222079",
"termsOfService": [
{
"@type": "PrivacyPolicy",
"name": "Privacy Policy",
"requiresExplicitConsent": false,
"url": "https://example.com/privacy.html"
}
],
"url": "http://luna.info"
},
"url": "https://www.example.com/facilities/2492"
}
},
"maximumUses": 10,
"offers": [
{
"@type": "Offer",
"@id": "https://localhost:5001/api/identifiers/facility-uses/2492/individual-facility-uses/1/slots/20492#/offers/0",
"acceptedPaymentMethod": [
"http://purl.org/goodrelations/v1#Cash",
"http://purl.org/goodrelations/v1#PaymentMethodCreditCard"
],
"allowCustomerCancellationFullRefund": true,
"openBookingFlowRequirement": [
"https://openactive.io/OpenBookingApproval"
],
"price": 0,
"priceCurrency": "GBP"
},
{
"@type": "Offer",
"@id": "https://localhost:5001/api/identifiers/facility-uses/2492/individual-facility-uses/1/slots/20492#/offers/0",
"acceptedPaymentMethod": [
"http://purl.org/goodrelations/v1#Cash",
"http://purl.org/goodrelations/v1#PaymentMethodCreditCard"
],
"allowCustomerCancellationFullRefund": true,
"openBookingFlowRequirement": [
"https://openactive.io/OpenBookingApproval"
],
"price": 0,
"priceCurrency": "GBP"
}
],
"remainingUses": 10,
"startDate": "2025-04-18T12:20:14+00:00",
"endDate": "2025-04-18T13:20:14+00:00"
}
}
description
is missing from IndividualFacilityUse
.image
is missing from IndividualFacilityUse
.hoursAvailable
is missing from IndividualFacilityUse
.description
is missing from FacilityUse
.image
is missing from FacilityUse
.hoursAvailable
is missing from FacilityUse
.offers
is missing from FacilityUse
.name
is missing from Offer
.ageRestriction
is missing from Offer
.name
is missing from Offer
.ageRestriction
is missing from Offer
.PUT https://localhost:5001/api/openbooking/order-quote-templates/cc29404e-c359-46dd-bf58-0cb63ccc24fa
"application/vnd.openactive.booking+json; version=1"
"Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkIwNEY3QjkxREUzQjk0NzhDNjE4MzNGQjI0QUE1Q0RCIiwidHlwIjoiYXQrand0In0.eyJuYmYiOjE3NDQ4OTEyMjIsImV4cCI6MTc0NDg5NDgyMiwiaXNzIjoiaHR0cHM6Ly9sb2NhbGhvc3Q6NTAwMyIsImF1ZCI6Im9wZW5ib29raW5nIiwiY2xpZW50X2lkIjoiNDI0NzRiMzUtZGI3Ni00N2MzLWI4NTMtMzI0NzFhYjhhZjk1IiwiaHR0cHM6Ly9vcGVuYWN0aXZlLmlvL2NsaWVudElkIjoiNDI0NzRiMzUtZGI3Ni00N2MzLWI4NTMtMzI0NzFhYjhhZjk1Iiwic3ViIjoiMTAwIiwiYXV0aF90aW1lIjoxNzQ0ODkxMjIxLCJpZHAiOiJsb2NhbCIsImh0dHBzOi8vb3BlbmFjdGl2ZS5pby9zZWxsZXJJZCI6Imh0dHBzOi8vbG9jYWxob3N0OjUwMDEvYXBpL2lkZW50aWZpZXJzL3NlbGxlcnMvMSIsImp0aSI6IkUyMEU5NzhENzY5RjYyQTVDOTQzNTc1NDlFNTY1OTA2Iiwic2lkIjoiMEI3MkQyMUE5OENBMkQyRTRCMzkyN0I2Q0FEQUI3MkUiLCJpYXQiOjE3NDQ4OTEyMjIsInNjb3BlIjpbIm9wZW5pZCIsIm9wZW5hY3RpdmUtb3BlbmJvb2tpbmciLCJvcGVuYWN0aXZlLWlkZW50aXR5Iiwib2ZmbGluZV9hY2Nlc3MiXSwiYW1yIjpbInB3ZCJdfQ.YotCR76yalzTKWneRbkrMSc5vo-bv0J0lVHTprT5jn8vJP68Rr7jOMswm_k_w4zUBsZoelxJ35ZwJ7uQ1UFSniKDj4eJvEV5MjCFuZnaAONS43e0ZuvqAkGFi7wKQUMT4yjEg5j4bzHAUqg9LktGzy0su61R7APsD8vhw2G0hlnePUpI1ORJ9PBKd1Cp79qllaqunRTLsxgbRAA0-PAGUVm7eWBv7F-bt75UPvsAc-ZPHyLEJE2uaeUmpozr8-ZR1e-jMkoljo7g3GUJp34xy1aOhY5FM6hHOEcJuPX_7-4hfbCUgBppqFAQcevnkYjSnrLHBIE10slDcCQ5CYdwoQ"
{
"@context": "https://openactive.io/",
"@type": "OrderQuote",
"brokerRole": "https://openactive.io/AgentBroker",
"broker": {
"@type": "Organization",
"name": "MyFitnessApp",
"url": "https://myfitnessapp.example.com",
"description": "A fitness app for all the community",
"logo": {
"@type": "ImageObject",
"url": "http://data.myfitnessapp.org.uk/images/logo.png"
},
"address": {
"@type": "PostalAddress",
"streetAddress": "Alan Peacock Way",
"addressLocality": "Village East",
"addressRegion": "Middlesbrough",
"postalCode": "TS4 3AE",
"addressCountry": "GB"
}
},
"seller": "https://localhost:5001/api/identifiers/sellers/1",
"orderedItem": [
{
"@type": "OrderItem",
"position": 0,
"acceptedOffer": "https://localhost:5001/api/identifiers/facility-uses/2492/individual-facility-uses/1/slots/20492#/offers/0",
"orderedItem": "https://localhost:5001/api/identifiers/facility-uses/2492/individual-facility-uses/1/slots/20492"
}
],
"payment": {
"@type": "Payment",
"name": "AcmeBroker Points",
"accountId": "SN1593",
"paymentProviderId": "STRIPE"
}
}
Response status code: 200 OK. Responded in 133.203332ms.
{
"@context": "https://openactive.io/",
"@type": "OrderQuote",
"@id": "https://localhost:5001/api/openbooking/order-quotes/cc29404e-c359-46dd-bf58-0cb63ccc24fa",
"lease": {
"@type": "Lease",
"leaseExpires": "2025-04-17T12:25:15+00:00"
},
"orderRequiresApproval": true,
"bookingService": {
"@type": "BookingService",
"name": "Acme booking system",
"termsOfService": [
{
"@type": "PrivacyPolicy",
"name": "Privacy Policy",
"requiresExplicitConsent": false,
"url": "https://example.com/privacy.html"
}
],
"url": "https://example.com"
},
"broker": {
"@type": "Organization",
"name": "MyFitnessApp",
"url": "https://myfitnessapp.example.com"
},
"brokerRole": "https://openactive.io/AgentBroker",
"orderedItem": [
{
"@type": "OrderItem",
"acceptedOffer": {
"@type": "Offer",
"@id": "https://localhost:5001/api/identifiers/facility-uses/2492/individual-facility-uses/1/slots/20492#/offers/0",
"allowCustomerCancellationFullRefund": true,
"price": 0,
"priceCurrency": "GBP"
},
"orderedItem": {
"@type": "Slot",
"@id": "https://localhost:5001/api/identifiers/facility-uses/2492/individual-facility-uses/1/slots/20492",
"facilityUse": {
"@type": "IndividualFacilityUse",
"@id": "https://localhost:5001/api/identifiers/facility-uses/2492/individual-facility-uses/1",
"aggregateFacilityUse": {
"@type": "FacilityUse",
"@id": "https://localhost:5001/api/identifiers/facility-uses/2492",
"name": "[OPEN BOOKING API TEST INTERFACE] Bookable Facility",
"facilityType": [
{
"@type": "Concept",
"@id": "https://openactive.io/facility-types#a1f82b7a-1258-4d9a-8dc5-bfc2ae961651",
"inScheme": "https://openactive.io/facility-types",
"prefLabel": "Squash Court"
}
],
"location": {
"@type": "Place",
"@id": "https://example.com/place/1",
"identifier": 1,
"name": "Post-ercise Plaza",
"description": "Sorting Out Your Fitness One Parcel Lift at a Time! Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
"address": {
"@type": "PostalAddress",
"addressCountry": "GB",
"addressLocality": "Oxford",
"addressRegion": "Oxfordshire",
"postalCode": "OX1 1AA",
"streetAddress": "Kings Mead House"
},
"amenityFeature": [
{
"@type": "ChangingFacilities",
"name": "Changing Facilities",
"value": true
},
{
"@type": "Showers",
"name": "Showers",
"value": true
},
{
"@type": "Lockers",
"name": "Lockers",
"value": true
},
{
"@type": "Towels",
"name": "Towels",
"value": false
},
{
"@type": "Creche",
"name": "Creche",
"value": false
},
{
"@type": "Parking",
"name": "Parking",
"value": false
}
],
"geo": {
"@type": "GeoCoordinates",
"latitude": 51.7502,
"longitude": -1.2674
},
"image": [
{
"@type": "ImageObject",
"url": "https://upload.wikimedia.org/wikipedia/commons/e/e5/Oxford_StAldates_PostOffice.jpg"
}
],
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"closes": "17:30",
"dayOfWeek": [
"https://schema.org/Sunday"
],
"opens": "09:00"
},
{
"@type": "OpeningHoursSpecification",
"closes": "21:30",
"dayOfWeek": [
"https://schema.org/Monday"
],
"opens": "06:30"
},
{
"@type": "OpeningHoursSpecification",
"closes": "21:30",
"dayOfWeek": [
"https://schema.org/Tuesday"
],
"opens": "06:30"
},
{
"@type": "OpeningHoursSpecification",
"closes": "21:30",
"dayOfWeek": [
"https://schema.org/Wednesday"
],
"opens": "06:30"
},
{
"@type": "OpeningHoursSpecification",
"closes": "21:30",
"dayOfWeek": [
"https://schema.org/Thursday"
],
"opens": "06:30"
},
{
"@type": "OpeningHoursSpecification",
"closes": "21:30",
"dayOfWeek": [
"https://schema.org/Friday"
],
"opens": "06:30"
},
{
"@type": "OpeningHoursSpecification",
"closes": "17:30",
"dayOfWeek": [
"https://schema.org/Saturday"
],
"opens": "09:00"
}
],
"telephone": "01865 000001",
"url": "https://en.wikipedia.org/wiki/Post_Office_Limited"
},
"url": "https://example.com/events/2492"
},
"name": "Court 1 on [OPEN BOOKING API TEST INTERFACE] Bookable Facility"
},
"maximumUses": 10,
"remainingUses": 10,
"startDate": "2025-04-18T12:20:14+00:00",
"endDate": "2025-04-18T13:20:14+00:00"
},
"position": 0,
"unitTaxSpecification": [
{
"@type": "TaxChargeSpecification",
"name": "VAT at 20%",
"price": 0,
"priceCurrency": "GBP",
"rate": 0.2
}
]
}
],
"seller": {
"@type": "Organization",
"@id": "https://localhost:5001/api/identifiers/sellers/1",
"name": "Acme Fitness Ltd",
"address": {
"@type": "PostalAddress",
"addressCountry": "GB",
"addressLocality": "Another town",
"addressRegion": "Oxfordshire",
"postalCode": "OX1 1AA",
"streetAddress": "1 Hidden Gem"
},
"isOpenBookingAllowed": true,
"legalName": "Acme Fitness Ltd",
"taxMode": "https://openactive.io/TaxGross",
"termsOfService": [
{
"@type": "PrivacyPolicy",
"name": "Privacy Policy",
"requiresExplicitConsent": false,
"url": "https://example.com/privacy.html"
}
]
},
"totalPaymentDue": {
"@type": "PriceSpecification",
"openBookingPrepayment": "https://openactive.io/Unavailable",
"price": 0,
"priceCurrency": "GBP"
},
"totalPaymentTax": [
{
"@type": "TaxChargeSpecification",
"name": "VAT at 20%",
"price": 0,
"priceCurrency": "GBP",
"rate": 0.2
}
]
}
name
is missing from Offer
.ageRestriction
is missing from Offer
.duration
is missing from Slot
.description
is missing from IndividualFacilityUse
.image
is missing from IndividualFacilityUse
.hoursAvailable
is missing from IndividualFacilityUse
.description
is missing from FacilityUse
.image
is missing from FacilityUse
.hoursAvailable
is missing from FacilityUse
.offers
is missing from FacilityUse
.email
is missing from Organization
.url
is missing from Organization
.logo
is missing from Organization
.vatID
is missing from Organization
.GET http://localhost:3000/opportunity/https%3A%2F%2Flocalhost%3A5001%2Fapi%2Fidentifiers%2Ffacility-uses%2F2492%2Findividual-facility-uses%2F1%2Fslots%2F20492?useCacheIfAvailable=true&expectedCapacity=9
Response status code: 200 OK. Responded in 912.243037ms.
{
"state": "updated",
"id": "https://localhost:5001/api/identifiers/facility-uses/2492/individual-facility-uses/1/slots/20492",
"modified": "1744892417287",
"data": {
"@context": [
"https://openactive.io/"
],
"@type": "Slot",
"@id": "https://localhost:5001/api/identifiers/facility-uses/2492/individual-facility-uses/1/slots/20492",
"identifier": 20492,
"duration": "PT1H",
"facilityUse": {
"@type": "IndividualFacilityUse",
"@id": "https://localhost:5001/api/identifiers/facility-uses/2492/individual-facility-uses/1",
"name": "Court 1 on [OPEN BOOKING API TEST INTERFACE] Bookable Facility",
"aggregateFacilityUse": {
"@type": "FacilityUse",
"@id": "https://localhost:5001/api/identifiers/facility-uses/2492",
"identifier": 2492,
"name": "GOLDEN: [OPEN BOOKING API TEST INTERFACE] Bookable Facility",
"facilityType": [
{
"@type": "Concept",
"@id": "https://openactive.io/facility-types#a1f82b7a-1258-4d9a-8dc5-bfc2ae961651",
"inScheme": "https://openactive.io/facility-types",
"prefLabel": "Squash Court"
}
],
"location": {
"@type": "Place",
"@id": "https://example.com/place/1",
"identifier": 1,
"name": "Post-ercise Plaza",
"description": "Sorting Out Your Fitness One Parcel Lift at a Time! Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
"address": {
"@type": "PostalAddress",
"addressCountry": "GB",
"addressLocality": "Oxford",
"addressRegion": "Oxfordshire",
"postalCode": "OX1 1AA",
"streetAddress": "Kings Mead House"
},
"amenityFeature": [
{
"@type": "ChangingFacilities",
"name": "Changing Facilities",
"value": true
},
{
"@type": "Showers",
"name": "Showers",
"value": true
},
{
"@type": "Lockers",
"name": "Lockers",
"value": true
},
{
"@type": "Towels",
"name": "Towels",
"value": false
},
{
"@type": "Creche",
"name": "Creche",
"value": false
},
{
"@type": "Parking",
"name": "Parking",
"value": false
}
],
"geo": {
"@type": "GeoCoordinates",
"latitude": 51.7502,
"longitude": -1.2674
},
"image": [
{
"@type": "ImageObject",
"url": "https://upload.wikimedia.org/wikipedia/commons/e/e5/Oxford_StAldates_PostOffice.jpg"
}
],
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"closes": "17:30",
"dayOfWeek": [
"https://schema.org/Sunday"
],
"opens": "09:00"
},
{
"@type": "OpeningHoursSpecification",
"closes": "21:30",
"dayOfWeek": [
"https://schema.org/Monday"
],
"opens": "06:30"
},
{
"@type": "OpeningHoursSpecification",
"closes": "21:30",
"dayOfWeek": [
"https://schema.org/Tuesday"
],
"opens": "06:30"
},
{
"@type": "OpeningHoursSpecification",
"closes": "21:30",
"dayOfWeek": [
"https://schema.org/Wednesday"
],
"opens": "06:30"
},
{
"@type": "OpeningHoursSpecification",
"closes": "21:30",
"dayOfWeek": [
"https://schema.org/Thursday"
],
"opens": "06:30"
},
{
"@type": "OpeningHoursSpecification",
"closes": "21:30",
"dayOfWeek": [
"https://schema.org/Friday"
],
"opens": "06:30"
},
{
"@type": "OpeningHoursSpecification",
"closes": "17:30",
"dayOfWeek": [
"https://schema.org/Saturday"
],
"opens": "09:00"
}
],
"telephone": "01865 000001",
"url": "https://en.wikipedia.org/wiki/Post_Office_Limited"
},
"provider": {
"@type": "Organization",
"@id": "https://localhost:5001/api/identifiers/sellers/1",
"name": "Acme Fitness Ltd",
"isOpenBookingAllowed": true,
"sameAs": [
"https://socialmedia.com/AcmeFitnessLtd"
],
"taxMode": "https://openactive.io/TaxGross",
"telephone": "03346 222079",
"termsOfService": [
{
"@type": "PrivacyPolicy",
"name": "Privacy Policy",
"requiresExplicitConsent": false,
"url": "https://example.com/privacy.html"
}
],
"url": "http://luna.info"
},
"url": "https://www.example.com/facilities/2492"
}
},
"maximumUses": 10,
"offers": [
{
"@type": "Offer",
"@id": "https://localhost:5001/api/identifiers/facility-uses/2492/individual-facility-uses/1/slots/20492#/offers/0",
"acceptedPaymentMethod": [
"http://purl.org/goodrelations/v1#Cash",
"http://purl.org/goodrelations/v1#PaymentMethodCreditCard"
],
"allowCustomerCancellationFullRefund": true,
"openBookingFlowRequirement": [
"https://openactive.io/OpenBookingApproval"
],
"price": 0,
"priceCurrency": "GBP"
},
{
"@type": "Offer",
"@id": "https://localhost:5001/api/identifiers/facility-uses/2492/individual-facility-uses/1/slots/20492#/offers/0",
"acceptedPaymentMethod": [
"http://purl.org/goodrelations/v1#Cash",
"http://purl.org/goodrelations/v1#PaymentMethodCreditCard"
],
"allowCustomerCancellationFullRefund": true,
"openBookingFlowRequirement": [
"https://openactive.io/OpenBookingApproval"
],
"price": 0,
"priceCurrency": "GBP"
}
],
"remainingUses": 9,
"startDate": "2025-04-18T12:20:14+00:00",
"endDate": "2025-04-18T13:20:14+00:00"
}
}
description
is missing from IndividualFacilityUse
.image
is missing from IndividualFacilityUse
.hoursAvailable
is missing from IndividualFacilityUse
.description
is missing from FacilityUse
.image
is missing from FacilityUse
.hoursAvailable
is missing from FacilityUse
.offers
is missing from FacilityUse
.name
is missing from Offer
.ageRestriction
is missing from Offer
.name
is missing from Offer
.ageRestriction
is missing from Offer
.PUT https://localhost:5001/api/openbooking/order-quotes/cc29404e-c359-46dd-bf58-0cb63ccc24fa
"application/vnd.openactive.booking+json; version=1"
"Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkIwNEY3QjkxREUzQjk0NzhDNjE4MzNGQjI0QUE1Q0RCIiwidHlwIjoiYXQrand0In0.eyJuYmYiOjE3NDQ4OTEyMjIsImV4cCI6MTc0NDg5NDgyMiwiaXNzIjoiaHR0cHM6Ly9sb2NhbGhvc3Q6NTAwMyIsImF1ZCI6Im9wZW5ib29raW5nIiwiY2xpZW50X2lkIjoiNDI0NzRiMzUtZGI3Ni00N2MzLWI4NTMtMzI0NzFhYjhhZjk1IiwiaHR0cHM6Ly9vcGVuYWN0aXZlLmlvL2NsaWVudElkIjoiNDI0NzRiMzUtZGI3Ni00N2MzLWI4NTMtMzI0NzFhYjhhZjk1Iiwic3ViIjoiMTAwIiwiYXV0aF90aW1lIjoxNzQ0ODkxMjIxLCJpZHAiOiJsb2NhbCIsImh0dHBzOi8vb3BlbmFjdGl2ZS5pby9zZWxsZXJJZCI6Imh0dHBzOi8vbG9jYWxob3N0OjUwMDEvYXBpL2lkZW50aWZpZXJzL3NlbGxlcnMvMSIsImp0aSI6IkUyMEU5NzhENzY5RjYyQTVDOTQzNTc1NDlFNTY1OTA2Iiwic2lkIjoiMEI3MkQyMUE5OENBMkQyRTRCMzkyN0I2Q0FEQUI3MkUiLCJpYXQiOjE3NDQ4OTEyMjIsInNjb3BlIjpbIm9wZW5pZCIsIm9wZW5hY3RpdmUtb3BlbmJvb2tpbmciLCJvcGVuYWN0aXZlLWlkZW50aXR5Iiwib2ZmbGluZV9hY2Nlc3MiXSwiYW1yIjpbInB3ZCJdfQ.YotCR76yalzTKWneRbkrMSc5vo-bv0J0lVHTprT5jn8vJP68Rr7jOMswm_k_w4zUBsZoelxJ35ZwJ7uQ1UFSniKDj4eJvEV5MjCFuZnaAONS43e0ZuvqAkGFi7wKQUMT4yjEg5j4bzHAUqg9LktGzy0su61R7APsD8vhw2G0hlnePUpI1ORJ9PBKd1Cp79qllaqunRTLsxgbRAA0-PAGUVm7eWBv7F-bt75UPvsAc-ZPHyLEJE2uaeUmpozr8-ZR1e-jMkoljo7g3GUJp34xy1aOhY5FM6hHOEcJuPX_7-4hfbCUgBppqFAQcevnkYjSnrLHBIE10slDcCQ5CYdwoQ"
{
"@context": "https://openactive.io/",
"@type": "OrderQuote",
"brokerRole": "https://openactive.io/AgentBroker",
"broker": {
"@type": "Organization",
"name": "MyFitnessApp",
"url": "https://myfitnessapp.example.com",
"description": "A fitness app for all the community",
"logo": {
"@type": "ImageObject",
"url": "http://data.myfitnessapp.org.uk/images/logo.png"
},
"address": {
"@type": "PostalAddress",
"streetAddress": "Alan Peacock Way",
"addressLocality": "Village East",
"addressRegion": "Middlesbrough",
"postalCode": "TS4 3AE",
"addressCountry": "GB"
}
},
"seller": "https://localhost:5001/api/identifiers/sellers/1",
"customer": {
"@type": "Person",
"email": "[email protected]",
"givenName": "Olson"
},
"orderedItem": [
{
"@type": "OrderItem",
"position": 0,
"acceptedOffer": "https://localhost:5001/api/identifiers/facility-uses/2492/individual-facility-uses/1/slots/20492#/offers/0",
"orderedItem": "https://localhost:5001/api/identifiers/facility-uses/2492/individual-facility-uses/1/slots/20492"
}
],
"payment": {
"@type": "Payment",
"name": "AcmeBroker Points",
"accountId": "SN1593",
"paymentProviderId": "STRIPE"
}
}
Response status code: 200 OK. Responded in 91.923989ms.
{
"@context": "https://openactive.io/",
"@type": "OrderQuote",
"@id": "https://localhost:5001/api/openbooking/order-quotes/cc29404e-c359-46dd-bf58-0cb63ccc24fa",
"lease": {
"@type": "Lease",
"leaseExpires": "2025-04-17T12:25:16+00:00"
},
"orderRequiresApproval": true,
"bookingService": {
"@type": "BookingService",
"name": "Acme booking system",
"termsOfService": [
{
"@type": "PrivacyPolicy",
"name": "Privacy Policy",
"requiresExplicitConsent": false,
"url": "https://example.com/privacy.html"
}
],
"url": "https://example.com"
},
"broker": {
"@type": "Organization",
"name": "MyFitnessApp",
"url": "https://myfitnessapp.example.com"
},
"brokerRole": "https://openactive.io/AgentBroker",
"customer": {
"@type": "Person",
"email": "[email protected]",
"givenName": "Olson"
},
"orderedItem": [
{
"@type": "OrderItem",
"acceptedOffer": {
"@type": "Offer",
"@id": "https://localhost:5001/api/identifiers/facility-uses/2492/individual-facility-uses/1/slots/20492#/offers/0",
"allowCustomerCancellationFullRefund": true,
"price": 0,
"priceCurrency": "GBP"
},
"orderedItem": {
"@type": "Slot",
"@id": "https://localhost:5001/api/identifiers/facility-uses/2492/individual-facility-uses/1/slots/20492",
"facilityUse": {
"@type": "IndividualFacilityUse",
"@id": "https://localhost:5001/api/identifiers/facility-uses/2492/individual-facility-uses/1",
"aggregateFacilityUse": {
"@type": "FacilityUse",
"@id": "https://localhost:5001/api/identifiers/facility-uses/2492",
"name": "[OPEN BOOKING API TEST INTERFACE] Bookable Facility",
"facilityType": [
{
"@type": "Concept",
"@id": "https://openactive.io/facility-types#a1f82b7a-1258-4d9a-8dc5-bfc2ae961651",
"inScheme": "https://openactive.io/facility-types",
"prefLabel": "Squash Court"
}
],
"location": {
"@type": "Place",
"@id": "https://example.com/place/1",
"identifier": 1,
"name": "Post-ercise Plaza",
"description": "Sorting Out Your Fitness One Parcel Lift at a Time! Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
"address": {
"@type": "PostalAddress",
"addressCountry": "GB",
"addressLocality": "Oxford",
"addressRegion": "Oxfordshire",
"postalCode": "OX1 1AA",
"streetAddress": "Kings Mead House"
},
"amenityFeature": [
{
"@type": "ChangingFacilities",
"name": "Changing Facilities",
"value": true
},
{
"@type": "Showers",
"name": "Showers",
"value": true
},
{
"@type": "Lockers",
"name": "Lockers",
"value": true
},
{
"@type": "Towels",
"name": "Towels",
"value": false
},
{
"@type": "Creche",
"name": "Creche",
"value": false
},
{
"@type": "Parking",
"name": "Parking",
"value": false
}
],
"geo": {
"@type": "GeoCoordinates",
"latitude": 51.7502,
"longitude": -1.2674
},
"image": [
{
"@type": "ImageObject",
"url": "https://upload.wikimedia.org/wikipedia/commons/e/e5/Oxford_StAldates_PostOffice.jpg"
}
],
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"closes": "17:30",
"dayOfWeek": [
"https://schema.org/Sunday"
],
"opens": "09:00"
},
{
"@type": "OpeningHoursSpecification",
"closes": "21:30",
"dayOfWeek": [
"https://schema.org/Monday"
],
"opens": "06:30"
},
{
"@type": "OpeningHoursSpecification",
"closes": "21:30",
"dayOfWeek": [
"https://schema.org/Tuesday"
],
"opens": "06:30"
},
{
"@type": "OpeningHoursSpecification",
"closes": "21:30",
"dayOfWeek": [
"https://schema.org/Wednesday"
],
"opens": "06:30"
},
{
"@type": "OpeningHoursSpecification",
"closes": "21:30",
"dayOfWeek": [
"https://schema.org/Thursday"
],
"opens": "06:30"
},
{
"@type": "OpeningHoursSpecification",
"closes": "21:30",
"dayOfWeek": [
"https://schema.org/Friday"
],
"opens": "06:30"
},
{
"@type": "OpeningHoursSpecification",
"closes": "17:30",
"dayOfWeek": [
"https://schema.org/Saturday"
],
"opens": "09:00"
}
],
"telephone": "01865 000001",
"url": "https://en.wikipedia.org/wiki/Post_Office_Limited"
},
"url": "https://example.com/events/2492"
},
"name": "Court 1 on [OPEN BOOKING API TEST INTERFACE] Bookable Facility"
},
"maximumUses": 10,
"remainingUses": 10,
"startDate": "2025-04-18T12:20:14+00:00",
"endDate": "2025-04-18T13:20:14+00:00"
},
"position": 0,
"unitTaxSpecification": [
{
"@type": "TaxChargeSpecification",
"name": "VAT at 20%",
"price": 0,
"priceCurrency": "GBP",
"rate": 0.2
}
]
}
],
"seller": {
"@type": "Organization",
"@id": "https://localhost:5001/api/identifiers/sellers/1",
"name": "Acme Fitness Ltd",
"address": {
"@type": "PostalAddress",
"addressCountry": "GB",
"addressLocality": "Another town",
"addressRegion": "Oxfordshire",
"postalCode": "OX1 1AA",
"streetAddress": "1 Hidden Gem"
},
"isOpenBookingAllowed": true,
"legalName": "Acme Fitness Ltd",
"taxMode": "https://openactive.io/TaxGross",
"termsOfService": [
{
"@type": "PrivacyPolicy",
"name": "Privacy Policy",
"requiresExplicitConsent": false,
"url": "https://example.com/privacy.html"
}
]
},
"totalPaymentDue": {
"@type": "PriceSpecification",
"openBookingPrepayment": "https://openactive.io/Unavailable",
"price": 0,
"priceCurrency": "GBP"
},
"totalPaymentTax": [
{
"@type": "TaxChargeSpecification",
"name": "VAT at 20%",
"price": 0,
"priceCurrency": "GBP",
"rate": 0.2
}
]
}
name
is missing from Offer
.ageRestriction
is missing from Offer
.duration
is missing from Slot
.description
is missing from IndividualFacilityUse
.image
is missing from IndividualFacilityUse
.hoursAvailable
is missing from IndividualFacilityUse
.description
is missing from FacilityUse
.image
is missing from FacilityUse
.hoursAvailable
is missing from FacilityUse
.offers
is missing from FacilityUse
.email
is missing from Organization
.url
is missing from Organization
.logo
is missing from Organization
.vatID
is missing from Organization
.GET http://localhost:3000/opportunity/https%3A%2F%2Flocalhost%3A5001%2Fapi%2Fidentifiers%2Ffacility-uses%2F2492%2Findividual-facility-uses%2F1%2Fslots%2F20492?useCacheIfAvailable=true&expectedCapacity=9
Response status code: 200 OK. Responded in 5.923975ms.
{
"data": {
"@context": [
"https://openactive.io/"
],
"@type": "Slot",
"@id": "https://localhost:5001/api/identifiers/facility-uses/2492/individual-facility-uses/1/slots/20492",
"identifier": 20492,
"duration": "PT1H",
"facilityUse": {
"@type": "IndividualFacilityUse",
"@id": "https://localhost:5001/api/identifiers/facility-uses/2492/individual-facility-uses/1",
"name": "Court 1 on [OPEN BOOKING API TEST INTERFACE] Bookable Facility",
"aggregateFacilityUse": {
"@type": "FacilityUse",
"@id": "https://localhost:5001/api/identifiers/facility-uses/2492",
"identifier": 2492,
"name": "GOLDEN: [OPEN BOOKING API TEST INTERFACE] Bookable Facility",
"facilityType": [
{
"@type": "Concept",
"@id": "https://openactive.io/facility-types#a1f82b7a-1258-4d9a-8dc5-bfc2ae961651",
"inScheme": "https://openactive.io/facility-types",
"prefLabel": "Squash Court"
}
],
"location": {
"@type": "Place",
"@id": "https://example.com/place/1",
"identifier": 1,
"name": "Post-ercise Plaza",
"description": "Sorting Out Your Fitness One Parcel Lift at a Time! Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
"address": {
"@type": "PostalAddress",
"addressCountry": "GB",
"addressLocality": "Oxford",
"addressRegion": "Oxfordshire",
"postalCode": "OX1 1AA",
"streetAddress": "Kings Mead House"
},
"amenityFeature": [
{
"@type": "ChangingFacilities",
"name": "Changing Facilities",
"value": true
},
{
"@type": "Showers",
"name": "Showers",
"value": true
},
{
"@type": "Lockers",
"name": "Lockers",
"value": true
},
{
"@type": "Towels",
"name": "Towels",
"value": false
},
{
"@type": "Creche",
"name": "Creche",
"value": false
},
{
"@type": "Parking",
"name": "Parking",
"value": false
}
],
"geo": {
"@type": "GeoCoordinates",
"latitude": 51.7502,
"longitude": -1.2674
},
"image": [
{
"@type": "ImageObject",
"url": "https://upload.wikimedia.org/wikipedia/commons/e/e5/Oxford_StAldates_PostOffice.jpg"
}
],
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"closes": "17:30",
"dayOfWeek": [
"https://schema.org/Sunday"
],
"opens": "09:00"
},
{
"@type": "OpeningHoursSpecification",
"closes": "21:30",
"dayOfWeek": [
"https://schema.org/Monday"
],
"opens": "06:30"
},
{
"@type": "OpeningHoursSpecification",
"closes": "21:30",
"dayOfWeek": [
"https://schema.org/Tuesday"
],
"opens": "06:30"
},
{
"@type": "OpeningHoursSpecification",
"closes": "21:30",
"dayOfWeek": [
"https://schema.org/Wednesday"
],
"opens": "06:30"
},
{
"@type": "OpeningHoursSpecification",
"closes": "21:30",
"dayOfWeek": [
"https://schema.org/Thursday"
],
"opens": "06:30"
},
{
"@type": "OpeningHoursSpecification",
"closes": "21:30",
"dayOfWeek": [
"https://schema.org/Friday"
],
"opens": "06:30"
},
{
"@type": "OpeningHoursSpecification",
"closes": "17:30",
"dayOfWeek": [
"https://schema.org/Saturday"
],
"opens": "09:00"
}
],
"telephone": "01865 000001",
"url": "https://en.wikipedia.org/wiki/Post_Office_Limited"
},
"provider": {
"@type": "Organization",
"@id": "https://localhost:5001/api/identifiers/sellers/1",
"name": "Acme Fitness Ltd",
"isOpenBookingAllowed": true,
"sameAs": [
"https://socialmedia.com/AcmeFitnessLtd"
],
"taxMode": "https://openactive.io/TaxGross",
"telephone": "03346 222079",
"termsOfService": [
{
"@type": "PrivacyPolicy",
"name": "Privacy Policy",
"requiresExplicitConsent": false,
"url": "https://example.com/privacy.html"
}
],
"url": "http://luna.info"
},
"url": "https://www.example.com/facilities/2492"
}
},
"maximumUses": 10,
"offers": [
{
"@type": "Offer",
"@id": "https://localhost:5001/api/identifiers/facility-uses/2492/individual-facility-uses/1/slots/20492#/offers/0",
"acceptedPaymentMethod": [
"http://purl.org/goodrelations/v1#Cash",
"http://purl.org/goodrelations/v1#PaymentMethodCreditCard"
],
"allowCustomerCancellationFullRefund": true,
"openBookingFlowRequirement": [
"https://openactive.io/OpenBookingApproval"
],
"price": 0,
"priceCurrency": "GBP"
},
{
"@type": "Offer",
"@id": "https://localhost:5001/api/identifiers/facility-uses/2492/individual-facility-uses/1/slots/20492#/offers/0",
"acceptedPaymentMethod": [
"http://purl.org/goodrelations/v1#Cash",
"http://purl.org/goodrelations/v1#PaymentMethodCreditCard"
],
"allowCustomerCancellationFullRefund": true,
"openBookingFlowRequirement": [
"https://openactive.io/OpenBookingApproval"
],
"price": 0,
"priceCurrency": "GBP"
}
],
"remainingUses": 9,
"startDate": "2025-04-18T12:20:14+00:00",
"endDate": "2025-04-18T13:20:14+00:00"
}
}
description
is missing from IndividualFacilityUse
.image
is missing from IndividualFacilityUse
.hoursAvailable
is missing from IndividualFacilityUse
.description
is missing from FacilityUse
.image
is missing from FacilityUse
.hoursAvailable
is missing from FacilityUse
.offers
is missing from FacilityUse
.name
is missing from Offer
.ageRestriction
is missing from Offer
.name
is missing from Offer
.ageRestriction
is missing from Offer
.PUT https://localhost:5001/api/openbooking/order-proposals/cc29404e-c359-46dd-bf58-0cb63ccc24fa
"application/vnd.openactive.booking+json; version=1"
"Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkIwNEY3QjkxREUzQjk0NzhDNjE4MzNGQjI0QUE1Q0RCIiwidHlwIjoiYXQrand0In0.eyJuYmYiOjE3NDQ4OTEyMjIsImV4cCI6MTc0NDg5NDgyMiwiaXNzIjoiaHR0cHM6Ly9sb2NhbGhvc3Q6NTAwMyIsImF1ZCI6Im9wZW5ib29raW5nIiwiY2xpZW50X2lkIjoiNDI0NzRiMzUtZGI3Ni00N2MzLWI4NTMtMzI0NzFhYjhhZjk1IiwiaHR0cHM6Ly9vcGVuYWN0aXZlLmlvL2NsaWVudElkIjoiNDI0NzRiMzUtZGI3Ni00N2MzLWI4NTMtMzI0NzFhYjhhZjk1Iiwic3ViIjoiMTAwIiwiYXV0aF90aW1lIjoxNzQ0ODkxMjIxLCJpZHAiOiJsb2NhbCIsImh0dHBzOi8vb3BlbmFjdGl2ZS5pby9zZWxsZXJJZCI6Imh0dHBzOi8vbG9jYWxob3N0OjUwMDEvYXBpL2lkZW50aWZpZXJzL3NlbGxlcnMvMSIsImp0aSI6IkUyMEU5NzhENzY5RjYyQTVDOTQzNTc1NDlFNTY1OTA2Iiwic2lkIjoiMEI3MkQyMUE5OENBMkQyRTRCMzkyN0I2Q0FEQUI3MkUiLCJpYXQiOjE3NDQ4OTEyMjIsInNjb3BlIjpbIm9wZW5pZCIsIm9wZW5hY3RpdmUtb3BlbmJvb2tpbmciLCJvcGVuYWN0aXZlLWlkZW50aXR5Iiwib2ZmbGluZV9hY2Nlc3MiXSwiYW1yIjpbInB3ZCJdfQ.YotCR76yalzTKWneRbkrMSc5vo-bv0J0lVHTprT5jn8vJP68Rr7jOMswm_k_w4zUBsZoelxJ35ZwJ7uQ1UFSniKDj4eJvEV5MjCFuZnaAONS43e0ZuvqAkGFi7wKQUMT4yjEg5j4bzHAUqg9LktGzy0su61R7APsD8vhw2G0hlnePUpI1ORJ9PBKd1Cp79qllaqunRTLsxgbRAA0-PAGUVm7eWBv7F-bt75UPvsAc-ZPHyLEJE2uaeUmpozr8-ZR1e-jMkoljo7g3GUJp34xy1aOhY5FM6hHOEcJuPX_7-4hfbCUgBppqFAQcevnkYjSnrLHBIE10slDcCQ5CYdwoQ"
{
"@context": "https://openactive.io/",
"@type": "OrderProposal",
"brokerRole": "https://openactive.io/AgentBroker",
"broker": {
"@type": "Organization",
"name": "MyFitnessApp",
"url": "https://myfitnessapp.example.com",
"description": "A fitness app for all the community",
"logo": {
"@type": "ImageObject",
"url": "http://data.myfitnessapp.org.uk/images/logo.png"
},
"address": {
"@type": "PostalAddress",
"streetAddress": "Alan Peacock Way",
"addressLocality": "Village East",
"addressRegion": "Middlesbrough",
"postalCode": "TS4 3AE",
"addressCountry": "GB"
}
},
"seller": "https://localhost:5001/api/identifiers/sellers/1",
"customer": {
"@type": "Person",
"email": "[email protected]",
"givenName": "Olson"
},
"orderedItem": [
{
"@type": "OrderItem",
"position": 0,
"acceptedOffer": "https://localhost:5001/api/identifiers/facility-uses/2492/individual-facility-uses/1/slots/20492#/offers/0",
"orderedItem": "https://localhost:5001/api/identifiers/facility-uses/2492/individual-facility-uses/1/slots/20492"
}
],
"totalPaymentDue": {
"@type": "PriceSpecification",
"price": 0,
"priceCurrency": "GBP"
}
}
Response status code: 201 Created. Responded in 107.092325ms.
{
"@context": "https://openactive.io/",
"@type": "OrderProposal",
"@id": "https://localhost:5001/api/openbooking/order-proposals/cc29404e-c359-46dd-bf58-0cb63ccc24fa",
"orderProposalStatus": "https://openactive.io/AwaitingSellerConfirmation",
"bookingService": {
"@type": "BookingService",
"name": "Acme booking system",
"termsOfService": [
{
"@type": "PrivacyPolicy",
"name": "Privacy Policy",
"requiresExplicitConsent": false,
"url": "https://example.com/privacy.html"
}
],
"url": "https://example.com"
},
"broker": {
"@type": "Organization",
"name": "MyFitnessApp",
"url": "https://myfitnessapp.example.com"
},
"brokerRole": "https://openactive.io/AgentBroker",
"customer": {
"@type": "Person",
"email": "[email protected]",
"givenName": "Olson"
},
"orderedItem": [
{
"@type": "OrderItem",
"@id": "https://localhost:5001/api/openbooking/orders/cc29404e-c359-46dd-bf58-0cb63ccc24fa#/orderedItems/1912",
"acceptedOffer": {
"@type": "Offer",
"@id": "https://localhost:5001/api/identifiers/facility-uses/2492/individual-facility-uses/1/slots/20492#/offers/0",
"allowCustomerCancellationFullRefund": true,
"price": 0,
"priceCurrency": "GBP"
},
"orderedItem": {
"@type": "Slot",
"@id": "https://localhost:5001/api/identifiers/facility-uses/2492/individual-facility-uses/1/slots/20492",
"facilityUse": {
"@type": "IndividualFacilityUse",
"@id": "https://localhost:5001/api/identifiers/facility-uses/2492/individual-facility-uses/1",
"aggregateFacilityUse": {
"@type": "FacilityUse",
"@id": "https://localhost:5001/api/identifiers/facility-uses/2492",
"name": "[OPEN BOOKING API TEST INTERFACE] Bookable Facility",
"facilityType": [
{
"@type": "Concept",
"@id": "https://openactive.io/facility-types#a1f82b7a-1258-4d9a-8dc5-bfc2ae961651",
"inScheme": "https://openactive.io/facility-types",
"prefLabel": "Squash Court"
}
],
"location": {
"@type": "Place",
"@id": "https://example.com/place/1",
"identifier": 1,
"name": "Post-ercise Plaza",
"description": "Sorting Out Your Fitness One Parcel Lift at a Time! Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
"address": {
"@type": "PostalAddress",
"addressCountry": "GB",
"addressLocality": "Oxford",
"addressRegion": "Oxfordshire",
"postalCode": "OX1 1AA",
"streetAddress": "Kings Mead House"
},
"amenityFeature": [
{
"@type": "ChangingFacilities",
"name": "Changing Facilities",
"value": true
},
{
"@type": "Showers",
"name": "Showers",
"value": true
},
{
"@type": "Lockers",
"name": "Lockers",
"value": true
},
{
"@type": "Towels",
"name": "Towels",
"value": false
},
{
"@type": "Creche",
"name": "Creche",
"value": false
},
{
"@type": "Parking",
"name": "Parking",
"value": false
}
],
"geo": {
"@type": "GeoCoordinates",
"latitude": 51.7502,
"longitude": -1.2674
},
"image": [
{
"@type": "ImageObject",
"url": "https://upload.wikimedia.org/wikipedia/commons/e/e5/Oxford_StAldates_PostOffice.jpg"
}
],
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"closes": "17:30",
"dayOfWeek": [
"https://schema.org/Sunday"
],
"opens": "09:00"
},
{
"@type": "OpeningHoursSpecification",
"closes": "21:30",
"dayOfWeek": [
"https://schema.org/Monday"
],
"opens": "06:30"
},
{
"@type": "OpeningHoursSpecification",
"closes": "21:30",
"dayOfWeek": [
"https://schema.org/Tuesday"
],
"opens": "06:30"
},
{
"@type": "OpeningHoursSpecification",
"closes": "21:30",
"dayOfWeek": [
"https://schema.org/Wednesday"
],
"opens": "06:30"
},
{
"@type": "OpeningHoursSpecification",
"closes": "21:30",
"dayOfWeek": [
"https://schema.org/Thursday"
],
"opens": "06:30"
},
{
"@type": "OpeningHoursSpecification",
"closes": "21:30",
"dayOfWeek": [
"https://schema.org/Friday"
],
"opens": "06:30"
},
{
"@type": "OpeningHoursSpecification",
"closes": "17:30",
"dayOfWeek": [
"https://schema.org/Saturday"
],
"opens": "09:00"
}
],
"telephone": "01865 000001",
"url": "https://en.wikipedia.org/wiki/Post_Office_Limited"
},
"url": "https://example.com/events/2492"
},
"name": "Court 1 on [OPEN BOOKING API TEST INTERFACE] Bookable Facility"
},
"maximumUses": 10,
"remainingUses": 10,
"startDate": "2025-04-18T12:20:14+00:00",
"endDate": "2025-04-18T13:20:14+00:00"
},
"position": 0,
"unitTaxSpecification": [
{
"@type": "TaxChargeSpecification",
"name": "VAT at 20%",
"price": 0,
"priceCurrency": "GBP",
"rate": 0.2
}
]
}
],
"orderProposalVersion": "https://localhost:5001/api/openbooking/order-proposals/cc29404e-c359-46dd-bf58-0cb63ccc24fa/versions/d4a46a7f-4f7b-4433-aa7c-594aa6e4d722",
"seller": {
"@type": "Organization",
"@id": "https://localhost:5001/api/identifiers/sellers/1",
"name": "Acme Fitness Ltd",
"address": {
"@type": "PostalAddress",
"addressCountry": "GB",
"addressLocality": "Another town",
"addressRegion": "Oxfordshire",
"postalCode": "OX1 1AA",
"streetAddress": "1 Hidden Gem"
},
"isOpenBookingAllowed": true,
"legalName": "Acme Fitness Ltd",
"taxMode": "https://openactive.io/TaxGross",
"termsOfService": [
{
"@type": "PrivacyPolicy",
"name": "Privacy Policy",
"requiresExplicitConsent": false,
"url": "https://example.com/privacy.html"
}
]
},
"totalPaymentDue": {
"@type": "PriceSpecification",
"openBookingPrepayment": "https://openactive.io/Unavailable",
"price": 0,
"priceCurrency": "GBP"
},
"totalPaymentTax": [
{
"@type": "TaxChargeSpecification",
"name": "VAT at 20%",
"price": 0,
"priceCurrency": "GBP",
"rate": 0.2
}
]
}
name
is missing from Offer
.ageRestriction
is missing from Offer
.duration
is missing from Slot
.description
is missing from IndividualFacilityUse
.image
is missing from IndividualFacilityUse
.hoursAvailable
is missing from IndividualFacilityUse
.description
is missing from FacilityUse
.image
is missing from FacilityUse
.hoursAvailable
is missing from FacilityUse
.offers
is missing from FacilityUse
.email
is missing from Organization
.url
is missing from Organization
.logo
is missing from Organization
.vatID
is missing from Organization
.POST http://localhost:3000/order-listeners/order-proposals/primary/cc29404e-c359-46dd-bf58-0cb63ccc24fa
{}
Response status code: 200 OK. Responded in 3.776785ms.
{
"headers": {
"Accept": "application/json, application/vnd.openactive.booking+json; version=1",
"Cache-Control": "max-age=0",
"Authorization": "Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkIwNEY3QjkxREUzQjk0NzhDNjE4MzNGQjI0QUE1Q0RCIiwidHlwIjoiYXQrand0In0.eyJuYmYiOjE3NDQ4OTEyMTgsImV4cCI6MTc0NDg5NDgxOCwiaXNzIjoiaHR0cHM6Ly9sb2NhbGhvc3Q6NTAwMyIsImF1ZCI6Im9wZW5ib29raW5nIiwiY2xpZW50X2lkIjoiNDI0NzRiMzUtZGI3Ni00N2MzLWI4NTMtMzI0NzFhYjhhZjk1IiwiaHR0cHM6Ly9vcGVuYWN0aXZlLmlvL2NsaWVudElkIjoiNDI0NzRiMzUtZGI3Ni00N2MzLWI4NTMtMzI0NzFhYjhhZjk1IiwianRpIjoiMTE3NUIzOTQyMDFGOTYzREUzQzlFOTY2QkEzQTA5QzEiLCJpYXQiOjE3NDQ4OTEyMTgsInNjb3BlIjpbIm9wZW5hY3RpdmUtb3JkZXJzZmVlZCJdfQ.d7sTU03zTaBoQj5qpEm-MusIIrv8H07fG01F1YALQlkSEDp0Y2TB3QvlBE9aKqb1Gg0lXvY6CTjsS6VX0cYP5zmuaDQJVvHdG-TiUlFjlf_KlCkr0k5pyNydziEq5SDUO8hlawtfmq0DIEIl_8tyQU8vQrrT3oYKqWJrvdfdWQl0lUQB-Aqp-RH5V2i6e3gV1xYedF2zdANIWnI_An3E6ql7DMqaV5ui2oHBm4WlfOF4CR1rmaK3jYHacYTbZnHFn-ivtDTM7sWXAmZsCqttCNyoRqac2kGWwbp2_cu385R4dYlw7oDU4nafcU3yQuKvCUOdufFVMXNGMEJpO8zaUQ"
},
"startingFeedPage": "https://localhost:5001/api/openbooking/order-proposals-rpde?afterTimestamp=638804892119509850&afterId=9a544413-0c24-419c-9796-fe4deb36009e",
"message": "Listening for UUID: 'cc29404e-c359-46dd-bf58-0cb63ccc24fa' in feed: order-proposals, for Booking Partner: primary from startingFeedPage using headers"
}
POST https://localhost:5001/api/openbooking/test-interface/actions
"application/vnd.openactive.booking+json; version=1"
"Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkIwNEY3QjkxREUzQjk0NzhDNjE4MzNGQjI0QUE1Q0RCIiwidHlwIjoiYXQrand0In0.eyJuYmYiOjE3NDQ4OTEyMjIsImV4cCI6MTc0NDg5NDgyMiwiaXNzIjoiaHR0cHM6Ly9sb2NhbGhvc3Q6NTAwMyIsImF1ZCI6Im9wZW5ib29raW5nIiwiY2xpZW50X2lkIjoiNDI0NzRiMzUtZGI3Ni00N2MzLWI4NTMtMzI0NzFhYjhhZjk1IiwiaHR0cHM6Ly9vcGVuYWN0aXZlLmlvL2NsaWVudElkIjoiNDI0NzRiMzUtZGI3Ni00N2MzLWI4NTMtMzI0NzFhYjhhZjk1Iiwic3ViIjoiMTAwIiwiYXV0aF90aW1lIjoxNzQ0ODkxMjIxLCJpZHAiOiJsb2NhbCIsImh0dHBzOi8vb3BlbmFjdGl2ZS5pby9zZWxsZXJJZCI6Imh0dHBzOi8vbG9jYWxob3N0OjUwMDEvYXBpL2lkZW50aWZpZXJzL3NlbGxlcnMvMSIsImp0aSI6IkUyMEU5NzhENzY5RjYyQTVDOTQzNTc1NDlFNTY1OTA2Iiwic2lkIjoiMEI3MkQyMUE5OENBMkQyRTRCMzkyN0I2Q0FEQUI3MkUiLCJpYXQiOjE3NDQ4OTEyMjIsInNjb3BlIjpbIm9wZW5pZCIsIm9wZW5hY3RpdmUtb3BlbmJvb2tpbmciLCJvcGVuYWN0aXZlLWlkZW50aXR5Iiwib2ZmbGluZV9hY2Nlc3MiXSwiYW1yIjpbInB3ZCJdfQ.YotCR76yalzTKWneRbkrMSc5vo-bv0J0lVHTprT5jn8vJP68Rr7jOMswm_k_w4zUBsZoelxJ35ZwJ7uQ1UFSniKDj4eJvEV5MjCFuZnaAONS43e0ZuvqAkGFi7wKQUMT4yjEg5j4bzHAUqg9LktGzy0su61R7APsD8vhw2G0hlnePUpI1ORJ9PBKd1Cp79qllaqunRTLsxgbRAA0-PAGUVm7eWBv7F-bt75UPvsAc-ZPHyLEJE2uaeUmpozr8-ZR1e-jMkoljo7g3GUJp34xy1aOhY5FM6hHOEcJuPX_7-4hfbCUgBppqFAQcevnkYjSnrLHBIE10slDcCQ5CYdwoQ"
{
"@context": [
"https://openactive.io/",
"https://openactive.io/test-interface"
],
"@type": "test:SellerAcceptOrderProposalSimulateAction",
"object": {
"@type": "OrderProposal",
"@id": "https://localhost:5001/api/openbooking/order-proposals/cc29404e-c359-46dd-bf58-0cb63ccc24fa"
}
}
Response status code: 204 No Content. Responded in 10.575208ms.
GET http://localhost:3000/order-listeners/order-proposals/primary/cc29404e-c359-46dd-bf58-0cb63ccc24fa
Response status code: 200 OK. Responded in 2254.893075ms.
{
"state": "updated",
"kind": "Order",
"id": "cc29404e-c359-46dd-bf58-0cb63ccc24fa",
"modified": "638804892168947752",
"data": {
"@context": "https://openactive.io/",
"@type": "OrderProposal",
"@id": "https://localhost:5001/api/openbooking/order-proposals/cc29404e-c359-46dd-bf58-0cb63ccc24fa",
"identifier": "cc29404e-c359-46dd-bf58-0cb63ccc24fa",
"orderProposalStatus": "https://openactive.io/SellerAccepted",
"orderedItem": [
{
"@type": "OrderItem",
"@id": "https://localhost:5001/api/openbooking/orders/cc29404e-c359-46dd-bf58-0cb63ccc24fa#/orderedItems/1912",
"acceptedOffer": {
"@type": "Offer",
"@id": "https://localhost:5001/api/identifiers/facility-uses/2492/individual-facility-uses/1/slots/20492#/offers/0",
"price": 0,
"priceCurrency": "GBP"
},
"orderedItem": "https://localhost:5001/api/identifiers/facility-uses/2492/individual-facility-uses/1/slots/20492"
}
],
"orderProposalVersion": "https://localhost:5001/api/openbooking/order-proposals/cc29404e-c359-46dd-bf58-0cb63ccc24fa/versions/d4a46a7f-4f7b-4433-aa7c-594aa6e4d722",
"totalPaymentDue": {
"@type": "PriceSpecification",
"openBookingPrepayment": "https://openactive.io/Unavailable",
"price": 0,
"priceCurrency": "GBP"
}
}
}
name
is missing from Offer
.ageRestriction
is missing from Offer
.allowCustomerCancellationFullRefund
is missing from Offer
.POST http://localhost:3000/order-listeners/order-proposals/primary/cc29404e-c359-46dd-bf58-0cb63ccc24fa
{}
Response status code: 200 OK. Responded in 7.731732ms.
{
"headers": {
"Accept": "application/json, application/vnd.openactive.booking+json; version=1",
"Cache-Control": "max-age=0",
"Authorization": "Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkIwNEY3QjkxREUzQjk0NzhDNjE4MzNGQjI0QUE1Q0RCIiwidHlwIjoiYXQrand0In0.eyJuYmYiOjE3NDQ4OTEyMTgsImV4cCI6MTc0NDg5NDgxOCwiaXNzIjoiaHR0cHM6Ly9sb2NhbGhvc3Q6NTAwMyIsImF1ZCI6Im9wZW5ib29raW5nIiwiY2xpZW50X2lkIjoiNDI0NzRiMzUtZGI3Ni00N2MzLWI4NTMtMzI0NzFhYjhhZjk1IiwiaHR0cHM6Ly9vcGVuYWN0aXZlLmlvL2NsaWVudElkIjoiNDI0NzRiMzUtZGI3Ni00N2MzLWI4NTMtMzI0NzFhYjhhZjk1IiwianRpIjoiMTE3NUIzOTQyMDFGOTYzREUzQzlFOTY2QkEzQTA5QzEiLCJpYXQiOjE3NDQ4OTEyMTgsInNjb3BlIjpbIm9wZW5hY3RpdmUtb3JkZXJzZmVlZCJdfQ.d7sTU03zTaBoQj5qpEm-MusIIrv8H07fG01F1YALQlkSEDp0Y2TB3QvlBE9aKqb1Gg0lXvY6CTjsS6VX0cYP5zmuaDQJVvHdG-TiUlFjlf_KlCkr0k5pyNydziEq5SDUO8hlawtfmq0DIEIl_8tyQU8vQrrT3oYKqWJrvdfdWQl0lUQB-Aqp-RH5V2i6e3gV1xYedF2zdANIWnI_An3E6ql7DMqaV5ui2oHBm4WlfOF4CR1rmaK3jYHacYTbZnHFn-ivtDTM7sWXAmZsCqttCNyoRqac2kGWwbp2_cu385R4dYlw7oDU4nafcU3yQuKvCUOdufFVMXNGMEJpO8zaUQ"
},
"startingFeedPage": "https://localhost:5001/api/openbooking/order-proposals-rpde?afterTimestamp=638804892168947752&afterId=cc29404e-c359-46dd-bf58-0cb63ccc24fa",
"message": "Listening for UUID: 'cc29404e-c359-46dd-bf58-0cb63ccc24fa' in feed: order-proposals, for Booking Partner: primary from startingFeedPage using headers"
}
PUT https://localhost:5001/api/openbooking/orders/cc29404e-c359-46dd-bf58-0cb63ccc24fa
"application/vnd.openactive.booking+json; version=1"
"Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkIwNEY3QjkxREUzQjk0NzhDNjE4MzNGQjI0QUE1Q0RCIiwidHlwIjoiYXQrand0In0.eyJuYmYiOjE3NDQ4OTEyMjIsImV4cCI6MTc0NDg5NDgyMiwiaXNzIjoiaHR0cHM6Ly9sb2NhbGhvc3Q6NTAwMyIsImF1ZCI6Im9wZW5ib29raW5nIiwiY2xpZW50X2lkIjoiNDI0NzRiMzUtZGI3Ni00N2MzLWI4NTMtMzI0NzFhYjhhZjk1IiwiaHR0cHM6Ly9vcGVuYWN0aXZlLmlvL2NsaWVudElkIjoiNDI0NzRiMzUtZGI3Ni00N2MzLWI4NTMtMzI0NzFhYjhhZjk1Iiwic3ViIjoiMTAwIiwiYXV0aF90aW1lIjoxNzQ0ODkxMjIxLCJpZHAiOiJsb2NhbCIsImh0dHBzOi8vb3BlbmFjdGl2ZS5pby9zZWxsZXJJZCI6Imh0dHBzOi8vbG9jYWxob3N0OjUwMDEvYXBpL2lkZW50aWZpZXJzL3NlbGxlcnMvMSIsImp0aSI6IkUyMEU5NzhENzY5RjYyQTVDOTQzNTc1NDlFNTY1OTA2Iiwic2lkIjoiMEI3MkQyMUE5OENBMkQyRTRCMzkyN0I2Q0FEQUI3MkUiLCJpYXQiOjE3NDQ4OTEyMjIsInNjb3BlIjpbIm9wZW5pZCIsIm9wZW5hY3RpdmUtb3BlbmJvb2tpbmciLCJvcGVuYWN0aXZlLWlkZW50aXR5Iiwib2ZmbGluZV9hY2Nlc3MiXSwiYW1yIjpbInB3ZCJdfQ.YotCR76yalzTKWneRbkrMSc5vo-bv0J0lVHTprT5jn8vJP68Rr7jOMswm_k_w4zUBsZoelxJ35ZwJ7uQ1UFSniKDj4eJvEV5MjCFuZnaAONS43e0ZuvqAkGFi7wKQUMT4yjEg5j4bzHAUqg9LktGzy0su61R7APsD8vhw2G0hlnePUpI1ORJ9PBKd1Cp79qllaqunRTLsxgbRAA0-PAGUVm7eWBv7F-bt75UPvsAc-ZPHyLEJE2uaeUmpozr8-ZR1e-jMkoljo7g3GUJp34xy1aOhY5FM6hHOEcJuPX_7-4hfbCUgBppqFAQcevnkYjSnrLHBIE10slDcCQ5CYdwoQ"
{
"@context": "https://openactive.io/",
"@type": "Order",
"orderProposalVersion": "https://localhost:5001/api/openbooking/order-proposals/cc29404e-c359-46dd-bf58-0cb63ccc24fa/versions/d4a46a7f-4f7b-4433-aa7c-594aa6e4d722"
}
Response status code: 201 Created. Responded in 151.526081ms.
{
"@context": [
"https://openactive.io/",
"https://openactive.io/ns-beta"
],
"@type": "Order",
"@id": "https://localhost:5001/api/openbooking/orders/cc29404e-c359-46dd-bf58-0cb63ccc24fa",
"identifier": "cc29404e-c359-46dd-bf58-0cb63ccc24fa",
"bookingService": {
"@type": "BookingService",
"name": "Acme booking system",
"termsOfService": [
{
"@type": "PrivacyPolicy",
"name": "Privacy Policy",
"requiresExplicitConsent": false,
"url": "https://example.com/privacy.html"
}
],
"url": "https://example.com"
},
"broker": {
"@type": "Organization",
"name": "MyFitnessApp",
"url": "https://myfitnessapp.example.com/"
},
"brokerRole": "https://openactive.io/AgentBroker",
"customer": {
"@type": "Person",
"email": "[email protected]",
"givenName": "Olson"
},
"orderedItem": [
{
"@type": "OrderItem",
"@id": "https://localhost:5001/api/openbooking/orders/cc29404e-c359-46dd-bf58-0cb63ccc24fa#/orderedItems/1912",
"acceptedOffer": {
"@type": "Offer",
"@id": "https://localhost:5001/api/identifiers/facility-uses/2492/individual-facility-uses/1/slots/20492#/offers/0",
"allowCustomerCancellationFullRefund": true,
"price": 0,
"priceCurrency": "GBP"
},
"accessCode": [
{
"@type": "PropertyValue",
"name": "Pin Code",
"description": "613198"
}
],
"accessPass": [
{
"@type": "ImageObject",
"url": "https://via.placeholder.com/25x25/cccccc/9c9c9c.png"
},
{
"@type": "Barcode",
"text": "9378480941",
"url": "https://via.placeholder.com/25x25/cccccc/9c9c9c.png",
"beta:codeType": "code128"
}
],
"orderedItem": {
"@type": "Slot",
"@id": "https://localhost:5001/api/identifiers/facility-uses/2492/individual-facility-uses/1/slots/20492",
"facilityUse": {
"@type": "IndividualFacilityUse",
"@id": "https://localhost:5001/api/identifiers/facility-uses/2492/individual-facility-uses/1",
"aggregateFacilityUse": {
"@type": "FacilityUse",
"@id": "https://localhost:5001/api/identifiers/facility-uses/2492",
"name": "[OPEN BOOKING API TEST INTERFACE] Bookable Facility",
"facilityType": [
{
"@type": "Concept",
"@id": "https://openactive.io/facility-types#a1f82b7a-1258-4d9a-8dc5-bfc2ae961651",
"inScheme": "https://openactive.io/facility-types",
"prefLabel": "Squash Court"
}
],
"location": {
"@type": "Place",
"@id": "https://example.com/place/1",
"identifier": 1,
"name": "Post-ercise Plaza",
"description": "Sorting Out Your Fitness One Parcel Lift at a Time! Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
"address": {
"@type": "PostalAddress",
"addressCountry": "GB",
"addressLocality": "Oxford",
"addressRegion": "Oxfordshire",
"postalCode": "OX1 1AA",
"streetAddress": "Kings Mead House"
},
"amenityFeature": [
{
"@type": "ChangingFacilities",
"name": "Changing Facilities",
"value": true
},
{
"@type": "Showers",
"name": "Showers",
"value": true
},
{
"@type": "Lockers",
"name": "Lockers",
"value": true
},
{
"@type": "Towels",
"name": "Towels",
"value": false
},
{
"@type": "Creche",
"name": "Creche",
"value": false
},
{
"@type": "Parking",
"name": "Parking",
"value": false
}
],
"geo": {
"@type": "GeoCoordinates",
"latitude": 51.7502,
"longitude": -1.2674
},
"image": [
{
"@type": "ImageObject",
"url": "https://upload.wikimedia.org/wikipedia/commons/e/e5/Oxford_StAldates_PostOffice.jpg"
}
],
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"closes": "17:30",
"dayOfWeek": [
"https://schema.org/Sunday"
],
"opens": "09:00"
},
{
"@type": "OpeningHoursSpecification",
"closes": "21:30",
"dayOfWeek": [
"https://schema.org/Monday"
],
"opens": "06:30"
},
{
"@type": "OpeningHoursSpecification",
"closes": "21:30",
"dayOfWeek": [
"https://schema.org/Tuesday"
],
"opens": "06:30"
},
{
"@type": "OpeningHoursSpecification",
"closes": "21:30",
"dayOfWeek": [
"https://schema.org/Wednesday"
],
"opens": "06:30"
},
{
"@type": "OpeningHoursSpecification",
"closes": "21:30",
"dayOfWeek": [
"https://schema.org/Thursday"
],
"opens": "06:30"
},
{
"@type": "OpeningHoursSpecification",
"closes": "21:30",
"dayOfWeek": [
"https://schema.org/Friday"
],
"opens": "06:30"
},
{
"@type": "OpeningHoursSpecification",
"closes": "17:30",
"dayOfWeek": [
"https://schema.org/Saturday"
],
"opens": "09:00"
}
],
"telephone": "01865 000001",
"url": "https://en.wikipedia.org/wiki/Post_Office_Limited"
},
"url": "https://example.com/events/2492"
},
"name": "Court 1 on [OPEN BOOKING API TEST INTERFACE] Bookable Facility"
},
"maximumUses": 10,
"remainingUses": 10,
"startDate": "2025-04-18T12:20:14+00:00",
"endDate": "2025-04-18T13:20:14+00:00"
},
"orderItemStatus": "https://openactive.io/OrderItemConfirmed",
"unitTaxSpecification": [
{
"@type": "TaxChargeSpecification",
"name": "VAT at 20%",
"price": 0,
"priceCurrency": "GBP",
"rate": 0.2
}
]
}
],
"seller": {
"@type": "Organization",
"@id": "https://localhost:5001/api/identifiers/sellers/1",
"name": "Acme Fitness Ltd",
"address": {
"@type": "PostalAddress",
"addressCountry": "GB",
"addressLocality": "Another town",
"addressRegion": "Oxfordshire",
"postalCode": "OX1 1AA",
"streetAddress": "1 Hidden Gem"
},
"isOpenBookingAllowed": true,
"legalName": "Acme Fitness Ltd",
"taxMode": "https://openactive.io/TaxGross",
"termsOfService": [
{
"@type": "PrivacyPolicy",
"name": "Privacy Policy",
"requiresExplicitConsent": false,
"url": "https://example.com/privacy.html"
}
]
},
"totalPaymentDue": {
"@type": "PriceSpecification",
"openBookingPrepayment": "https://openactive.io/Unavailable",
"price": 0,
"priceCurrency": "GBP"
},
"totalPaymentTax": [
{
"@type": "TaxChargeSpecification",
"name": "VAT at 20%",
"price": 0,
"priceCurrency": "GBP",
"rate": 0.2
}
]
}
accessChannel
is missing from OrderItem
.name
is missing from Offer
.ageRestriction
is missing from Offer
.duration
is missing from Slot
.description
is missing from IndividualFacilityUse
.image
is missing from IndividualFacilityUse
.hoursAvailable
is missing from IndividualFacilityUse
.description
is missing from FacilityUse
.image
is missing from FacilityUse
.hoursAvailable
is missing from FacilityUse
.offers
is missing from FacilityUse
.email
is missing from Organization
.url
is missing from Organization
.logo
is missing from Organization
.vatID
is missing from Organization
.GET http://localhost:3000/order-listeners/order-proposals/primary/cc29404e-c359-46dd-bf58-0cb63ccc24fa
Response status code: 200 OK. Responded in 1393.273493ms.
{
"state": "deleted",
"kind": "Order",
"id": "cc29404e-c359-46dd-bf58-0cb63ccc24fa",
"modified": "638804892192459106"
}
GET http://localhost:3000/opportunity/https%3A%2F%2Flocalhost%3A5001%2Fapi%2Fidentifiers%2Ffacility-uses%2F2492%2Findividual-facility-uses%2F1%2Fslots%2F20492?useCacheIfAvailable=true&expectedCapacity=9
Response status code: 200 OK. Responded in 4.053521ms.
{
"data": {
"@context": [
"https://openactive.io/"
],
"@type": "Slot",
"@id": "https://localhost:5001/api/identifiers/facility-uses/2492/individual-facility-uses/1/slots/20492",
"identifier": 20492,
"duration": "PT1H",
"facilityUse": {
"@type": "IndividualFacilityUse",
"@id": "https://localhost:5001/api/identifiers/facility-uses/2492/individual-facility-uses/1",
"name": "Court 1 on [OPEN BOOKING API TEST INTERFACE] Bookable Facility",
"aggregateFacilityUse": {
"@type": "FacilityUse",
"@id": "https://localhost:5001/api/identifiers/facility-uses/2492",
"identifier": 2492,
"name": "GOLDEN: [OPEN BOOKING API TEST INTERFACE] Bookable Facility",
"facilityType": [
{
"@type": "Concept",
"@id": "https://openactive.io/facility-types#a1f82b7a-1258-4d9a-8dc5-bfc2ae961651",
"inScheme": "https://openactive.io/facility-types",
"prefLabel": "Squash Court"
}
],
"location": {
"@type": "Place",
"@id": "https://example.com/place/1",
"identifier": 1,
"name": "Post-ercise Plaza",
"description": "Sorting Out Your Fitness One Parcel Lift at a Time! Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
"address": {
"@type": "PostalAddress",
"addressCountry": "GB",
"addressLocality": "Oxford",
"addressRegion": "Oxfordshire",
"postalCode": "OX1 1AA",
"streetAddress": "Kings Mead House"
},
"amenityFeature": [
{
"@type": "ChangingFacilities",
"name": "Changing Facilities",
"value": true
},
{
"@type": "Showers",
"name": "Showers",
"value": true
},
{
"@type": "Lockers",
"name": "Lockers",
"value": true
},
{
"@type": "Towels",
"name": "Towels",
"value": false
},
{
"@type": "Creche",
"name": "Creche",
"value": false
},
{
"@type": "Parking",
"name": "Parking",
"value": false
}
],
"geo": {
"@type": "GeoCoordinates",
"latitude": 51.7502,
"longitude": -1.2674
},
"image": [
{
"@type": "ImageObject",
"url": "https://upload.wikimedia.org/wikipedia/commons/e/e5/Oxford_StAldates_PostOffice.jpg"
}
],
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"closes": "17:30",
"dayOfWeek": [
"https://schema.org/Sunday"
],
"opens": "09:00"
},
{
"@type": "OpeningHoursSpecification",
"closes": "21:30",
"dayOfWeek": [
"https://schema.org/Monday"
],
"opens": "06:30"
},
{
"@type": "OpeningHoursSpecification",
"closes": "21:30",
"dayOfWeek": [
"https://schema.org/Tuesday"
],
"opens": "06:30"
},
{
"@type": "OpeningHoursSpecification",
"closes": "21:30",
"dayOfWeek": [
"https://schema.org/Wednesday"
],
"opens": "06:30"
},
{
"@type": "OpeningHoursSpecification",
"closes": "21:30",
"dayOfWeek": [
"https://schema.org/Thursday"
],
"opens": "06:30"
},
{
"@type": "OpeningHoursSpecification",
"closes": "21:30",
"dayOfWeek": [
"https://schema.org/Friday"
],
"opens": "06:30"
},
{
"@type": "OpeningHoursSpecification",
"closes": "17:30",
"dayOfWeek": [
"https://schema.org/Saturday"
],
"opens": "09:00"
}
],
"telephone": "01865 000001",
"url": "https://en.wikipedia.org/wiki/Post_Office_Limited"
},
"provider": {
"@type": "Organization",
"@id": "https://localhost:5001/api/identifiers/sellers/1",
"name": "Acme Fitness Ltd",
"isOpenBookingAllowed": true,
"sameAs": [
"https://socialmedia.com/AcmeFitnessLtd"
],
"taxMode": "https://openactive.io/TaxGross",
"telephone": "03346 222079",
"termsOfService": [
{
"@type": "PrivacyPolicy",
"name": "Privacy Policy",
"requiresExplicitConsent": false,
"url": "https://example.com/privacy.html"
}
],
"url": "http://luna.info"
},
"url": "https://www.example.com/facilities/2492"
}
},
"maximumUses": 10,
"offers": [
{
"@type": "Offer",
"@id": "https://localhost:5001/api/identifiers/facility-uses/2492/individual-facility-uses/1/slots/20492#/offers/0",
"acceptedPaymentMethod": [
"http://purl.org/goodrelations/v1#Cash",
"http://purl.org/goodrelations/v1#PaymentMethodCreditCard"
],
"allowCustomerCancellationFullRefund": true,
"openBookingFlowRequirement": [
"https://openactive.io/OpenBookingApproval"
],
"price": 0,
"priceCurrency": "GBP"
},
{
"@type": "Offer",
"@id": "https://localhost:5001/api/identifiers/facility-uses/2492/individual-facility-uses/1/slots/20492#/offers/0",
"acceptedPaymentMethod": [
"http://purl.org/goodrelations/v1#Cash",
"http://purl.org/goodrelations/v1#PaymentMethodCreditCard"
],
"allowCustomerCancellationFullRefund": true,
"openBookingFlowRequirement": [
"https://openactive.io/OpenBookingApproval"
],
"price": 0,
"priceCurrency": "GBP"
}
],
"remainingUses": 9,
"startDate": "2025-04-18T12:20:14+00:00",
"endDate": "2025-04-18T13:20:14+00:00"
}
}
description
is missing from IndividualFacilityUse
.image
is missing from IndividualFacilityUse
.hoursAvailable
is missing from IndividualFacilityUse
.description
is missing from FacilityUse
.image
is missing from FacilityUse
.hoursAvailable
is missing from FacilityUse
.offers
is missing from FacilityUse
.name
is missing from Offer
.ageRestriction
is missing from Offer
.name
is missing from Offer
.ageRestriction
is missing from Offer
.POST http://localhost:3000/order-listeners/orders/primary/cc29404e-c359-46dd-bf58-0cb63ccc24fa
{}
Response status code: 200 OK. Responded in 14.486992ms.
{
"headers": {
"Accept": "application/json, application/vnd.openactive.booking+json; version=1",
"Cache-Control": "max-age=0",
"Authorization": "Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkIwNEY3QjkxREUzQjk0NzhDNjE4MzNGQjI0QUE1Q0RCIiwidHlwIjoiYXQrand0In0.eyJuYmYiOjE3NDQ4OTEyMTgsImV4cCI6MTc0NDg5NDgxOCwiaXNzIjoiaHR0cHM6Ly9sb2NhbGhvc3Q6NTAwMyIsImF1ZCI6Im9wZW5ib29raW5nIiwiY2xpZW50X2lkIjoiNDI0NzRiMzUtZGI3Ni00N2MzLWI4NTMtMzI0NzFhYjhhZjk1IiwiaHR0cHM6Ly9vcGVuYWN0aXZlLmlvL2NsaWVudElkIjoiNDI0NzRiMzUtZGI3Ni00N2MzLWI4NTMtMzI0NzFhYjhhZjk1IiwianRpIjoiMTE3NUIzOTQyMDFGOTYzREUzQzlFOTY2QkEzQTA5QzEiLCJpYXQiOjE3NDQ4OTEyMTgsInNjb3BlIjpbIm9wZW5hY3RpdmUtb3JkZXJzZmVlZCJdfQ.d7sTU03zTaBoQj5qpEm-MusIIrv8H07fG01F1YALQlkSEDp0Y2TB3QvlBE9aKqb1Gg0lXvY6CTjsS6VX0cYP5zmuaDQJVvHdG-TiUlFjlf_KlCkr0k5pyNydziEq5SDUO8hlawtfmq0DIEIl_8tyQU8vQrrT3oYKqWJrvdfdWQl0lUQB-Aqp-RH5V2i6e3gV1xYedF2zdANIWnI_An3E6ql7DMqaV5ui2oHBm4WlfOF4CR1rmaK3jYHacYTbZnHFn-ivtDTM7sWXAmZsCqttCNyoRqac2kGWwbp2_cu385R4dYlw7oDU4nafcU3yQuKvCUOdufFVMXNGMEJpO8zaUQ"
},
"startingFeedPage": "https://localhost:5001/api/openbooking/orders-rpde?afterTimestamp=638804892157380367&afterId=00f20ec2-313b-43a5-a382-20612a1a9812",
"message": "Listening for UUID: 'cc29404e-c359-46dd-bf58-0cb63ccc24fa' in feed: orders, for Booking Partner: primary from startingFeedPage using headers"
}
POST https://localhost:5001/api/openbooking/test-interface/actions
"application/vnd.openactive.booking+json; version=1"
"Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkIwNEY3QjkxREUzQjk0NzhDNjE4MzNGQjI0QUE1Q0RCIiwidHlwIjoiYXQrand0In0.eyJuYmYiOjE3NDQ4OTEyMjIsImV4cCI6MTc0NDg5NDgyMiwiaXNzIjoiaHR0cHM6Ly9sb2NhbGhvc3Q6NTAwMyIsImF1ZCI6Im9wZW5ib29raW5nIiwiY2xpZW50X2lkIjoiNDI0NzRiMzUtZGI3Ni00N2MzLWI4NTMtMzI0NzFhYjhhZjk1IiwiaHR0cHM6Ly9vcGVuYWN0aXZlLmlvL2NsaWVudElkIjoiNDI0NzRiMzUtZGI3Ni00N2MzLWI4NTMtMzI0NzFhYjhhZjk1Iiwic3ViIjoiMTAwIiwiYXV0aF90aW1lIjoxNzQ0ODkxMjIxLCJpZHAiOiJsb2NhbCIsImh0dHBzOi8vb3BlbmFjdGl2ZS5pby9zZWxsZXJJZCI6Imh0dHBzOi8vbG9jYWxob3N0OjUwMDEvYXBpL2lkZW50aWZpZXJzL3NlbGxlcnMvMSIsImp0aSI6IkUyMEU5NzhENzY5RjYyQTVDOTQzNTc1NDlFNTY1OTA2Iiwic2lkIjoiMEI3MkQyMUE5OENBMkQyRTRCMzkyN0I2Q0FEQUI3MkUiLCJpYXQiOjE3NDQ4OTEyMjIsInNjb3BlIjpbIm9wZW5pZCIsIm9wZW5hY3RpdmUtb3BlbmJvb2tpbmciLCJvcGVuYWN0aXZlLWlkZW50aXR5Iiwib2ZmbGluZV9hY2Nlc3MiXSwiYW1yIjpbInB3ZCJdfQ.YotCR76yalzTKWneRbkrMSc5vo-bv0J0lVHTprT5jn8vJP68Rr7jOMswm_k_w4zUBsZoelxJ35ZwJ7uQ1UFSniKDj4eJvEV5MjCFuZnaAONS43e0ZuvqAkGFi7wKQUMT4yjEg5j4bzHAUqg9LktGzy0su61R7APsD8vhw2G0hlnePUpI1ORJ9PBKd1Cp79qllaqunRTLsxgbRAA0-PAGUVm7eWBv7F-bt75UPvsAc-ZPHyLEJE2uaeUmpozr8-ZR1e-jMkoljo7g3GUJp34xy1aOhY5FM6hHOEcJuPX_7-4hfbCUgBppqFAQcevnkYjSnrLHBIE10slDcCQ5CYdwoQ"
{
"@context": [
"https://openactive.io/",
"https://openactive.io/test-interface"
],
"@type": "test:AttendeeAbsentSimulateAction",
"object": {
"@type": "Order",
"@id": "https://localhost:5001/api/openbooking/orders/cc29404e-c359-46dd-bf58-0cb63ccc24fa"
}
}
Response status code: 204 No Content. Responded in 14.917451ms.
GET http://localhost:3000/order-listeners/orders/primary/cc29404e-c359-46dd-bf58-0cb63ccc24fa
Response status code: 200 OK. Responded in 2146.201022ms.
{
"state": "updated",
"kind": "Order",
"id": "cc29404e-c359-46dd-bf58-0cb63ccc24fa",
"modified": "638804892214639822",
"data": {
"@context": [
"https://openactive.io/",
"https://openactive.io/ns-beta"
],
"@type": "Order",
"@id": "https://localhost:5001/api/openbooking/orders/cc29404e-c359-46dd-bf58-0cb63ccc24fa",
"identifier": "cc29404e-c359-46dd-bf58-0cb63ccc24fa",
"orderedItem": [
{
"@type": "OrderItem",
"@id": "https://localhost:5001/api/openbooking/orders/cc29404e-c359-46dd-bf58-0cb63ccc24fa#/orderedItems/1912",
"acceptedOffer": {
"@type": "Offer",
"@id": "https://localhost:5001/api/identifiers/facility-uses/2492/individual-facility-uses/1/slots/20492#/offers/0",
"price": 0,
"priceCurrency": "GBP"
},
"accessCode": [
{
"@type": "PropertyValue",
"name": "Pin Code",
"description": "613198"
}
],
"accessPass": [
{
"@type": "Barcode",
"text": "9378480941",
"url": "https://via.placeholder.com/25x25/cccccc/9c9c9c.png",
"beta:codeType": "code128"
}
],
"orderedItem": "https://localhost:5001/api/identifiers/facility-uses/2492/individual-facility-uses/1/slots/20492",
"orderItemStatus": "https://openactive.io/AttendeeAbsent"
}
],
"totalPaymentDue": {
"@type": "PriceSpecification",
"openBookingPrepayment": "https://openactive.io/Unavailable",
"price": 0,
"priceCurrency": "GBP"
}
}
}
accessChannel
is missing from OrderItem
.name
is missing from Offer
.ageRestriction
is missing from Offer
.allowCustomerCancellationFullRefund
is missing from Offer
.