{"openapi":"3.1.0","info":{"title":"Diagnosticy Public API","summary":"Machine-readable product, pricing, and content API for Diagnosticy.","description":"Diagnosticy is clinic software that digitizes records, forms, reports, and scheduling so practices run with structure, traceability, and secure access from any device.","version":"1.0.0","contact":{"name":"Diagnosticy","url":"https://diagnosticy.com","email":"support@diagnosticy.com"}},"servers":[{"url":"https://diagnosticy.com","description":"This host"}],"tags":[{"name":"Product","description":"What Diagnosticy is and who it is for."},{"name":"Features","description":"Product capabilities."},{"name":"Plans","description":"Pricing plans."},{"name":"Content","description":"Blog posts, FAQs, and specialties."},{"name":"Search","description":"Full-text search."},{"name":"Contact","description":"Human contact form."},{"name":"Agents","description":"OpenAPI and MCP discovery."}],"paths":{"/api/v1/info":{"get":{"operationId":"getProductInfo","tags":["Product"],"summary":"Product overview","description":"Returns Diagnosticy positioning, audience, and links to the app, OpenAPI spec, and MCP server.","parameters":[{"name":"locale","in":"query","required":false,"description":"Response locale.","schema":{"type":"string","enum":["en","es"],"default":"en"}}],"responses":{"200":{"description":"Product information.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductInfo"}}}}}}},"/api/v1/features":{"get":{"operationId":"listFeatures","tags":["Features"],"summary":"List features","description":"Lists published Diagnosticy features.","parameters":[{"name":"locale","in":"query","required":false,"description":"Response locale.","schema":{"type":"string","enum":["en","es"],"default":"en"}}],"responses":{"200":{"description":"Feature summaries.","content":{"application/json":{"schema":{"type":"object","required":["items"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/FeatureSummary"}}}}}}}}}},"/api/v1/features/{slug}":{"get":{"operationId":"getFeature","tags":["Features"],"summary":"Get a feature","description":"Returns one feature including HTML body content.","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"locale","in":"query","required":false,"description":"Response locale.","schema":{"type":"string","enum":["en","es"],"default":"en"}}],"responses":{"200":{"description":"Feature detail.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeatureDetail"}}}},"404":{"description":"Feature not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/plans":{"get":{"operationId":"listPlans","tags":["Plans"],"summary":"List pricing plans","description":"Returns Diagnosticy pricing plans and included features.","parameters":[{"name":"locale","in":"query","required":false,"description":"Response locale.","schema":{"type":"string","enum":["en","es"],"default":"en"}}],"responses":{"200":{"description":"Pricing plans.","content":{"application/json":{"schema":{"type":"object","required":["items"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Plan"}}}}}}}}}},"/api/v1/posts":{"get":{"operationId":"listPosts","tags":["Content"],"summary":"List posts","description":"Lists recent blog posts and product updates.","parameters":[{"name":"locale","in":"query","required":false,"description":"Response locale.","schema":{"type":"string","enum":["en","es"],"default":"en"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":50,"default":20}}],"responses":{"200":{"description":"Post summaries.","content":{"application/json":{"schema":{"type":"object","required":["items"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/PostSummary"}}}}}}}}}},"/api/v1/posts/{slug}":{"get":{"operationId":"getPost","tags":["Content"],"summary":"Get a post","description":"Returns one blog post including HTML body content.","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"locale","in":"query","required":false,"description":"Response locale.","schema":{"type":"string","enum":["en","es"],"default":"en"}}],"responses":{"200":{"description":"Post detail.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostDetail"}}}},"404":{"description":"Post not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/search":{"get":{"operationId":"searchPosts","tags":["Search"],"summary":"Search posts","description":"Full-text search across Diagnosticy blog posts.","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string"},"description":"Search query."},{"name":"locale","in":"query","required":false,"description":"Response locale.","schema":{"type":"string","enum":["en","es"],"default":"en"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":50,"default":20}}],"responses":{"200":{"description":"Search hits.","content":{"application/json":{"schema":{"type":"object","required":["query","items"],"properties":{"query":{"type":"string"},"items":{"type":"array","items":{"$ref":"#/components/schemas/SearchHit"}}}}}}},"400":{"description":"Missing query.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/faqs":{"get":{"operationId":"listFaqs","tags":["Content"],"summary":"List FAQs","description":"Returns frequently asked questions about Diagnosticy.","parameters":[{"name":"locale","in":"query","required":false,"description":"Response locale.","schema":{"type":"string","enum":["en","es"],"default":"en"}}],"responses":{"200":{"description":"FAQ items.","content":{"application/json":{"schema":{"type":"object","required":["items"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Faq"}}}}}}}}}},"/api/v1/specialties":{"get":{"operationId":"listSpecialties","tags":["Content"],"summary":"List specialties","description":"Returns medical specialties Diagnosticy is designed to support.","parameters":[{"name":"locale","in":"query","required":false,"description":"Response locale.","schema":{"type":"string","enum":["en","es"],"default":"en"}}],"responses":{"200":{"description":"Specialties.","content":{"application/json":{"schema":{"type":"object","required":["items"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Specialty"}}}}}}}}}},"/server/contact":{"post":{"operationId":"submitContact","tags":["Contact"],"summary":"Submit a contact request","description":"Sends a message to the Diagnosticy team. Requires a Cloudflare Turnstile token from the public contact form.","requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["name","email","message","cf-turnstile-response"],"properties":{"locale":{"type":"string","enum":["en","es"]},"name":{"type":"string","minLength":2},"email":{"type":"string","format":"email"},"message":{"type":"string","minLength":10},"cf-turnstile-response":{"type":"string","description":"Cloudflare Turnstile response token."}}}}}},"responses":{"200":{"description":"Message accepted.","content":{"application/json":{"schema":{"type":"object","required":["ok"],"properties":{"ok":{"type":"boolean"}}}}}},"400":{"description":"Validation or Turnstile failure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FormError"}}}}}}},"/openapi.json":{"get":{"operationId":"getOpenApiSpec","tags":["Agents"],"summary":"OpenAPI specification","description":"This document.","responses":{"200":{"description":"OpenAPI 3.1 document.","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/mcp":{"post":{"operationId":"mcpStreamableHttp","tags":["Agents"],"summary":"MCP Streamable HTTP endpoint","description":"JSON-RPC Model Context Protocol endpoint using Streamable HTTP transport.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"JSON-RPC response.","content":{"application/json":{"schema":{"type":"object"}}}}}}}},"components":{"schemas":{"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}},"FormError":{"type":"object","required":["ok"],"properties":{"ok":{"type":"boolean"},"message":{"type":"string"},"errors":{"type":"object","additionalProperties":true}}},"ProductInfo":{"type":"object","required":["name","tagline","description","audience","website","app","openapi","mcp"],"properties":{"name":{"type":"string"},"tagline":{"type":"string"},"description":{"type":"string"},"audience":{"type":"string"},"website":{"type":"string","format":"uri"},"app":{"type":"string","format":"uri"},"contact":{"type":"string","format":"uri"},"openapi":{"type":"string","format":"uri"},"mcp":{"type":"string","format":"uri"}}},"FeatureSummary":{"type":"object","required":["slug","title","summary","url"],"properties":{"slug":{"type":"string"},"title":{"type":"string"},"summary":{"type":"string"},"url":{"type":"string","format":"uri"},"featured":{"type":"boolean"}}},"FeatureDetail":{"allOf":[{"$ref":"#/components/schemas/FeatureSummary"},{"type":"object","required":["html"],"properties":{"html":{"type":"string"}}}]},"Plan":{"type":"object","required":["slug","name","price","currency"],"properties":{"slug":{"type":"string"},"name":{"type":"string"},"price":{"type":"number"},"currency":{"type":"string"},"billingPeriod":{"type":"string","nullable":true},"availability":{"type":"string","nullable":true},"featured":{"type":"boolean"},"ctaLabel":{"type":"string","nullable":true},"url":{"type":"string","nullable":true},"features":{"type":"array","items":{"type":"string"}}}},"PostSummary":{"type":"object","required":["slug","title","excerpt","url"],"properties":{"slug":{"type":"string"},"title":{"type":"string"},"excerpt":{"type":"string"},"url":{"type":"string","format":"uri"},"publishedAt":{"type":"string","format":"date-time","nullable":true}}},"PostDetail":{"allOf":[{"$ref":"#/components/schemas/PostSummary"},{"type":"object","required":["html"],"properties":{"html":{"type":"string"}}}]},"SearchHit":{"type":"object","required":["slug","title","url"],"properties":{"slug":{"type":"string"},"title":{"type":"string"},"snippet":{"type":"string"},"url":{"type":"string","format":"uri"}}},"Faq":{"type":"object","required":["slug","question","answer"],"properties":{"slug":{"type":"string"},"question":{"type":"string"},"answer":{"type":"string"}}},"Specialty":{"type":"object","required":["id","title"],"properties":{"id":{"type":"string"},"title":{"type":"string"}}}}}}