Hyperping Incidents
Drive incidents on the two Hyperping status pages from the CLI. Wraps the Hyperping API (read-only listing + full incident lifecycle).
Setup
- Token from https://app.hyperping.io/project/developers, saved to
.hyperping_tokenat the repo root. It is gitignored — never commit it. - The CLI finds the token by searching upward from the working directory, so run it from anywhere inside the repo.
CLI
All operations go through scripts/hyperping (Ruby, no gems). Commands that
write take their JSON body on stdin.
hyperping incidents [sp_xxx] # list (optionally filter by status page)
hyperping incident <uuid> # full incident JSON
hyperping create < body.json # open an incident
hyperping add-update <uuid> < up.json # post a progress update / resolve
hyperping update <uuid> < fields.json # edit title/type/components/pages (PUT)
hyperping delete <uuid> # delete (no confirmation prompt)
hyperping monitors [filter] # list monitors, optional name filter
hyperping status-pages # the two known status pages
Reference
Read references/api_reference.md for the API contract: endpoints, the create
/ update / add-update body schemas, enum values, and the status-page uuids.
Read it before constructing any write body.
Key facts (do not relearn)
- Status pages:
sp_9CPwLOiid6RIv5= Entreprise,sp_SfFWlwddY5Mg7E= Particulier. There is no API to list status pages. affectedComponentstakes monitor uuids (mon_...) — resolve names withhyperping monitors <filter>.title/textare i18n objects; use thefrkey (supported).type:outage(service down) vsincident(degradation / data-quality).- Start date trap: the top-level
dateon create is ignored (forced to now). To backdate, set the first update'sdate.
Workflows
Open an incident
- Resolve the monitor uuid(s):
hyperping monitors <name>. - Ask the user whether it is an
outageor anincidentunless they already said so explicitly. Do not guesstype— it sets the severity shown publicly. Use AskUserQuestion:outage= service down/unusable,incident= degradation, partial failure or data-quality issue. - Pick the status page (Entreprise vs Particulier).
- Build the body (see reference), then:
hyperping create <<'JSON' { "title": {"fr": "..."}, "type": "incident", "statuspages": ["sp_..."], "affectedComponents": ["mon_..."], "updates": [{"type":"investigating","date":"<ISO8601>","text":{"fr":"..."}}] } JSON - To backdate the start, set
updates[0].dateto the real start (UTC).
Post an update / resolve
hyperping add-update <uuid> <<'JSON'
{ "type": "resolved", "date": "<ISO8601>", "text": {"fr": "Service rétabli."} }
JSON
Update type progression: investigating → identified → update →
monitoring → resolved.
Cautions
- Incidents are public on gouv.fr status pages. Confirm content and target
page before
create,add-updateordelete. deleteis irreversible and unprompted.- Times are UTC. Paris is UTC+2 in summer (CEST), UTC+1 in winter (CET).