Venue Hierarchy & Concurrent Booking
End-to-end journey configuring physical sports facilities, schedulable resources, operating schedules, and 2-phase booking holds.
Learn how to set up multi-site facilities, manage schedulable resources, define blackout windows, and process high-concurrency bookings.
Step 1: Structuring Multi-Campus Facilities
Define geographic sites, buildings, and athletic zones with geo-coordinates and amenity tags.
{
"name": "Manhattan Sports Complex",
"address": "450 W 33rd St, New York, NY 10001",
"timeZone": "America/New_York",
"latitude": 40.7535,
"longitude": -73.9995
}Step 2: Creating Schedulable Resources & Hierarchies
Configure pitches, courts, and equipment as atomic or composite schedulable assets with capacity limits.
Manhattan Sports Complex (Site)
└── Building A: Indoor Arenas (Facility)
├── Basketball Court 1 (Schedulable Resource - Hardwood)
│ ├── Half Court A (Sub-resource)
│ └── Half Court B (Sub-resource)
├── Tennis Court East (Schedulable Resource - Clay)
└── Padel Court North (Schedulable Resource - Panoramic Glass)Step 3: Configuring Operating Hours & Blackout Windows
Set weekly recurring schedules, holiday exceptions, and maintenance closure intervals.
Step 4: The 2-Phase Concurrency Hold Engine
Acquire atomic 15-minute reservations during checkout, ensuring instant lock acquisition with automatic TTL expiration.
Step 5: Operations Calendar & Reservation 360
Manage the dispatch grid, review reservation lifecycles, and handle operational alterations.
curl -X POST http://localhost:5000/api/v1/Reservations \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"resourceId": "<encrypted-resource-id>",
"customerPartyId": "<encrypted-party-id>",
"requestedStartUtc": "2026-10-20T09:00:00Z",
"requestedEndUtc": "2026-10-20T10:00:00Z",
"quantity": 1,
"idempotencyKey": "draft_intent_8f93a10c-2374-4b51"
}'curl -X POST http://localhost:5000/api/v1/BookingHolds \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"reservationId": "<encrypted-reservation-id>",
"idempotencyKey": "hold_intent_45ae79e1-65d1-447e"
}'curl -X POST http://localhost:5000/api/v1/catalog-pricing/price-quotes/calculate \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"offeringId": "<encrypted-offering-id>",
"schedulableResourceId": "<encrypted-resource-id>",
"partyId": "<encrypted-party-id>",
"quantity": 1,
"requestedStartUtc": "2026-10-20T09:00:00Z",
"requestedEndUtc": "2026-10-20T10:00:00Z",
"currencyCode": "EGP",
"expiresAtUtc": "2026-10-20T09:30:00Z",
"idempotencyKey": "quote_intent_6198e7f8-52b2-4e73"
}'