{"openapi":"3.1.1","info":{"title":"Absolute Dental Public Information API","version":"1.0.0","description":"Unauthenticated, read-only access to published West Perth practice information. Use GET; all writes are rejected. No patient data, diagnosis, payments or booking API. For appointments, use the booking link returned by the practice endpoint. Query parameters are not accepted. No credentials or SDK are needed: fetch any listed endpoint with Accept: application/json. Breaking changes will use a new major URL version while v1 remains available."},"servers":[{"url":"https://holisticdentistperth.com.au"}],"security":[],"externalDocs":{"description":"Absolute Dental agent documentation","url":"https://holisticdentistperth.com.au/docs"},"paths":{"/api":{"get":{"operationId":"getApiDirectory","summary":"Discover the Absolute Dental public read-only API","description":"Discover the Absolute Dental public read-only API. No authentication is required; no patient data, booking or payment operations are offered.","security":[],"parameters":[],"responses":{"200":{"description":"Published public information.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Directory"}}}},"400":{"description":"RFC 9457 problem details with a stable code and recovery guidance.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"RFC 9457 problem details with a stable code and recovery guidance.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"405":{"description":"RFC 9457 problem details with a stable code and recovery guidance.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"headers":{"Allow":{"description":"Supported HTTP methods.","schema":{"type":"string","const":"GET, HEAD, OPTIONS"}}}},"406":{"description":"RFC 9457 problem details with a stable code and recovery guidance.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/v1/practice":{"get":{"operationId":"getPracticeInformation","summary":"Retrieve the published Absolute Dental name, contact details, address, hours and appointment-request URL","description":"Retrieve the published Absolute Dental name, contact details, address, hours and appointment-request URL. Availability must be confirmed with the practice.","security":[],"parameters":[],"responses":{"200":{"description":"Published public information.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Practice"}}}},"400":{"description":"RFC 9457 problem details with a stable code and recovery guidance.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"RFC 9457 problem details with a stable code and recovery guidance.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"405":{"description":"RFC 9457 problem details with a stable code and recovery guidance.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"headers":{"Allow":{"description":"Supported HTTP methods.","schema":{"type":"string","const":"GET, HEAD, OPTIONS"}}}},"406":{"description":"RFC 9457 problem details with a stable code and recovery guidance.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/v1/pages":{"get":{"operationId":"listPublicPages","summary":"Retrieve the complete, bounded directory of public website pages as titles and canonical URLs","description":"Retrieve the complete, bounded directory of public website pages as titles and canonical URLs. This small directory is returned in one response; no pagination is needed.","security":[],"parameters":[],"responses":{"200":{"description":"Published public information.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Pages"}}}},"400":{"description":"RFC 9457 problem details with a stable code and recovery guidance.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"RFC 9457 problem details with a stable code and recovery guidance.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"405":{"description":"RFC 9457 problem details with a stable code and recovery guidance.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"headers":{"Allow":{"description":"Supported HTTP methods.","schema":{"type":"string","const":"GET, HEAD, OPTIONS"}}}},"406":{"description":"RFC 9457 problem details with a stable code and recovery guidance.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/v1/homepage":{"get":{"operationId":"getHomepageInformation","summary":"Retrieve the existing homepage Markdown, including service summaries, contact details, offer conditions and FAQs","description":"Retrieve the existing homepage Markdown, including service summaries, contact details, offer conditions and FAQs. This is general information, not personalised clinical advice.","security":[],"parameters":[],"responses":{"200":{"description":"Published public information.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Homepage"}}}},"400":{"description":"RFC 9457 problem details with a stable code and recovery guidance.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"RFC 9457 problem details with a stable code and recovery guidance.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"405":{"description":"RFC 9457 problem details with a stable code and recovery guidance.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"headers":{"Allow":{"description":"Supported HTTP methods.","schema":{"type":"string","const":"GET, HEAD, OPTIONS"}}}},"406":{"description":"RFC 9457 problem details with a stable code and recovery guidance.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}}},"components":{"schemas":{"Practice":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"name":{"type":"string"},"url":{"type":"string","format":"uri"},"phone":{"type":"string"},"email":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"address":{"type":"string"},"mapHref":{"type":"string","format":"uri"},"mapEmbedHref":{"type":"string","format":"uri"},"facebookHref":{"type":"string","format":"uri"},"hours":{"type":"array","items":{"type":"object","properties":{"day":{"type":"string"},"time":{"type":"string"}},"required":["day","time"],"additionalProperties":false}},"hoursNote":{"type":"string"},"bookingHref":{"type":"string","format":"uri"}},"required":["name","url","phone","email","address","mapHref","mapEmbedHref","facebookHref","hours","hoursNote","bookingHref"],"additionalProperties":false},"Pages":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"name":{"type":"string"},"pages":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"url":{"type":"string","format":"uri"}},"required":["title","url"],"additionalProperties":false}}},"required":["name","pages"],"additionalProperties":false},"Homepage":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"name":{"type":"string"},"url":{"type":"string","format":"uri"},"markdown":{"type":"string"}},"required":["name","url","markdown"],"additionalProperties":false},"Directory":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"name":{"type":"string"},"version":{"type":"string"},"description":{"type":"string"},"authentication":{"type":"string"},"specification":{"type":"string","format":"uri"},"mcp":{"type":"string","format":"uri"},"endpoints":{"type":"array","items":{"type":"string","format":"uri"}}},"required":["name","version","description","authentication","specification","mcp","endpoints"],"additionalProperties":false},"Problem":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"instance":{"type":"string"},"code":{"type":"string"},"resolution":{"type":"string"}},"required":["type","title","status","detail","instance","code","resolution"],"additionalProperties":false}}}}