{"openapi":"3.0.3","info":{"title":"Autotelic BARna public agent booking","version":"1.0.0","description":"Public BARna venue-room booking for ChatGPT\/Claude. Karaoke 1\/2, 501fun A\/B, Multiball. $25\/hr, $35\/hr prime (Fri\u2013Sat from 19:00 America\/Denver). Hold then send the human to the hosted pay page. Do not collect card details. Not the Sanctum venue.* staff tools."},"servers":[{"url":"https:\/\/autotelic.build\/api\/v1\/public\/agent-booking"}],"paths":{"\/rooms":{"get":{"operationId":"listRooms","summary":"List BARna venue rooms and rates","description":"Karaoke 1\/2, 501fun A\/B, Multiball with $25 \/ $35 prime rates. Glow, rentals, and construction SKUs are never listed.","responses":{"200":{"description":"Room catalog","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/RoomList"}}}}}}},"\/slots":{"get":{"operationId":"listSlots","summary":"List open hours for a room on a date","description":"Open start times in America\/Denver. consecutive_hours is how many hours still fit from that start.","parameters":[{"name":"room","in":"query","required":true,"schema":{"type":"string"},"description":"Room slug, e.g. barna-karaoke-1"},{"name":"date","in":"query","required":true,"schema":{"type":"string","format":"date"},"description":"Calendar date YYYY-MM-DD in America\/Denver"}],"responses":{"200":{"description":"Open slots","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/SlotList"}}}},"422":{"description":"Refused (wrong SKU)"}}}},"\/holds":{"post":{"operationId":"holdRoom","summary":"Hold a BARna room after the human confirms","description":"Creates an unpaid website-checkout hold and returns an order token. Requires confirm=true after the human explicitly agrees. Idempotency key is required. Never sends a card, campaign, or multi-dial field. Never creates a PaymentIntent \u2014 call payLink next.","requestBody":{"required":true,"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/HoldRequest"}}}},"responses":{"201":{"description":"Hold created","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/HoldResponse"}}}},"200":{"description":"Idempotent replay of an existing hold","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/HoldResponse"}}}},"409":{"description":"Slot no longer available"},"422":{"description":"Refused (wrong SKU, missing confirm, card\/campaign fields)"}}}},"\/pay-link":{"post":{"operationId":"payLink","summary":"Return the hosted pay URL for a hold token","description":"Returns https:\/\/autotelic.build\/book\/orders\/{token}\/pay only. Do not collect card details in-chat. The human pays on the website.","requestBody":{"required":true,"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/PayLinkRequest"}}}},"responses":{"200":{"description":"Hosted pay URL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/PayLinkResponse"}}}},"404":{"description":"Unknown token"},"422":{"description":"Refused (not a BARna hold, or cancelled)"}}}}},"components":{"schemas":{"RoomList":{"type":"object","properties":{"timezone":{"type":"string"},"currency":{"type":"string"},"rates":{"type":"object","properties":{"normal_cents":{"type":"integer"},"prime_cents":{"type":"integer"},"prime_note":{"type":"string"}}},"rooms":{"type":"array","items":{"$ref":"#\/components\/schemas\/Room"}},"count":{"type":"integer"}}},"Room":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"max_hours":{"type":"integer"},"normal_cents":{"type":"integer"},"prime_cents":{"type":"integer"},"book_url":{"type":"string"}}},"SlotList":{"type":"object","properties":{"room":{"type":"string"},"date":{"type":"string"},"timezone":{"type":"string"},"slots":{"type":"array","items":{"$ref":"#\/components\/schemas\/Slot"}}}},"Slot":{"type":"object","properties":{"start":{"type":"string"},"remaining":{"type":"integer"},"consecutive_hours":{"type":"integer"}}},"HoldRequest":{"type":"object","required":["room","name","email","phone","hours","start","idempotency_key","confirm"],"properties":{"room":{"type":"string","description":"Room slug, e.g. barna-karaoke-1"},"name":{"type":"string"},"email":{"type":"string","format":"email"},"phone":{"type":"string"},"hours":{"type":"integer","minimum":1,"maximum":8,"description":"Consecutive hours (qty), not headcount"},"start":{"type":"string","description":"Slot start, America\/Denver (offset ISO or bare local)"},"idempotency_key":{"type":"string","minLength":8,"maxLength":61},"confirm":{"type":"boolean","description":"Must be true only after the human explicitly confirms name, email, phone, room, date, hours, and start. Do not set true without that confirmation."}}},"HoldResponse":{"type":"object","properties":{"token":{"type":"string"},"status":{"type":"string"},"hours":{"type":"integer"},"total_cents":{"type":"integer"},"payment_intent_created":{"type":"boolean"},"replayed":{"type":"boolean"}}},"PayLinkRequest":{"type":"object","required":["token"],"properties":{"token":{"type":"string","description":"Order token from holdRoom"}}},"PayLinkResponse":{"type":"object","required":["pay_url"],"properties":{"pay_url":{"type":"string","description":"Hosted pay page. The only payment URL this contract returns."}}}}}}