< Return to Summary | File Generated: Thu Apr 17 2025 12:29:07 GMT+0000 (Coordinated Universal Time)
Booking Flow: OpenBookingApprovalFlow
Opportunity Type: Multiple
Feature: Payment / prepayment optional (Implemented)
Test: IncompletePaymentDetailsError must be returned in the case that payment identifier is not supplied
An unsuccessful end to end booking, because identifier is missing in the payment property in B request.
npm start -- --runInBand test/features/payment/prepayment-optional/implemented/opportunity-paid-incomplete-payment-details-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, 113 warnings and 30 suggestions
POST http://localhost:3000/test-interface/datasets/uat-ci/opportunities
{
"@type": "ScheduledSession",
"superEvent": {
"@type": "SessionSeries",
"organizer": {
"@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#TestOpportunityBookableNonFreePrepaymentOptional",
"test:testOpenBookingFlow": "https://openactive.io/test-interface#OpenBookingApprovalFlow"
}
Response status code: 200 OK. Responded in 10.026052ms.
{
"@context": "https://openactive.io/",
"@type": "ScheduledSession",
"@id": "https://localhost:5001/api/identifiers/scheduled-sessions/1354/events/13536"
}
POST http://localhost:3000/test-interface/datasets/uat-ci/opportunities
{
"@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#TestOpportunityBookableNonFreePrepaymentOptional",
"test:testOpenBookingFlow": "https://openactive.io/test-interface#OpenBookingApprovalFlow"
}
Response status code: 200 OK. Responded in 9.677965ms.
{
"@context": "https://openactive.io/",
"@type": "Slot",
"@id": "https://localhost:5001/api/identifiers/facility-uses/1352/individual-facility-uses/3/slots/13514"
}
GET http://localhost:3000/opportunity/https%3A%2F%2Flocalhost%3A5001%2Fapi%2Fidentifiers%2Fscheduled-sessions%2F1354%2Fevents%2F13536?useCacheIfAvailable=true
Response status code: 200 OK. Responded in 13.768983ms.
{
"data": {
"@context": [
"https://openactive.io/"
],
"@type": "ScheduledSession",
"@id": "https://localhost:5001/api/identifiers/scheduled-sessions/1354/events/13536",
"startDate": "2025-04-22T17:20:25+00:00",
"endDate": "2025-04-22T19:38:25+00:00",
"superEvent": {
"@type": "SessionSeries",
"@id": "https://localhost:5001/api/identifiers/session-series/1354",
"identifier": 1354,
"name": "Steel Yoga",
"activity": [
{
"@type": "Concept",
"@id": "https://openactive.io/activity-list#bf1a5e00-cdcf-465d-8c5a-6f57040b7f7e",
"inScheme": "https://openactive.io/activity-list",
"prefLabel": "Yoga"
}
],
"eventAttendanceMode": "https://schema.org/MixedEventAttendanceMode",
"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"
},
"offers": [
{
"@type": "Offer",
"@id": "https://localhost:5001/api/identifiers/session-series/1354#/offers/0",
"name": "Senior",
"acceptedPaymentMethod": [
"http://purl.org/goodrelations/v1#Cash",
"http://purl.org/goodrelations/v1#PaymentMethodCreditCard"
],
"ageRestriction": {
"@type": "QuantitativeValue",
"name": "Senior",
"minValue": 60
},
"allowCustomerCancellationFullRefund": false,
"openBookingFlowRequirement": [
"https://openactive.io/OpenBookingApproval"
],
"openBookingPrepayment": "https://openactive.io/Optional",
"price": 11.99,
"priceCurrency": "GBP",
"validFromBeforeStartDate": "P13DT3H58M"
},
{
"@type": "Offer",
"@id": "https://localhost:5001/api/identifiers/session-series/1354#/offers/0",
"name": "Junior",
"acceptedPaymentMethod": [
"http://purl.org/goodrelations/v1#Cash",
"http://purl.org/goodrelations/v1#PaymentMethodCreditCard"
],
"ageRestriction": {
"@type": "QuantitativeValue",
"name": "Junior",
"maxValue": 17
},
"allowCustomerCancellationFullRefund": false,
"openBookingFlowRequirement": [
"https://openactive.io/OpenBookingApproval"
],
"openBookingPrepayment": "https://openactive.io/Optional",
"price": 11.99,
"priceCurrency": "GBP",
"validFromBeforeStartDate": "P13DT3H58M"
}
],
"organizer": {
"@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": "05857 458548",
"termsOfService": [
{
"@type": "PrivacyPolicy",
"name": "Privacy Policy",
"requiresExplicitConsent": false,
"url": "https://example.com/privacy.html"
}
],
"url": "http://clinton.name"
},
"url": "https://www.example.com/sessions/1354"
},
"duration": "PT2H18M",
"maximumAttendeeCapacity": 3,
"remainingAttendeeCapacity": 3
}
}
GET http://localhost:3000/opportunity/https%3A%2F%2Flocalhost%3A5001%2Fapi%2Fidentifiers%2Ffacility-uses%2F1352%2Findividual-facility-uses%2F3%2Fslots%2F13514?useCacheIfAvailable=true
Response status code: 200 OK. Responded in 13.515982ms.
{
"data": {
"@context": [
"https://openactive.io/"
],
"@type": "Slot",
"@id": "https://localhost:5001/api/identifiers/facility-uses/1352/individual-facility-uses/3/slots/13514",
"identifier": 13514,
"duration": "PT1H16M",
"facilityUse": {
"@type": "IndividualFacilityUse",
"@id": "https://localhost:5001/api/identifiers/facility-uses/1352/individual-facility-uses/3",
"name": "Court 3 at Frozen Sports Hall",
"aggregateFacilityUse": {
"@type": "FacilityUse",
"@id": "https://localhost:5001/api/identifiers/facility-uses/1352",
"identifier": 1352,
"name": "Frozen Sports Hall",
"facilityType": [
{
"@type": "Concept",
"@id": "https://openactive.io/facility-types#da364f9b-8bb2-490e-9e2f-1068790b9e35",
"inScheme": "https://openactive.io/facility-types",
"prefLabel": "Sports Hall"
}
],
"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": "06067 283908",
"termsOfService": [
{
"@type": "PrivacyPolicy",
"name": "Privacy Policy",
"requiresExplicitConsent": false,
"url": "https://example.com/privacy.html"
}
],
"url": "https://piper.com"
},
"url": "https://www.example.com/facilities/1352"
}
},
"maximumUses": 1,
"offers": [
{
"@type": "Offer",
"@id": "https://localhost:5001/api/identifiers/facility-uses/1352/individual-facility-uses/3/slots/13514#/offers/0",
"acceptedPaymentMethod": [
"http://purl.org/goodrelations/v1#Cash",
"http://purl.org/goodrelations/v1#PaymentMethodCreditCard"
],
"allowCustomerCancellationFullRefund": true,
"openBookingFlowRequirement": [
"https://openactive.io/OpenBookingApproval"
],
"openBookingPrepayment": "https://openactive.io/Optional",
"price": 12.64,
"priceCurrency": "GBP",
"validFromBeforeStartDate": "P10DT18H29M"
},
{
"@type": "Offer",
"@id": "https://localhost:5001/api/identifiers/facility-uses/1352/individual-facility-uses/3/slots/13514#/offers/0",
"acceptedPaymentMethod": [
"http://purl.org/goodrelations/v1#Cash",
"http://purl.org/goodrelations/v1#PaymentMethodCreditCard"
],
"allowCustomerCancellationFullRefund": true,
"openBookingFlowRequirement": [
"https://openactive.io/OpenBookingApproval"
],
"openBookingPrepayment": "https://openactive.io/Optional",
"price": 12.64,
"priceCurrency": "GBP",
"validFromBeforeStartDate": "P10DT18H29M"
},
{
"@type": "Offer",
"@id": "https://localhost:5001/api/identifiers/facility-uses/1352/individual-facility-uses/3/slots/13514#/offers/0",
"acceptedPaymentMethod": [
"http://purl.org/goodrelations/v1#Cash",
"http://purl.org/goodrelations/v1#PaymentMethodCreditCard"
],
"allowCustomerCancellationFullRefund": true,
"openBookingFlowRequirement": [
"https://openactive.io/OpenBookingApproval"
],
"openBookingPrepayment": "https://openactive.io/Optional",
"price": 12.64,
"priceCurrency": "GBP",
"validFromBeforeStartDate": "P10DT18H29M"
},
{
"@type": "Offer",
"@id": "https://localhost:5001/api/identifiers/facility-uses/1352/individual-facility-uses/3/slots/13514#/offers/0",
"acceptedPaymentMethod": [
"http://purl.org/goodrelations/v1#Cash",
"http://purl.org/goodrelations/v1#PaymentMethodCreditCard"
],
"allowCustomerCancellationFullRefund": true,
"openBookingFlowRequirement": [
"https://openactive.io/OpenBookingApproval"
],
"openBookingPrepayment": "https://openactive.io/Optional",
"price": 12.64,
"priceCurrency": "GBP",
"validFromBeforeStartDate": "P10DT18H29M"
}
],
"remainingUses": 1,
"startDate": "2025-04-18T05:03:25+00:00",
"endDate": "2025-04-18T06:19:25+00:00"
}
}
eventStatus is missing from ScheduledSession.leader is missing from ScheduledSession.url is missing from ScheduledSession.description is missing from SessionSeries.image is missing from SessionSeries.ageRange is missing from SessionSeries.genderRestriction is missing from SessionSeries.leader is missing from SessionSeries.level is missing from SessionSeries.genderRestriction is supplied on a ScheduledSession.ageRange is 18+ when not specified.eventStatus is scheduled if not specified or invalid.genderRestriction is supplied on a SessionSeries.ageRange is 18+ when not specified.eventStatus is scheduled if not specified or invalid.schema:name is declared in schema.org but this validator is not yet capable of checking whether they have the right format or values. You should refer to the schema.org documentation for schema:name for additional guidance.schema:name is declared in schema.org but this validator is not yet capable of checking whether they have the right format or values. You should refer to the schema.org documentation for schema:name for additional guidance.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.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/221b01c7-601c-4149-a5e4-30860aec8e99
"application/vnd.openactive.booking+json; version=1""Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkIwNEY3QjkxREUzQjk0NzhDNjE4MzNGQjI0QUE1Q0RCIiwidHlwIjoiYXQrand0In0.eyJuYmYiOjE3NDQ4OTE0NzEsImV4cCI6MTc0NDg5NTA3MSwiaXNzIjoiaHR0cHM6Ly9sb2NhbGhvc3Q6NTAwMyIsImF1ZCI6Im9wZW5ib29raW5nIiwiY2xpZW50X2lkIjoiZGRkYzA4ZDMtOGM0MC00OGJjLWI0YjktNDVmZDMzMGUxYzZiIiwiaHR0cHM6Ly9vcGVuYWN0aXZlLmlvL2NsaWVudElkIjoiZGRkYzA4ZDMtOGM0MC00OGJjLWI0YjktNDVmZDMzMGUxYzZiIiwic3ViIjoiMTAwIiwiYXV0aF90aW1lIjoxNzQ0ODkxNDcxLCJpZHAiOiJsb2NhbCIsImh0dHBzOi8vb3BlbmFjdGl2ZS5pby9zZWxsZXJJZCI6Imh0dHBzOi8vbG9jYWxob3N0OjUwMDEvYXBpL2lkZW50aWZpZXJzL3NlbGxlcnMvMSIsImp0aSI6IjI3RjlDQkJBRDJGQjU2MTBCOUYxOTAyNUE0OUQ2RDlBIiwic2lkIjoiMUM5OTRDQUQzRUNGOTFDNUMyMDlFQURGREQ3RUIyMDMiLCJpYXQiOjE3NDQ4OTE0NzEsInNjb3BlIjpbIm9wZW5pZCIsIm9wZW5hY3RpdmUtb3BlbmJvb2tpbmciLCJvcGVuYWN0aXZlLWlkZW50aXR5Iiwib2ZmbGluZV9hY2Nlc3MiXSwiYW1yIjpbInB3ZCJdfQ.fEYu53J4oLtCgpKHxXbcGQeS0kGo7PzFZm5nk8nD2eZANay4vly7TPouFjWeuUU1bN6fnKR9Z5btivyyFjQ4s6D_k3ZZWXSCOaRhYMbd6wHwvyzpYgxXtuR_c8ALAwlnLrAb3zcNCer2HVM5bC5cCE_mS_xQxnjYx_qI9r8IzKZgbDVlhFJBND9IuTRmdbP99YNl16XM5GiHG8_Hh3oLM8l5tv3d6tI4en0xlWwL9jC2We-7yYXXLtIRenGGe4nG3jlf5mDT1gsIfzcSjxBpCtAQa7wlO03de9eGqcGdqEkOM9H9PO0oLnbbtUgyZy8P_3HNQWOwkRJgaVYB7kBuEw"{
"@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/session-series/1354#/offers/0",
"orderedItem": "https://localhost:5001/api/identifiers/scheduled-sessions/1354/events/13536"
},
{
"@type": "OrderItem",
"position": 1,
"acceptedOffer": "https://localhost:5001/api/identifiers/facility-uses/1352/individual-facility-uses/3/slots/13514#/offers/0",
"orderedItem": "https://localhost:5001/api/identifiers/facility-uses/1352/individual-facility-uses/3/slots/13514"
}
],
"payment": {
"@type": "Payment",
"name": "AcmeBroker Points",
"accountId": "SN1593",
"paymentProviderId": "STRIPE"
}
}
Response status code: 200 OK. Responded in 384.424185ms.
{
"@context": "https://openactive.io/",
"@type": "OrderQuote",
"@id": "https://localhost:5001/api/openbooking/order-quotes/221b01c7-601c-4149-a5e4-30860aec8e99",
"lease": {
"@type": "Lease",
"leaseExpires": "2025-04-17T12:34:28+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/session-series/1354#/offers/0",
"allowCustomerCancellationFullRefund": false,
"openBookingPrepayment": "https://openactive.io/Optional",
"price": 11.99,
"priceCurrency": "GBP",
"validFromBeforeStartDate": "P13DT3H58M"
},
"orderedItem": {
"@type": "ScheduledSession",
"@id": "https://localhost:5001/api/identifiers/scheduled-sessions/1354/events/13536",
"startDate": "2025-04-22T17:20:25+00:00",
"endDate": "2025-04-22T19:38:25+00:00",
"superEvent": {
"@type": "SessionSeries",
"@id": "https://localhost:5001/api/identifiers/session-series/1354",
"name": "Steel Yoga",
"activity": [
{
"@type": "Concept",
"@id": "https://openactive.io/activity-list#6bdea630-ad22-4e58-98a3-bca26ee3f1da",
"inScheme": "https://openactive.io/activity-list",
"prefLabel": "Rave Fitness"
}
],
"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/1354"
},
"maximumAttendeeCapacity": 3,
"remainingAttendeeCapacity": 3
},
"position": 0,
"unitTaxSpecification": [
{
"@type": "TaxChargeSpecification",
"name": "VAT at 20%",
"price": 2.398,
"priceCurrency": "GBP",
"rate": 0.2
}
]
},
{
"@type": "OrderItem",
"acceptedOffer": {
"@type": "Offer",
"@id": "https://localhost:5001/api/identifiers/facility-uses/1352/individual-facility-uses/3/slots/13514#/offers/0",
"allowCustomerCancellationFullRefund": true,
"openBookingPrepayment": "https://openactive.io/Optional",
"price": 12.64,
"priceCurrency": "GBP",
"validFromBeforeStartDate": "P10DT18H29M"
},
"orderedItem": {
"@type": "Slot",
"@id": "https://localhost:5001/api/identifiers/facility-uses/1352/individual-facility-uses/3/slots/13514",
"facilityUse": {
"@type": "IndividualFacilityUse",
"@id": "https://localhost:5001/api/identifiers/facility-uses/1352/individual-facility-uses/3",
"aggregateFacilityUse": {
"@type": "FacilityUse",
"@id": "https://localhost:5001/api/identifiers/facility-uses/1352",
"name": "Frozen Sports Hall",
"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/1352"
},
"name": "Court 3 at Frozen Sports Hall"
},
"maximumUses": 1,
"remainingUses": 1,
"startDate": "2025-04-18T05:03:25+00:00",
"endDate": "2025-04-18T06:19:25+00:00"
},
"position": 1,
"unitTaxSpecification": [
{
"@type": "TaxChargeSpecification",
"name": "VAT at 20%",
"price": 2.528,
"priceCurrency": "GBP",
"rate": 0.2
}
]
}
],
"payment": {
"@type": "Payment",
"name": "AcmeBroker Points",
"accountId": "SN1593",
"paymentProviderId": "STRIPE"
},
"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/Optional",
"price": 24.63,
"priceCurrency": "GBP"
},
"totalPaymentTax": [
{
"@type": "TaxChargeSpecification",
"name": "VAT at 20%",
"price": 4.926,
"priceCurrency": "GBP",
"rate": 0.2
}
]
}
name is missing from Offer.ageRestriction is missing from Offer.eventStatus is missing from ScheduledSession.ageRange is missing from SessionSeries.genderRestriction is missing from SessionSeries.eventStatus is missing from SessionSeries.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.genderRestriction is supplied on a ScheduledSession.ageRange is 18+ when not specified.eventStatus is scheduled if not specified or invalid.genderRestriction is supplied on a SessionSeries.ageRange is 18+ when not specified.eventStatus is scheduled if not specified or invalid.GET http://localhost:3000/opportunity/https%3A%2F%2Flocalhost%3A5001%2Fapi%2Fidentifiers%2Fscheduled-sessions%2F1354%2Fevents%2F13536?useCacheIfAvailable=true&expectedCapacity=2
Response status code: 200 OK. Responded in 66.784688ms.
{
"state": "updated",
"id": "https://localhost:5001/api/identifiers/scheduled-sessions/1354/events/13536",
"modified": "1744892969858",
"data": {
"@context": [
"https://openactive.io/"
],
"@type": "ScheduledSession",
"@id": "https://localhost:5001/api/identifiers/scheduled-sessions/1354/events/13536",
"startDate": "2025-04-22T17:20:25+00:00",
"endDate": "2025-04-22T19:38:25+00:00",
"superEvent": {
"@type": "SessionSeries",
"@id": "https://localhost:5001/api/identifiers/session-series/1354",
"identifier": 1354,
"name": "Steel Yoga",
"activity": [
{
"@type": "Concept",
"@id": "https://openactive.io/activity-list#bf1a5e00-cdcf-465d-8c5a-6f57040b7f7e",
"inScheme": "https://openactive.io/activity-list",
"prefLabel": "Yoga"
}
],
"eventAttendanceMode": "https://schema.org/MixedEventAttendanceMode",
"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"
},
"offers": [
{
"@type": "Offer",
"@id": "https://localhost:5001/api/identifiers/session-series/1354#/offers/0",
"name": "Senior",
"acceptedPaymentMethod": [
"http://purl.org/goodrelations/v1#Cash",
"http://purl.org/goodrelations/v1#PaymentMethodCreditCard"
],
"ageRestriction": {
"@type": "QuantitativeValue",
"name": "Senior",
"minValue": 60
},
"allowCustomerCancellationFullRefund": false,
"openBookingFlowRequirement": [
"https://openactive.io/OpenBookingApproval"
],
"openBookingPrepayment": "https://openactive.io/Optional",
"price": 11.99,
"priceCurrency": "GBP",
"validFromBeforeStartDate": "P13DT3H58M"
},
{
"@type": "Offer",
"@id": "https://localhost:5001/api/identifiers/session-series/1354#/offers/0",
"name": "Junior",
"acceptedPaymentMethod": [
"http://purl.org/goodrelations/v1#Cash",
"http://purl.org/goodrelations/v1#PaymentMethodCreditCard"
],
"ageRestriction": {
"@type": "QuantitativeValue",
"name": "Junior",
"maxValue": 17
},
"allowCustomerCancellationFullRefund": false,
"openBookingFlowRequirement": [
"https://openactive.io/OpenBookingApproval"
],
"openBookingPrepayment": "https://openactive.io/Optional",
"price": 11.99,
"priceCurrency": "GBP",
"validFromBeforeStartDate": "P13DT3H58M"
}
],
"organizer": {
"@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": "05857 458548",
"termsOfService": [
{
"@type": "PrivacyPolicy",
"name": "Privacy Policy",
"requiresExplicitConsent": false,
"url": "https://example.com/privacy.html"
}
],
"url": "http://clinton.name"
},
"url": "https://www.example.com/sessions/1354"
},
"duration": "PT2H18M",
"maximumAttendeeCapacity": 3,
"remainingAttendeeCapacity": 2
}
}
GET http://localhost:3000/opportunity/https%3A%2F%2Flocalhost%3A5001%2Fapi%2Fidentifiers%2Ffacility-uses%2F1352%2Findividual-facility-uses%2F3%2Fslots%2F13514?useCacheIfAvailable=true&expectedCapacity=0
Response status code: 200 OK. Responded in 809.284541ms.
{
"state": "updated",
"id": "https://localhost:5001/api/identifiers/facility-uses/1352/individual-facility-uses/3/slots/13514",
"modified": "1744892970601",
"data": {
"@context": [
"https://openactive.io/"
],
"@type": "Slot",
"@id": "https://localhost:5001/api/identifiers/facility-uses/1352/individual-facility-uses/3/slots/13514",
"identifier": 13514,
"duration": "PT1H16M",
"facilityUse": {
"@type": "IndividualFacilityUse",
"@id": "https://localhost:5001/api/identifiers/facility-uses/1352/individual-facility-uses/3",
"name": "Court 3 at Frozen Sports Hall",
"aggregateFacilityUse": {
"@type": "FacilityUse",
"@id": "https://localhost:5001/api/identifiers/facility-uses/1352",
"identifier": 1352,
"name": "Frozen Sports Hall",
"facilityType": [
{
"@type": "Concept",
"@id": "https://openactive.io/facility-types#da364f9b-8bb2-490e-9e2f-1068790b9e35",
"inScheme": "https://openactive.io/facility-types",
"prefLabel": "Sports Hall"
}
],
"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": "06067 283908",
"termsOfService": [
{
"@type": "PrivacyPolicy",
"name": "Privacy Policy",
"requiresExplicitConsent": false,
"url": "https://example.com/privacy.html"
}
],
"url": "https://piper.com"
},
"url": "https://www.example.com/facilities/1352"
}
},
"maximumUses": 1,
"offers": [
{
"@type": "Offer",
"@id": "https://localhost:5001/api/identifiers/facility-uses/1352/individual-facility-uses/3/slots/13514#/offers/0",
"acceptedPaymentMethod": [
"http://purl.org/goodrelations/v1#Cash",
"http://purl.org/goodrelations/v1#PaymentMethodCreditCard"
],
"allowCustomerCancellationFullRefund": true,
"openBookingFlowRequirement": [
"https://openactive.io/OpenBookingApproval"
],
"openBookingPrepayment": "https://openactive.io/Optional",
"price": 12.64,
"priceCurrency": "GBP",
"validFromBeforeStartDate": "P10DT18H29M"
},
{
"@type": "Offer",
"@id": "https://localhost:5001/api/identifiers/facility-uses/1352/individual-facility-uses/3/slots/13514#/offers/0",
"acceptedPaymentMethod": [
"http://purl.org/goodrelations/v1#Cash",
"http://purl.org/goodrelations/v1#PaymentMethodCreditCard"
],
"allowCustomerCancellationFullRefund": true,
"openBookingFlowRequirement": [
"https://openactive.io/OpenBookingApproval"
],
"openBookingPrepayment": "https://openactive.io/Optional",
"price": 12.64,
"priceCurrency": "GBP",
"validFromBeforeStartDate": "P10DT18H29M"
},
{
"@type": "Offer",
"@id": "https://localhost:5001/api/identifiers/facility-uses/1352/individual-facility-uses/3/slots/13514#/offers/0",
"acceptedPaymentMethod": [
"http://purl.org/goodrelations/v1#Cash",
"http://purl.org/goodrelations/v1#PaymentMethodCreditCard"
],
"allowCustomerCancellationFullRefund": true,
"openBookingFlowRequirement": [
"https://openactive.io/OpenBookingApproval"
],
"openBookingPrepayment": "https://openactive.io/Optional",
"price": 12.64,
"priceCurrency": "GBP",
"validFromBeforeStartDate": "P10DT18H29M"
},
{
"@type": "Offer",
"@id": "https://localhost:5001/api/identifiers/facility-uses/1352/individual-facility-uses/3/slots/13514#/offers/0",
"acceptedPaymentMethod": [
"http://purl.org/goodrelations/v1#Cash",
"http://purl.org/goodrelations/v1#PaymentMethodCreditCard"
],
"allowCustomerCancellationFullRefund": true,
"openBookingFlowRequirement": [
"https://openactive.io/OpenBookingApproval"
],
"openBookingPrepayment": "https://openactive.io/Optional",
"price": 12.64,
"priceCurrency": "GBP",
"validFromBeforeStartDate": "P10DT18H29M"
}
],
"remainingUses": 0,
"startDate": "2025-04-18T05:03:25+00:00",
"endDate": "2025-04-18T06:19:25+00:00"
}
}
totalPaymentDue.openBookingPrepayment 'https://openactive.io/Optional'eventStatus is missing from ScheduledSession.leader is missing from ScheduledSession.url is missing from ScheduledSession.description is missing from SessionSeries.image is missing from SessionSeries.ageRange is missing from SessionSeries.genderRestriction is missing from SessionSeries.leader is missing from SessionSeries.level is missing from SessionSeries.genderRestriction is supplied on a ScheduledSession.ageRange is 18+ when not specified.eventStatus is scheduled if not specified or invalid.genderRestriction is supplied on a SessionSeries.ageRange is 18+ when not specified.eventStatus is scheduled if not specified or invalid.schema:name is declared in schema.org but this validator is not yet capable of checking whether they have the right format or values. You should refer to the schema.org documentation for schema:name for additional guidance.schema:name is declared in schema.org but this validator is not yet capable of checking whether they have the right format or values. You should refer to the schema.org documentation for schema:name for additional guidance.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.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/221b01c7-601c-4149-a5e4-30860aec8e99
"application/vnd.openactive.booking+json; version=1""Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkIwNEY3QjkxREUzQjk0NzhDNjE4MzNGQjI0QUE1Q0RCIiwidHlwIjoiYXQrand0In0.eyJuYmYiOjE3NDQ4OTE0NzEsImV4cCI6MTc0NDg5NTA3MSwiaXNzIjoiaHR0cHM6Ly9sb2NhbGhvc3Q6NTAwMyIsImF1ZCI6Im9wZW5ib29raW5nIiwiY2xpZW50X2lkIjoiZGRkYzA4ZDMtOGM0MC00OGJjLWI0YjktNDVmZDMzMGUxYzZiIiwiaHR0cHM6Ly9vcGVuYWN0aXZlLmlvL2NsaWVudElkIjoiZGRkYzA4ZDMtOGM0MC00OGJjLWI0YjktNDVmZDMzMGUxYzZiIiwic3ViIjoiMTAwIiwiYXV0aF90aW1lIjoxNzQ0ODkxNDcxLCJpZHAiOiJsb2NhbCIsImh0dHBzOi8vb3BlbmFjdGl2ZS5pby9zZWxsZXJJZCI6Imh0dHBzOi8vbG9jYWxob3N0OjUwMDEvYXBpL2lkZW50aWZpZXJzL3NlbGxlcnMvMSIsImp0aSI6IjI3RjlDQkJBRDJGQjU2MTBCOUYxOTAyNUE0OUQ2RDlBIiwic2lkIjoiMUM5OTRDQUQzRUNGOTFDNUMyMDlFQURGREQ3RUIyMDMiLCJpYXQiOjE3NDQ4OTE0NzEsInNjb3BlIjpbIm9wZW5pZCIsIm9wZW5hY3RpdmUtb3BlbmJvb2tpbmciLCJvcGVuYWN0aXZlLWlkZW50aXR5Iiwib2ZmbGluZV9hY2Nlc3MiXSwiYW1yIjpbInB3ZCJdfQ.fEYu53J4oLtCgpKHxXbcGQeS0kGo7PzFZm5nk8nD2eZANay4vly7TPouFjWeuUU1bN6fnKR9Z5btivyyFjQ4s6D_k3ZZWXSCOaRhYMbd6wHwvyzpYgxXtuR_c8ALAwlnLrAb3zcNCer2HVM5bC5cCE_mS_xQxnjYx_qI9r8IzKZgbDVlhFJBND9IuTRmdbP99YNl16XM5GiHG8_Hh3oLM8l5tv3d6tI4en0xlWwL9jC2We-7yYXXLtIRenGGe4nG3jlf5mDT1gsIfzcSjxBpCtAQa7wlO03de9eGqcGdqEkOM9H9PO0oLnbbtUgyZy8P_3HNQWOwkRJgaVYB7kBuEw"{
"@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]",
"familyName": "Triston"
},
"orderedItem": [
{
"@type": "OrderItem",
"position": 0,
"acceptedOffer": "https://localhost:5001/api/identifiers/session-series/1354#/offers/0",
"orderedItem": "https://localhost:5001/api/identifiers/scheduled-sessions/1354/events/13536"
},
{
"@type": "OrderItem",
"position": 1,
"acceptedOffer": "https://localhost:5001/api/identifiers/facility-uses/1352/individual-facility-uses/3/slots/13514#/offers/0",
"orderedItem": "https://localhost:5001/api/identifiers/facility-uses/1352/individual-facility-uses/3/slots/13514"
}
],
"payment": {
"@type": "Payment",
"name": "AcmeBroker Points",
"accountId": "SN1593",
"paymentProviderId": "STRIPE"
}
}
Response status code: 200 OK. Responded in 539.892294ms.
{
"@context": "https://openactive.io/",
"@type": "OrderQuote",
"@id": "https://localhost:5001/api/openbooking/order-quotes/221b01c7-601c-4149-a5e4-30860aec8e99",
"lease": {
"@type": "Lease",
"leaseExpires": "2025-04-17T12:34:30+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]",
"familyName": "Triston"
},
"orderedItem": [
{
"@type": "OrderItem",
"acceptedOffer": {
"@type": "Offer",
"@id": "https://localhost:5001/api/identifiers/session-series/1354#/offers/0",
"allowCustomerCancellationFullRefund": false,
"openBookingPrepayment": "https://openactive.io/Optional",
"price": 11.99,
"priceCurrency": "GBP",
"validFromBeforeStartDate": "P13DT3H58M"
},
"orderedItem": {
"@type": "ScheduledSession",
"@id": "https://localhost:5001/api/identifiers/scheduled-sessions/1354/events/13536",
"startDate": "2025-04-22T17:20:25+00:00",
"endDate": "2025-04-22T19:38:25+00:00",
"superEvent": {
"@type": "SessionSeries",
"@id": "https://localhost:5001/api/identifiers/session-series/1354",
"name": "Steel Yoga",
"activity": [
{
"@type": "Concept",
"@id": "https://openactive.io/activity-list#6bdea630-ad22-4e58-98a3-bca26ee3f1da",
"inScheme": "https://openactive.io/activity-list",
"prefLabel": "Rave Fitness"
}
],
"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/1354"
},
"maximumAttendeeCapacity": 3,
"remainingAttendeeCapacity": 3
},
"position": 0,
"unitTaxSpecification": [
{
"@type": "TaxChargeSpecification",
"name": "VAT at 20%",
"price": 2.398,
"priceCurrency": "GBP",
"rate": 0.2
}
]
},
{
"@type": "OrderItem",
"acceptedOffer": {
"@type": "Offer",
"@id": "https://localhost:5001/api/identifiers/facility-uses/1352/individual-facility-uses/3/slots/13514#/offers/0",
"allowCustomerCancellationFullRefund": true,
"openBookingPrepayment": "https://openactive.io/Optional",
"price": 12.64,
"priceCurrency": "GBP",
"validFromBeforeStartDate": "P10DT18H29M"
},
"orderedItem": {
"@type": "Slot",
"@id": "https://localhost:5001/api/identifiers/facility-uses/1352/individual-facility-uses/3/slots/13514",
"facilityUse": {
"@type": "IndividualFacilityUse",
"@id": "https://localhost:5001/api/identifiers/facility-uses/1352/individual-facility-uses/3",
"aggregateFacilityUse": {
"@type": "FacilityUse",
"@id": "https://localhost:5001/api/identifiers/facility-uses/1352",
"name": "Frozen Sports Hall",
"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/1352"
},
"name": "Court 3 at Frozen Sports Hall"
},
"maximumUses": 1,
"remainingUses": 1,
"startDate": "2025-04-18T05:03:25+00:00",
"endDate": "2025-04-18T06:19:25+00:00"
},
"position": 1,
"unitTaxSpecification": [
{
"@type": "TaxChargeSpecification",
"name": "VAT at 20%",
"price": 2.528,
"priceCurrency": "GBP",
"rate": 0.2
}
]
}
],
"payment": {
"@type": "Payment",
"name": "AcmeBroker Points",
"accountId": "SN1593",
"paymentProviderId": "STRIPE"
},
"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/Optional",
"price": 24.63,
"priceCurrency": "GBP"
},
"totalPaymentTax": [
{
"@type": "TaxChargeSpecification",
"name": "VAT at 20%",
"price": 4.926,
"priceCurrency": "GBP",
"rate": 0.2
}
]
}
name is missing from Offer.ageRestriction is missing from Offer.eventStatus is missing from ScheduledSession.ageRange is missing from SessionSeries.genderRestriction is missing from SessionSeries.eventStatus is missing from SessionSeries.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.genderRestriction is supplied on a ScheduledSession.ageRange is 18+ when not specified.eventStatus is scheduled if not specified or invalid.genderRestriction is supplied on a SessionSeries.ageRange is 18+ when not specified.eventStatus is scheduled if not specified or invalid.GET http://localhost:3000/opportunity/https%3A%2F%2Flocalhost%3A5001%2Fapi%2Fidentifiers%2Fscheduled-sessions%2F1354%2Fevents%2F13536?useCacheIfAvailable=true&expectedCapacity=2
Response status code: 200 OK. Responded in 11.506262ms.
{
"data": {
"@context": [
"https://openactive.io/"
],
"@type": "ScheduledSession",
"@id": "https://localhost:5001/api/identifiers/scheduled-sessions/1354/events/13536",
"startDate": "2025-04-22T17:20:25+00:00",
"endDate": "2025-04-22T19:38:25+00:00",
"superEvent": {
"@type": "SessionSeries",
"@id": "https://localhost:5001/api/identifiers/session-series/1354",
"identifier": 1354,
"name": "Steel Yoga",
"activity": [
{
"@type": "Concept",
"@id": "https://openactive.io/activity-list#bf1a5e00-cdcf-465d-8c5a-6f57040b7f7e",
"inScheme": "https://openactive.io/activity-list",
"prefLabel": "Yoga"
}
],
"eventAttendanceMode": "https://schema.org/MixedEventAttendanceMode",
"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"
},
"offers": [
{
"@type": "Offer",
"@id": "https://localhost:5001/api/identifiers/session-series/1354#/offers/0",
"name": "Senior",
"acceptedPaymentMethod": [
"http://purl.org/goodrelations/v1#Cash",
"http://purl.org/goodrelations/v1#PaymentMethodCreditCard"
],
"ageRestriction": {
"@type": "QuantitativeValue",
"name": "Senior",
"minValue": 60
},
"allowCustomerCancellationFullRefund": false,
"openBookingFlowRequirement": [
"https://openactive.io/OpenBookingApproval"
],
"openBookingPrepayment": "https://openactive.io/Optional",
"price": 11.99,
"priceCurrency": "GBP",
"validFromBeforeStartDate": "P13DT3H58M"
},
{
"@type": "Offer",
"@id": "https://localhost:5001/api/identifiers/session-series/1354#/offers/0",
"name": "Junior",
"acceptedPaymentMethod": [
"http://purl.org/goodrelations/v1#Cash",
"http://purl.org/goodrelations/v1#PaymentMethodCreditCard"
],
"ageRestriction": {
"@type": "QuantitativeValue",
"name": "Junior",
"maxValue": 17
},
"allowCustomerCancellationFullRefund": false,
"openBookingFlowRequirement": [
"https://openactive.io/OpenBookingApproval"
],
"openBookingPrepayment": "https://openactive.io/Optional",
"price": 11.99,
"priceCurrency": "GBP",
"validFromBeforeStartDate": "P13DT3H58M"
}
],
"organizer": {
"@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": "05857 458548",
"termsOfService": [
{
"@type": "PrivacyPolicy",
"name": "Privacy Policy",
"requiresExplicitConsent": false,
"url": "https://example.com/privacy.html"
}
],
"url": "http://clinton.name"
},
"url": "https://www.example.com/sessions/1354"
},
"duration": "PT2H18M",
"maximumAttendeeCapacity": 3,
"remainingAttendeeCapacity": 2
}
}
GET http://localhost:3000/opportunity/https%3A%2F%2Flocalhost%3A5001%2Fapi%2Fidentifiers%2Ffacility-uses%2F1352%2Findividual-facility-uses%2F3%2Fslots%2F13514?useCacheIfAvailable=true&expectedCapacity=0
Response status code: 200 OK. Responded in 9.642334ms.
{
"data": {
"@context": [
"https://openactive.io/"
],
"@type": "Slot",
"@id": "https://localhost:5001/api/identifiers/facility-uses/1352/individual-facility-uses/3/slots/13514",
"identifier": 13514,
"duration": "PT1H16M",
"facilityUse": {
"@type": "IndividualFacilityUse",
"@id": "https://localhost:5001/api/identifiers/facility-uses/1352/individual-facility-uses/3",
"name": "Court 3 at Frozen Sports Hall",
"aggregateFacilityUse": {
"@type": "FacilityUse",
"@id": "https://localhost:5001/api/identifiers/facility-uses/1352",
"identifier": 1352,
"name": "Frozen Sports Hall",
"facilityType": [
{
"@type": "Concept",
"@id": "https://openactive.io/facility-types#da364f9b-8bb2-490e-9e2f-1068790b9e35",
"inScheme": "https://openactive.io/facility-types",
"prefLabel": "Sports Hall"
}
],
"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": "06067 283908",
"termsOfService": [
{
"@type": "PrivacyPolicy",
"name": "Privacy Policy",
"requiresExplicitConsent": false,
"url": "https://example.com/privacy.html"
}
],
"url": "https://piper.com"
},
"url": "https://www.example.com/facilities/1352"
}
},
"maximumUses": 1,
"offers": [
{
"@type": "Offer",
"@id": "https://localhost:5001/api/identifiers/facility-uses/1352/individual-facility-uses/3/slots/13514#/offers/0",
"acceptedPaymentMethod": [
"http://purl.org/goodrelations/v1#Cash",
"http://purl.org/goodrelations/v1#PaymentMethodCreditCard"
],
"allowCustomerCancellationFullRefund": true,
"openBookingFlowRequirement": [
"https://openactive.io/OpenBookingApproval"
],
"openBookingPrepayment": "https://openactive.io/Optional",
"price": 12.64,
"priceCurrency": "GBP",
"validFromBeforeStartDate": "P10DT18H29M"
},
{
"@type": "Offer",
"@id": "https://localhost:5001/api/identifiers/facility-uses/1352/individual-facility-uses/3/slots/13514#/offers/0",
"acceptedPaymentMethod": [
"http://purl.org/goodrelations/v1#Cash",
"http://purl.org/goodrelations/v1#PaymentMethodCreditCard"
],
"allowCustomerCancellationFullRefund": true,
"openBookingFlowRequirement": [
"https://openactive.io/OpenBookingApproval"
],
"openBookingPrepayment": "https://openactive.io/Optional",
"price": 12.64,
"priceCurrency": "GBP",
"validFromBeforeStartDate": "P10DT18H29M"
},
{
"@type": "Offer",
"@id": "https://localhost:5001/api/identifiers/facility-uses/1352/individual-facility-uses/3/slots/13514#/offers/0",
"acceptedPaymentMethod": [
"http://purl.org/goodrelations/v1#Cash",
"http://purl.org/goodrelations/v1#PaymentMethodCreditCard"
],
"allowCustomerCancellationFullRefund": true,
"openBookingFlowRequirement": [
"https://openactive.io/OpenBookingApproval"
],
"openBookingPrepayment": "https://openactive.io/Optional",
"price": 12.64,
"priceCurrency": "GBP",
"validFromBeforeStartDate": "P10DT18H29M"
},
{
"@type": "Offer",
"@id": "https://localhost:5001/api/identifiers/facility-uses/1352/individual-facility-uses/3/slots/13514#/offers/0",
"acceptedPaymentMethod": [
"http://purl.org/goodrelations/v1#Cash",
"http://purl.org/goodrelations/v1#PaymentMethodCreditCard"
],
"allowCustomerCancellationFullRefund": true,
"openBookingFlowRequirement": [
"https://openactive.io/OpenBookingApproval"
],
"openBookingPrepayment": "https://openactive.io/Optional",
"price": 12.64,
"priceCurrency": "GBP",
"validFromBeforeStartDate": "P10DT18H29M"
}
],
"remainingUses": 0,
"startDate": "2025-04-18T05:03:25+00:00",
"endDate": "2025-04-18T06:19:25+00:00"
}
}
totalPaymentDue.openBookingPrepayment 'https://openactive.io/Optional'eventStatus is missing from ScheduledSession.leader is missing from ScheduledSession.url is missing from ScheduledSession.description is missing from SessionSeries.image is missing from SessionSeries.ageRange is missing from SessionSeries.genderRestriction is missing from SessionSeries.leader is missing from SessionSeries.level is missing from SessionSeries.genderRestriction is supplied on a ScheduledSession.ageRange is 18+ when not specified.eventStatus is scheduled if not specified or invalid.genderRestriction is supplied on a SessionSeries.ageRange is 18+ when not specified.eventStatus is scheduled if not specified or invalid.schema:name is declared in schema.org but this validator is not yet capable of checking whether they have the right format or values. You should refer to the schema.org documentation for schema:name for additional guidance.schema:name is declared in schema.org but this validator is not yet capable of checking whether they have the right format or values. You should refer to the schema.org documentation for schema:name for additional guidance.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.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/221b01c7-601c-4149-a5e4-30860aec8e99
"application/vnd.openactive.booking+json; version=1""Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkIwNEY3QjkxREUzQjk0NzhDNjE4MzNGQjI0QUE1Q0RCIiwidHlwIjoiYXQrand0In0.eyJuYmYiOjE3NDQ4OTE0NzEsImV4cCI6MTc0NDg5NTA3MSwiaXNzIjoiaHR0cHM6Ly9sb2NhbGhvc3Q6NTAwMyIsImF1ZCI6Im9wZW5ib29raW5nIiwiY2xpZW50X2lkIjoiZGRkYzA4ZDMtOGM0MC00OGJjLWI0YjktNDVmZDMzMGUxYzZiIiwiaHR0cHM6Ly9vcGVuYWN0aXZlLmlvL2NsaWVudElkIjoiZGRkYzA4ZDMtOGM0MC00OGJjLWI0YjktNDVmZDMzMGUxYzZiIiwic3ViIjoiMTAwIiwiYXV0aF90aW1lIjoxNzQ0ODkxNDcxLCJpZHAiOiJsb2NhbCIsImh0dHBzOi8vb3BlbmFjdGl2ZS5pby9zZWxsZXJJZCI6Imh0dHBzOi8vbG9jYWxob3N0OjUwMDEvYXBpL2lkZW50aWZpZXJzL3NlbGxlcnMvMSIsImp0aSI6IjI3RjlDQkJBRDJGQjU2MTBCOUYxOTAyNUE0OUQ2RDlBIiwic2lkIjoiMUM5OTRDQUQzRUNGOTFDNUMyMDlFQURGREQ3RUIyMDMiLCJpYXQiOjE3NDQ4OTE0NzEsInNjb3BlIjpbIm9wZW5pZCIsIm9wZW5hY3RpdmUtb3BlbmJvb2tpbmciLCJvcGVuYWN0aXZlLWlkZW50aXR5Iiwib2ZmbGluZV9hY2Nlc3MiXSwiYW1yIjpbInB3ZCJdfQ.fEYu53J4oLtCgpKHxXbcGQeS0kGo7PzFZm5nk8nD2eZANay4vly7TPouFjWeuUU1bN6fnKR9Z5btivyyFjQ4s6D_k3ZZWXSCOaRhYMbd6wHwvyzpYgxXtuR_c8ALAwlnLrAb3zcNCer2HVM5bC5cCE_mS_xQxnjYx_qI9r8IzKZgbDVlhFJBND9IuTRmdbP99YNl16XM5GiHG8_Hh3oLM8l5tv3d6tI4en0xlWwL9jC2We-7yYXXLtIRenGGe4nG3jlf5mDT1gsIfzcSjxBpCtAQa7wlO03de9eGqcGdqEkOM9H9PO0oLnbbtUgyZy8P_3HNQWOwkRJgaVYB7kBuEw"{
"@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]",
"familyName": "Triston"
},
"orderedItem": [
{
"@type": "OrderItem",
"position": 0,
"acceptedOffer": "https://localhost:5001/api/identifiers/session-series/1354#/offers/0",
"orderedItem": "https://localhost:5001/api/identifiers/scheduled-sessions/1354/events/13536"
},
{
"@type": "OrderItem",
"position": 1,
"acceptedOffer": "https://localhost:5001/api/identifiers/facility-uses/1352/individual-facility-uses/3/slots/13514#/offers/0",
"orderedItem": "https://localhost:5001/api/identifiers/facility-uses/1352/individual-facility-uses/3/slots/13514"
}
],
"totalPaymentDue": {
"@type": "PriceSpecification",
"price": 24.63,
"priceCurrency": "GBP"
},
"payment": {
"@type": "Payment",
"name": "AcmeBroker Points",
"accountId": "SN1593",
"paymentProviderId": "STRIPE"
}
}
Response status code: 400 Bad Request. Responded in 345.809492ms.
{
"@context": "https://openactive.io/",
"@type": "IncompletePaymentDetailsError",
"name": "The 'payment' property of the 'Order' does not include 'identifier'.",
"statusCode": 400,
"description": "Payment must contain identifier for paid Order."
}
"@type": "IncompletePaymentDetailsError" with status code 400instance is missing from IncompletePaymentDetailsError.