{"openapi":"3.1.0","info":{"title":"Hapibits Public Site API","version":"1.0.0","description":"A small, read-only API that helps software agents discover Hapibits apps and authoritative public resources.","contact":{"name":"Hapibits","email":"hapibits@gmail.com","url":"https://hapibits.com/contact"}},"servers":[{"url":"https://hapibits.com","description":"Production"}],"tags":[{"name":"Discovery","description":"Public site and app discovery"}],"paths":{"/api/site":{"get":{"tags":["Discovery"],"summary":"Get the Hapibits site directory","description":"Returns the studio identity, current public apps, and authoritative human- and machine-readable resource URLs.","operationId":"getSiteDirectory","responses":{"200":{"description":"The current public Hapibits site directory.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SiteDirectory"}}}},"405":{"description":"The HTTP method is not supported by this resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}},"components":{"schemas":{"SiteDirectory":{"type":"object","additionalProperties":false,"required":["name","description","url","apps","resources"],"properties":{"name":{"type":"string","examples":["Hapibits"]},"description":{"type":"string"},"url":{"type":"string","format":"uri"},"apps":{"type":"array","items":{"$ref":"#/components/schemas/AppSummary"}},"resources":{"$ref":"#/components/schemas/ResourceDirectory"}}},"AppSummary":{"type":"object","additionalProperties":false,"required":["name","description","platform","url","privacyUrl"],"properties":{"name":{"type":"string"},"description":{"type":"string"},"platform":{"type":"string","const":"Android"},"url":{"type":"string","format":"uri"},"privacyUrl":{"type":"string","format":"uri"}}},"ResourceDirectory":{"type":"object","additionalProperties":false,"required":["about","contact","privacy","sitemap","llms","openapi"],"properties":{"about":{"type":"string","format":"uri"},"contact":{"type":"string","format":"uri"},"privacy":{"type":"string","format":"uri"},"sitemap":{"type":"string","format":"uri"},"llms":{"type":"string","format":"uri"},"openapi":{"type":"string","format":"uri"}}},"ErrorResponse":{"type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","resolution","status"],"properties":{"code":{"type":"string","examples":["RESOURCE_NOT_FOUND"]},"message":{"type":"string"},"resolution":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599}}}}}}}}