[← Back to index](./index.md) # Status Report Service Manage incident reports with update timelines. The Status Report Service provides 6 RPC methods. ## Create Status Report ```typescript 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. ```typescript 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. ```typescript 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. ```typescript 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 ```typescript const { statusReport } = await client.statusReport.v1.StatusReportService .updateStatusReport({ id: "sr_123", title: "Updated Title", pageComponentIds: ["comp_456", "comp_789"], }); ``` ### Delete Status Report ```typescript const { success } = await client.statusReport.v1.StatusReportService .deleteStatusReport({ id: "sr_123" }); ```