{"openapi":"3.1.0","info":{"title":"Toggle TG-1 public API","version":"1.0.0","summary":"Read-only JSON access to public information about Toggle TG-1.","description":"Toggle TG-1 is a 4 MB app manager that puts every local and cloud deployment you run on one panel. The API is public, read-only and needs no authentication. It is versioned in the URL path: /v1 is current and breaking changes ship under /v2. The deprecation policy at https://fs-lp-toggletg.vercel.app/deprecation-policy guarantees 90 days notice, signalled with Deprecation and Sunset response headers.","contact":{"name":"Toggle TG-1 support","url":"https://fs-lp-toggletg.vercel.app/contact","email":"hello@fiftyseven.is"},"license":{"name":"All rights reserved"}},"servers":[{"url":"https://fs-lp-toggletg.vercel.app","description":"Production"}],"security":[],"paths":{"/v1/health":{"get":{"operationId":"getHealth","summary":"Check that the API is reachable","description":"Returns ok, the product name and the API version. Set verbose=true to include page and tool counts.","tags":["System"],"parameters":[{"name":"verbose","in":"query","required":false,"description":"Include page and tool counts in the response.","schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"Service status","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Sunset":{"$ref":"#/components/headers/Sunset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Health"}}}}}}},"/v1/overview":{"get":{"operationId":"getProductOverview","summary":"Get what the product is, who it is for and when to use it","description":"Returns the product summary, key facts, audience, when-to-use guidance, links and API locations.","tags":["Product"],"parameters":[{"name":"lang","in":"query","required":false,"description":"Response language. Only en is available today.","schema":{"type":"string","enum":["en"],"default":"en"}}],"responses":{"200":{"description":"Product overview","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Sunset":{"$ref":"#/components/headers/Sunset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Overview"}}}}}}},"/v1/pages":{"get":{"operationId":"listPages","summary":"List the public pages of the site","description":"Returns every public page with its path, canonical URL, title and description. Page the result with limit and offset.","tags":["Content"],"parameters":[{"name":"limit","in":"query","required":false,"description":"Maximum number of pages to return. Capped at 20.","schema":{"type":"integer","minimum":1,"maximum":20,"default":20}},{"name":"offset","in":"query","required":false,"description":"Number of pages to skip.","schema":{"type":"integer","minimum":0,"default":0}}],"responses":{"200":{"description":"Page list","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Sunset":{"$ref":"#/components/headers/Sunset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageList"}}}}}}},"/v1/pages/{page}":{"get":{"operationId":"getPage","summary":"Get one page as Markdown with its metadata","description":"Returns the page title, description, canonical URL and Markdown body. Use the slug, not the path: home, about, contact, privacy or docs.","tags":["Content"],"parameters":[{"name":"page","in":"path","required":true,"description":"Page slug: home, about, contact, privacy, docs or deprecation-policy.","schema":{"type":"string","enum":["home","about","contact","privacy","docs","deprecation-policy"]}}],"responses":{"200":{"description":"Page content","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Sunset":{"$ref":"#/components/headers/Sunset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page"}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"headers":{"RateLimitLimit":{"description":"Requests allowed per minute.","schema":{"type":"integer"}},"RateLimitRemaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimitReset":{"description":"Seconds until the window resets.","schema":{"type":"integer"}},"Deprecation":{"description":"true when the route is deprecated. See https://fs-lp-toggletg.vercel.app/deprecation-policy.","schema":{"type":"boolean"}},"Sunset":{"description":"Earliest date the route can stop working, as an HTTP date.","schema":{"type":"string","format":"date-time"}}},"schemas":{"Health":{"type":"object","required":["status","name","version"],"properties":{"status":{"type":"string","description":"ok when the API is serving."},"name":{"type":"string"},"version":{"type":"string"},"pages":{"type":"integer","description":"Number of public pages. Present when verbose=true."},"tools":{"type":"integer","description":"Number of MCP tools. Present when verbose=true."}},"additionalProperties":false},"Overview":{"type":"object","required":["name","summary","version","status","facts","audience","when_to_use","links"],"properties":{"name":{"type":"string"},"summary":{"type":"string"},"version":{"type":"string"},"status":{"type":"string"},"facts":{"type":"array","items":{"type":"string"}},"audience":{"type":"string"},"when_to_use":{"type":"array","items":{"type":"string"}},"not_for":{"type":"string"},"api":{"type":"object","additionalProperties":{"type":"string"}},"links":{"type":"object","additionalProperties":{"type":"string"}}},"additionalProperties":false},"PageSummary":{"type":"object","required":["path","url","title","description"],"properties":{"path":{"type":"string"},"url":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"}},"additionalProperties":false},"PageList":{"type":"object","required":["pages","total"],"properties":{"pages":{"type":"array","items":{"$ref":"#/components/schemas/PageSummary"}},"total":{"type":"integer","description":"Total number of public pages."}},"additionalProperties":false},"Page":{"type":"object","required":["path","url","title","description","markdown"],"properties":{"path":{"type":"string"},"url":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"markdown":{"type":"string"}},"additionalProperties":false},"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}},"additionalProperties":false}},"additionalProperties":false}}}}