Start with a sandbox. Move to production when you are ready.
Sign up in the Portal, create an organisation, open a sandbox. When you need production, join the waitlist.
Sandboxes run on staging with test data. Production access is by waitlist.
BookingHash
Availability decisions, holds, bookings and lifecycle events, each recorded as an event in a per-booking SHA-256 hash chain that your systems can verify on demand.
The lifecycle is a state machine. Each fact writes an outbox event in the same database transaction, so the record and the history cannot drift apart.
A client asks for capacity: a room, a table, a slot, a piece of equipment.
A pure, in-memory recipe decides. It is not a stored state; nothing is written until a hold is placed.
An active hold reserves the capacity for a bounded time.
The hold becomes a booking: requested and pending approval, or confirmed.
Start, complete, cancel, no-show, modify. Each is an event in the chain.
Every event is a row in a per-aggregate SHA-256 hash chain: the hash covers the tenant, the previous event hash, the id, the aggregate, the sequence, the type, the time and the canonical payload. The head is GENESIS, the sequence is gapless, forged hashes are refused at insert, and updates or deletes are blocked by triggers.
Every event is hashed with the previous hash (SHA-256). Change one, and every later link fails verification.
Optional: a daily digest per tenant can be written to storage with Object Lock in compliance mode (write-once anchoring), enabled per tenant.
GET /v1/bookings/{id}/history returns the diary plus chainValid. The database walks the chain and recomputes every hash; an altered earlier event yields CHAIN_BROKEN at that row.
Send an Idempotency-Key with every write. A retried request returns the original outcome instead of creating a duplicate.
Sandbox keys are prefixed bh_test_, live keys bh_live_. The key is the tenant address; an unknown key receives a uniform 401.
A daily digest per tenant and day, chained day to day, can be written to storage with Object Lock in compliance mode. Anchoring is enabled per tenant and vault verification has no public HTTP endpoint.
Any operation that holds and then confirms capacity: rooms and nights, tables and seatings, appointments, rentals, equipment. BookingHash records the decision and the diary; your product owns the experience.
Sign up in the Portal, create an organisation, open a sandbox. When you need production, join the waitlist.
Sandboxes run on staging with test data. Production access is by waitlist.