[READ-ONLY] Mirror of https://github.com/openstatusHQ/sdk-node. SDK for openstatus www.openstatus.dev
sdk-node docs status-report-service.md
3.4 kB
Markdown
at main

← Back to index

Status Report Service #

Manage incident reports with update timelines. The Status Report Service provides 6 RPC methods.

Create Status Report #

import {
  createOpenStatusClient,
  PageComponentImpact,
  StatusReportStatus,
} from "@openstatus/sdk-node";

const client = createOpenStatusClient({
  apiKey: process.env.OPENSTATUS_API_KEY,
});

const { statusReport } = await client.statusReport.v1.StatusReportService
  .createStatusReport({
    title: "API Degradation",
    status: StatusReportStatus.INVESTIGATING,
    message: "We are investigating reports of increased latency.",
    date: "2024-01-15T10:30:00Z",
    pageId: "page_123",
    pageComponentIds: ["comp_456"],
    notify: true,
    componentImpacts: [
      {
        pageComponentId: "comp_456",
        impact: PageComponentImpact.DEGRADED_PERFORMANCE,
      },
    ],
  });

console.log(`Status report created: ${statusReport?.id}`);

The optional componentImpacts field sets a per-component impact (OPERATIONAL, DEGRADED_PERFORMANCE, PARTIAL_OUTAGE, or MAJOR_OUTAGE) for the initial update. Omitting it creates a report without impact tracking.

Add Status Report Update #

Add a new entry to a status report's timeline. Components named in componentImpacts are added to the report's affected set; omitted components keep their prior impact.

import { PageComponentImpact, StatusReportStatus } from "@openstatus/sdk-node";

const { statusReport } = await client.statusReport.v1.StatusReportService
  .addStatusReportUpdate({
    statusReportId: "sr_123",
    status: StatusReportStatus.IDENTIFIED,
    message: "The issue has been identified as a database connection problem.",
    date: "2024-01-15T11:00:00Z",
    notify: true,
    componentImpacts: [
      {
        pageComponentId: "comp_456",
        impact: PageComponentImpact.PARTIAL_OUTAGE,
      },
    ],
  });

List Status Reports #

List status reports with optional status filtering and pagination.

import { StatusReportStatus } from "@openstatus/sdk-node";

const { statusReports, totalSize } = await client.statusReport.v1
  .StatusReportService.listStatusReports({
    limit: 10,
    offset: 0,
    statuses: [StatusReportStatus.INVESTIGATING, StatusReportStatus.IDENTIFIED],
  });

console.log(`Found ${totalSize} status reports`);

Get / Update / Delete Status Reports #

Get Status Report #

Returns the full report including the updates timeline.

import { StatusReportStatus } from "@openstatus/sdk-node";

const { statusReport } = await client.statusReport.v1.StatusReportService
  .getStatusReport({ id: "sr_123" });

console.log(`Title: ${statusReport?.title}`);
console.log(`Status: ${StatusReportStatus[statusReport?.status ?? 0]}`);

for (const update of statusReport?.updates ?? []) {
  console.log(
    `  ${update.date}: [${
      StatusReportStatus[update.status]
    }] ${update.message}`,
  );
}

Update Status Report #

const { statusReport } = await client.statusReport.v1.StatusReportService
  .updateStatusReport({
    id: "sr_123",
    title: "Updated Title",
    pageComponentIds: ["comp_456", "comp_789"],
  });

Delete Status Report #

const { success } = await client.statusReport.v1.StatusReportService
  .deleteStatusReport({ id: "sr_123" });