API REST

Páginas de status

Serviços, páginas, incidentes e manutenções.

  • GET /status (tracker:read, admin ou dono da empresa): páginas de status. Serviços (status é o que o cliente vê agora, o pior entre manual_status e os incidentes abertos; version, a versão em produção do projeto), páginas (url pública, slug, published, primary) e incidentes e manutenções recentes (phase: active, upcoming ou closed).
  • POST /status/services e PATCH/DELETE /status/services/{id} (tracker:write): {"name": "App do motorista", "project": "MOB", "description": "...", "status": "operational|degraded|partial_outage|major_outage|maintenance", "show_version": true, "check_url": "https://api.exemplo.com/health", "sentry_alerts": true}. No PATCH, só o que vier muda. check_url: healthcheck a cada minuto (mais de 3 s é Lento; duas falhas seguidas, Fora do ar); sentry_alerts: erro novo no Sentry do projeto deixa Lento por 30 minutos. A resposta traz monitor com o último resultado.
  • GET /status/pages/{id}, POST /status/pages e PATCH/DELETE /status/pages/{id} (tracker:write): {"title": "Status", "intro": "...", "published": true, "blocks": [{"kind": "projects", "projects": ["MOB"]}, {"kind": "projects", "title": "Plataforma", "projects": ["PLT", "API"], "hidden_services": ["Fila interna"]}, {"kind": "services", "title": "Destaques", "services": ["App do motorista"]}]}. blocks troca todos os blocos, na ordem; sem ele, ficam como estão. Serviço por id ou nome; projeto por prefixo, slug ou id. slug: endereço legível no endereço da empresa (/status/<slug>; sem ele, sai do título); primary: true: a página que abre em /status (uma por empresa). A chave da página continua abrindo em qualquer endereço. Aparência (o que não vier fica como está): brand_name (marca da página; null volta ao nome da empresa), accent_color (#rrggbb; null volta à cor padrão), links (até 4 botões no topo, [{"label": "Suporte", "url": "https://..."}], https: ou mailto:; troca os que havia), show_history e show_past_incidents (false esconde as barras de 90 dias e os incidentes encerrados) e remove_logo: true; a logo se envia pela tela e volta em logo_url.
  • POST /status/incidents (tracker:write): abre um incidente ou agenda uma manutenção. {"kind": "incident|maintenance", "title": "...", "services": ["App do motorista"], "message": "<o que o cliente lê>", "impact": "degraded|partial_outage|major_outage", "status": "...", "starts_at": "2026-10-18T23:00:00-03:00", "ends_at": "..."} (manutenção exige starts_at e ends_at).
  • GET /status/incidents/{id} (com a linha do tempo), POST /status/incidents/{id}/updates ({"message": "...", "status": "monitoring", "impact": "degraded"}; resolved ou completed encerra), PATCH /status/incidents/{id} (corrige title, services, starts_at, ends_at e impact, e com message também publica uma atualização) e DELETE /status/incidents/{id} (tracker:write).