Something went wrong. Try again.
[READ-ONLY] Mirror of https://github.com/openstatusHQ/sdk-node. SDK for openstatus www.openstatus.dev
Something went wrong. Try again.
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" });