Status Report Service
Manage incident reports with update timelines. The Status Report Service provides 8 RPC methods.
Create Status Report
import {
createOpenStatusClient,
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: "1",
pageComponentIds: ["12"],
notify: true,
});
console.log(`Status report created: ${statusReport?.id}`);
Add Status Report Update
Add a new entry to a status report's timeline.
import { StatusReportStatus } from "@openstatus/sdk-node";
const { statusReport } = await client.statusReport.v1.StatusReportService
.addStatusReportUpdate({
statusReportId: "123",
status: StatusReportStatus.IDENTIFIED,
message: "The issue has been identified as a database connection problem.",
date: "2024-01-15T11:00:00Z",
notify: true,
});
Edit / Delete Status Report Updates
Entries in the timeline can be corrected or removed. Editing never notifies subscribers; editing the latest entry's status re-derives the report's status.
Update Status Report Update
import { StatusReportStatus } from "@openstatus/sdk-node";
const { statusReportUpdate } = await client.statusReport.v1.StatusReportService
.updateStatusReportUpdate({
id: "456",
status: StatusReportStatus.MONITORING,
message: "A fix has been deployed and we are monitoring.",
});
To replace the entry's component impacts, pass componentImpacts together with updateComponentImpacts: true (an empty list clears them). Without the flag the impacts stay untouched.
Delete Status Report Update
A report always keeps at least one update. Deleting the last one fails with invalid_argument; delete the report instead.
const { success } = await client.statusReport.v1.StatusReportService
.deleteStatusReportUpdate({ id: "456" });
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: "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: "123",
title: "Updated Title",
pageComponentIds: ["12", "13"],
});
Delete Status Report
const { success } = await client.statusReport.v1.StatusReportService
.deleteStatusReport({ id: "123" });