{"openapi":"3.1.0","jsonSchemaDialect":"https://json-schema.org/draft/2020-12/schema","info":{"title":"YUCTS Status API","version":"2.0.0","description":"Public API of **YUCTS Status** (https://status.yucts.com). Every operation in this document is read-only and needs no credentials.\n\n## Versions\n* **v1 — Legacy Stable** (`/api/*`): the 1.x contract used by the YUCTS Travel iOS app, embed.js v1, XenForo and WordPress. Frozen; only additive fields.\n* **v2** (`/api/v2/*`): current API — consistent envelope (`data`, `meta`, `pagination`), error codes, request ids, ETags, cursor pagination, 7 locales.\n\n## Conventions\n* Timestamps: integer **milliseconds** since the Unix epoch, UTC. Dates labelled `YYYY-MM-DD` are UTC days.\n* Incident times: `started_at` (problem began), `detected_at` (monitor confirmed it), `reported_at` (administrator reported it), `resolved_at` (service restored). Timeline entries: `occurred_at` (progress happened) and `published_at` (recorded). Unknown times are `null`, never estimated.\n* Ratios (uptime, availability, coverage, SLO target): **0–1**. Durations: milliseconds.\n* Localised text: pass `locale` (zh-TW, zh-HK, zh-CN, en, ja, ko, vi; legacy zh-Hant/zh-Hans accepted). Default and final fallback: **ja**. Every text field has a `*_locale` companion telling which translation was served (null = untranslated base text).\n* `unknown` / `no_data` mean *no fresh monitoring data* — never \"operational\".\n\n## Caching & rate limits\nPublic v2 GETs: `Cache-Control: public, max-age=30`, edge cached per normalised URL (locale is part of the key), `ETag` + `If-None-Match` → 304. Requests that miss the cache are rate limited per client IP (default 600/min; 429 + `Retry-After`). Personal responses (`/api/v2/locale`, `/api/geo`) are `private, no-store`.\n\n## CORS\nv1 and v2 public endpoints: `Access-Control-Allow-Origin: *` (GET/HEAD/OPTIONS).\n\n## Errors (v2)\n`{\"error\": {\"code\", \"message\", \"status\", \"request_id\", \"details?\"}}` — codes: bad_request, validation_failed, not_found, rate_limited, feature_disabled, internal, service_unavailable. 5xx responses never contain internal details.\n\n## Administration\nAdministrative endpoints are not part of this document. Signed-in administrators find their reference in the admin console (API reference).\n\n## Deprecation policy\nBreaking changes only ship in a new major version path. v1 stays available for at least 12 months after any announced deprecation; deprecated operations are flagged `deprecated: true` and answer with `Deprecation` / `Sunset` headers before removal.","license":{"name":"Proprietary"},"contact":{"name":"YUCTS","url":"https://yucts.com"}},"servers":[{"url":"https://status.yucts.com"}],"tags":[{"name":"Status","description":"System status and history"},{"name":"Services","description":"Monitored services"},{"name":"SLO","description":"Service level objectives and error budgets"},{"name":"Incidents","description":"Incidents and their timelines"},{"name":"Maintenance","description":"Planned maintenance"},{"name":"Integrations","description":"Badges, feeds, calendars, exports, metrics, embed"},{"name":"Meta","description":"Health, configuration, locale resolution"},{"name":"v1 (Legacy Stable)","description":"Frozen 1.x contract"}],"paths":{"/.well-known/apple-app-site-association":{"get":{"operationId":"aasa","summary":"Apple App Site Association (Universal Links for the YUCTS Travel app)","tags":["Meta"],"responses":{"200":{"description":"AASA","content":{"application/json":{"schema":{"type":"object","properties":{"applinks":{"type":"object","properties":{"details":{"type":"array","items":{"type":"object","properties":{"appIDs":{"type":"array","items":{"type":"string"}},"components":{"type":"array","items":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}}}},"required":["appIDs","components"],"additionalProperties":false}}},"required":["details"],"additionalProperties":false},"webcredentials":{"type":"object","properties":{"apps":{"type":"array","items":{"type":"string"}}},"required":["apps"],"additionalProperties":false}},"required":["applinks","webcredentials"],"additionalProperties":false}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"public, max-age=3600","schema":{"type":"string"}}}}},"security":[],"x-cache-control":"public, max-age=3600"}},"/api/geo":{"get":{"operationId":"v1Geo","summary":"Visitor country and suggested 1.x locale code","description":"Stable since 1.x. Field names, types and units are frozen; only additive `*_vi` fields were added in 2.0. Personal response: `no-store`.","tags":["v1 (Legacy Stable)"],"responses":{"200":{"description":"Geo","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Geo"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"no-store","schema":{"type":"string"}}}}},"security":[],"x-cache-control":"no-store"}},"/api/incidents":{"get":{"operationId":"v1Incidents","summary":"Incidents started within `days` or still open (max 100)","description":"Stable since 1.x. Field names, types and units are frozen; only additive `*_vi` fields were added in 2.0. With `locale`, title/summary/body are replaced by that language (fallback: en → zh_tw → base). Legacy codes zh-Hant/zh-Hans are accepted.","tags":["v1 (Legacy Stable)"],"parameters":[{"name":"site_id","in":"query","required":false,"schema":{"type":"string"}},{"name":"days","in":"query","required":false,"description":"1–365, default 30","schema":{"description":"1–365, default 30","type":"string"}},{"name":"locale","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Incidents","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Incidents"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"public, max-age=60 (only for site_id + days 30/90 without locale; otherwise no-store)","schema":{"type":"string"}}}}},"security":[],"x-cache-control":"public, max-age=60 (only for site_id + days 30/90 without locale; otherwise no-store)"}},"/api/maintenance":{"get":{"operationId":"v1Maintenance","summary":"Maintenance windows that have not ended (`all=1` + token: every window)","description":"Stable since 1.x. Field names, types and units are frozen; only additive `*_vi` fields were added in 2.0. Public mode: `past` is always empty.","tags":["v1 (Legacy Stable)"],"parameters":[{"name":"site_id","in":"query","required":false,"schema":{"type":"string"}},{"name":"all","in":"query","required":false,"schema":{"type":"string","enum":["1"]}}],"responses":{"200":{"description":"Windows","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Maintenance"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"public, max-age=60","schema":{"type":"string"}}}},"401":{"description":"all=1 without a valid token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"public, max-age=60","schema":{"type":"string"}}}}},"security":[],"x-cache-control":"public, max-age=60"}},"/api/overview":{"get":{"operationId":"v1Overview","summary":"All enabled sites with latest check, 24 h uptime and open incident count","description":"Stable since 1.x. Field names, types and units are frozen; only additive `*_vi` fields were added in 2.0.","tags":["v1 (Legacy Stable)"],"responses":{"200":{"description":"Overview","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Overview"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"public, max-age=60","schema":{"type":"string"}}}}},"security":[],"x-cache-control":"public, max-age=60"}},"/api/sites":{"get":{"operationId":"v1Sites","summary":"Enabled sites (`all=1` with the admin token includes disabled ones)","description":"Stable since 1.x. Field names, types and units are frozen; only additive `*_vi` fields were added in 2.0.","tags":["v1 (Legacy Stable)"],"parameters":[{"name":"all","in":"query","required":false,"description":"Admin only","schema":{"description":"Admin only","type":"string","enum":["1"]}}],"responses":{"200":{"description":"Sites","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Sites"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"public, max-age=60","schema":{"type":"string"}}}},"401":{"description":"all=1 without a valid token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"public, max-age=60","schema":{"type":"string"}}}}},"security":[],"x-cache-control":"public, max-age=60"}},"/api/slo":{"get":{"operationId":"v1Slo","summary":"30/90/365-day uptime and error budget (1.x formula)","description":"Stable since 1.x. Field names, types and units are frozen; only additive `*_vi` fields were added in 2.0. See docs/SLO_CALCULATION.md for the difference to v2.","tags":["v1 (Legacy Stable)"],"parameters":[{"name":"site_id","in":"query","required":false,"description":"Positive integer. Missing/invalid → first enabled site (status, slo).","schema":{"description":"Positive integer. Missing/invalid → first enabled site (status, slo).","type":"string"}}],"responses":{"200":{"description":"SLO","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Slo"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"public, max-age=60","schema":{"type":"string"}}}},"404":{"description":"no sites configured","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"public, max-age=60","schema":{"type":"string"}}}}},"security":[],"x-cache-control":"public, max-age=60"}},"/api/status":{"get":{"operationId":"v1Status","summary":"Per-site status: latest check, 24 h series, 365 daily summaries, uptime","description":"Stable since 1.x. Field names, types and units are frozen; only additive `*_vi` fields were added in 2.0. Quirk kept for compatibility: an unknown site_id answers HTTP 200 with {\"error\":\"site not found\"}.","tags":["v1 (Legacy Stable)"],"parameters":[{"name":"site_id","in":"query","required":false,"description":"Positive integer. Missing/invalid → first enabled site (status, slo).","schema":{"description":"Positive integer. Missing/invalid → first enabled site (status, slo).","type":"string"}}],"responses":{"200":{"description":"Status (or `{\"error\":\"site not found\"}`)","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/V1Status"},{"$ref":"#/components/schemas/V1SiteNotFound"}]}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"public, max-age=60","schema":{"type":"string"}}}},"404":{"description":"no sites configured","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"public, max-age=60","schema":{"type":"string"}}}}},"security":[],"x-cache-control":"public, max-age=60"}},"/api/v2":{"get":{"operationId":"getApiIndex","summary":"API index","tags":["Meta"],"responses":{"200":{"description":"Links to documentation and the OpenAPI document","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"public, max-age=30","schema":{"type":"string"}},"ETag":{"$ref":"#/components/headers/ETag"}}}},"security":[],"x-cache-control":"public, max-age=30"}},"/api/v2/config":{"get":{"operationId":"getPublicConfig","summary":"Public site configuration (name, locales, theme, enabled features)","tags":["Meta"],"parameters":[{"name":"locale","in":"query","required":false,"description":"Locale (zh-TW, zh-HK, zh-CN, en, ja, ko, vi; legacy zh-Hant/zh-Hans accepted). Default: ja","schema":{"description":"Locale (zh-TW, zh-HK, zh-CN, en, ja, ko, vi; legacy zh-Hant/zh-Hans accepted). Default: ja","type":"string","maxLength":35}}],"responses":{"200":{"description":"Configuration","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfigResponse"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"public, max-age=30","schema":{"type":"string"}},"ETag":{"$ref":"#/components/headers/ETag"}}},"400":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"public, max-age=30","schema":{"type":"string"}}}}},"security":[],"x-cache-control":"public, max-age=30"}},"/api/v2/embed":{"get":{"operationId":"getEmbedBootstrap","summary":"One-request payload for the embeddable status widget (/embed/v2.js)","tags":["Integrations"],"parameters":[{"name":"locale","in":"query","required":false,"description":"Locale (zh-TW, zh-HK, zh-CN, en, ja, ko, vi; legacy zh-Hant/zh-Hans accepted). Default: ja","schema":{"description":"Locale (zh-TW, zh-HK, zh-CN, en, ja, ko, vi; legacy zh-Hant/zh-Hans accepted). Default: ja","type":"string","maxLength":35}}],"responses":{"200":{"description":"Widget data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmbedResponse"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"public, max-age=30","schema":{"type":"string"}},"ETag":{"$ref":"#/components/headers/ETag"}}},"404":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"public, max-age=30","schema":{"type":"string"}}}}},"security":[],"x-feature-flag":"embed_widget","x-cache-control":"public, max-age=30"}},"/api/v2/features":{"get":{"operationId":"listFeatures","summary":"Public feature availability","tags":["Meta"],"responses":{"200":{"description":"Feature list","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeaturesResponse"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"public, max-age=30","schema":{"type":"string"}},"ETag":{"$ref":"#/components/headers/ETag"}}}},"security":[],"x-cache-control":"public, max-age=30"}},"/api/v2/groups":{"get":{"operationId":"listGroups","summary":"Service groups","tags":["Services"],"parameters":[{"name":"locale","in":"query","required":false,"description":"Locale (zh-TW, zh-HK, zh-CN, en, ja, ko, vi; legacy zh-Hant/zh-Hans accepted). Default: ja","schema":{"description":"Locale (zh-TW, zh-HK, zh-CN, en, ja, ko, vi; legacy zh-Hant/zh-Hans accepted). Default: ja","type":"string","maxLength":35}}],"responses":{"200":{"description":"Groups","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupsResponse"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"public, max-age=30","schema":{"type":"string"}},"ETag":{"$ref":"#/components/headers/ETag"}}}},"security":[],"x-feature-flag":"service_groups","x-cache-control":"public, max-age=30"}},"/api/v2/health":{"get":{"operationId":"getHealth","summary":"Liveness (no database access)","tags":["Meta"],"responses":{"200":{"description":"Worker is running","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Health"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"private, no-store","schema":{"type":"string"}},"ETag":{"$ref":"#/components/headers/ETag"}}}},"security":[],"x-cache-control":"private, no-store"}},"/api/v2/health/ready":{"get":{"operationId":"getReadiness","summary":"Readiness: database, schema version and scheduler health","tags":["Meta"],"responses":{"200":{"description":"Ready or degraded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Readiness"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"private, no-store","schema":{"type":"string"}},"ETag":{"$ref":"#/components/headers/ETag"}}},"503":{"description":"Not ready","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Readiness"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"private, no-store","schema":{"type":"string"}}}}},"security":[],"x-cache-control":"private, no-store"}},"/api/v2/history":{"get":{"operationId":"getSystemHistory","summary":"System history: per-service reliability and incident trend","tags":["Status"],"parameters":[{"name":"range","in":"query","required":false,"schema":{"default":"90d","type":"string","enum":["30d","90d","365d"]}},{"name":"locale","in":"query","required":false,"description":"Locale (zh-TW, zh-HK, zh-CN, en, ja, ko, vi; legacy zh-Hant/zh-Hans accepted). Default: ja","schema":{"description":"Locale (zh-TW, zh-HK, zh-CN, en, ja, ko, vi; legacy zh-Hant/zh-Hans accepted). Default: ja","type":"string","maxLength":35}}],"responses":{"200":{"description":"History","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SystemHistoryResponse"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"public, max-age=30","schema":{"type":"string"}},"ETag":{"$ref":"#/components/headers/ETag"}}},"422":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"public, max-age=30","schema":{"type":"string"}}}}},"security":[],"x-feature-flag":"uptime_history","x-cache-control":"public, max-age=30"}},"/api/v2/incidents":{"get":{"operationId":"listIncidents","summary":"Incidents (newest first, cursor pagination)","tags":["Incidents"],"parameters":[{"name":"locale","in":"query","required":false,"description":"Locale (zh-TW, zh-HK, zh-CN, en, ja, ko, vi; legacy zh-Hant/zh-Hans accepted). Default: ja","schema":{"description":"Locale (zh-TW, zh-HK, zh-CN, en, ja, ko, vi; legacy zh-Hant/zh-Hans accepted). Default: ja","type":"string","maxLength":35}},{"name":"service_id","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000000000}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["open","resolved"]}},{"name":"severity","in":"query","required":false,"schema":{"$ref":"#/components/schemas/Severity"}},{"name":"from","in":"query","required":false,"description":"ms; incidents overlapping [from, to]","schema":{"description":"ms; incidents overlapping [from, to]","type":"integer","minimum":0,"maximum":100000000000000}},{"name":"to","in":"query","required":false,"schema":{"type":"integer","minimum":0,"maximum":100000000000000}},{"name":"limit","in":"query","required":false,"schema":{"default":20,"type":"integer","minimum":1,"maximum":100}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","maxLength":200}}],"responses":{"200":{"description":"Incidents","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IncidentListResponse"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"public, max-age=30","schema":{"type":"string"}},"ETag":{"$ref":"#/components/headers/ETag"}}},"422":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"public, max-age=30","schema":{"type":"string"}}}}},"security":[],"x-feature-flag":"incident_history","x-cache-control":"public, max-age=30"}},"/api/v2/incidents/{id}":{"get":{"operationId":"getIncident","summary":"Incident with its full timeline","tags":["Incidents"],"parameters":[{"name":"id","in":"path","required":true,"description":"Numeric id","schema":{"type":"integer","exclusiveMinimum":0}},{"name":"locale","in":"query","required":false,"description":"Locale (zh-TW, zh-HK, zh-CN, en, ja, ko, vi; legacy zh-Hant/zh-Hans accepted). Default: ja","schema":{"description":"Locale (zh-TW, zh-HK, zh-CN, en, ja, ko, vi; legacy zh-Hant/zh-Hans accepted). Default: ja","type":"string","maxLength":35}}],"responses":{"200":{"description":"Incident","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IncidentResponse"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"public, max-age=30","schema":{"type":"string"}},"ETag":{"$ref":"#/components/headers/ETag"}}},"404":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"public, max-age=30","schema":{"type":"string"}}}}},"security":[],"x-feature-flag":"incident_history","x-cache-control":"public, max-age=30"}},"/api/v2/incidents/{id}/updates":{"get":{"operationId":"getIncidentTimeline","summary":"Incident timeline (updates in chronological order)","tags":["Incidents"],"parameters":[{"name":"id","in":"path","required":true,"description":"Numeric id","schema":{"type":"integer","exclusiveMinimum":0}},{"name":"locale","in":"query","required":false,"description":"Locale (zh-TW, zh-HK, zh-CN, en, ja, ko, vi; legacy zh-Hant/zh-Hans accepted). Default: ja","schema":{"description":"Locale (zh-TW, zh-HK, zh-CN, en, ja, ko, vi; legacy zh-Hant/zh-Hans accepted). Default: ja","type":"string","maxLength":35}}],"responses":{"200":{"description":"Updates","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IncidentUpdatesResponse"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"public, max-age=30","schema":{"type":"string"}},"ETag":{"$ref":"#/components/headers/ETag"}}},"404":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"public, max-age=30","schema":{"type":"string"}}}}},"security":[],"x-feature-flag":"incident_history","x-cache-control":"public, max-age=30"}},"/api/v2/integrations/badge/{target}.json":{"get":{"operationId":"getStatusBadgeJson","summary":"Status badge in shields.io endpoint format","tags":["Integrations"],"parameters":[{"name":"target","in":"path","required":true,"description":"Service id or `system`","schema":{"type":"string"}},{"name":"locale","in":"query","required":false,"description":"Locale (zh-TW, zh-HK, zh-CN, en, ja, ko, vi; legacy zh-Hant/zh-Hans accepted). Default: ja","schema":{"description":"Locale (zh-TW, zh-HK, zh-CN, en, ja, ko, vi; legacy zh-Hant/zh-Hans accepted). Default: ja","type":"string","maxLength":35}},{"name":"label","in":"query","required":false,"schema":{"type":"string","maxLength":40}},{"name":"style","in":"query","required":false,"schema":{"type":"string","enum":["flat","flat-square"]}}],"responses":{"200":{"description":"shields.io endpoint JSON","content":{"application/json":{"schema":{"type":"object","properties":{"schemaVersion":{"type":"number","const":1},"label":{"type":"string"},"message":{"type":"string"},"color":{"type":"string"}},"required":["schemaVersion","label","message","color"],"additionalProperties":false}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"public, max-age=60","schema":{"type":"string"}},"ETag":{"$ref":"#/components/headers/ETag"}}},"404":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"public, max-age=60","schema":{"type":"string"}}}}},"security":[],"x-feature-flag":"status_badges","x-cache-control":"public, max-age=60"}},"/api/v2/integrations/badge/{target}.svg":{"get":{"operationId":"getStatusBadgeSvg","summary":"Status badge (SVG). target = service id or \"system\"","tags":["Integrations"],"parameters":[{"name":"target","in":"path","required":true,"description":"Service id or `system`","schema":{"type":"string"}},{"name":"locale","in":"query","required":false,"description":"Locale (zh-TW, zh-HK, zh-CN, en, ja, ko, vi; legacy zh-Hant/zh-Hans accepted). Default: ja","schema":{"description":"Locale (zh-TW, zh-HK, zh-CN, en, ja, ko, vi; legacy zh-Hant/zh-Hans accepted). Default: ja","type":"string","maxLength":35}},{"name":"label","in":"query","required":false,"schema":{"type":"string","maxLength":40}},{"name":"style","in":"query","required":false,"schema":{"type":"string","enum":["flat","flat-square"]}}],"responses":{"200":{"description":"SVG image","content":{"image/svg+xml":{}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"public, max-age=60","schema":{"type":"string"}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"public, max-age=60","schema":{"type":"string"}}}}},"security":[],"x-feature-flag":"status_badges","x-cache-control":"public, max-age=60"}},"/api/v2/integrations/export":{"get":{"operationId":"exportHistory","summary":"Daily availability export (JSON or CSV)","tags":["Integrations"],"parameters":[{"name":"format","in":"query","required":false,"schema":{"default":"json","type":"string","enum":["json","csv"]}},{"name":"range","in":"query","required":false,"schema":{"default":"90d","type":"string","enum":["30d","90d","365d"]}},{"name":"service_id","in":"query","required":false,"schema":{"type":"integer","exclusiveMinimum":0}}],"responses":{"200":{"description":"Daily rows","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"public, max-age=300","schema":{"type":"string"}},"ETag":{"$ref":"#/components/headers/ETag"}}},"404":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"public, max-age=300","schema":{"type":"string"}}}}},"security":[],"x-feature-flag":"public_export","x-cache-control":"public, max-age=300"}},"/api/v2/integrations/feed.atom":{"get":{"operationId":"getAtomFeed","summary":"Incidents and maintenance as Atom 1.0","tags":["Integrations"],"parameters":[{"name":"locale","in":"query","required":false,"description":"Locale (zh-TW, zh-HK, zh-CN, en, ja, ko, vi; legacy zh-Hant/zh-Hans accepted). Default: ja","schema":{"description":"Locale (zh-TW, zh-HK, zh-CN, en, ja, ko, vi; legacy zh-Hant/zh-Hans accepted). Default: ja","type":"string","maxLength":35}},{"name":"service_id","in":"query","required":false,"schema":{"type":"integer","exclusiveMinimum":0}}],"responses":{"200":{"description":"Atom","content":{"application/atom+xml":{}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"public, max-age=120","schema":{"type":"string"}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"public, max-age=120","schema":{"type":"string"}}}}},"security":[],"x-feature-flag":"rss_feeds","x-cache-control":"public, max-age=120"}},"/api/v2/integrations/feed.rss":{"get":{"operationId":"getRssFeed","summary":"Incidents and maintenance as RSS 2.0","tags":["Integrations"],"parameters":[{"name":"locale","in":"query","required":false,"description":"Locale (zh-TW, zh-HK, zh-CN, en, ja, ko, vi; legacy zh-Hant/zh-Hans accepted). Default: ja","schema":{"description":"Locale (zh-TW, zh-HK, zh-CN, en, ja, ko, vi; legacy zh-Hant/zh-Hans accepted). Default: ja","type":"string","maxLength":35}},{"name":"service_id","in":"query","required":false,"schema":{"type":"integer","exclusiveMinimum":0}}],"responses":{"200":{"description":"RSS","content":{"application/rss+xml":{}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"public, max-age=120","schema":{"type":"string"}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"public, max-age=120","schema":{"type":"string"}}}}},"security":[],"x-feature-flag":"rss_feeds","x-cache-control":"public, max-age=120"}},"/api/v2/integrations/maintenance.ics":{"get":{"operationId":"getMaintenanceCalendar","summary":"Maintenance calendar (iCalendar, RFC 5545) — subscribe in any calendar app","tags":["Integrations","Maintenance"],"parameters":[{"name":"locale","in":"query","required":false,"description":"Locale (zh-TW, zh-HK, zh-CN, en, ja, ko, vi; legacy zh-Hant/zh-Hans accepted). Default: ja","schema":{"description":"Locale (zh-TW, zh-HK, zh-CN, en, ja, ko, vi; legacy zh-Hant/zh-Hans accepted). Default: ja","type":"string","maxLength":35}},{"name":"service_id","in":"query","required":false,"schema":{"type":"integer","exclusiveMinimum":0}}],"responses":{"200":{"description":"text/calendar","content":{"text/calendar":{}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"public, max-age=300","schema":{"type":"string"}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"public, max-age=300","schema":{"type":"string"}}}}},"security":[],"x-feature-flag":"maintenance_ical","x-cache-control":"public, max-age=300"}},"/api/v2/integrations/maintenance/{id}.ics":{"get":{"operationId":"getMaintenanceEvent","summary":"One maintenance window as an iCalendar file","tags":["Integrations","Maintenance"],"parameters":[{"name":"id","in":"path","required":true,"description":"Window id","schema":{"type":"integer"}},{"name":"locale","in":"query","required":false,"description":"Locale (zh-TW, zh-HK, zh-CN, en, ja, ko, vi; legacy zh-Hant/zh-Hans accepted). Default: ja","schema":{"description":"Locale (zh-TW, zh-HK, zh-CN, en, ja, ko, vi; legacy zh-Hant/zh-Hans accepted). Default: ja","type":"string","maxLength":35}}],"responses":{"200":{"description":"text/calendar","content":{"text/calendar":{}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"public, max-age=300","schema":{"type":"string"}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"public, max-age=300","schema":{"type":"string"}}}}},"security":[],"x-feature-flag":"maintenance_ical","x-cache-control":"public, max-age=300"}},"/api/v2/locale":{"get":{"operationId":"resolveLocale","summary":"Resolve the best locale for this visitor","description":"Priority: explicit `locale` > saved preference (`saved` or the `ys_lang` cookie) > Accept-Language > Cloudflare country > ja. Personal: never cached by shared caches.","tags":["Meta"],"parameters":[{"name":"locale","in":"query","required":false,"description":"Locale (zh-TW, zh-HK, zh-CN, en, ja, ko, vi; legacy zh-Hant/zh-Hans accepted). Default: ja","schema":{"description":"Locale (zh-TW, zh-HK, zh-CN, en, ja, ko, vi; legacy zh-Hant/zh-Hans accepted). Default: ja","type":"string","maxLength":35}},{"name":"saved","in":"query","required":false,"description":"Locale (zh-TW, zh-HK, zh-CN, en, ja, ko, vi; legacy zh-Hant/zh-Hans accepted). Default: ja","schema":{"description":"Locale (zh-TW, zh-HK, zh-CN, en, ja, ko, vi; legacy zh-Hant/zh-Hans accepted). Default: ja","type":"string","maxLength":35}}],"responses":{"200":{"description":"Resolution","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LocaleResponse"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"private, no-store","schema":{"type":"string"}},"ETag":{"$ref":"#/components/headers/ETag"}}}},"security":[],"x-cache-control":"private, no-store"}},"/api/v2/maintenance":{"get":{"operationId":"listMaintenance","summary":"Maintenance windows","description":"Without `status`: upcoming and in-progress first (soonest first), then completed (newest first).","tags":["Maintenance"],"parameters":[{"name":"locale","in":"query","required":false,"description":"Locale (zh-TW, zh-HK, zh-CN, en, ja, ko, vi; legacy zh-Hant/zh-Hans accepted). Default: ja","schema":{"description":"Locale (zh-TW, zh-HK, zh-CN, en, ja, ko, vi; legacy zh-Hant/zh-Hans accepted). Default: ja","type":"string","maxLength":35}},{"name":"service_id","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000000000}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["active","upcoming","completed","cancelled"]}},{"name":"from","in":"query","required":false,"schema":{"type":"integer","minimum":0,"maximum":100000000000000}},{"name":"to","in":"query","required":false,"schema":{"type":"integer","minimum":0,"maximum":100000000000000}},{"name":"limit","in":"query","required":false,"schema":{"default":20,"type":"integer","minimum":1,"maximum":100}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","maxLength":200}}],"responses":{"200":{"description":"Windows","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MaintenanceListResponse"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"public, max-age=30","schema":{"type":"string"}},"ETag":{"$ref":"#/components/headers/ETag"}}},"422":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"public, max-age=30","schema":{"type":"string"}}}}},"security":[],"x-feature-flag":"maintenance_notices","x-cache-control":"public, max-age=30"}},"/api/v2/maintenance/{id}":{"get":{"operationId":"getMaintenance","summary":"Maintenance window","tags":["Maintenance"],"parameters":[{"name":"id","in":"path","required":true,"description":"Numeric id","schema":{"type":"integer","exclusiveMinimum":0}},{"name":"locale","in":"query","required":false,"description":"Locale (zh-TW, zh-HK, zh-CN, en, ja, ko, vi; legacy zh-Hant/zh-Hans accepted). Default: ja","schema":{"description":"Locale (zh-TW, zh-HK, zh-CN, en, ja, ko, vi; legacy zh-Hant/zh-Hans accepted). Default: ja","type":"string","maxLength":35}}],"responses":{"200":{"description":"Window","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MaintenanceResponse"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"public, max-age=30","schema":{"type":"string"}},"ETag":{"$ref":"#/components/headers/ETag"}}},"404":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"public, max-age=30","schema":{"type":"string"}}}}},"security":[],"x-feature-flag":"maintenance_notices","x-cache-control":"public, max-age=30"}},"/api/v2/services":{"get":{"operationId":"listServices","summary":"List public services with current status and uptime","tags":["Services"],"parameters":[{"name":"locale","in":"query","required":false,"description":"Locale (zh-TW, zh-HK, zh-CN, en, ja, ko, vi; legacy zh-Hant/zh-Hans accepted). Default: ja","schema":{"description":"Locale (zh-TW, zh-HK, zh-CN, en, ja, ko, vi; legacy zh-Hant/zh-Hans accepted). Default: ja","type":"string","maxLength":35}},{"name":"include","in":"query","required":false,"description":"Comma separated: timeline","schema":{"description":"Comma separated: timeline","type":"string","maxLength":50}},{"name":"group_id","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000000000}}],"responses":{"200":{"description":"Services","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServicesResponse"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"public, max-age=30","schema":{"type":"string"}},"ETag":{"$ref":"#/components/headers/ETag"}}},"400":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"public, max-age=30","schema":{"type":"string"}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"public, max-age=30","schema":{"type":"string"}}}},"429":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"public, max-age=30","schema":{"type":"string"}},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}}},"security":[],"x-cache-control":"public, max-age=30"}},"/api/v2/services/{id}":{"get":{"operationId":"getService","summary":"Service details","tags":["Services"],"parameters":[{"name":"id","in":"path","required":true,"description":"Numeric id","schema":{"type":"integer","exclusiveMinimum":0}},{"name":"locale","in":"query","required":false,"description":"Locale (zh-TW, zh-HK, zh-CN, en, ja, ko, vi; legacy zh-Hant/zh-Hans accepted). Default: ja","schema":{"description":"Locale (zh-TW, zh-HK, zh-CN, en, ja, ko, vi; legacy zh-Hant/zh-Hans accepted). Default: ja","type":"string","maxLength":35}}],"responses":{"200":{"description":"Service","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceResponse"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"public, max-age=30","schema":{"type":"string"}},"ETag":{"$ref":"#/components/headers/ETag"}}},"404":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"public, max-age=30","schema":{"type":"string"}}}}},"security":[],"x-feature-flag":"service_details","x-cache-control":"public, max-age=30"}},"/api/v2/services/{id}/history":{"get":{"operationId":"getServiceHistory","summary":"Status history (24 h buckets or daily points)","description":"Periods without monitoring data are `no_data` — never counted as up.","tags":["Services"],"parameters":[{"name":"id","in":"path","required":true,"description":"Numeric id","schema":{"type":"integer","exclusiveMinimum":0}},{"name":"range","in":"query","required":false,"schema":{"default":"90d","$ref":"#/components/schemas/HistoryRange"}}],"responses":{"200":{"description":"History","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceHistoryResponse"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"public, max-age=30","schema":{"type":"string"}},"ETag":{"$ref":"#/components/headers/ETag"}}},"404":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"public, max-age=30","schema":{"type":"string"}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"public, max-age=30","schema":{"type":"string"}}}}},"security":[],"x-feature-flag":"uptime_history","x-cache-control":"public, max-age=30"}},"/api/v2/services/{id}/slo":{"get":{"operationId":"getServiceSlo","summary":"SLO and error budget (merged incident intervals, maintenance excluded)","tags":["SLO"],"parameters":[{"name":"id","in":"path","required":true,"description":"Numeric id","schema":{"type":"integer","exclusiveMinimum":0}},{"name":"windows","in":"query","required":false,"description":"Comma separated day counts (1–365), default 30,90,365","schema":{"description":"Comma separated day counts (1–365), default 30,90,365","type":"string","pattern":"^\\d{1,3}(,\\d{1,3}){0,4}$"}}],"responses":{"200":{"description":"SLO windows","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceSloResponse"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"public, max-age=30","schema":{"type":"string"}},"ETag":{"$ref":"#/components/headers/ETag"}}},"404":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"public, max-age=30","schema":{"type":"string"}}}},"422":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"public, max-age=30","schema":{"type":"string"}}}}},"security":[],"x-feature-flag":"slo_stats","x-cache-control":"public, max-age=30"}},"/api/v2/slo":{"get":{"operationId":"getSloOverview","summary":"SLO summary for every public service","tags":["SLO"],"parameters":[{"name":"windows","in":"query","required":false,"description":"Comma separated day counts (1–365), default 30,90,365","schema":{"description":"Comma separated day counts (1–365), default 30,90,365","type":"string","pattern":"^\\d{1,3}(,\\d{1,3}){0,4}$"}}],"responses":{"200":{"description":"SLO per service","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SloOverviewResponse"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"public, max-age=30","schema":{"type":"string"}},"ETag":{"$ref":"#/components/headers/ETag"}}},"422":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"public, max-age=30","schema":{"type":"string"}}}}},"security":[],"x-feature-flag":"slo_stats","x-cache-control":"public, max-age=30"}},"/api/v2/status":{"get":{"operationId":"getSystemStatus","summary":"Overall system status, active incidents and maintenance","tags":["Status"],"parameters":[{"name":"locale","in":"query","required":false,"description":"Locale (zh-TW, zh-HK, zh-CN, en, ja, ko, vi; legacy zh-Hant/zh-Hans accepted). Default: ja","schema":{"description":"Locale (zh-TW, zh-HK, zh-CN, en, ja, ko, vi; legacy zh-Hant/zh-Hans accepted). Default: ja","type":"string","maxLength":35}}],"responses":{"200":{"description":"System status","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SystemStatusResponse"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"public, max-age=30","schema":{"type":"string"}},"ETag":{"$ref":"#/components/headers/ETag"}}},"400":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"public, max-age=30","schema":{"type":"string"}}}},"429":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Cache-Control":{"description":"public, max-age=30","schema":{"type":"string"}},"Retry-After":{"$ref":"#/components/headers/Retry-After"}}}},"security":[],"x-cache-control":"public, max-age=30"}}},"components":{"schemas":{"ConfigResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PublicConfig"},"meta":{"$ref":"#/components/schemas/ResponseMeta"}},"required":["data","meta"],"additionalProperties":false},"EmbedBootstrap":{"type":"object","properties":{"status":{"$ref":"#/components/schemas/SystemStatusData"},"services":{"type":"array","items":{"$ref":"#/components/schemas/ServiceSummary"}},"features":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"boolean"}}},"required":["status","services","features"],"additionalProperties":false},"EmbedResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/EmbedBootstrap"},"meta":{"$ref":"#/components/schemas/ResponseMeta"}},"required":["data","meta"],"additionalProperties":false},"Error":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable machine-readable code, e.g. not_found, validation_failed, rate_limited, feature_disabled"},"message":{"type":"string"},"status":{"type":"integer"},"request_id":{"type":"string"},"details":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"},"code":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["code","message","status","request_id"],"additionalProperties":false}},"required":["error"],"additionalProperties":false},"FeaturesResponse":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PublicFeature"}},"meta":{"$ref":"#/components/schemas/ResponseMeta"}},"required":["data","meta"],"additionalProperties":false},"GroupsResponse":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ServiceGroup"}},"meta":{"$ref":"#/components/schemas/ResponseMeta"}},"required":["data","meta"],"additionalProperties":false},"Health":{"type":"object","properties":{"status":{"type":"string","const":"ok"},"version":{"type":["string","null"]},"environment":{"type":"string"},"time":{"type":"integer","description":"Unix epoch milliseconds (UTC)"}},"required":["status","version","environment","time"],"additionalProperties":false},"HistoryPoint":{"type":"object","properties":{"start":{"type":"integer","description":"Unix epoch milliseconds (UTC)"},"end":{"type":"integer","description":"Unix epoch milliseconds (UTC)"},"label":{"type":"string","description":"UTC date (YYYY-MM-DD) for daily points, ISO time for buckets"},"checks":{"type":"integer"},"up":{"type":"integer"},"degraded":{"type":"integer"},"down":{"type":"integer"},"state":{"type":"string","enum":["up","degraded","down","no_data"]},"uptime":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}]},"avg_latency_ms":{"anyOf":[{"type":"integer"},{"type":"null"}]},"max_latency_ms":{"anyOf":[{"type":"integer"},{"type":"null"}]},"maintenance":{"type":"boolean"},"incidents":{"type":"integer"}},"required":["start","end","label","checks","up","degraded","down","state","uptime","avg_latency_ms","max_latency_ms","maintenance","incidents"],"additionalProperties":false},"HistoryRange":{"type":"string","enum":["24h","7d","30d","90d","365d"]},"Incident":{"type":"object","properties":{"id":{"type":"integer"},"title":{"type":"string"},"title_locale":{"anyOf":[{"$ref":"#/components/schemas/Locale"},{"type":"null"}]},"summary":{"type":["string","null"]},"summary_locale":{"anyOf":[{"$ref":"#/components/schemas/Locale"},{"type":"null"}]},"status":{"$ref":"#/components/schemas/IncidentState"},"severity":{"$ref":"#/components/schemas/Severity"},"planned":{"type":"boolean"},"source":{"type":"string","enum":["auto","manual"]},"primary_service_id":{"type":"integer"},"service_ids":{"type":"array","items":{"type":"integer"}},"started_at":{"type":"integer","description":"When the problem actually began (may be corrected by an administrator)"},"detected_at":{"anyOf":[{"type":"integer","description":"Unix epoch milliseconds (UTC)"},{"type":"null"}],"description":"When the monitor first confirmed the problem (its opening record). null if the monitor did not open this incident"},"reported_at":{"anyOf":[{"type":"integer","description":"Unix epoch milliseconds (UTC)"},{"type":"null"}],"description":"When an administrator reported the incident. null for incidents opened by the monitor"},"resolved_at":{"anyOf":[{"type":"integer","description":"Unix epoch milliseconds (UTC)"},{"type":"null"}],"description":"When service was restored"},"maintenance_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Maintenance window this incident belongs to, if any"},"duration_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"resolved_at − started_at; null while ongoing"},"updated_at":{"anyOf":[{"type":"integer","description":"Unix epoch milliseconds (UTC)"},{"type":"null"}]},"update_count":{"type":"integer"},"last_update":{"anyOf":[{"$ref":"#/components/schemas/IncidentUpdate"},{"type":"null"}]},"url":{"type":"string","description":"Shareable public page"},"updates":{"type":"array","items":{"$ref":"#/components/schemas/IncidentUpdate"}},"services":{"type":"array","items":{"$ref":"#/components/schemas/ServiceRef"}}},"required":["id","title","title_locale","summary","summary_locale","status","severity","planned","source","primary_service_id","service_ids","started_at","detected_at","reported_at","resolved_at","maintenance_id","duration_ms","updated_at","update_count","last_update","url","updates","services"],"additionalProperties":false},"IncidentListResponse":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/IncidentSummary"}},"pagination":{"$ref":"#/components/schemas/Pagination"},"meta":{"$ref":"#/components/schemas/ResponseMeta"}},"required":["data","pagination","meta"],"additionalProperties":false},"IncidentResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Incident"},"meta":{"$ref":"#/components/schemas/ResponseMeta"}},"required":["data","meta"],"additionalProperties":false},"IncidentState":{"type":"string","enum":["investigating","identified","monitoring","resolved"]},"IncidentSummary":{"type":"object","properties":{"id":{"type":"integer"},"title":{"type":"string"},"title_locale":{"anyOf":[{"$ref":"#/components/schemas/Locale"},{"type":"null"}]},"summary":{"type":["string","null"]},"summary_locale":{"anyOf":[{"$ref":"#/components/schemas/Locale"},{"type":"null"}]},"status":{"$ref":"#/components/schemas/IncidentState"},"severity":{"$ref":"#/components/schemas/Severity"},"planned":{"type":"boolean"},"source":{"type":"string","enum":["auto","manual"]},"primary_service_id":{"type":"integer"},"service_ids":{"type":"array","items":{"type":"integer"}},"started_at":{"type":"integer","description":"When the problem actually began (may be corrected by an administrator)"},"detected_at":{"anyOf":[{"type":"integer","description":"Unix epoch milliseconds (UTC)"},{"type":"null"}],"description":"When the monitor first confirmed the problem (its opening record). null if the monitor did not open this incident"},"reported_at":{"anyOf":[{"type":"integer","description":"Unix epoch milliseconds (UTC)"},{"type":"null"}],"description":"When an administrator reported the incident. null for incidents opened by the monitor"},"resolved_at":{"anyOf":[{"type":"integer","description":"Unix epoch milliseconds (UTC)"},{"type":"null"}],"description":"When service was restored"},"maintenance_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Maintenance window this incident belongs to, if any"},"duration_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"resolved_at − started_at; null while ongoing"},"updated_at":{"anyOf":[{"type":"integer","description":"Unix epoch milliseconds (UTC)"},{"type":"null"}]},"update_count":{"type":"integer"},"last_update":{"anyOf":[{"$ref":"#/components/schemas/IncidentUpdate"},{"type":"null"}]},"url":{"type":"string","description":"Shareable public page"}},"required":["id","title","title_locale","summary","summary_locale","status","severity","planned","source","primary_service_id","service_ids","started_at","detected_at","reported_at","resolved_at","maintenance_id","duration_ms","updated_at","update_count","last_update","url"],"additionalProperties":false},"IncidentUpdate":{"type":"object","properties":{"id":{"type":"integer"},"at":{"type":"integer","description":"When the progress happened (same as occurred_at; timeline order)"},"occurred_at":{"type":"integer","description":"When the progress happened. Earlier than published_at for entries added afterwards (backfilled)"},"published_at":{"anyOf":[{"type":"integer","description":"Unix epoch milliseconds (UTC)"},{"type":"null"}],"description":"When the entry was recorded and published by the server. null for entries recorded before 2.0.2"},"backfilled":{"type":"boolean","description":"true when the entry was recorded more than 2 minutes after it happened"},"state":{"$ref":"#/components/schemas/IncidentUpdateState"},"body":{"type":"string"},"body_locale":{"anyOf":[{"$ref":"#/components/schemas/Locale"},{"type":"null"}]},"author_type":{"type":"string","enum":["system","staff"],"description":"system = written by the monitor (original detection / recovery record)"},"edited_at":{"anyOf":[{"type":"integer","description":"Unix epoch milliseconds (UTC)"},{"type":"null"}]}},"required":["id","at","occurred_at","published_at","backfilled","state","body","body_locale","author_type","edited_at"],"additionalProperties":false},"IncidentUpdatesResponse":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/IncidentUpdate"}},"meta":{"$ref":"#/components/schemas/ResponseMeta"}},"required":["data","meta"],"additionalProperties":false},"IncidentUpdateState":{"type":"string","enum":["investigating","identified","monitoring","resolved","update"]},"LatestCheck":{"type":"object","properties":{"at":{"type":"integer","description":"Unix epoch milliseconds (UTC)"},"state":{"$ref":"#/components/schemas/ProbeState"},"latency_ms":{"type":"integer"},"http_status":{"anyOf":[{"type":"integer"},{"type":"null"}]},"error_kind":{"type":["string","null"]}},"required":["at","state","latency_ms","http_status","error_kind"],"additionalProperties":false},"Locale":{"type":"string","enum":["zh-TW","zh-HK","zh-CN","en","ja","ko","vi"],"description":"Supported locale (BCP 47). Default and final fallback: ja."},"LocaleResolution":{"type":"object","properties":{"locale":{"$ref":"#/components/schemas/Locale"},"source":{"type":"string","enum":["explicit","saved","preferred","country","default"]},"country":{"type":["string","null"]},"default_locale":{"$ref":"#/components/schemas/Locale"},"legacy_locale":{"type":"string","enum":["zh-Hant","zh-Hans","en","ja","ko","vi"]},"supported":{"type":"array","items":{"type":"object","properties":{"code":{"$ref":"#/components/schemas/Locale"},"native_name":{"type":"string"},"english_name":{"type":"string"}},"required":["code","native_name","english_name"],"additionalProperties":false}}},"required":["locale","source","country","default_locale","legacy_locale","supported"],"additionalProperties":false},"LocaleResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/LocaleResolution"},"meta":{"$ref":"#/components/schemas/ResponseMeta"}},"required":["data","meta"],"additionalProperties":false},"Maintenance":{"type":"object","properties":{"id":{"type":"integer"},"title":{"type":"string"},"title_locale":{"anyOf":[{"$ref":"#/components/schemas/Locale"},{"type":"null"}]},"notes":{"type":["string","null"]},"notes_locale":{"anyOf":[{"$ref":"#/components/schemas/Locale"},{"type":"null"}]},"status":{"$ref":"#/components/schemas/MaintenanceStatus"},"starts_at":{"type":"integer","description":"Unix epoch milliseconds (UTC)"},"ends_at":{"type":"integer","description":"Unix epoch milliseconds (UTC)"},"duration_ms":{"type":"integer"},"timezone":{"type":"string","description":"IANA time zone the window was planned in"},"applies_to_all":{"type":"boolean"},"service_ids":{"type":"array","items":{"type":"integer"}},"url":{"type":"string"},"ics_url":{"type":["string","null"]},"services":{"type":"array","items":{"$ref":"#/components/schemas/ServiceRef"}}},"required":["id","title","title_locale","notes","notes_locale","status","starts_at","ends_at","duration_ms","timezone","applies_to_all","service_ids","url","ics_url","services"],"additionalProperties":false},"MaintenanceListResponse":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/MaintenanceSummary"}},"pagination":{"$ref":"#/components/schemas/Pagination"},"meta":{"$ref":"#/components/schemas/ResponseMeta"}},"required":["data","pagination","meta"],"additionalProperties":false},"MaintenanceResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Maintenance"},"meta":{"$ref":"#/components/schemas/ResponseMeta"}},"required":["data","meta"],"additionalProperties":false},"MaintenanceStatus":{"type":"string","enum":["scheduled","in_progress","completed","cancelled"]},"MaintenanceSummary":{"type":"object","properties":{"id":{"type":"integer"},"title":{"type":"string"},"title_locale":{"anyOf":[{"$ref":"#/components/schemas/Locale"},{"type":"null"}]},"notes":{"type":["string","null"]},"notes_locale":{"anyOf":[{"$ref":"#/components/schemas/Locale"},{"type":"null"}]},"status":{"$ref":"#/components/schemas/MaintenanceStatus"},"starts_at":{"type":"integer","description":"Unix epoch milliseconds (UTC)"},"ends_at":{"type":"integer","description":"Unix epoch milliseconds (UTC)"},"duration_ms":{"type":"integer"},"timezone":{"type":"string","description":"IANA time zone the window was planned in"},"applies_to_all":{"type":"boolean"},"service_ids":{"type":"array","items":{"type":"integer"}},"url":{"type":"string"},"ics_url":{"type":["string","null"]}},"required":["id","title","title_locale","notes","notes_locale","status","starts_at","ends_at","duration_ms","timezone","applies_to_all","service_ids","url","ics_url"],"additionalProperties":false},"MonitorState":{"type":"string","enum":["ok","delayed","stopped","unknown"],"description":"Health of the monitoring scheduler itself."},"Pagination":{"type":"object","properties":{"limit":{"type":"integer"},"next_cursor":{"description":"Opaque; pass as `cursor` to get the next page. null = last page.","type":["string","null"]}},"required":["limit","next_cursor"],"additionalProperties":false},"ProbeState":{"type":"string","enum":["up","degraded","down"],"description":"Raw probe result (same values as API v1)."},"PublicConfig":{"type":"object","properties":{"site":{"type":"object","properties":{"name":{"type":"string"},"name_locale":{"anyOf":[{"$ref":"#/components/schemas/Locale"},{"type":"null"}]},"tagline":{"type":["string","null"]},"logo":{"type":["string","null"]},"favicon":{"type":["string","null"]},"main_url":{"type":"string"}},"required":["name","name_locale","tagline","logo","favicon","main_url"],"additionalProperties":false},"i18n":{"type":"object","properties":{"default_locale":{"$ref":"#/components/schemas/Locale"},"supported":{"type":"array","items":{"$ref":"#/components/schemas/Locale"}},"auto_detect":{"type":"boolean"}},"required":["default_locale","supported","auto_detect"],"additionalProperties":false},"theme":{"type":"object","properties":{"default":{"type":"string","enum":["system","light","dark"]},"style":{"type":"string","enum":["yozakura","yoasobi"],"description":"Visual style shown to visitors who have not chosen one"},"styles":{"type":"array","items":{"type":"string","enum":["yozakura","yoasobi"]},"description":"Styles visitors can switch between (at least one)"}},"required":["default","style","styles"],"additionalProperties":false},"home":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"boolean"}},"features":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"boolean"}},"monitor":{"type":"object","properties":{"stale_after_sec":{"type":"integer"},"interval_sec":{"type":"integer"}},"required":["stale_after_sec","interval_sec"],"additionalProperties":false},"notices":{"type":"object","properties":{"upcoming_days":{"type":"integer"},"resolved_incident_hours":{"type":"integer"}},"required":["upcoming_days","resolved_incident_hours"],"additionalProperties":false},"slo":{"type":"object","properties":{"default_target":{"type":"number","minimum":0,"maximum":1}},"required":["default_target"],"additionalProperties":false},"api":{"type":"object","properties":{"version":{"type":"string"},"docs_url":{"type":"string"},"openapi_url":{"type":"string"}},"required":["version","docs_url","openapi_url"],"additionalProperties":false}},"required":["site","i18n","theme","home","features","monitor","notices","slo","api"],"additionalProperties":false},"PublicFeature":{"type":"object","properties":{"key":{"type":"string","enum":["public_status","api_v1","incident_history","maintenance_notices","service_details","slo_stats","uptime_history","multilingual","dark_mode","pwa","api_v2_public","embed_widget","maintenance_ical","service_groups","subscribe_center","rss_feeds","status_badges","custom_webhooks","discord_webhook","slack_webhook","maintenance_auto_notify","openmetrics","public_export","api_analytics","custom_health_checks","web_push","email_subscriptions","line_notify","public_api_keys","multi_admin","tls_expiry_alerts","advanced_groups","regional_monitoring","advanced_integrations"]},"enabled":{"type":"boolean"}},"required":["key","enabled"],"additionalProperties":false},"Readiness":{"type":"object","properties":{"status":{"type":"string","enum":["ready","degraded","not_ready"]},"checks":{"type":"object","properties":{"database":{"type":"object","properties":{"ok":{"type":"boolean"},"latency_ms":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["ok","latency_ms"],"additionalProperties":false},"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"applied":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"expected_latest":{"type":"string"},"pending":{"type":"array","items":{"type":"string"}}},"required":["ok","applied","expected_latest","pending"],"additionalProperties":false},"scheduler":{"type":"object","properties":{"ok":{"type":"boolean"},"state":{"$ref":"#/components/schemas/MonitorState"},"last_run_at":{"anyOf":[{"type":"integer","description":"Unix epoch milliseconds (UTC)"},{"type":"null"}]},"last_status":{"type":["string","null"]}},"required":["ok","state","last_run_at","last_status"],"additionalProperties":false}},"required":["database","schema","scheduler"],"additionalProperties":false},"time":{"type":"integer","description":"Unix epoch milliseconds (UTC)"}},"required":["status","checks","time"],"additionalProperties":false},"ResponseMeta":{"type":"object","properties":{"generated_at":{"type":"integer","description":"Unix epoch milliseconds (UTC)"},"locale":{"$ref":"#/components/schemas/Locale"},"api_version":{"type":"string","const":"2"}},"required":["generated_at","api_version"],"additionalProperties":false},"ServiceDetail":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"name_locale":{"anyOf":[{"$ref":"#/components/schemas/Locale"},{"type":"null"}]},"description":{"type":["string","null"]},"description_locale":{"anyOf":[{"$ref":"#/components/schemas/Locale"},{"type":"null"}]},"url":{"type":"string"},"group_id":{"anyOf":[{"type":"integer"},{"type":"null"}]},"sort_order":{"type":"integer"},"status":{"$ref":"#/components/schemas/ServiceStatus"},"status_reason":{"$ref":"#/components/schemas/StatusReason"},"latest_check":{"anyOf":[{"$ref":"#/components/schemas/LatestCheck"},{"type":"null"}]},"uptime":{"type":"object","properties":{"h24":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}]},"d7":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}]},"d30":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}]},"d90":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}]},"d365":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}]}},"required":["h24","d7","d30","d90","d365"],"additionalProperties":false},"open_incident_count":{"type":"integer"},"in_maintenance":{"type":"boolean"},"timeline_24h":{"description":"48 × 30-minute buckets (with include=timeline)","type":"array","items":{"$ref":"#/components/schemas/TimelinePoint"}},"timeline_90d":{"description":"90 UTC days (with include=timeline)","type":"array","items":{"$ref":"#/components/schemas/TimelinePoint"}},"created_at":{"type":"integer","description":"Unix epoch milliseconds (UTC)"},"monitoring":{"type":"object","properties":{"interval_sec":{"type":"integer"},"method":{"type":"string","enum":["GET","HEAD"]},"degraded_threshold_ms":{"type":"integer"},"keyword_check":{"type":"boolean"},"success_mode":{"type":"string","enum":["legacy","strict"]},"expected_status":{"type":"string"}},"required":["interval_sec","method","degraded_threshold_ms","keyword_check","success_mode","expected_status"],"additionalProperties":false},"latency":{"type":"object","properties":{"last_ms":{"anyOf":[{"type":"integer"},{"type":"null"}]},"avg_24h_ms":{"anyOf":[{"type":"integer"},{"type":"null"}]},"p95_24h_ms":{"anyOf":[{"type":"integer"},{"type":"null"}]},"max_24h_ms":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["last_ms","avg_24h_ms","p95_24h_ms","max_24h_ms"],"additionalProperties":false},"coverage":{"type":"object","properties":{"d30":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}]},"d90":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}]},"d365":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}]}},"required":["d30","d90","d365"],"additionalProperties":false,"description":"Share of expected checks that exist"},"open_incidents":{"type":"array","items":{"$ref":"#/components/schemas/IncidentSummary"}},"maintenance":{"type":"object","properties":{"active":{"type":"array","items":{"$ref":"#/components/schemas/MaintenanceSummary"}},"upcoming":{"type":"array","items":{"$ref":"#/components/schemas/MaintenanceSummary"}}},"required":["active","upcoming"],"additionalProperties":false}},"required":["id","name","name_locale","description","description_locale","url","group_id","sort_order","status","status_reason","latest_check","uptime","open_incident_count","in_maintenance","created_at","monitoring","latency","coverage","open_incidents","maintenance"],"additionalProperties":false},"ServiceGroup":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"name_locale":{"anyOf":[{"$ref":"#/components/schemas/Locale"},{"type":"null"}]},"sort_order":{"type":"integer"},"service_ids":{"type":"array","items":{"type":"integer"}}},"required":["id","name","name_locale","sort_order","service_ids"],"additionalProperties":false},"ServiceHistory":{"type":"object","properties":{"service_id":{"type":"integer"},"range":{"$ref":"#/components/schemas/HistoryRange"},"granularity":{"type":"string","enum":["bucket","day"]},"bucket_minutes":{"anyOf":[{"type":"integer"},{"type":"null"}]},"points":{"type":"array","items":{"$ref":"#/components/schemas/HistoryPoint"}},"summary":{"type":"object","properties":{"uptime":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}]},"coverage":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}]},"checks":{"type":"integer"},"points_with_data":{"type":"integer"},"avg_latency_ms":{"anyOf":[{"type":"integer"},{"type":"null"}]}},"required":["uptime","coverage","checks","points_with_data","avg_latency_ms"],"additionalProperties":false}},"required":["service_id","range","granularity","bucket_minutes","points","summary"],"additionalProperties":false},"ServiceHistoryResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/ServiceHistory"},"meta":{"$ref":"#/components/schemas/ResponseMeta"}},"required":["data","meta"],"additionalProperties":false},"ServiceRef":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"name_locale":{"anyOf":[{"$ref":"#/components/schemas/Locale"},{"type":"null"}]}},"required":["id","name","name_locale"],"additionalProperties":false},"ServiceResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/ServiceDetail"},"meta":{"$ref":"#/components/schemas/ResponseMeta"}},"required":["data","meta"],"additionalProperties":false},"ServiceSlo":{"type":"object","properties":{"service_id":{"type":"integer"},"target":{"type":"number","minimum":0,"maximum":1},"exclude_maintenance":{"type":"boolean"},"windows":{"type":"array","items":{"$ref":"#/components/schemas/SloWindow"}}},"required":["service_id","target","exclude_maintenance","windows"],"additionalProperties":false},"ServiceSloResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/ServiceSlo"},"meta":{"$ref":"#/components/schemas/ResponseMeta"}},"required":["data","meta"],"additionalProperties":false},"ServicesResponse":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ServiceSummary"}},"meta":{"$ref":"#/components/schemas/ResponseMeta"}},"required":["data","meta"],"additionalProperties":false},"ServiceStatus":{"type":"string","enum":["operational","degraded","down","maintenance","unknown"],"description":"`unknown` = no fresh monitoring data (never reported as operational)."},"ServiceSummary":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"name_locale":{"anyOf":[{"$ref":"#/components/schemas/Locale"},{"type":"null"}]},"description":{"type":["string","null"]},"description_locale":{"anyOf":[{"$ref":"#/components/schemas/Locale"},{"type":"null"}]},"url":{"type":"string"},"group_id":{"anyOf":[{"type":"integer"},{"type":"null"}]},"sort_order":{"type":"integer"},"status":{"$ref":"#/components/schemas/ServiceStatus"},"status_reason":{"$ref":"#/components/schemas/StatusReason"},"latest_check":{"anyOf":[{"$ref":"#/components/schemas/LatestCheck"},{"type":"null"}]},"uptime":{"type":"object","properties":{"h24":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}]},"d30":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}]},"d90":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}]}},"required":["h24","d30","d90"],"additionalProperties":false,"description":"null = no monitoring data in the window"},"open_incident_count":{"type":"integer"},"in_maintenance":{"type":"boolean"},"timeline_24h":{"description":"48 × 30-minute buckets (with include=timeline)","type":"array","items":{"$ref":"#/components/schemas/TimelinePoint"}},"timeline_90d":{"description":"90 UTC days (with include=timeline)","type":"array","items":{"$ref":"#/components/schemas/TimelinePoint"}}},"required":["id","name","name_locale","description","description_locale","url","group_id","sort_order","status","status_reason","latest_check","uptime","open_incident_count","in_maintenance"],"additionalProperties":false},"Severity":{"type":"string","enum":["minor","major","critical","maintenance"]},"SloOverviewResponse":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ServiceSlo"}},"meta":{"$ref":"#/components/schemas/ResponseMeta"}},"required":["data","meta"],"additionalProperties":false},"SloWindow":{"type":"object","properties":{"days":{"type":"integer"},"period_start":{"type":"integer","description":"Unix epoch milliseconds (UTC)"},"period_end":{"type":"integer","description":"Unix epoch milliseconds (UTC)"},"observed_ms":{"type":"integer"},"maintenance_ms":{"type":"integer"},"downtime_ms":{"type":"integer"},"downtime_ms_unmerged":{"type":"integer"},"availability":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}]},"probe_availability":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}]},"coverage":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}]},"checks":{"type":"integer"},"error_budget_ms":{"type":"number"},"error_budget_remaining_ms":{"type":"number"},"error_budget_remaining_ratio":{"type":["number","null"]},"incident_count":{"type":"integer"},"status":{"type":"string","enum":["meeting","at_risk","breached","no_data"]}},"required":["days","period_start","period_end","observed_ms","maintenance_ms","downtime_ms","downtime_ms_unmerged","availability","probe_availability","coverage","checks","error_budget_ms","error_budget_remaining_ms","error_budget_remaining_ratio","incident_count","status"],"additionalProperties":false},"StatusCounts":{"type":"object","properties":{"total":{"type":"integer"},"operational":{"type":"integer"},"degraded":{"type":"integer"},"down":{"type":"integer"},"maintenance":{"type":"integer"},"unknown":{"type":"integer"}},"required":["total","operational","degraded","down","maintenance","unknown"],"additionalProperties":false},"StatusReason":{"type":"string","enum":["probe","maintenance","incident","stale","no_data"]},"SystemHistory":{"type":"object","properties":{"range":{"type":"string","enum":["30d","90d","365d"]},"from":{"type":"integer","description":"Start of the first UTC day of the range"},"to":{"type":"integer","description":"Unix epoch milliseconds (UTC)"},"services":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"name_locale":{"anyOf":[{"$ref":"#/components/schemas/Locale"},{"type":"null"}]},"uptime":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}],"description":"Σ successful ÷ Σ checks over the days of the range; days without checks are excluded, never counted as up"},"coverage":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}],"description":"Checks recorded ÷ checks expected since the service was added to monitoring (or since the start of the range, whichever is later)"},"incidents":{"type":"integer","description":"Distinct published incidents affecting this service (primary or additional service). One incident can affect several services, so the sum over services can exceed totals.incidents"},"downtime_ms":{"type":"integer","description":"Major/critical, unplanned incident time from incident records (overlaps merged) — not derived from checks"},"days":{"type":"array","items":{"$ref":"#/components/schemas/SystemHistoryDay"}},"monitored_since":{"anyOf":[{"type":"integer","description":"Unix epoch milliseconds (UTC)"},{"type":"null"}],"description":"When the service was added to monitoring"},"coverage_range":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}],"description":"Checks recorded ÷ checks expected over the whole range; days before monitoring began count as missing"},"days_with_data":{"type":"integer","description":"Days of the range with at least one check"},"periods":{"type":"array","items":{"$ref":"#/components/schemas/SystemHistoryPeriod"},"description":"The days grouped by `granularity`"}},"required":["id","name","name_locale","uptime","coverage","incidents","downtime_ms","days","monitored_since","coverage_range","days_with_data","periods"],"additionalProperties":false}},"incident_trend":{"type":"array","items":{"type":"object","properties":{"period_start":{"type":"integer","description":"Unix epoch milliseconds (UTC)"},"label":{"type":"string"},"count":{"type":"integer"},"minor":{"type":"integer"},"major":{"type":"integer"},"critical":{"type":"integer"},"maintenance":{"type":"integer"}},"required":["period_start","label","count","minor","major","critical","maintenance"],"additionalProperties":false},"description":"Incidents by the day they started: ISO weeks (30d, 90d) or calendar months (365d), UTC, clipped to the range"},"totals":{"type":"object","properties":{"incidents":{"type":"integer","description":"Distinct incidents open during the range"},"maintenance_windows":{"type":"integer"}},"required":["incidents","maintenance_windows"],"additionalProperties":false},"granularity":{"type":"string","enum":["day","week","month"],"description":"Grouping of services[].periods: days (30d), ISO weeks Monday–Sunday in UTC (90d), calendar months in UTC (365d)"}},"required":["range","from","to","services","incident_trend","totals","granularity"],"additionalProperties":false},"SystemHistoryDay":{"type":"object","properties":{"date":{"type":"string","description":"UTC date (YYYY-MM-DD)"},"state":{"type":"string","enum":["up","degraded","down","no_data"],"description":"Daily-summary rule: down when at least 50 % of the checks failed; degraded (slow) when at least 10 % failed or at least 30 % were slow or failed; no_data without checks"},"uptime":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}],"description":"ok ÷ checks; null without checks"},"checks":{"type":"integer","description":"Checks recorded that day"},"ok":{"type":"integer","description":"Successful checks (up + slow)"},"degraded":{"type":"integer","description":"Slow checks"},"down":{"type":"integer","description":"Failed checks"},"maintenance":{"type":"boolean","description":"A published maintenance window for this service overlapped the day"},"incidents":{"type":"integer","description":"Published incidents affecting this service that were open during the day"},"downtime_ms":{"type":"integer","description":"Major/critical, unplanned incident time that day (incident records, overlaps merged)"}},"required":["date","state","uptime","checks","ok","degraded","down","maintenance","incidents","downtime_ms"],"additionalProperties":false},"SystemHistoryPeriod":{"type":"object","properties":{"start":{"type":"string","description":"First day of the period inside the range (UTC, YYYY-MM-DD)"},"end":{"type":"string","description":"Last day of the period inside the range (inclusive)"},"period_start":{"type":"string","description":"First day of the whole calendar period (Monday, or the 1st of the month)"},"period_end":{"type":"string","description":"Last day of the whole calendar period"},"days":{"type":"integer","description":"Days of the period inside the range"},"period_days":{"type":"integer","description":"Days of the whole calendar period (1, 7 or 28–31)"},"checks":{"type":"integer"},"ok":{"type":"integer"},"uptime":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}],"description":"Σ successful ÷ Σ checks of the period — weighted, never an average of daily percentages"},"state":{"type":"string","enum":["up","degraded","down","no_data"],"description":"The daily-summary rule applied to the period totals"},"up_days":{"type":"integer"},"degraded_days":{"type":"integer"},"down_days":{"type":"integer"},"no_data_days":{"type":"integer"},"maintenance_days":{"type":"integer"},"incidents":{"type":"integer","description":"Distinct incidents affecting this service that were open during the period"},"downtime_ms":{"type":"integer"}},"required":["start","end","period_start","period_end","days","period_days","checks","ok","uptime","state","up_days","degraded_days","down_days","no_data_days","maintenance_days","incidents","downtime_ms"],"additionalProperties":false},"SystemHistoryResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/SystemHistory"},"meta":{"$ref":"#/components/schemas/ResponseMeta"}},"required":["data","meta"],"additionalProperties":false},"SystemStatus":{"type":"string","enum":["operational","degraded","partial_outage","major_outage","maintenance","unknown"]},"SystemStatusData":{"type":"object","properties":{"status":{"$ref":"#/components/schemas/SystemStatus"},"counts":{"$ref":"#/components/schemas/StatusCounts"},"monitor":{"type":"object","properties":{"state":{"$ref":"#/components/schemas/MonitorState"},"last_run_at":{"anyOf":[{"type":"integer","description":"Unix epoch milliseconds (UTC)"},{"type":"null"}]},"last_check_at":{"anyOf":[{"type":"integer","description":"Unix epoch milliseconds (UTC)"},{"type":"null"}]},"interval_sec":{"type":"integer"}},"required":["state","last_run_at","last_check_at","interval_sec"],"additionalProperties":false},"active_incidents":{"type":"array","items":{"$ref":"#/components/schemas/IncidentSummary"}},"active_maintenance":{"type":"array","items":{"$ref":"#/components/schemas/MaintenanceSummary"}},"upcoming_maintenance":{"type":"array","items":{"$ref":"#/components/schemas/MaintenanceSummary"}}},"required":["status","counts","monitor","active_incidents","active_maintenance","upcoming_maintenance"],"additionalProperties":false},"SystemStatusResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/SystemStatusData"},"meta":{"$ref":"#/components/schemas/ResponseMeta"}},"required":["data","meta"],"additionalProperties":false},"TimelinePoint":{"type":"object","properties":{"start":{"type":"integer","description":"Unix epoch milliseconds (UTC)"},"end":{"type":"integer","description":"Unix epoch milliseconds (UTC)"},"state":{"type":"string","enum":["up","degraded","down","no_data"]},"maintenance":{"type":"boolean"}},"required":["start","end","state","maintenance"],"additionalProperties":false},"V1DailySummary":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"UTC day"},"total":{"type":"integer"},"up_count":{"type":"integer"},"degraded_count":{"type":"integer"},"down_count":{"type":"integer"},"sum_latency_ms":{"type":"integer"},"max_latency_ms":{"type":"integer"},"state":{"type":"string","enum":["up","degraded","down","unknown"]}},"required":["date","total","up_count","degraded_count","down_count","sum_latency_ms","max_latency_ms","state"],"additionalProperties":false},"V1Error":{"type":"object","properties":{"error":{"type":"string"},"detail":{"type":"string"}},"required":["error"],"additionalProperties":false},"V1Geo":{"type":"object","properties":{"country":{"type":"string"},"locale":{"type":"string","enum":["zh-Hant","zh-Hans","en","ja","ko","vi"],"description":"1.x locale code"}},"required":["country","locale"],"additionalProperties":false},"V1Incident":{"type":"object","properties":{"id":{"type":"integer"},"site_id":{"type":"integer"},"started_at":{"type":"integer","description":"Unix epoch milliseconds"},"resolved_at":{"anyOf":[{"type":"integer","description":"Unix epoch milliseconds"},{"type":"null"}]},"state":{"type":"string","enum":["investigating","identified","monitoring","resolved"]},"severity":{"type":"string","enum":["minor","major","critical","maintenance"]},"is_planned":{"anyOf":[{"type":"number","const":0},{"type":"number","const":1}],"description":"0 = false, 1 = true"},"title":{"type":["string","null"]},"summary":{"type":["string","null"]},"last_observed_state":{"type":["string","null"]},"created_at":{"type":"integer","description":"Unix epoch milliseconds"},"title_zh_tw":{"type":["string","null"]},"title_zh_hk":{"type":["string","null"]},"title_zh_cn":{"type":["string","null"]},"title_en":{"type":["string","null"]},"title_ja":{"type":["string","null"]},"title_ko":{"type":["string","null"]},"title_vi":{"description":"Added in 2.0 (Vietnamese)","type":["string","null"]},"summary_zh_tw":{"type":["string","null"]},"summary_zh_hk":{"type":["string","null"]},"summary_zh_cn":{"type":["string","null"]},"summary_en":{"type":["string","null"]},"summary_ja":{"type":["string","null"]},"summary_ko":{"type":["string","null"]},"summary_vi":{"description":"Added in 2.0 (Vietnamese)","type":["string","null"]},"updates":{"type":"array","items":{"$ref":"#/components/schemas/V1IncidentUpdate"}}},"required":["id","site_id","started_at","resolved_at","state","severity","is_planned","title","summary","last_observed_state","created_at","title_zh_tw","title_zh_hk","title_zh_cn","title_en","title_ja","title_ko","summary_zh_tw","summary_zh_hk","summary_zh_cn","summary_en","summary_ja","summary_ko","updates"],"additionalProperties":false},"V1Incidents":{"type":"object","properties":{"incidents":{"type":"array","items":{"$ref":"#/components/schemas/V1Incident"}},"serverTime":{"type":"integer","description":"Unix epoch milliseconds"}},"required":["incidents","serverTime"],"additionalProperties":false},"V1IncidentUpdate":{"type":"object","properties":{"id":{"type":"integer"},"incident_id":{"type":"integer"},"ts":{"type":"integer","description":"Unix epoch milliseconds"},"state":{"type":"string","enum":["investigating","identified","monitoring","resolved","update"]},"body":{"type":["string","null"]},"author":{"type":["string","null"]},"body_zh_tw":{"type":["string","null"]},"body_zh_hk":{"type":["string","null"]},"body_zh_cn":{"type":["string","null"]},"body_en":{"type":["string","null"]},"body_ja":{"type":["string","null"]},"body_ko":{"type":["string","null"]},"body_vi":{"description":"Added in 2.0 (Vietnamese)","type":["string","null"]}},"required":["id","incident_id","ts","state","body","author","body_zh_tw","body_zh_hk","body_zh_cn","body_en","body_ja","body_ko"],"additionalProperties":false},"V1LatestCheck":{"type":"object","properties":{"ts":{"type":"integer","description":"Unix epoch milliseconds"},"state":{"type":"string","enum":["up","degraded","down"]},"latency_ms":{"type":"integer"},"http_status":{"anyOf":[{"type":"integer"},{"type":"null"}]},"error":{"type":["string","null"]}},"required":["ts","state","latency_ms","http_status","error"],"additionalProperties":false},"V1LatestCheckWithSite":{"type":"object","properties":{"site_id":{"type":"integer"},"ts":{"type":"integer","description":"Unix epoch milliseconds"},"state":{"type":"string","enum":["up","degraded","down"]},"latency_ms":{"type":"integer"},"http_status":{"anyOf":[{"type":"integer"},{"type":"null"}]},"error":{"type":["string","null"]}},"required":["site_id","ts","state","latency_ms","http_status","error"],"additionalProperties":false},"V1Maintenance":{"type":"object","properties":{"active":{"type":"array","items":{"$ref":"#/components/schemas/V1MaintenanceWindow"}},"upcoming":{"type":"array","items":{"$ref":"#/components/schemas/V1MaintenanceWindow"}},"past":{"type":"array","items":{"$ref":"#/components/schemas/V1MaintenanceWindow"}},"all":{"type":"array","items":{"$ref":"#/components/schemas/V1MaintenanceWindow"}},"serverTime":{"type":"integer","description":"Unix epoch milliseconds"}},"required":["active","upcoming","past","all","serverTime"],"additionalProperties":false},"V1MaintenanceWindow":{"type":"object","properties":{"id":{"type":"integer"},"site_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"null = all sites"},"start_ts":{"type":"integer","description":"Unix epoch milliseconds"},"end_ts":{"type":"integer","description":"Unix epoch milliseconds"},"timezone":{"type":"string","description":"IANA time zone used when the window was entered"},"notes_zh_tw":{"type":["string","null"]},"notes_zh_hk":{"type":["string","null"]},"notes_zh_cn":{"type":["string","null"]},"notes_en":{"type":["string","null"]},"notes_ja":{"type":["string","null"]},"notes_ko":{"type":["string","null"]},"notes_vi":{"description":"Added in 2.0 (Vietnamese)","type":["string","null"]},"created_at":{"type":"integer","description":"Unix epoch milliseconds"}},"required":["id","site_id","start_ts","end_ts","timezone","notes_zh_tw","notes_zh_hk","notes_zh_cn","notes_en","notes_ja","notes_ko","created_at"],"additionalProperties":false},"V1Overview":{"type":"object","properties":{"sites":{"type":"array","items":{"$ref":"#/components/schemas/V1OverviewSite"}},"serverTime":{"type":"integer","description":"Unix epoch milliseconds"}},"required":["sites","serverTime"],"additionalProperties":false},"V1OverviewSite":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"url":{"type":"string"},"enabled":{"anyOf":[{"type":"number","const":0},{"type":"number","const":1}],"description":"0 = false, 1 = true"},"content_check":{"type":["string","null"]},"sort_order":{"type":"integer"},"created_at":{"type":"integer","description":"Unix epoch milliseconds"},"latest":{"anyOf":[{"$ref":"#/components/schemas/V1LatestCheckWithSite"},{"type":"null"}]},"uptime24h":{"anyOf":[{"type":"number","minimum":0,"maximum":1,"description":"Ratio 0–1"},{"type":"null"}]},"open_incidents":{"type":"integer"}},"required":["id","name","url","enabled","content_check","sort_order","created_at","latest","uptime24h","open_incidents"],"additionalProperties":false},"V1RecentCheck":{"type":"object","properties":{"ts":{"type":"integer","description":"Unix epoch milliseconds"},"state":{"type":"string","enum":["up","degraded","down"]},"latency_ms":{"type":"integer"}},"required":["ts","state","latency_ms"],"additionalProperties":false},"V1Site":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"url":{"type":"string"},"enabled":{"anyOf":[{"type":"number","const":0},{"type":"number","const":1}],"description":"0 = false, 1 = true"},"content_check":{"type":["string","null"]},"sort_order":{"type":"integer"},"created_at":{"type":"integer","description":"Unix epoch milliseconds"}},"required":["id","name","url","enabled","content_check","sort_order","created_at"],"additionalProperties":false},"V1SiteNotFound":{"type":"object","properties":{"error":{"type":"string","const":"site not found"}},"required":["error"],"additionalProperties":false},"V1Sites":{"type":"object","properties":{"sites":{"type":"array","items":{"$ref":"#/components/schemas/V1Site"}},"serverTime":{"type":"integer","description":"Unix epoch milliseconds"}},"required":["sites","serverTime"],"additionalProperties":false},"V1Slo":{"type":"object","properties":{"30":{"$ref":"#/components/schemas/V1SloWindow"},"90":{"$ref":"#/components/schemas/V1SloWindow"},"365":{"$ref":"#/components/schemas/V1SloWindow"},"serverTime":{"type":"integer","description":"Unix epoch milliseconds"}},"required":["30","90","365","serverTime"],"additionalProperties":false},"V1SloWindow":{"type":"object","properties":{"windowDays":{"type":"integer"},"windowMs":{"type":"integer"},"downtimeMs":{"type":"number"},"uptimeRatio":{"type":"number","minimum":0,"maximum":1,"description":"Ratio 0–1"},"target":{"type":"number","minimum":0,"maximum":1,"description":"Ratio 0–1"},"allowedDowntimeMs":{"type":"number"},"budgetRemainingMs":{"type":"number"},"budgetRemainingRatio":{"type":"number"},"incidentCount":{"type":"integer"}},"required":["windowDays","windowMs","downtimeMs","uptimeRatio","target","allowedDowntimeMs","budgetRemainingMs","budgetRemainingRatio","incidentCount"],"additionalProperties":false},"V1Status":{"type":"object","properties":{"site":{"$ref":"#/components/schemas/V1Site"},"latest":{"anyOf":[{"$ref":"#/components/schemas/V1LatestCheck"},{"type":"null"}]},"recent24h":{"type":"array","items":{"$ref":"#/components/schemas/V1RecentCheck"}},"daily365":{"type":"array","items":{"$ref":"#/components/schemas/V1DailySummary"}},"uptime24h":{"anyOf":[{"type":"number","minimum":0,"maximum":1,"description":"Ratio 0–1"},{"type":"null"}]},"uptimeYear":{"anyOf":[{"type":"number","minimum":0,"maximum":1,"description":"Ratio 0–1"},{"type":"null"}]},"avgLatency24h":{"anyOf":[{"type":"integer"},{"type":"null"}]},"serverTime":{"type":"integer","description":"Unix epoch milliseconds"},"targetUrl":{"type":"string"},"intervalMs":{"type":"number","const":60000}},"required":["site","latest","recent24h","daily365","uptime24h","uptimeYear","avgLatency24h","serverTime","targetUrl","intervalMs"],"additionalProperties":false}},"headers":{"X-Request-Id":{"description":"Request identifier (also in error bodies). Send it when reporting problems.","schema":{"type":"string"}},"ETag":{"description":"Weak validator; send back in If-None-Match to receive 304.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}}},"x-rate-limits":{"public":"600 requests/minute/IP on cache misses"}}