{"openapi":"3.1.0","info":{"title":"JOYCO Content API","version":"1.0.0","description":"Read-only access to canonical Markdown representations of public JOYCO website pages. No authentication is required. Unsupported HTTP methods return structured JSON 405 errors. JOYCO does not currently expose authenticated product operations, webhooks, an SDK, or an MCP server."},"servers":[{"url":"https://joyco.studio","description":"JOYCO production website"}],"security":[],"tags":[{"name":"Content","description":"Canonical, agent-readable versions of public JOYCO pages."}],"paths":{"/api/markdown":{"get":{"operationId":"getHomepageMarkdown","summary":"Get the JOYCO homepage as Markdown","description":"Returns the canonical, server-generated Markdown representation of the JOYCO studio homepage.","tags":["Content"],"responses":{"200":{"description":"The canonical JOYCO homepage Markdown document.","headers":{"Link":{"description":"Links to the canonical HTML page, llms.txt, and OpenAPI service description.","schema":{"type":"string"}}},"content":{"text/markdown":{"schema":{"type":"string","minLength":500}}}}}},"head":{"operationId":"headHomepageMarkdown","summary":"Inspect the JOYCO homepage Markdown resource","description":"Returns the status and headers for the canonical JOYCO homepage Markdown representation without a response body.","tags":["Content"],"responses":{"200":{"description":"The homepage Markdown resource exists and its representation headers are returned.","headers":{"Link":{"description":"Links to the canonical HTML page, llms.txt, and OpenAPI service description.","schema":{"type":"string"}}}}}}},"/api/markdown/developers":{"get":{"operationId":"getDevelopersMarkdown","summary":"Get a JOYCO public page as Markdown","description":"Returns the canonical Markdown representation for a named public JOYCO website page.","tags":["Content"],"responses":{"200":{"description":"The requested canonical JOYCO page as Markdown.","content":{"text/markdown":{"schema":{"type":"string","minLength":1}}}},"404":{"$ref":"#/components/responses/ResourceNotFound"}}},"head":{"operationId":"headDevelopersMarkdown","summary":"Inspect a JOYCO page Markdown resource","description":"Returns the status and headers for a named JOYCO page Markdown representation without a response body.","tags":["Content"],"responses":{"200":{"description":"The requested Markdown resource exists and its representation headers are returned."},"404":{"description":"No published JOYCO Markdown resource matches the requested path."}}}}},"components":{"schemas":{"ErrorDetail":{"type":"object","description":"A stable, actionable JOYCO API error.","additionalProperties":false,"required":["code","message","resolution"],"properties":{"code":{"type":"string","description":"A stable snake_case identifier suitable for programmatic handling.","examples":["resource_not_found"]},"message":{"type":"string","description":"A human-readable explanation of the failure."},"resolution":{"type":"string","description":"A concrete hint for correcting the request or discovering supported operations."}}},"ErrorResponse":{"type":"object","description":"The JSON envelope returned for every JOYCO API error.","additionalProperties":false,"required":["error"],"properties":{"error":{"$ref":"#/components/schemas/ErrorDetail"}}}},"responses":{"ResourceNotFound":{"description":"No published JOYCO Markdown resource matches the requested path. Direct API requests receive JSON; negotiated Markdown representations receive Markdown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}},"text/markdown":{"schema":{"type":"string","minLength":1}}}}}}}