{"openapi":"3.1.0","info":{"title":"SafeHabits content API","version":"1.0.0","summary":"Read-only, unauthenticated access to the content of safehabits.eu as Markdown, plus the site's machine-readable index files.","description":"SafeHabits is a fully managed human security program (security awareness with audit-ready evidence for NIS2, SOC 2, ISO 27001 and NIST CSF). This document describes the public content endpoints of the marketing site only: every page is available as Markdown by content negotiation or by a .md alias, and the site publishes llms.txt, llms-full.txt, a sitemap and security.txt. There is no authentication and no write operation. SafeHabits does not yet publish a product API, webhooks or an MCP server; see https://safehabits.eu/developers for the integration roadmap and how to request early access.\n\nErrors: every operation can answer with the Error object (RFC 9457 shape, served as application/json) when the client asks for JSON; 404 not_found, 405 method_not_allowed, 406 not_acceptable, 5xx upstream_unavailable.\n\nVersioning and deprecation: the content endpoints are unversioned and stable; paths and response formats documented here do not change without notice. A breaking change is announced at least 90 days ahead on https://safehabits.eu/developers and in llms.txt, the affected operation carries Deprecation (RFC 9745) and Sunset (RFC 8594) response headers during that period, and info.version is bumped. Additive changes (new pages, new fields) bump the patch or minor version only.\n\nRate limits: no rate limit is enforced on these endpoints today, so no RateLimit headers are sent. Please cache responses (they carry Cache-Control) and keep concurrency modest; if a limit is introduced it will be announced the same way and signalled with 429 plus Retry-After.","termsOfService":"https://safehabits.eu/terms","contact":{"name":"SafeHabits","url":"https://safehabits.eu/contact","email":"hello@safehabits.eu"}},"externalDocs":{"description":"SafeHabits developer resources","url":"https://safehabits.eu/developers"},"x-versioning":{"strategy":"unversioned-stable","breakingChangeNoticeDays":90,"deprecationHeaders":["Deprecation","Sunset"],"announcementUrls":["https://safehabits.eu/developers","https://safehabits.eu/llms.txt"]},"x-rate-limit":{"enforced":false,"headers":[],"onIntroduction":"429 with Retry-After, announced 90 days ahead"},"servers":[{"url":"https://safehabits.eu","description":"Production"}],"security":[],"tags":[{"name":"pages","description":"Site pages, each available as HTML or Markdown."},{"name":"site-index","description":"Machine-readable index and policy files."}],"paths":{"/":{"get":{"operationId":"getHomePage","tags":["pages"],"summary":"Home page","description":"Home page. Send \"Accept: text/markdown\" for a clean Markdown representation, or use the .md alias path.","parameters":[{"$ref":"#/components/parameters/Accept"}],"responses":{"200":{"description":"Home page as HTML (default) or Markdown, selected by the Accept header.","headers":{"Vary":{"description":"Always includes Accept.","schema":{"type":"string"}},"Link":{"description":"Canonical URL of the page, as <url>; rel=\"canonical\" (Markdown representation).","schema":{"type":"string"}}},"content":{"text/html":{"schema":{"type":"string"}},"text/markdown":{"schema":{"type":"string","description":"Clean Markdown of the page's main content."}}}},"404":{"$ref":"#/components/responses/NotFound"},"405":{"$ref":"#/components/responses/MethodNotAllowed"},"406":{"$ref":"#/components/responses/NotAcceptable"},"default":{"$ref":"#/components/responses/Error"}}}},"/index.md":{"get":{"operationId":"getHomePageMarkdown","tags":["pages"],"summary":"Home page (Markdown alias)","description":"Markdown representation of / for clients that cannot set an Accept header.","responses":{"200":{"description":"Home page as Markdown.","headers":{"X-Robots-Tag":{"description":"Always noindex; the .md alias is never the canonical address.","schema":{"type":"string","enum":["noindex"]}},"Link":{"description":"Canonical URL of the page, as <url>; rel=\"canonical\".","schema":{"type":"string"}}},"content":{"text/markdown":{"schema":{"type":"string"}}}},"404":{"$ref":"#/components/responses/NotFound"},"405":{"$ref":"#/components/responses/MethodNotAllowed"},"default":{"$ref":"#/components/responses/Error"}}}},"/resources":{"get":{"operationId":"getResourcesIndex","tags":["pages"],"summary":"Resources hub index","description":"Resources hub index. Send \"Accept: text/markdown\" for a clean Markdown representation, or use the .md alias path.","parameters":[{"$ref":"#/components/parameters/Accept"}],"responses":{"200":{"description":"Resources hub index as HTML (default) or Markdown, selected by the Accept header.","headers":{"Vary":{"description":"Always includes Accept.","schema":{"type":"string"}},"Link":{"description":"Canonical URL of the page, as <url>; rel=\"canonical\" (Markdown representation).","schema":{"type":"string"}}},"content":{"text/html":{"schema":{"type":"string"}},"text/markdown":{"schema":{"type":"string","description":"Clean Markdown of the page's main content."}}}},"404":{"$ref":"#/components/responses/NotFound"},"405":{"$ref":"#/components/responses/MethodNotAllowed"},"406":{"$ref":"#/components/responses/NotAcceptable"},"default":{"$ref":"#/components/responses/Error"}}}},"/resources.md":{"get":{"operationId":"getResourcesIndexMarkdown","tags":["pages"],"summary":"Resources hub index (Markdown alias)","description":"Markdown representation of /resources for clients that cannot set an Accept header.","responses":{"200":{"description":"Resources hub index as Markdown.","headers":{"X-Robots-Tag":{"description":"Always noindex; the .md alias is never the canonical address.","schema":{"type":"string","enum":["noindex"]}},"Link":{"description":"Canonical URL of the page, as <url>; rel=\"canonical\".","schema":{"type":"string"}}},"content":{"text/markdown":{"schema":{"type":"string"}}}},"404":{"$ref":"#/components/responses/NotFound"},"405":{"$ref":"#/components/responses/MethodNotAllowed"},"default":{"$ref":"#/components/responses/Error"}}}},"/blog":{"get":{"operationId":"getBlogIndex","tags":["pages"],"summary":"Blog index","description":"Blog index. Send \"Accept: text/markdown\" for a clean Markdown representation, or use the .md alias path.","parameters":[{"$ref":"#/components/parameters/Accept"}],"responses":{"200":{"description":"Blog index as HTML (default) or Markdown, selected by the Accept header.","headers":{"Vary":{"description":"Always includes Accept.","schema":{"type":"string"}},"Link":{"description":"Canonical URL of the page, as <url>; rel=\"canonical\" (Markdown representation).","schema":{"type":"string"}}},"content":{"text/html":{"schema":{"type":"string"}},"text/markdown":{"schema":{"type":"string","description":"Clean Markdown of the page's main content."}}}},"404":{"$ref":"#/components/responses/NotFound"},"405":{"$ref":"#/components/responses/MethodNotAllowed"},"406":{"$ref":"#/components/responses/NotAcceptable"},"default":{"$ref":"#/components/responses/Error"}}}},"/blog.md":{"get":{"operationId":"getBlogIndexMarkdown","tags":["pages"],"summary":"Blog index (Markdown alias)","description":"Markdown representation of /blog for clients that cannot set an Accept header.","responses":{"200":{"description":"Blog index as Markdown.","headers":{"X-Robots-Tag":{"description":"Always noindex; the .md alias is never the canonical address.","schema":{"type":"string","enum":["noindex"]}},"Link":{"description":"Canonical URL of the page, as <url>; rel=\"canonical\".","schema":{"type":"string"}}},"content":{"text/markdown":{"schema":{"type":"string"}}}},"404":{"$ref":"#/components/responses/NotFound"},"405":{"$ref":"#/components/responses/MethodNotAllowed"},"default":{"$ref":"#/components/responses/Error"}}}},"/contact":{"get":{"operationId":"getContactPage","tags":["pages"],"summary":"Contact page","description":"Contact page. Send \"Accept: text/markdown\" for a clean Markdown representation, or use the .md alias path.","parameters":[{"$ref":"#/components/parameters/Accept"}],"responses":{"200":{"description":"Contact page as HTML (default) or Markdown, selected by the Accept header.","headers":{"Vary":{"description":"Always includes Accept.","schema":{"type":"string"}},"Link":{"description":"Canonical URL of the page, as <url>; rel=\"canonical\" (Markdown representation).","schema":{"type":"string"}}},"content":{"text/html":{"schema":{"type":"string"}},"text/markdown":{"schema":{"type":"string","description":"Clean Markdown of the page's main content."}}}},"404":{"$ref":"#/components/responses/NotFound"},"405":{"$ref":"#/components/responses/MethodNotAllowed"},"406":{"$ref":"#/components/responses/NotAcceptable"},"default":{"$ref":"#/components/responses/Error"}}}},"/contact.md":{"get":{"operationId":"getContactPageMarkdown","tags":["pages"],"summary":"Contact page (Markdown alias)","description":"Markdown representation of /contact for clients that cannot set an Accept header.","responses":{"200":{"description":"Contact page as Markdown.","headers":{"X-Robots-Tag":{"description":"Always noindex; the .md alias is never the canonical address.","schema":{"type":"string","enum":["noindex"]}},"Link":{"description":"Canonical URL of the page, as <url>; rel=\"canonical\".","schema":{"type":"string"}}},"content":{"text/markdown":{"schema":{"type":"string"}}}},"404":{"$ref":"#/components/responses/NotFound"},"405":{"$ref":"#/components/responses/MethodNotAllowed"},"default":{"$ref":"#/components/responses/Error"}}}},"/developers":{"get":{"operationId":"getDeveloperResources","tags":["pages"],"summary":"Developer resources","description":"Developer resources. Send \"Accept: text/markdown\" for a clean Markdown representation, or use the .md alias path.","parameters":[{"$ref":"#/components/parameters/Accept"}],"responses":{"200":{"description":"Developer resources as HTML (default) or Markdown, selected by the Accept header.","headers":{"Vary":{"description":"Always includes Accept.","schema":{"type":"string"}},"Link":{"description":"Canonical URL of the page, as <url>; rel=\"canonical\" (Markdown representation).","schema":{"type":"string"}}},"content":{"text/html":{"schema":{"type":"string"}},"text/markdown":{"schema":{"type":"string","description":"Clean Markdown of the page's main content."}}}},"404":{"$ref":"#/components/responses/NotFound"},"405":{"$ref":"#/components/responses/MethodNotAllowed"},"406":{"$ref":"#/components/responses/NotAcceptable"},"default":{"$ref":"#/components/responses/Error"}}}},"/developers.md":{"get":{"operationId":"getDeveloperResourcesMarkdown","tags":["pages"],"summary":"Developer resources (Markdown alias)","description":"Markdown representation of /developers for clients that cannot set an Accept header.","responses":{"200":{"description":"Developer resources as Markdown.","headers":{"X-Robots-Tag":{"description":"Always noindex; the .md alias is never the canonical address.","schema":{"type":"string","enum":["noindex"]}},"Link":{"description":"Canonical URL of the page, as <url>; rel=\"canonical\".","schema":{"type":"string"}}},"content":{"text/markdown":{"schema":{"type":"string"}}}},"404":{"$ref":"#/components/responses/NotFound"},"405":{"$ref":"#/components/responses/MethodNotAllowed"},"default":{"$ref":"#/components/responses/Error"}}}},"/privacy":{"get":{"operationId":"getPrivacyPolicy","tags":["pages"],"summary":"Privacy policy","description":"Privacy policy. Send \"Accept: text/markdown\" for a clean Markdown representation, or use the .md alias path.","parameters":[{"$ref":"#/components/parameters/Accept"}],"responses":{"200":{"description":"Privacy policy as HTML (default) or Markdown, selected by the Accept header.","headers":{"Vary":{"description":"Always includes Accept.","schema":{"type":"string"}},"Link":{"description":"Canonical URL of the page, as <url>; rel=\"canonical\" (Markdown representation).","schema":{"type":"string"}}},"content":{"text/html":{"schema":{"type":"string"}},"text/markdown":{"schema":{"type":"string","description":"Clean Markdown of the page's main content."}}}},"404":{"$ref":"#/components/responses/NotFound"},"405":{"$ref":"#/components/responses/MethodNotAllowed"},"406":{"$ref":"#/components/responses/NotAcceptable"},"default":{"$ref":"#/components/responses/Error"}}}},"/privacy.md":{"get":{"operationId":"getPrivacyPolicyMarkdown","tags":["pages"],"summary":"Privacy policy (Markdown alias)","description":"Markdown representation of /privacy for clients that cannot set an Accept header.","responses":{"200":{"description":"Privacy policy as Markdown.","headers":{"X-Robots-Tag":{"description":"Always noindex; the .md alias is never the canonical address.","schema":{"type":"string","enum":["noindex"]}},"Link":{"description":"Canonical URL of the page, as <url>; rel=\"canonical\".","schema":{"type":"string"}}},"content":{"text/markdown":{"schema":{"type":"string"}}}},"404":{"$ref":"#/components/responses/NotFound"},"405":{"$ref":"#/components/responses/MethodNotAllowed"},"default":{"$ref":"#/components/responses/Error"}}}},"/terms":{"get":{"operationId":"getTerms","tags":["pages"],"summary":"General terms and conditions","description":"General terms and conditions. Send \"Accept: text/markdown\" for a clean Markdown representation, or use the .md alias path.","parameters":[{"$ref":"#/components/parameters/Accept"}],"responses":{"200":{"description":"General terms and conditions as HTML (default) or Markdown, selected by the Accept header.","headers":{"Vary":{"description":"Always includes Accept.","schema":{"type":"string"}},"Link":{"description":"Canonical URL of the page, as <url>; rel=\"canonical\" (Markdown representation).","schema":{"type":"string"}}},"content":{"text/html":{"schema":{"type":"string"}},"text/markdown":{"schema":{"type":"string","description":"Clean Markdown of the page's main content."}}}},"404":{"$ref":"#/components/responses/NotFound"},"405":{"$ref":"#/components/responses/MethodNotAllowed"},"406":{"$ref":"#/components/responses/NotAcceptable"},"default":{"$ref":"#/components/responses/Error"}}}},"/terms.md":{"get":{"operationId":"getTermsMarkdown","tags":["pages"],"summary":"General terms and conditions (Markdown alias)","description":"Markdown representation of /terms for clients that cannot set an Accept header.","responses":{"200":{"description":"General terms and conditions as Markdown.","headers":{"X-Robots-Tag":{"description":"Always noindex; the .md alias is never the canonical address.","schema":{"type":"string","enum":["noindex"]}},"Link":{"description":"Canonical URL of the page, as <url>; rel=\"canonical\".","schema":{"type":"string"}}},"content":{"text/markdown":{"schema":{"type":"string"}}}},"404":{"$ref":"#/components/responses/NotFound"},"405":{"$ref":"#/components/responses/MethodNotAllowed"},"default":{"$ref":"#/components/responses/Error"}}}},"/resources/{slug}":{"get":{"operationId":"getResourceArticle","tags":["pages"],"summary":"Human risk management resource article","description":"A long-form, sourced article from the resources hub (definitions, comparisons, compliance evidence, cost). Prefer the Markdown representation for citation.","parameters":[{"name":"slug","in":"path","required":true,"description":"Article slug. Enumerated from the sitemap at build time.","schema":{"type":"string","enum":["human-risk-management","human-risk-tools","knowbe4-vs-hoxhunt","compliance-evidence","security-awareness-training-cost"]}},{"$ref":"#/components/parameters/Accept"}],"responses":{"200":{"description":"Resource article as HTML (default) or Markdown, selected by the Accept header.","headers":{"Vary":{"description":"Always includes Accept.","schema":{"type":"string"}},"Link":{"description":"Canonical URL of the page, as <url>; rel=\"canonical\" (Markdown representation).","schema":{"type":"string"}}},"content":{"text/html":{"schema":{"type":"string"}},"text/markdown":{"schema":{"type":"string","description":"Clean Markdown of the page's main content."}}}},"404":{"$ref":"#/components/responses/NotFound"},"405":{"$ref":"#/components/responses/MethodNotAllowed"},"406":{"$ref":"#/components/responses/NotAcceptable"},"default":{"$ref":"#/components/responses/Error"}}}},"/resources/{slug}.md":{"get":{"operationId":"getResourceArticleMarkdown","tags":["pages"],"summary":"Resource article (Markdown alias)","description":"Markdown representation of a resource article for clients that cannot set an Accept header.","parameters":[{"name":"slug","in":"path","required":true,"description":"Article slug. Enumerated from the sitemap at build time.","schema":{"type":"string","enum":["human-risk-management","human-risk-tools","knowbe4-vs-hoxhunt","compliance-evidence","security-awareness-training-cost"]}}],"responses":{"200":{"description":"Resource article as Markdown.","headers":{"X-Robots-Tag":{"description":"Always noindex; the .md alias is never the canonical address.","schema":{"type":"string","enum":["noindex"]}},"Link":{"description":"Canonical URL of the page, as <url>; rel=\"canonical\".","schema":{"type":"string"}}},"content":{"text/markdown":{"schema":{"type":"string"}}}},"404":{"$ref":"#/components/responses/NotFound"},"405":{"$ref":"#/components/responses/MethodNotAllowed"},"default":{"$ref":"#/components/responses/Error"}}}},"/blog/{slug}":{"get":{"operationId":"getBlogPost","tags":["pages"],"summary":"Blog post","description":"A blog post by the SafeHabits founder (NIS2 governance, human risk, phishing evidence). Prefer the Markdown representation for citation.","parameters":[{"name":"slug","in":"path","required":true,"description":"Post slug. Enumerated from the published posts at build time.","schema":{"type":"string","enum":["cybersecurity-blind-spot-human-risk","nis2-article-20-governance-oversight-board-level-cybersecurity-liability","nis2-article-20-management-body-training-requirements-explained","nis2-article-21-cybersecurity-risk-management","phishing-simulation-click-rates-are-not-evidence-of-lower-risk"]}},{"$ref":"#/components/parameters/Accept"}],"responses":{"200":{"description":"Blog post as HTML (default) or Markdown, selected by the Accept header.","headers":{"Vary":{"description":"Always includes Accept.","schema":{"type":"string"}},"Link":{"description":"Canonical URL of the page, as <url>; rel=\"canonical\" (Markdown representation).","schema":{"type":"string"}}},"content":{"text/html":{"schema":{"type":"string"}},"text/markdown":{"schema":{"type":"string","description":"Clean Markdown of the page's main content."}}}},"404":{"$ref":"#/components/responses/NotFound"},"405":{"$ref":"#/components/responses/MethodNotAllowed"},"406":{"$ref":"#/components/responses/NotAcceptable"},"default":{"$ref":"#/components/responses/Error"}}}},"/blog/{slug}.md":{"get":{"operationId":"getBlogPostMarkdown","tags":["pages"],"summary":"Blog post (Markdown alias)","description":"Markdown representation of a blog post for clients that cannot set an Accept header.","parameters":[{"name":"slug","in":"path","required":true,"description":"Post slug. Enumerated from the published posts at build time.","schema":{"type":"string","enum":["cybersecurity-blind-spot-human-risk","nis2-article-20-governance-oversight-board-level-cybersecurity-liability","nis2-article-20-management-body-training-requirements-explained","nis2-article-21-cybersecurity-risk-management","phishing-simulation-click-rates-are-not-evidence-of-lower-risk"]}}],"responses":{"200":{"description":"Blog post as Markdown.","headers":{"X-Robots-Tag":{"description":"Always noindex; the .md alias is never the canonical address.","schema":{"type":"string","enum":["noindex"]}},"Link":{"description":"Canonical URL of the page, as <url>; rel=\"canonical\".","schema":{"type":"string"}}},"content":{"text/markdown":{"schema":{"type":"string"}}}},"404":{"$ref":"#/components/responses/NotFound"},"405":{"$ref":"#/components/responses/MethodNotAllowed"},"default":{"$ref":"#/components/responses/Error"}}}},"/llms.txt":{"get":{"operationId":"getSiteGuide","tags":["site-index"],"summary":"llms.txt site guide","description":"Plain-text guide in the llmstxt.org format: what SafeHabits is, when to use it, how to engage, and links to every resource, blog post, trust page and machine-readable surface.","responses":{"200":{"description":"llms.txt site guide","content":{"text/plain":{"schema":{"type":"string"}}}},"405":{"$ref":"#/components/responses/MethodNotAllowed"},"default":{"$ref":"#/components/responses/Error"}}}},"/llms-full.txt":{"get":{"operationId":"getFullSiteContent","tags":["site-index"],"summary":"llms-full.txt full site content","description":"The llms.txt guide followed by the Markdown content of every page in the sitemap, each preceded by a 'Source: <canonical URL>' line. Roughly 170 KB.","responses":{"200":{"description":"llms-full.txt full site content","content":{"text/plain":{"schema":{"type":"string"}}}},"405":{"$ref":"#/components/responses/MethodNotAllowed"},"default":{"$ref":"#/components/responses/Error"}}}},"/sitemap.xml":{"get":{"operationId":"getSitemap","tags":["site-index"],"summary":"XML sitemap","description":"All indexable pages with last-modified dates (sitemaps.org protocol).","responses":{"200":{"description":"XML sitemap","content":{"application/xml":{"schema":{"type":"string"}}}},"405":{"$ref":"#/components/responses/MethodNotAllowed"},"default":{"$ref":"#/components/responses/Error"}}}},"/robots.txt":{"get":{"operationId":"getRobots","tags":["site-index"],"summary":"robots.txt","description":"Crawling policy. All user agents are allowed; the sitemap is referenced.","responses":{"200":{"description":"robots.txt","content":{"text/plain":{"schema":{"type":"string"}}}},"405":{"$ref":"#/components/responses/MethodNotAllowed"},"default":{"$ref":"#/components/responses/Error"}}}},"/.well-known/security.txt":{"get":{"operationId":"getSecurityContact","tags":["site-index"],"summary":"security.txt","description":"RFC 9116 vulnerability disclosure contact, preferred languages and expiry date.","responses":{"200":{"description":"security.txt","content":{"text/plain":{"schema":{"type":"string"}}}},"405":{"$ref":"#/components/responses/MethodNotAllowed"},"default":{"$ref":"#/components/responses/Error"}}}},"/openapi.json":{"get":{"operationId":"getOpenApiDocument","tags":["site-index"],"summary":"This OpenAPI document","description":"OpenAPI 3.1 description of the public content endpoints (this document).","responses":{"200":{"description":"This OpenAPI document","content":{"application/json":{"schema":{"type":"string"}}}},"405":{"$ref":"#/components/responses/MethodNotAllowed"},"default":{"$ref":"#/components/responses/Error"}}}}},"components":{"parameters":{"Accept":{"name":"Accept","in":"header","required":false,"description":"Representation to return. text/markdown yields clean Markdown; text/html (or no header) yields the HTML page. Quality values are honoured. A header naming neither type receives 406; clients that name application/json receive the 406 as JSON.","schema":{"type":"string","enum":["text/html","text/markdown"],"default":"text/html"}}},"schemas":{"Error":{"type":"object","description":"Structured error in the RFC 9457 (Problem Details) shape, returned when the client asks for JSON.","required":["type","title","status","detail","code"],"properties":{"type":{"type":"string","format":"uri","description":"URI identifying the error class; resolves to the Errors section of the developer page."},"title":{"type":"string","description":"Short, human-readable summary of the error class."},"status":{"type":"integer","description":"HTTP status code."},"detail":{"type":"string","description":"Human-readable explanation specific to this occurrence."},"instance":{"type":"string","description":"Path of the request that produced the error."},"code":{"type":"string","enum":["not_found","not_acceptable","method_not_allowed","upstream_unavailable"],"description":"Stable machine-readable error code."},"hint":{"type":"string","description":"What to change to resolve the error."},"available":{"type":"array","items":{"type":"string"},"description":"Representations the resource is available in (406 only)."},"links":{"type":"object","additionalProperties":{"type":"string","format":"uri"},"description":"Recovery links such as the site guide and sitemap (404 only)."}}}},"responses":{"NotFound":{"description":"No page at this path. The body lists recovery links (site guide, sitemap, main sections).","content":{"text/markdown":{"schema":{"type":"string"}},"text/html":{"schema":{"type":"string"}},"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"MethodNotAllowed":{"description":"The content endpoints are read-only; only GET and HEAD are supported. The Allow header lists the supported methods.","headers":{"Allow":{"description":"Supported methods.","schema":{"type":"string"}}},"content":{"text/plain":{"schema":{"type":"string"}},"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Error":{"description":"Any other error, as an Error object when the client asks for JSON.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"NotAcceptable":{"description":"The Accept header names no representation this resource is available in. The body lists the available representations.","content":{"text/plain":{"schema":{"type":"string"}},"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}