{"aam_version":"0.1","site":{"name":"Dental Vinohrady","domain":"bookio.whatcanido.dev","page_url":"https://bookio.whatcanido.dev/bookio/b/dental-vinohrady","tos_url":"https://bookio.whatcanido.dev/terms","description":"Privátní stomatologie. Tři ordinace, digitální RTG, CAD/CAM korunky během jedné návštěvy. Akceptujeme i samoplátce bez registrace.","category":"dental","city":"Praha","district":"Praha 2"},"auth":{"type":"delegated_oauth","required_for":["book_appointment","cancel_appointment"],"accepted_identity_proofs":[{"type":"aam_id","issuer":"https://aam-platform-gamma.vercel.app","jwks_url":"https://aam-platform-gamma.vercel.app/.well-known/aam-jwks.json","connect_url_pattern":"https://aam-platform-gamma.vercel.app/id/connect?agent={agent}&scopes={scopes}&site=bookio:dental-vinohrady","scope_names":{"book:appointment":"book_appointment","cancel:appointment":"cancel_appointment"},"note":"Federated. ONE signin gives a credential reusable across ALL Bookio tenants AND any other AAM ID-enabled site. Highly recommended."},{"type":"per_site_consent","authorize_url":"https://bookio.whatcanido.dev/api/bookio/b/dental-vinohrady/aam/authorize","token_url":"https://bookio.whatcanido.dev/api/bookio/b/dental-vinohrady/aam/token","consent_url_pattern":"https://bookio.whatcanido.dev/bookio/b/dental-vinohrady/consent/{request_id}","flow":"out_of_band","note":"Per-tenant only. Token cannot be reused across other tenants. Use only if AAM ID isn't acceptable."}],"authorize_url":"https://bookio.whatcanido.dev/api/bookio/b/dental-vinohrady/aam/authorize","token_url":"https://bookio.whatcanido.dev/api/bookio/b/dental-vinohrady/aam/token","consent_url_pattern":"https://bookio.whatcanido.dev/bookio/b/dental-vinohrady/consent/{request_id}","flow_description":"RECOMMENDED: AAM ID at https://aam-platform-gamma.vercel.app/id/connect?scopes=book:appointment&site=bookio:dental-vinohrady. One credential, every Bookio tenant + every other AAM site. FALLBACK: per-tenant consent via authorize_url.","note":"Per-site consent tokens are scoped to this tenant only. AAM ID credentials are scoped to email + scopes, work everywhere."},"actions":[{"id":"list_services","method":"GET","url":"https://bookio.whatcanido.dev/api/bookio/b/dental-vinohrady/services","label":"List services and staff at Dental Vinohrady","description":"Returns the catalog: every service with price (CZK), duration, recommended staff, and the full staff roster with bios. Call FIRST so you know what's offered before suggesting a booking. No auth.","params":{},"access":"public","auth_required":false,"pricing":"free"},{"id":"check_availability","method":"POST","url":"https://bookio.whatcanido.dev/api/bookio/b/dental-vinohrady/check-availability","label":"Check available time slots","description":"Returns free 30-minute slot start times for a service+date, optionally narrowed to a specific staff member. Slots respect opening hours and existing bookings.","params":{"service_id":{"type":"string"},"staff_id":{"type":"string","optional":true},"date":{"type":"string","format":"date"}},"access":"public","auth_required":false,"pricing":"free"},{"id":"book_appointment","method":"POST","url":"https://bookio.whatcanido.dev/api/bookio/b/dental-vinohrady/book","label":"Book an appointment at Dental Vinohrady","description":"Creates a confirmed booking. REQUIRES Bearer with scope book_appointment. Customer name + phone come from the consent token automatically. Race-safe slot check.","params":{"service_id":{"type":"string"},"staff_id":{"type":"string"},"date":{"type":"string","format":"date"},"time":{"type":"string","format":"HH:MM"},"customer_name":{"type":"string","optional":true},"customer_phone":{"type":"string","optional":true},"customer_email":{"type":"string","format":"email","optional":true},"notes":{"type":"string","optional":true}},"access":"authenticated","auth_required":true,"scope":"book_appointment","pricing":"free"},{"id":"cancel_appointment","method":"POST","url":"https://bookio.whatcanido.dev/api/bookio/b/dental-vinohrady/cancel","label":"Cancel a booking","description":"Cancels a confirmed booking by id. REQUIRES Bearer with scope cancel_appointment. Idempotent.","params":{"booking_id":{"type":"string"},"reason":{"type":"string","optional":true}},"access":"authenticated","auth_required":true,"scope":"cancel_appointment","pricing":"free"}],"powered_by":{"platform":"Bookio","platform_url":"https://bookio.whatcanido.dev","registry_url":"https://bookio.whatcanido.dev/api/bookio/registry/tenants","note":"This site uses Bookio as its booking backend. All tenants on Bookio are AAM-enabled with the same action shape — once you've called one, you know how to call them all. Use the registry_url to discover other tenants by category and city."},"aam_signature":{"signature":"eyJhbGciOiJSUzI1NiIsImtpZCI6ImRldi1hNDZhM2MyMjU3ZmIiLCJ0eXAiOiJhYW0tbWFuaWZlc3QrandzIn0.eyJkaWdlc3QiOiI4NGFjNjgzZDBlZGI4ZWYyN2UwYjkwNGYzOGI5OTRkNGM4ZGZiN2E2ZmEzODkzZGQ5MWY3NDZmYjE4NWIxYWZhIiwiYWxnIjoiU0hBLTI1NiJ9.oZvoYeMTnbqDq84Vru6bPo36wud4QqKtiFkCN-kTaFbwUaAvjnc126Xb-bUJ4iS2xXq8JPaC3z26b52IAqTYGCQvZOJwQE-gLhMq8bH27Wk1li_xsLhTeTpQDYBls-fFOPlc-Kb7QpgduhGKFx3992bvAsboOMVgaEGzig0uqqbuNeaQ_D3be8kUXpCAAeCamncqV6Vtnhye-xNM6qFhdp7hXnP_rw4QphoUm-26yM5GINsrvh4nCmCsDkDksU_saRawjCXTu5Ah1x8VdUWx0ZXyXbFN5IrYr3jgUFxIRavQLHhh-GWg2h1yPQd2Fdax9lJRq5Vd81fhwXP0AiTCWA","digest_alg":"SHA-256","digest":"84ac683d0edb8ef27e0b904f38b994d4c8dfb7a6fa3893dd91f746fb185b1afa","kid":"dev-a46a3c2257fb","signed_at":"2026-05-06T17:12:42.408Z","jwks_url":"https://bookio.whatcanido.dev/.well-known/aam-manifest-jwks.json","note":"Detached JWS over the SHA-256 of canonical manifest body. Verify by re-canonicalizing without aam_signature, comparing the digest to payload.digest, then verifying the JWS with the public key at jwks_url. RFC 7515 § 3.1 / § 5."}}