{"aam_version":"0.1","site":{"name":"Salon Aurora","domain":"bookio.whatcanido.dev","page_url":"https://bookio.whatcanido.dev/bookio/b/salon-aurora","tos_url":"https://bookio.whatcanido.dev/terms","description":"Čtyři stylisté s vlastním rukopisem. Pánské i dámské střihy, profesionální barvení L'Oréal, balayage i jemný melír, ošetření Olaplex.","category":"haircut","city":"Praha","district":"Praha 7"},"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:salon-aurora","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/salon-aurora/aam/authorize","token_url":"https://bookio.whatcanido.dev/api/bookio/b/salon-aurora/aam/token","consent_url_pattern":"https://bookio.whatcanido.dev/bookio/b/salon-aurora/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/salon-aurora/aam/authorize","token_url":"https://bookio.whatcanido.dev/api/bookio/b/salon-aurora/aam/token","consent_url_pattern":"https://bookio.whatcanido.dev/bookio/b/salon-aurora/consent/{request_id}","flow_description":"RECOMMENDED: AAM ID at https://aam-platform-gamma.vercel.app/id/connect?scopes=book:appointment&site=bookio:salon-aurora. 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/salon-aurora/services","label":"List services and staff at Salon Aurora","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/salon-aurora/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/salon-aurora/book","label":"Book an appointment at Salon Aurora","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/salon-aurora/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":"eyJhbGciOiJSUzI1NiIsImtpZCI6ImRldi00MDRjMzM2OGQwN2EiLCJ0eXAiOiJhYW0tbWFuaWZlc3QrandzIn0.eyJkaWdlc3QiOiJiOGU3YzFiYzQ4MmE5ZTYxNjZlODcxMTNjYWY2ZDkxNWUxNTJlOGJlOTlmNTRkYzdkNTRlYzhlYTllMDBkNDViIiwiYWxnIjoiU0hBLTI1NiJ9.ANz179jl6gfH76DrxGB_v-7bZs1uXZnbrXw_mkFfM_tpsg92q7_nKiIaOyHu8Yaz7gw0ttx-KPgWFu2KIzoCaLnXTKHUwgxNYe02VTU5hXRZZebrrmtlp-p65L7sGr1R_JTsodG_q4SZNYlMC7yfEo7ECfLWJTjTorYorVuA9i0wtvnzYFIWJGcw3M4EHkauBBS28aLWVlTYq70ESec9LtccZBwxV4SBdH-qxDlt0LE31CBqEYy4eBwQ77v1GaSttIVG4nPuzOTLzyEz28acJEeEbCfr3lnc6QaeULzw9r0JNrE_z1JldsC2GTVT8IwDMx2yixZzwcNyHfGDU0sPig","digest_alg":"SHA-256","digest":"b8e7c1bc482a9e6166e87113caf6d915e152e8be99f54dc7d54ec8ea9e00d45b","kid":"dev-404c3368d07a","signed_at":"2026-05-06T16:32:52.210Z","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."}}