{"openapi":"3.1.0","info":{"title":"Kmty Agent Catalog API","version":"1.0.0","description":"A public, read-only discovery API for contracted, bookable public listings. It has no booking mutation capability."},"servers":[{"url":"https://kmty.jp"}],"paths":{"/api/agent/catalog":{"get":{"summary":"List contracted, bookable public stores and active courses","description":"Returns discovery data only. reservationHandoffUrl opens the canonical site for human review and confirmation; an agent must not autonomously book.","parameters":[{"name":"search","in":"query","schema":{"type":"string","maxLength":100}},{"name":"category","in":"query","schema":{"type":"string","maxLength":64}},{"name":"prefecture","in":"query","schema":{"type":"string","maxLength":32}},{"name":"limit","in":"query","schema":{"type":"integer","default":20,"minimum":1,"maximum":50}},{"name":"offset","in":"query","schema":{"type":"integer","default":0,"minimum":0,"maximum":10000}}],"responses":{"200":{"description":"A deterministic page of public catalog records","content":{"application/json":{"schema":{"type":"object","required":["version","count","limit","offset","nextOffset","items"],"properties":{"version":{"type":"string","const":"1.0"},"count":{"type":"integer"},"limit":{"type":"integer"},"offset":{"type":"integer"},"nextOffset":{"type":["integer","null"]},"items":{"type":"array","items":{"type":"object","description":"Public store data. phone is omitted unless phone booking is enabled.","required":["id","slug","name","description","category","address","latitude","longitude","openingHours","closedDays","lowestPrice","currency","rating","reviewCount","castCount","foreignerFriendly","canonicalUrl","reservationHandoffUrl","courses"],"properties":{"id":{"type":"integer"},"slug":{"type":["string","null"]},"name":{"type":"string"},"description":{"type":"string"},"category":{"type":"string"},"address":{"type":"string"},"latitude":{"type":"number"},"longitude":{"type":"number"},"phone":{"type":"string"},"openingHours":{"type":"object","properties":{"opensAt":{"type":"string"},"closesAt":{"type":"string"}},"required":["opensAt","closesAt"],"additionalProperties":false},"closedDays":{"type":["string","null"]},"lowestPrice":{"type":["integer","null"]},"currency":{"type":"string","const":"JPY"},"rating":{"type":"number"},"reviewCount":{"type":"integer"},"castCount":{"type":"integer"},"foreignerFriendly":{"type":"boolean"},"canonicalUrl":{"type":"string","format":"uri"},"reservationHandoffUrl":{"type":"string","format":"uri","description":"Handoff only: a human must review and confirm on the canonical site. This API cannot create a booking."},"courses":{"type":"array","maxItems":20,"items":{"type":"object","additionalProperties":false,"required":["id","name","description","durationMinutes","price","currency"],"properties":{"id":{"type":"integer"},"name":{"type":"string"},"description":{"type":["string","null"]},"durationMinutes":{"type":"integer"},"price":{"type":"integer"},"currency":{"type":"string","const":"JPY"}}}}},"additionalProperties":false}}},"additionalProperties":false}}}}}}},"/api/agent/openapi.json":{"get":{"summary":"Get this read-only API description","responses":{"200":{"description":"OpenAPI 3.1 document"}}}},"/api/agent/policy":{"get":{"summary":"Get machine-readable read-only usage policy","responses":{"200":{"description":"Agent safety policy"}}}}}}