Openstatus sdk www.openstatus.dev
at maintenance-api 393 lines 12 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"; 37import { StatusPageService } from "./gen/openstatus/status_page/v1/service_pb.ts"; 38import { MaintenanceService } from "./gen/openstatus/maintenance/v1/service_pb.ts"; 39 40// Re-export monitor types 41export type { 42 Headers, 43 HTTPMonitor, 44 OpenTelemetryConfig, 45} from "./gen/openstatus/monitor/v1/http_monitor_pb.ts"; 46 47export type { TCPMonitor } from "./gen/openstatus/monitor/v1/tcp_monitor_pb.ts"; 48 49export type { DNSMonitor } from "./gen/openstatus/monitor/v1/dns_monitor_pb.ts"; 50 51// Re-export assertion types 52export type { 53 BodyAssertion, 54 HeaderAssertion, 55 RecordAssertion, 56 StatusCodeAssertion, 57} from "./gen/openstatus/monitor/v1/assertions_pb.ts"; 58 59// Re-export assertion comparator enums 60export { 61 NumberComparator, 62 RecordComparator, 63 StringComparator, 64} from "./gen/openstatus/monitor/v1/assertions_pb.ts"; 65 66// Re-export enums 67export { HTTPMethod } from "./gen/openstatus/monitor/v1/http_monitor_pb.ts"; 68 69export { Periodicity, Region } from "./gen/openstatus/monitor/v1/monitor_pb.ts"; 70 71export { MonitorStatus } from "./gen/openstatus/monitor/v1/monitor_pb.ts"; 72 73// Re-export request/response types 74export type { 75 CreateDNSMonitorRequest, 76 CreateDNSMonitorResponse, 77 CreateHTTPMonitorRequest, 78 CreateHTTPMonitorResponse, 79 CreateTCPMonitorRequest, 80 CreateTCPMonitorResponse, 81 DeleteMonitorRequest, 82 DeleteMonitorResponse, 83 GetMonitorStatusRequest, 84 GetMonitorStatusResponse, 85 GetMonitorSummaryRequest, 86 GetMonitorSummaryResponse, 87 ListMonitorsRequest, 88 ListMonitorsResponse, 89 RegionStatus, 90 TriggerMonitorRequest, 91 TriggerMonitorResponse, 92 UpdateDNSMonitorRequest, 93 UpdateDNSMonitorResponse, 94 UpdateHTTPMonitorRequest, 95 UpdateHTTPMonitorResponse, 96 UpdateTCPMonitorRequest, 97 UpdateTCPMonitorResponse, 98} from "./gen/openstatus/monitor/v1/service_pb.ts"; 99 100export { TimeRange } from "./gen/openstatus/monitor/v1/service_pb.ts"; 101 102// Re-export health types 103export type { 104 CheckRequest, 105 CheckResponse, 106} from "./gen/openstatus/health/v1/health_pb.ts"; 107 108export { CheckResponse_ServingStatus as ServingStatus } from "./gen/openstatus/health/v1/health_pb.ts"; 109 110// Re-export status report types 111export type { 112 StatusReport, 113 StatusReportSummary, 114 StatusReportUpdate, 115} from "./gen/openstatus/status_report/v1/status_report_pb.ts"; 116 117export { StatusReportStatus } from "./gen/openstatus/status_report/v1/status_report_pb.ts"; 118 119// Re-export status report request/response types 120export type { 121 AddStatusReportUpdateRequest, 122 AddStatusReportUpdateResponse, 123 CreateStatusReportRequest, 124 CreateStatusReportResponse, 125 DeleteStatusReportRequest, 126 DeleteStatusReportResponse, 127 GetStatusReportRequest, 128 GetStatusReportResponse, 129 ListStatusReportsRequest, 130 ListStatusReportsResponse, 131 UpdateStatusReportRequest, 132 UpdateStatusReportResponse, 133} from "./gen/openstatus/status_report/v1/service_pb.ts"; 134 135// Re-export status page types 136export type { 137 StatusPage, 138 StatusPageSummary, 139} from "./gen/openstatus/status_page/v1/status_page_pb.ts"; 140 141export { 142 OverallStatus, 143 PageAccessType, 144 PageTheme, 145} from "./gen/openstatus/status_page/v1/status_page_pb.ts"; 146 147// Re-export page component types 148export type { 149 PageComponent, 150 PageComponentGroup, 151} from "./gen/openstatus/status_page/v1/page_component_pb.ts"; 152 153export { PageComponentType } from "./gen/openstatus/status_page/v1/page_component_pb.ts"; 154 155// Re-export page subscriber types 156export type { PageSubscriber } from "./gen/openstatus/status_page/v1/page_subscriber_pb.ts"; 157 158// Re-export status page request/response types 159export type { 160 AddMonitorComponentRequest, 161 AddMonitorComponentResponse, 162 AddStaticComponentRequest, 163 AddStaticComponentResponse, 164 ComponentStatus, 165 CreateComponentGroupRequest, 166 CreateComponentGroupResponse, 167 CreateStatusPageRequest, 168 CreateStatusPageResponse, 169 DeleteComponentGroupRequest, 170 DeleteComponentGroupResponse, 171 DeleteStatusPageRequest, 172 DeleteStatusPageResponse, 173 GetOverallStatusRequest, 174 GetOverallStatusResponse, 175 GetStatusPageContentRequest, 176 GetStatusPageContentResponse, 177 GetStatusPageRequest, 178 GetStatusPageResponse, 179 ListStatusPagesRequest, 180 ListStatusPagesResponse, 181 ListSubscribersRequest, 182 ListSubscribersResponse, 183 RemoveComponentRequest, 184 RemoveComponentResponse, 185 SubscribeToPageRequest, 186 SubscribeToPageResponse, 187 UnsubscribeFromPageRequest, 188 UnsubscribeFromPageResponse, 189 UpdateComponentGroupRequest, 190 UpdateComponentGroupResponse, 191 UpdateComponentRequest, 192 UpdateComponentResponse, 193 UpdateStatusPageRequest, 194 UpdateStatusPageResponse, 195} from "./gen/openstatus/status_page/v1/service_pb.ts"; 196 197// Re-export maintenance types 198export type { 199 Maintenance, 200 MaintenanceSummary, 201} from "./gen/openstatus/maintenance/v1/maintenance_pb.ts"; 202 203// Re-export maintenance request/response types 204export type { 205 CreateMaintenanceRequest, 206 CreateMaintenanceResponse, 207 DeleteMaintenanceRequest, 208 DeleteMaintenanceResponse, 209 GetMaintenanceRequest, 210 GetMaintenanceResponse, 211 ListMaintenancesRequest, 212 ListMaintenancesResponse, 213 UpdateMaintenanceRequest, 214 UpdateMaintenanceResponse, 215} from "./gen/openstatus/maintenance/v1/service_pb.ts"; 216 217/** 218 * Default OpenStatus API URL. 219 */ 220const DEFAULT_API_URL = "https://api.openstatus.dev/rpc"; 221 222/** 223 * Creates a Connect RPC transport configured for the OpenStatus API. 224 */ 225const transport = createConnectTransport({ 226 baseUrl: process.env.OPENSTATUS_API_URL ?? DEFAULT_API_URL, 227 httpVersion: "2", 228}); 229 230/** 231 * OpenStatus API client interface. 232 * 233 * Provides access to Monitor and Health services. 234 */ 235export interface OpenStatusClient { 236 /** 237 * Monitor service namespace (v1). 238 */ 239 monitor: { 240 v1: { 241 /** 242 * MonitorService provides CRUD and operational commands for monitors. 243 * 244 * Methods: 245 * - `createHTTPMonitor` - Create a new HTTP monitor 246 * - `createTCPMonitor` - Create a new TCP monitor 247 * - `createDNSMonitor` - Create a new DNS monitor 248 * - `updateHTTPMonitor` - Update an existing HTTP monitor 249 * - `updateTCPMonitor` - Update an existing TCP monitor 250 * - `updateDNSMonitor` - Update an existing DNS monitor 251 * - `listMonitors` - List all monitors 252 * - `triggerMonitor` - Trigger an immediate check 253 * - `deleteMonitor` - Delete a monitor 254 * - `getMonitorStatus` - Get status of all regions for a monitor 255 * - `getMonitorSummary` - Get aggregated metrics for a monitor 256 */ 257 MonitorService: Client<typeof MonitorService>; 258 }; 259 }; 260 /** 261 * Health service namespace (v1). 262 */ 263 health: { 264 v1: { 265 /** 266 * HealthService provides health check endpoints. 267 * 268 * Methods: 269 * - `check` - Check API health status 270 */ 271 HealthService: Client<typeof HealthService>; 272 }; 273 }; 274 /** 275 * Status report service namespace (v1). 276 */ 277 statusReport: { 278 v1: { 279 /** 280 * StatusReportService provides CRUD operations for status reports. 281 * 282 * Methods: 283 * - `createStatusReport` - Create a new status report 284 * - `getStatusReport` - Get a status report by ID 285 * - `listStatusReports` - List all status reports 286 * - `updateStatusReport` - Update a status report 287 * - `deleteStatusReport` - Delete a status report 288 * - `addStatusReportUpdate` - Add an update to a status report 289 */ 290 StatusReportService: Client<typeof StatusReportService>; 291 }; 292 }; 293 /** 294 * Status page service namespace (v1). 295 */ 296 statusPage: { 297 v1: { 298 /** 299 * StatusPageService provides CRUD and management operations for status pages. 300 * 301 * Methods: 302 * - `createStatusPage` - Create a new status page 303 * - `getStatusPage` - Get a status page by ID 304 * - `listStatusPages` - List all status pages 305 * - `updateStatusPage` - Update a status page 306 * - `deleteStatusPage` - Delete a status page 307 * - `addMonitorComponent` - Add a monitor-based component 308 * - `addStaticComponent` - Add a static component 309 * - `removeComponent` - Remove a component 310 * - `updateComponent` - Update a component 311 * - `createComponentGroup` - Create a component group 312 * - `deleteComponentGroup` - Delete a component group 313 * - `updateComponentGroup` - Update a component group 314 * - `subscribeToPage` - Subscribe an email to a status page 315 * - `unsubscribeFromPage` - Unsubscribe from a status page 316 * - `listSubscribers` - List all subscribers 317 * - `getStatusPageContent` - Get full status page content 318 * - `getOverallStatus` - Get aggregated status 319 */ 320 StatusPageService: Client<typeof StatusPageService>; 321 }; 322 }; 323 /** 324 * Maintenance service namespace (v1). 325 */ 326 maintenance: { 327 v1: { 328 /** 329 * MaintenanceService provides CRUD operations for maintenance windows. 330 * 331 * Methods: 332 * - `createMaintenance` - Create a new maintenance window 333 * - `getMaintenance` - Get a maintenance window by ID 334 * - `listMaintenances` - List all maintenance windows 335 * - `updateMaintenance` - Update a maintenance window 336 * - `deleteMaintenance` - Delete a maintenance window 337 */ 338 MaintenanceService: Client<typeof MaintenanceService>; 339 }; 340 }; 341} 342 343/** 344 * OpenStatus SDK client. 345 * 346 * Provides access to the OpenStatus API for managing monitors and checking service health. 347 * 348 * @example 349 * ```typescript 350 * import { openstatus, Periodicity } from "@openstatus/sdk-node"; 351 * 352 * // Check API health (no auth required) 353 * const { status } = await openstatus.health.v1.HealthService.check({}); 354 * 355 * // Create a monitor (auth required) 356 * const headers = { "x-openstatus-key": `Bearer ${process.env.OPENSTATUS_API_KEY}` }; 357 * const { monitor } = await openstatus.monitor.v1.MonitorService.createHTTPMonitor({ 358 * monitor: { 359 * name: "My Website", 360 * url: "https://example.com", 361 * periodicity: Periodicity.PERIODICITY_1M, 362 * active: true, 363 * }, 364 * }, { headers }); 365 * ``` 366 */ 367export const openstatus: OpenStatusClient = { 368 monitor: { 369 v1: { 370 MonitorService: createClient(MonitorService, transport), 371 }, 372 }, 373 health: { 374 v1: { 375 HealthService: createClient(HealthService, transport), 376 }, 377 }, 378 statusReport: { 379 v1: { 380 StatusReportService: createClient(StatusReportService, transport), 381 }, 382 }, 383 statusPage: { 384 v1: { 385 StatusPageService: createClient(StatusPageService, transport), 386 }, 387 }, 388 maintenance: { 389 v1: { 390 MaintenanceService: createClient(MaintenanceService, transport), 391 }, 392 }, 393};