{"openapi":"3.1.0","info":{"title":"Hexclave public content API","version":"1.0.0","contact":{"name":"Hexclave","email":"team@hexclave.com"},"description":"Read-only, unauthenticated API for public marketing-site content. This specification does not cover the Hexclave product API; see the documentation API reference for that service."},"servers":[{"url":"https://www.hexclave.com","description":"Hexclave website"}],"paths":{"/api/v1/apps":{"get":{"operationId":"listApps","summary":"List public Hexclave apps","description":"Returns visible Hexclave apps from the public apps directory.","security":[],"responses":{"200":{"description":"A list of public apps.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppsResponse"}}}},"405":{"$ref":"#/components/responses/MethodNotAllowed"}}}},"/api/v1/apps/{appId}":{"get":{"operationId":"getApp","summary":"Get a public Hexclave app","description":"Returns one visible Hexclave app by its directory identifier.","security":[],"parameters":[{"name":"appId","in":"path","required":true,"description":"The app directory identifier, such as authentication or analytics.","schema":{"type":"string"}}],"responses":{"200":{"description":"The requested public app.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppResponse"}}}},"404":{"$ref":"#/components/responses/NotFound"},"405":{"$ref":"#/components/responses/MethodNotAllowed"}}}},"/api/v1/blog-posts":{"get":{"operationId":"listBlogPosts","summary":"List public blog posts","description":"Returns blog post metadata and short plain-text excerpts.","security":[],"responses":{"200":{"description":"A list of public blog posts.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlogPostsResponse"}}}},"405":{"$ref":"#/components/responses/MethodNotAllowed"}}}},"/api/v1/site":{"get":{"operationId":"getSite","summary":"Get site and agent resource metadata","description":"Returns the website identity and predictable documentation resource URLs.","security":[],"responses":{"200":{"description":"Site metadata and agent resources.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SiteResponse"}}}},"405":{"$ref":"#/components/responses/MethodNotAllowed"}}}}},"components":{"schemas":{"App":{"type":"object","required":["id","displayName","subtitle","url"],"properties":{"id":{"type":"string","description":"Stable public app identifier."},"displayName":{"type":"string"},"subtitle":{"type":"string"},"url":{"type":"string","format":"uri"}},"additionalProperties":false},"AppsResponse":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/App"}}},"additionalProperties":false},"AppResponse":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/App"}},"additionalProperties":false},"BlogPost":{"type":"object","required":["slug","title","publishedAt","excerpt","url"],"properties":{"slug":{"type":"string"},"title":{"type":"string"},"publishedAt":{"type":"string"},"excerpt":{"type":"string"},"url":{"type":"string","format":"uri"}},"additionalProperties":false},"BlogPostsResponse":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/BlogPost"}}},"additionalProperties":false},"Site":{"type":"object","required":["name","description","url","resources"],"properties":{"name":{"type":"string"},"description":{"type":"string"},"url":{"type":"string","format":"uri"},"resources":{"type":"object","required":["docs","docsApiReference","llmsTxt","llmsFullTxt","indexMd","feedXml","mcpDiscovery","mcp","agentCard","cliPackage","openapi"],"properties":{"docs":{"type":"string","format":"uri"},"docsApiReference":{"type":"string","format":"uri"},"llmsTxt":{"type":"string","format":"uri"},"llmsFullTxt":{"type":"string","format":"uri"},"indexMd":{"type":"string","format":"uri"},"feedXml":{"type":"string","format":"uri"},"mcpDiscovery":{"type":"string","format":"uri"},"mcp":{"type":"string","format":"uri"},"agentCard":{"type":"string","format":"uri"},"cliPackage":{"type":"string","format":"uri"},"openapi":{"type":"string","format":"uri"}},"additionalProperties":false}},"additionalProperties":false},"SiteResponse":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Site"}},"additionalProperties":false},"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message","documentation_url","hint"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"documentation_url":{"type":"string","format":"uri"},"hint":{"type":"string"}},"additionalProperties":false}},"additionalProperties":false}},"responses":{"NotFound":{"description":"The requested resource was not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"MethodNotAllowed":{"description":"The HTTP method is not supported.","headers":{"Allow":{"description":"Methods supported by this endpoint.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}