SPB Git forge

spb/websensor

Public
33commits 1branches 0releases
3.4 MBsize
maindefault branch
10 days agolast push
TypeScript 55.4% Python 43.2% SQL 1.2%
1.6 KB · 16 lines markdown
Rendered Raw Blame History
1# Connector: Status pages, non-Atlassian (`statusjson`)2**Purpose**: incidents, maintenances and degraded components on the other status-page providers, normalized to3the exact item shape of `statuspage` so the downstream heuristics (incident created / updated / resolved,4maintenance scheduled, component degraded) are shared.5- **Instatus** — `https://<page>/summary.json` → `{ page:{name,url,status}, activeIncidents?, activeMaintenances? }`6- **incident.io** — `https://<page>/api/v1/summary` → `{ page_title, page_url, ongoing_incidents, in_progress_maintenances, scheduled_maintenances }`7- **Status.io** — `https://api.status.io/1.0/status/<pageId>` → `{ result:{ status_overall, status[].containers[], incidents[], maintenance:{active,upcoming} } }`8- **incident.io multi-region** — `{ subpages:[{ subpage:"eu", summary:{…} }, …] }` (status.miro.com): sub-summaries are merged, keys prefixed by region.9**Sensor types**: STATUSPAGE, JSON. **Config**: `flavor?` (auto-detected from the shape).10**Normalization**: keyed list — `incident:<id>`, `maintenance:<id>`, `component:<id>` (Status.io, non-operational11only), `overall`; `compareFields: status, title, updatedAt`. `extra`: flavor, indicator, counts.12**Finding pages**: Instatus pages answer `/summary.json`; incident.io pages answer `/api/v1/summary`; Status.io13pages embed the page id in their HTML (`statusio_page_id`) or expose `/1.0/status/<id>` via `api.status.io`.14Hund, Better Stack, Sorry™ and Freshstatus are not supported yet (their RSS/history feeds work with `rss`).15**Tests**: `connectors2.test.ts` (three fixtures inline). **Verified**: 2026-09-08 (status.incident.io, status.instatus.com).16