Openstatus sdk www.openstatus.dev
at status-report 251 lines 7.3 kB view raw
1/** 2 * @module 3 * 4 * Official Node.js SDK for OpenStatus - the open-source monitoring platform. 5 * 6 * @example Basic usage 7 * ```typescript 8 * import { openstatus, Periodicity, Region } from "@openstatus/sdk-node"; 9 * 10 * const headers = { 11 * "x-openstatus-key": `Bearer ${process.env.OPENSTATUS_API_KEY}`, 12 * }; 13 * 14 * // List all monitors 15 * const { httpMonitors, tcpMonitors, dnsMonitors } = 16 * await openstatus.monitor.v1.MonitorService.listMonitors({}, { headers }); 17 * 18 * // Create an HTTP monitor 19 * const { monitor } = await openstatus.monitor.v1.MonitorService.createHTTPMonitor({ 20 * monitor: { 21 * name: "My API", 22 * url: "https://api.example.com/health", 23 * periodicity: Periodicity.PERIODICITY_1M, 24 * regions: [Region.FLY_AMS, Region.FLY_IAD, Region.FLY_SYD], 25 * active: true, 26 * }, 27 * }, { headers }); 28 * ``` 29 */ 30 31import type { Client } from "@connectrpc/connect"; 32import { createClient } from "@connectrpc/connect"; 33import { createConnectTransport } from "@connectrpc/connect-node"; 34import { MonitorService } from "./gen/openstatus/monitor/v1/service_pb.ts"; 35import { HealthService } from "./gen/openstatus/health/v1/health_pb.ts"; 36import { StatusReportService } from "./gen/openstatus/status_report/v1/service_pb.ts"; 37 38// Re-export monitor types 39export type { 40 Headers, 41 HTTPMonitor, 42 OpenTelemetryConfig, 43} from "./gen/openstatus/monitor/v1/http_monitor_pb.ts"; 44 45export type { TCPMonitor } from "./gen/openstatus/monitor/v1/tcp_monitor_pb.ts"; 46 47export type { DNSMonitor } from "./gen/openstatus/monitor/v1/dns_monitor_pb.ts"; 48 49// Re-export assertion types 50export type { 51 BodyAssertion, 52 HeaderAssertion, 53 RecordAssertion, 54 StatusCodeAssertion, 55} from "./gen/openstatus/monitor/v1/assertions_pb.ts"; 56 57// Re-export assertion comparator enums 58export { 59 NumberComparator, 60 RecordComparator, 61 StringComparator, 62} from "./gen/openstatus/monitor/v1/assertions_pb.ts"; 63 64// Re-export enums 65export { HTTPMethod } from "./gen/openstatus/monitor/v1/http_monitor_pb.ts"; 66 67export { Periodicity, Region } from "./gen/openstatus/monitor/v1/monitor_pb.ts"; 68 69export { MonitorStatus } from "./gen/openstatus/monitor/v1/monitor_pb.ts"; 70 71// Re-export request/response types 72export type { 73 CreateDNSMonitorRequest, 74 CreateDNSMonitorResponse, 75 CreateHTTPMonitorRequest, 76 CreateHTTPMonitorResponse, 77 CreateTCPMonitorRequest, 78 CreateTCPMonitorResponse, 79 DeleteMonitorRequest, 80 DeleteMonitorResponse, 81 GetMonitorStatusRequest, 82 GetMonitorStatusResponse, 83 GetMonitorSummaryRequest, 84 GetMonitorSummaryResponse, 85 ListMonitorsRequest, 86 ListMonitorsResponse, 87 RegionStatus, 88 TriggerMonitorRequest, 89 TriggerMonitorResponse, 90 UpdateDNSMonitorRequest, 91 UpdateDNSMonitorResponse, 92 UpdateHTTPMonitorRequest, 93 UpdateHTTPMonitorResponse, 94 UpdateTCPMonitorRequest, 95 UpdateTCPMonitorResponse, 96} from "./gen/openstatus/monitor/v1/service_pb.ts"; 97 98export { TimeRange } from "./gen/openstatus/monitor/v1/service_pb.ts"; 99 100// Re-export health types 101export type { 102 CheckRequest, 103 CheckResponse, 104} from "./gen/openstatus/health/v1/health_pb.ts"; 105 106export { CheckResponse_ServingStatus as ServingStatus } from "./gen/openstatus/health/v1/health_pb.ts"; 107 108// Re-export status report types 109export type { 110 StatusReport, 111 StatusReportSummary, 112 StatusReportUpdate, 113} from "./gen/openstatus/status_report/v1/status_report_pb.ts"; 114 115export { StatusReportStatus } from "./gen/openstatus/status_report/v1/status_report_pb.ts"; 116 117// Re-export status report request/response types 118export type { 119 AddStatusReportUpdateRequest, 120 AddStatusReportUpdateResponse, 121 CreateStatusReportRequest, 122 CreateStatusReportResponse, 123 DeleteStatusReportRequest, 124 DeleteStatusReportResponse, 125 GetStatusReportRequest, 126 GetStatusReportResponse, 127 ListStatusReportsRequest, 128 ListStatusReportsResponse, 129 UpdateStatusReportRequest, 130 UpdateStatusReportResponse, 131} from "./gen/openstatus/status_report/v1/service_pb.ts"; 132 133/** 134 * Default OpenStatus API URL. 135 */ 136const DEFAULT_API_URL = "https://api.openstatus.dev/rpc"; 137 138/** 139 * Creates a Connect RPC transport configured for the OpenStatus API. 140 */ 141const transport = createConnectTransport({ 142 baseUrl: process.env.OPENSTATUS_API_URL ?? DEFAULT_API_URL, 143 httpVersion: "2", 144}); 145 146/** 147 * OpenStatus API client interface. 148 * 149 * Provides access to Monitor and Health services. 150 */ 151export interface OpenStatusClient { 152 /** 153 * Monitor service namespace (v1). 154 */ 155 monitor: { 156 v1: { 157 /** 158 * MonitorService provides CRUD and operational commands for monitors. 159 * 160 * Methods: 161 * - `createHTTPMonitor` - Create a new HTTP monitor 162 * - `createTCPMonitor` - Create a new TCP monitor 163 * - `createDNSMonitor` - Create a new DNS monitor 164 * - `updateHTTPMonitor` - Update an existing HTTP monitor 165 * - `updateTCPMonitor` - Update an existing TCP monitor 166 * - `updateDNSMonitor` - Update an existing DNS monitor 167 * - `listMonitors` - List all monitors 168 * - `triggerMonitor` - Trigger an immediate check 169 * - `deleteMonitor` - Delete a monitor 170 * - `getMonitorStatus` - Get status of all regions for a monitor 171 * - `getMonitorSummary` - Get aggregated metrics for a monitor 172 */ 173 MonitorService: Client<typeof MonitorService>; 174 }; 175 }; 176 /** 177 * Health service namespace (v1). 178 */ 179 health: { 180 v1: { 181 /** 182 * HealthService provides health check endpoints. 183 * 184 * Methods: 185 * - `check` - Check API health status 186 */ 187 HealthService: Client<typeof HealthService>; 188 }; 189 }; 190 /** 191 * Status report service namespace (v1). 192 */ 193 statusReport: { 194 v1: { 195 /** 196 * StatusReportService provides CRUD operations for status reports. 197 * 198 * Methods: 199 * - `createStatusReport` - Create a new status report 200 * - `getStatusReport` - Get a status report by ID 201 * - `listStatusReports` - List all status reports 202 * - `updateStatusReport` - Update a status report 203 * - `deleteStatusReport` - Delete a status report 204 * - `addStatusReportUpdate` - Add an update to a status report 205 */ 206 StatusReportService: Client<typeof StatusReportService>; 207 }; 208 }; 209} 210 211/** 212 * OpenStatus SDK client. 213 * 214 * Provides access to the OpenStatus API for managing monitors and checking service health. 215 * 216 * @example 217 * ```typescript 218 * import { openstatus, Periodicity } from "@openstatus/sdk-node"; 219 * 220 * // Check API health (no auth required) 221 * const { status } = await openstatus.health.v1.HealthService.check({}); 222 * 223 * // Create a monitor (auth required) 224 * const headers = { "x-openstatus-key": `Bearer ${process.env.OPENSTATUS_API_KEY}` }; 225 * const { monitor } = await openstatus.monitor.v1.MonitorService.createHTTPMonitor({ 226 * monitor: { 227 * name: "My Website", 228 * url: "https://example.com", 229 * periodicity: Periodicity.PERIODICITY_1M, 230 * active: true, 231 * }, 232 * }, { headers }); 233 * ``` 234 */ 235export const openstatus: OpenStatusClient = { 236 monitor: { 237 v1: { 238 MonitorService: createClient(MonitorService, transport), 239 }, 240 }, 241 health: { 242 v1: { 243 HealthService: createClient(HealthService, transport), 244 }, 245 }, 246 statusReport: { 247 v1: { 248 StatusReportService: createClient(StatusReportService, transport), 249 }, 250 }, 251};