GET http://localhost:3000/opportunity/https%3A%2F%2Flocalhost%3A5001%2Fapi%2Fidentifiers%2Ffacility-uses%2F2279%2Findividual-facility-uses%2F1%2Fslots%2F20279?useCacheIfAvailable=true
Response status code: 200 OK. Responded in 574.985593ms.
{"state":"updated","id":"https://localhost:5001/api/identifiers/facility-uses/2279/individual-facility-uses/1/slots/20279","modified":"1738322221842","data":{"@context":["https://openactive.io/"],"@type":"Slot","@id":"https://localhost:5001/api/identifiers/facility-uses/2279/individual-facility-uses/1/slots/20279","identifier":20279,"duration":"PT1H","facilityUse":{"@type":"IndividualFacilityUse","@id":"https://localhost:5001/api/identifiers/facility-uses/2279/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/2279","identifier":2279,"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"},"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":"01107 963731","termsOfService":[{"@type":"PrivacyPolicy","name":"Privacy Policy","requiresExplicitConsent":false,"url":"https://example.com/privacy.html"}],"url":"https://nola.org"},"url":"https://www.example.com/facilities/2279"}},"maximumUses":10,"offers":[{"@type":"Offer","@id":"https://localhost:5001/api/identifiers/facility-uses/2279/individual-facility-uses/1/slots/20279#/offers/0","acceptedPaymentMethod":["http://purl.org/goodrelations/v1#Cash","http://purl.org/goodrelations/v1#PaymentMethodCreditCard"],"allowCustomerCancellationFullRefund":true,"price":14.99,"priceCurrency":"GBP"},{"@type":"Offer","@id":"https://localhost:5001/api/identifiers/facility-uses/2279/individual-facility-uses/1/slots/20279#/offers/0","acceptedPaymentMethod":["http://purl.org/goodrelations/v1#Cash","http://purl.org/goodrelations/v1#PaymentMethodCreditCard"],"allowCustomerCancellationFullRefund":true,"price":14.99,"priceCurrency":"GBP"},{"@type":"Offer","@id":"https://localhost:5001/api/identifiers/facility-uses/2279/individual-facility-uses/1/slots/20279#/offers/0","acceptedPaymentMethod":["http://purl.org/goodrelations/v1#Cash","http://purl.org/goodrelations/v1#PaymentMethodCreditCard"],"allowCustomerCancellationFullRefund":true,"price":14.99,"priceCurrency":"GBP"},{"@type":"Offer","@id":"https://localhost:5001/api/identifiers/facility-uses/2279/individual-facility-uses/1/slots/20279#/offers/0","acceptedPaymentMethod":["http://purl.org/goodrelations/v1#Cash","http://purl.org/goodrelations/v1#PaymentMethodCreditCard"],"allowCustomerCancellationFullRefund":true,"price":14.99,"priceCurrency":"GBP"}],"remainingUses":10,"startDate":"2025-02-01T11:17:00+00:00","endDate":"2025-02-01T12:17:00+00:00"}}
Specs
✅ should return 200 on success for request relevant to OrderItem 0
✅ Fetch Opportunities >> validation of Opportunity Feed extract for OrderItem 0
Specs
✅ passes validation checks
✅ matches the criteria 'TestOpportunityBookable' required for this test
Validations
⚠️ $.facilityUse.description: Recommended property description is missing from IndividualFacilityUse.
⚠️ $.facilityUse.image: Recommended property image is missing from IndividualFacilityUse.
⚠️ $.facilityUse.hoursAvailable: Recommended property hoursAvailable is missing from IndividualFacilityUse.
⚠️ $.facilityUse.aggregateFacilityUse.description: Recommended property description is missing from FacilityUse.
⚠️ $.facilityUse.aggregateFacilityUse.image: Recommended property image is missing from FacilityUse.
⚠️ $.facilityUse.aggregateFacilityUse.hoursAvailable: Recommended property hoursAvailable is missing from FacilityUse.
⚠️ $.facilityUse.aggregateFacilityUse.offers: Recommended property offers is missing from FacilityUse.
⚠️ $.offers[0].name: Recommended property name is missing from Offer.
⚠️ $.offers[0].ageRestriction: Recommended property ageRestriction is missing from Offer.
⚠️ $.offers[1].name: Recommended property name is missing from Offer.
⚠️ $.offers[1].ageRestriction: Recommended property ageRestriction is missing from Offer.
⚠️ $.offers[2].name: Recommended property name is missing from Offer.
⚠️ $.offers[2].ageRestriction: Recommended property ageRestriction is missing from Offer.
⚠️ $.offers[3].name: Recommended property name is missing from Offer.
⚠️ $.offers[3].ageRestriction: Recommended property ageRestriction is missing from Offer.
✅ Assert Opportunity Capacity (after C1)
C1 Request
PUT https://localhost:5001/api/openbooking/order-quote-templates/7c56b990-4658-4017-8646-5d4d8c0f8efe
{"@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/2279/individual-facility-uses/1/slots/20279#/offers/0"}],"payment":{"@type":"Payment","name":"AcmeBroker Points","accountId":"SN1593","paymentProviderId":"STRIPE"}}
Response status code: 409 Conflict. Responded in 15.149035ms.
{"@context":"https://openactive.io/","@type":"OrderQuote","@id":"https://localhost:5001/api/openbooking/order-quotes/7c56b990-4658-4017-8646-5d4d8c0f8efe","orderRequiresApproval":false,"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":"https://localhost:5001/api/identifiers/facility-uses/2279/individual-facility-uses/1/slots/20279#/offers/0","error":[{"@type":"IncompleteOrderItemError","name":"There is a missing 'acceptedOffer' or 'orderedItem' property on the 'OrderItem'.","statusCode":409,"description":"orderedItem @id was not provided"}],"position":0}],"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/Required","price":0}}
Specs
✅ should return 200 on success for request relevant to OrderItem 0
✅ should return HTTP 409
✅ Should have the same number of OrderItems as criteria
✅ OrderItem at position 0 - should include an IncompleteOrderItemError
✅ Assert Opportunity Capacity (after C2)
C2 Request
PUT https://localhost:5001/api/openbooking/order-quotes/7c56b990-4658-4017-8646-5d4d8c0f8efe
{"@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":"Grover57@yahoo.com","givenName":"Krajcik","familyName":"Jaeden"},"orderedItem":[{"@type":"OrderItem","position":0,"acceptedOffer":"https://localhost:5001/api/identifiers/facility-uses/2279/individual-facility-uses/1/slots/20279#/offers/0"}],"payment":{"@type":"Payment","name":"AcmeBroker Points","accountId":"SN1593","paymentProviderId":"STRIPE"}}
Response status code: 409 Conflict. Responded in 24.816376ms.
{"@context":"https://openactive.io/","@type":"OrderQuote","@id":"https://localhost:5001/api/openbooking/order-quotes/7c56b990-4658-4017-8646-5d4d8c0f8efe","orderRequiresApproval":false,"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":"Grover57@yahoo.com","familyName":"Jaeden","givenName":"Krajcik"},"orderedItem":[{"@type":"OrderItem","acceptedOffer":"https://localhost:5001/api/identifiers/facility-uses/2279/individual-facility-uses/1/slots/20279#/offers/0","error":[{"@type":"IncompleteOrderItemError","name":"There is a missing 'acceptedOffer' or 'orderedItem' property on the 'OrderItem'.","statusCode":409,"description":"orderedItem @id was not provided"}],"position":0}],"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/Required","price":0}}
Specs
✅ should return 200 on success for request relevant to OrderItem 0
✅ should return HTTP 409
✅ Should have the same number of OrderItems as criteria
✅ OrderItem at position 0 - should include an IncompleteOrderItemError
✅ B
B Request
PUT https://localhost:5001/api/openbooking/orders/7c56b990-4658-4017-8646-5d4d8c0f8efe
{"@context":"https://openactive.io/","@type":"Order","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":"Grover57@yahoo.com","givenName":"Krajcik","familyName":"Jaeden"},"orderedItem":[{"@type":"OrderItem","position":0,"acceptedOffer":"https://localhost:5001/api/identifiers/facility-uses/2279/individual-facility-uses/1/slots/20279#/offers/0"}],"totalPaymentDue":{"@type":"PriceSpecification","price":0,"priceCurrency":"GBP"}}
Response status code: 409 Conflict. Responded in 11.88725ms.
{"@context":"https://openactive.io/","@type":"Order","@id":"https://localhost:5001/api/openbooking/orders/7c56b990-4658-4017-8646-5d4d8c0f8efe","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":"Grover57@yahoo.com","familyName":"Jaeden","givenName":"Krajcik"},"orderedItem":[{"@type":"OrderItem","acceptedOffer":"https://localhost:5001/api/identifiers/facility-uses/2279/individual-facility-uses/1/slots/20279#/offers/0","error":[{"@type":"IncompleteOrderItemError","name":"There is a missing 'acceptedOffer' or 'orderedItem' property on the 'OrderItem'.","statusCode":409,"description":"orderedItem @id was not provided"}],"position":0}],"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/Required","price":0}}
Specs
✅ should return HTTP 409
✅ Should have the same number of OrderItems as criteria
✅ OrderItem at position 0 - should include an IncompleteOrderItemError