From 70f45af91ecdab700bddb5dceabc190922d91164 Mon Sep 17 00:00:00 2001 From: Thibault Le Ouay Ducasse Date: Fri, 12 Jun 2026 12:16:22 +0200 Subject: [PATCH] status impact, ms team notif --- README.md | 54 ++++++++++-- deno.json | 2 +- docs/notification-service.md | 24 +++++- docs/reference.md | 21 ++++- docs/status-report-service.md | 23 ++++- scripts/build_npm.ts | 2 +- .../notification/v1/providers_pb.ts | 40 ++++++++- .../openstatus/status_report/v1/service_pb.ts | 21 ++++- .../status_report/v1/status_report_pb.ts | 86 ++++++++++++++++++- src/mod.ts | 7 +- 10 files changed, 256 insertions(+), 24 deletions(-) diff --git a/README.md b/README.md index 41f251f..7f38046 100644 --- a/README.md +++ b/README.md @@ -49,8 +49,8 @@ For comprehensive documentation, see [docs/index.md](docs/index.md). ### Notifications -- **12 Providers** - Slack, Discord, Email, PagerDuty, Opsgenie, Telegram, and - more +- **13 Providers** - Slack, Discord, Email, PagerDuty, Opsgenie, Microsoft + Teams, and more - **Webhook Support** - Custom webhooks with headers for any integration - **Monitor Alerts** - Get notified when monitors go down or recover @@ -435,7 +435,7 @@ Manage incident reports with update timelines. Create a new status report. ```typescript -import { StatusReportStatus } from "@openstatus/sdk-node"; +import { PageComponentImpact, StatusReportStatus } from "@openstatus/sdk-node"; const { statusReport } = await client.statusReport.v1.StatusReportService .createStatusReport({ @@ -446,6 +446,13 @@ const { statusReport } = await client.statusReport.v1.StatusReportService pageId: "page_123", pageComponentIds: ["comp_456"], notify: true, + // Optionally set per-component impacts + componentImpacts: [ + { + pageComponentId: "comp_456", + impact: PageComponentImpact.DEGRADED_PERFORMANCE, + }, + ], }); console.log(`Status report created: ${statusReport?.id}`); @@ -514,10 +521,12 @@ const { success } = await client.statusReport.v1.StatusReportService #### `addStatusReportUpdate(request)` -Add a new update to an existing status report timeline. +Add a new update to an existing status report timeline. Components named in +`componentImpacts` are added to the report's affected set; omitted components +keep their prior impact. ```typescript -import { StatusReportStatus } from "@openstatus/sdk-node"; +import { PageComponentImpact, StatusReportStatus } from "@openstatus/sdk-node"; const { statusReport } = await client.statusReport.v1.StatusReportService .addStatusReportUpdate({ @@ -526,6 +535,9 @@ const { statusReport } = await client.statusReport.v1.StatusReportService message: "The issue has been identified as a database connection problem.", date: "2024-01-15T11:00:00Z", // optional, defaults to current time notify: true, + componentImpacts: [ + { pageComponentId: "comp_456", impact: PageComponentImpact.PARTIAL_OUTAGE }, + ], }); ``` @@ -848,8 +860,8 @@ const { success } = await client.maintenance.v1.MaintenanceService ### Notification Service -Manage notification channels for monitor alerts. Supports 12 providers including -Slack, Discord, Email, PagerDuty, and custom webhooks. +Manage notification channels for monitor alerts. Supports 13 providers including +Slack, Discord, Email, PagerDuty, Microsoft Teams, and custom webhooks. #### `createNotification(request)` @@ -1156,6 +1168,23 @@ import { OpsgenieRegion } from "@openstatus/sdk-node"; +
+Microsoft Teams + +```typescript +{ + provider: NotificationProvider.MS_TEAMS, + data: { + data: { + case: "msTeams", + value: { webhookUrl: "https://prod-00.westeurope.logic.azure.com:443/workflows/..." } + } + } +} +``` + +
+
Custom Webhook @@ -1438,6 +1467,16 @@ regions: [Region.FLY_AMS, Region.FLY_IAD, Region.KOYEB_FRA]; | `MONITORING` | Fix deployed, monitoring | | `RESOLVED` | Issue fully resolved | +#### PageComponentImpact + +| Value | Description | +| ---------------------- | -------------------------------------- | +| `UNSPECIFIED` | No impact set (legacy reports) | +| `OPERATIONAL` | Component is operational | +| `DEGRADED_PERFORMANCE` | Component performance is degraded | +| `PARTIAL_OUTAGE` | Component is partially down | +| `MAJOR_OUTAGE` | Component is down | + #### OverallStatus | Value | Description | @@ -1457,6 +1496,7 @@ regions: [Region.FLY_AMS, Region.FLY_IAD, Region.KOYEB_FRA]; | `EMAIL` | Email notification | | `GOOGLE_CHAT` | Google Chat webhook | | `GRAFANA_ONCALL` | Grafana OnCall | +| `MS_TEAMS` | Microsoft Teams | | `NTFY` | Ntfy push service | | `PAGERDUTY` | PagerDuty | | `OPSGENIE` | Opsgenie | diff --git a/deno.json b/deno.json index e632d6e..e656a03 100644 --- a/deno.json +++ b/deno.json @@ -1,6 +1,6 @@ { "name": "@openstatus/sdk-node", - "version": "0.1.6", + "version": "0.1.7", "description": "SDK for openstatus", "license": "MIT", "exports": { diff --git a/docs/notification-service.md b/docs/notification-service.md index ad6bc2f..c963680 100644 --- a/docs/notification-service.md +++ b/docs/notification-service.md @@ -2,7 +2,7 @@ # Notification Service -Manage notification channels for monitor alerts. Supports 12 providers. The +Manage notification channels for monitor alerts. Supports 13 providers. The Notification Service provides 7 RPC methods. ## Create Notification @@ -235,6 +235,28 @@ const { notification } = await client.notification.v1.NotificationService }); ``` +### Microsoft Teams + +Uses a Power Automate Workflows webhook URL. + +```typescript +const { notification } = await client.notification.v1.NotificationService + .createNotification({ + name: "Teams Alerts", + provider: NotificationProvider.MS_TEAMS, + data: { + data: { + case: "msTeams", + value: { + webhookUrl: + "https://prod-00.westeurope.logic.azure.com:443/workflows/...", + }, + }, + }, + monitorIds: ["mon_123"], + }); +``` + ### Custom Webhook ```typescript diff --git a/docs/reference.md b/docs/reference.md index dbb9f87..975d8b5 100644 --- a/docs/reference.md +++ b/docs/reference.md @@ -54,6 +54,16 @@ | `MONITORING` | Fix deployed, monitoring | | `RESOLVED` | Issue fully resolved | +### PageComponentImpact + +| Value | Description | +| ---------------------- | --------------------------------- | +| `UNSPECIFIED` | No impact set (legacy reports) | +| `OPERATIONAL` | Component is operational | +| `DEGRADED_PERFORMANCE` | Component performance is degraded | +| `PARTIAL_OUTAGE` | Component is partially down | +| `MAJOR_OUTAGE` | Component is down | + ### OverallStatus | Value | Description | @@ -73,6 +83,7 @@ | `EMAIL` | Email notification | | `GOOGLE_CHAT` | Google Chat webhook | | `GRAFANA_ONCALL` | Grafana OnCall | +| `MS_TEAMS` | Microsoft Teams | | `NTFY` | Ntfy push service | | `PAGERDUTY` | PagerDuty | | `OPSGENIE` | Opsgenie | @@ -313,7 +324,8 @@ All types and enums exported from `@openstatus/sdk-node`: ### Status Report Types -- `StatusReport`, `StatusReportSummary`, `StatusReportUpdate` +- `StatusReport`, `StatusReportSummary`, `StatusReportUpdate`, + `ComponentImpact` - `CreateStatusReportRequest`, `CreateStatusReportResponse` - `GetStatusReportRequest`, `GetStatusReportResponse` - `ListStatusReportsRequest`, `ListStatusReportsResponse` @@ -321,6 +333,7 @@ All types and enums exported from `@openstatus/sdk-node`: - `DeleteStatusReportRequest`, `DeleteStatusReportResponse` - `AddStatusReportUpdateRequest`, `AddStatusReportUpdateResponse` - `StatusReportStatus` — investigating / identified / monitoring / resolved +- `PageComponentImpact` — per-component impact set by a status report update ### Status Page Types @@ -359,9 +372,9 @@ All types and enums exported from `@openstatus/sdk-node`: - `Notification`, `NotificationSummary` - `NotificationData` -- `DiscordData`, `EmailData`, `GoogleChatData`, `GrafanaOncallData`, `NtfyData`, - `OpsgenieData`, `PagerDutyData`, `SlackData`, `SmsData`, `TelegramData`, - `WebhookData`, `WebhookHeader`, `WhatsappData` +- `DiscordData`, `EmailData`, `GoogleChatData`, `GrafanaOncallData`, + `MsTeamsData`, `NtfyData`, `OpsgenieData`, `PagerDutyData`, `SlackData`, + `SmsData`, `TelegramData`, `WebhookData`, `WebhookHeader`, `WhatsappData` - `CreateNotificationRequest`, `CreateNotificationResponse` - `GetNotificationRequest`, `GetNotificationResponse` - `ListNotificationsRequest`, `ListNotificationsResponse` diff --git a/docs/status-report-service.md b/docs/status-report-service.md index b3bcba6..dbccb5f 100644 --- a/docs/status-report-service.md +++ b/docs/status-report-service.md @@ -10,6 +10,7 @@ provides 6 RPC methods. ```typescript import { createOpenStatusClient, + PageComponentImpact, StatusReportStatus, } from "@openstatus/sdk-node"; @@ -26,17 +27,29 @@ const { statusReport } = await client.statusReport.v1.StatusReportService 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. +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 { StatusReportStatus } from "@openstatus/sdk-node"; +import { PageComponentImpact, StatusReportStatus } from "@openstatus/sdk-node"; const { statusReport } = await client.statusReport.v1.StatusReportService .addStatusReportUpdate({ @@ -45,6 +58,12 @@ const { statusReport } = await client.statusReport.v1.StatusReportService 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, + }, + ], }); ``` diff --git a/scripts/build_npm.ts b/scripts/build_npm.ts index 626e591..8db4ea9 100644 --- a/scripts/build_npm.ts +++ b/scripts/build_npm.ts @@ -12,7 +12,7 @@ await build({ package: { // package.json properties name: "@openstatus/sdk-node", - version: "0.1.6", + version: "0.1.7", description: "SDK for openstatus.", license: "MIT", repository: { diff --git a/src/gen/openstatus/notification/v1/providers_pb.ts b/src/gen/openstatus/notification/v1/providers_pb.ts index 027593a..b0da9a8 100644 --- a/src/gen/openstatus/notification/v1/providers_pb.ts +++ b/src/gen/openstatus/notification/v1/providers_pb.ts @@ -17,7 +17,7 @@ import type { Message } from "@bufbuild/protobuf"; */ export const file_openstatus_notification_v1_providers: GenFile = /*@__PURE__*/ fileDesc( - "CipvcGVuc3RhdHVzL25vdGlmaWNhdGlvbi92MS9wcm92aWRlcnMucHJvdG8SGm9wZW5zdGF0dXMubm90aWZpY2F0aW9uLnYxIlsKC0Rpc2NvcmREYXRhEkwKC3dlYmhvb2tfdXJsGAEgASgJQje6Ryw6KhIoaHR0cHM6Ly9kaXNjb3JkLmNvbS9hcGkvd2ViaG9va3MvMTIzL2FiY7pIBXIDiAEBIj4KCUVtYWlsRGF0YRIxCgVlbWFpbBgBIAEoCUIiukcYOhYSFG9wcy10ZWFtQGV4YW1wbGUuY29tukgEcgJgASIvCg5Hb29nbGVDaGF0RGF0YRIdCgt3ZWJob29rX3VybBgBIAEoCUIIukgFcgOIAQEiMgoRR3JhZmFuYU9uY2FsbERhdGESHQoLd2ViaG9va191cmwYASABKAlCCLpIBXIDiAEBImwKCE50ZnlEYXRhEi4KBXRvcGljGAEgASgJQh+6RxU6ExIRb3BlbnN0YXR1cy1hbGVydHO6SARyAhABEhIKCnNlcnZlcl91cmwYAiABKAkSEgoFdG9rZW4YAyABKAlIAIgBAUIICgZfdG9rZW4iTAoNUGFnZXJEdXR5RGF0YRI7Cg9pbnRlZ3JhdGlvbl9rZXkYASABKAlCIrpHGDoWEhRhMWIyYzNkNGU1ZjZnN2g4aTlqMLpIBHICEAEibgoMT3BzZ2VuaWVEYXRhEhgKB2FwaV9rZXkYASABKAlCB7pIBHICEAESRAoGcmVnaW9uGAIgASgOMioub3BlbnN0YXR1cy5ub3RpZmljYXRpb24udjEuT3BzZ2VuaWVSZWdpb25CCLpIBYIBAhABIl0KCVNsYWNrRGF0YRJQCgt3ZWJob29rX3VybBgBIAEoCUI7ukcwOi4SLGh0dHBzOi8vaG9va3Muc2xhY2suY29tL3NlcnZpY2VzL1QwMC9CMDAveHh4ukgFcgOIAQEiOwoHU21zRGF0YRIwCgxwaG9uZV9udW1iZXIYASABKAlCGrpHEDoOEgwrMTQxNTU1NTEyMzS6SARyAhABIj0KDFRlbGVncmFtRGF0YRItCgdjaGF0X2lkGAEgASgJQhy6RxI6EBIOLTEwMDEyMzQ1Njc4OTC6SARyAhABIjQKDVdlYmhvb2tIZWFkZXISFAoDa2V5GAEgASgJQge6SARyAhABEg0KBXZhbHVlGAIgASgJIpcBCgtXZWJob29rRGF0YRJMCghlbmRwb2ludBgBIAEoCUI6ukcvOi0SK2h0dHBzOi8vYXBpLmV4YW1wbGUuY29tL3dlYmhvb2tzL29wZW5zdGF0dXO6SAVyA4gBARI6CgdoZWFkZXJzGAIgAygLMikub3BlbnN0YXR1cy5ub3RpZmljYXRpb24udjEuV2ViaG9va0hlYWRlciItCgxXaGF0c2FwcERhdGESHQoMcGhvbmVfbnVtYmVyGAEgASgJQge6SARyAhABIvIFChBOb3RpZmljYXRpb25EYXRhEjoKB2Rpc2NvcmQYASABKAsyJy5vcGVuc3RhdHVzLm5vdGlmaWNhdGlvbi52MS5EaXNjb3JkRGF0YUgAEjYKBWVtYWlsGAIgASgLMiUub3BlbnN0YXR1cy5ub3RpZmljYXRpb24udjEuRW1haWxEYXRhSAASQQoLZ29vZ2xlX2NoYXQYAyABKAsyKi5vcGVuc3RhdHVzLm5vdGlmaWNhdGlvbi52MS5Hb29nbGVDaGF0RGF0YUgAEkcKDmdyYWZhbmFfb25jYWxsGAQgASgLMi0ub3BlbnN0YXR1cy5ub3RpZmljYXRpb24udjEuR3JhZmFuYU9uY2FsbERhdGFIABI0CgRudGZ5GAUgASgLMiQub3BlbnN0YXR1cy5ub3RpZmljYXRpb24udjEuTnRmeURhdGFIABI+CglwYWdlcmR1dHkYBiABKAsyKS5vcGVuc3RhdHVzLm5vdGlmaWNhdGlvbi52MS5QYWdlckR1dHlEYXRhSAASPAoIb3BzZ2VuaWUYByABKAsyKC5vcGVuc3RhdHVzLm5vdGlmaWNhdGlvbi52MS5PcHNnZW5pZURhdGFIABI2CgVzbGFjaxgIIAEoCzIlLm9wZW5zdGF0dXMubm90aWZpY2F0aW9uLnYxLlNsYWNrRGF0YUgAEjIKA3NtcxgJIAEoCzIjLm9wZW5zdGF0dXMubm90aWZpY2F0aW9uLnYxLlNtc0RhdGFIABI8Cgh0ZWxlZ3JhbRgKIAEoCzIoLm9wZW5zdGF0dXMubm90aWZpY2F0aW9uLnYxLlRlbGVncmFtRGF0YUgAEjoKB3dlYmhvb2sYCyABKAsyJy5vcGVuc3RhdHVzLm5vdGlmaWNhdGlvbi52MS5XZWJob29rRGF0YUgAEjwKCHdoYXRzYXBwGAwgASgLMigub3BlbnN0YXR1cy5ub3RpZmljYXRpb24udjEuV2hhdHNhcHBEYXRhSABCBgoEZGF0YSrmAwoUTm90aWZpY2F0aW9uUHJvdmlkZXISJQohTk9USUZJQ0FUSU9OX1BST1ZJREVSX1VOU1BFQ0lGSUVEEAASIQodTk9USUZJQ0FUSU9OX1BST1ZJREVSX0RJU0NPUkQQARIfChtOT1RJRklDQVRJT05fUFJPVklERVJfRU1BSUwQAhIlCiFOT1RJRklDQVRJT05fUFJPVklERVJfR09PR0xFX0NIQVQQAxIoCiROT1RJRklDQVRJT05fUFJPVklERVJfR1JBRkFOQV9PTkNBTEwQBBIeChpOT1RJRklDQVRJT05fUFJPVklERVJfTlRGWRAFEiMKH05PVElGSUNBVElPTl9QUk9WSURFUl9QQUdFUkRVVFkQBhIiCh5OT1RJRklDQVRJT05fUFJPVklERVJfT1BTR0VOSUUQBxIfChtOT1RJRklDQVRJT05fUFJPVklERVJfU0xBQ0sQCBIdChlOT1RJRklDQVRJT05fUFJPVklERVJfU01TEAkSIgoeTk9USUZJQ0FUSU9OX1BST1ZJREVSX1RFTEVHUkFNEAoSIQodTk9USUZJQ0FUSU9OX1BST1ZJREVSX1dFQkhPT0sQCxIiCh5OT1RJRklDQVRJT05fUFJPVklERVJfV0hBVFNBUFAQDCphCg5PcHNnZW5pZVJlZ2lvbhIfChtPUFNHRU5JRV9SRUdJT05fVU5TUEVDSUZJRUQQABIWChJPUFNHRU5JRV9SRUdJT05fVVMQARIWChJPUFNHRU5JRV9SRUdJT05fRVUQAkJdWltnaXRodWIuY29tL29wZW5zdGF0dXNocS9vcGVuc3RhdHVzL3BhY2thZ2VzL3Byb3RvL29wZW5zdGF0dXMvbm90aWZpY2F0aW9uL3YxO25vdGlmaWNhdGlvbnYxYgZwcm90bzM", + "CipvcGVuc3RhdHVzL25vdGlmaWNhdGlvbi92MS9wcm92aWRlcnMucHJvdG8SGm9wZW5zdGF0dXMubm90aWZpY2F0aW9uLnYxIlsKC0Rpc2NvcmREYXRhEkwKC3dlYmhvb2tfdXJsGAEgASgJQje6Ryw6KhIoaHR0cHM6Ly9kaXNjb3JkLmNvbS9hcGkvd2ViaG9va3MvMTIzL2FiY7pIBXIDiAEBIj4KCUVtYWlsRGF0YRIxCgVlbWFpbBgBIAEoCUIiukcYOhYSFG9wcy10ZWFtQGV4YW1wbGUuY29tukgEcgJgASIvCg5Hb29nbGVDaGF0RGF0YRIdCgt3ZWJob29rX3VybBgBIAEoCUIIukgFcgOIAQEiMgoRR3JhZmFuYU9uY2FsbERhdGESHQoLd2ViaG9va191cmwYASABKAlCCLpIBXIDiAEBImwKCE50ZnlEYXRhEi4KBXRvcGljGAEgASgJQh+6RxU6ExIRb3BlbnN0YXR1cy1hbGVydHO6SARyAhABEhIKCnNlcnZlcl91cmwYAiABKAkSEgoFdG9rZW4YAyABKAlIAIgBAUIICgZfdG9rZW4iTAoNUGFnZXJEdXR5RGF0YRI7Cg9pbnRlZ3JhdGlvbl9rZXkYASABKAlCIrpHGDoWEhRhMWIyYzNkNGU1ZjZnN2g4aTlqMLpIBHICEAEibgoMT3BzZ2VuaWVEYXRhEhgKB2FwaV9rZXkYASABKAlCB7pIBHICEAESRAoGcmVnaW9uGAIgASgOMioub3BlbnN0YXR1cy5ub3RpZmljYXRpb24udjEuT3BzZ2VuaWVSZWdpb25CCLpIBYIBAhABIl0KCVNsYWNrRGF0YRJQCgt3ZWJob29rX3VybBgBIAEoCUI7ukcwOi4SLGh0dHBzOi8vaG9va3Muc2xhY2suY29tL3NlcnZpY2VzL1QwMC9CMDAveHh4ukgFcgOIAQEiOwoHU21zRGF0YRIwCgxwaG9uZV9udW1iZXIYASABKAlCGrpHEDoOEgwrMTQxNTU1NTEyMzS6SARyAhABIj0KDFRlbGVncmFtRGF0YRItCgdjaGF0X2lkGAEgASgJQhy6RxI6EBIOLTEwMDEyMzQ1Njc4OTC6SARyAhABIjQKDVdlYmhvb2tIZWFkZXISFAoDa2V5GAEgASgJQge6SARyAhABEg0KBXZhbHVlGAIgASgJIpcBCgtXZWJob29rRGF0YRJMCghlbmRwb2ludBgBIAEoCUI6ukcvOi0SK2h0dHBzOi8vYXBpLmV4YW1wbGUuY29tL3dlYmhvb2tzL29wZW5zdGF0dXO6SAVyA4gBARI6CgdoZWFkZXJzGAIgAygLMikub3BlbnN0YXR1cy5ub3RpZmljYXRpb24udjEuV2ViaG9va0hlYWRlciItCgxXaGF0c2FwcERhdGESHQoMcGhvbmVfbnVtYmVyGAEgASgJQge6SARyAhABIowBCgtNc1RlYW1zRGF0YRJ9Cgt3ZWJob29rX3VybBgBIAEoCUJoukddOlsSWWh0dHBzOi8vcHJvZC0wMC53ZXN0ZXVyb3BlLmxvZ2ljLmF6dXJlLmNvbTo0NDMvd29ya2Zsb3dzL2FiYy90cmlnZ2Vycy9tYW51YWwvcGF0aHMvaW52b2tlukgFcgOIAQEirwYKEE5vdGlmaWNhdGlvbkRhdGESOgoHZGlzY29yZBgBIAEoCzInLm9wZW5zdGF0dXMubm90aWZpY2F0aW9uLnYxLkRpc2NvcmREYXRhSAASNgoFZW1haWwYAiABKAsyJS5vcGVuc3RhdHVzLm5vdGlmaWNhdGlvbi52MS5FbWFpbERhdGFIABJBCgtnb29nbGVfY2hhdBgDIAEoCzIqLm9wZW5zdGF0dXMubm90aWZpY2F0aW9uLnYxLkdvb2dsZUNoYXREYXRhSAASRwoOZ3JhZmFuYV9vbmNhbGwYBCABKAsyLS5vcGVuc3RhdHVzLm5vdGlmaWNhdGlvbi52MS5HcmFmYW5hT25jYWxsRGF0YUgAEjQKBG50ZnkYBSABKAsyJC5vcGVuc3RhdHVzLm5vdGlmaWNhdGlvbi52MS5OdGZ5RGF0YUgAEj4KCXBhZ2VyZHV0eRgGIAEoCzIpLm9wZW5zdGF0dXMubm90aWZpY2F0aW9uLnYxLlBhZ2VyRHV0eURhdGFIABI8CghvcHNnZW5pZRgHIAEoCzIoLm9wZW5zdGF0dXMubm90aWZpY2F0aW9uLnYxLk9wc2dlbmllRGF0YUgAEjYKBXNsYWNrGAggASgLMiUub3BlbnN0YXR1cy5ub3RpZmljYXRpb24udjEuU2xhY2tEYXRhSAASMgoDc21zGAkgASgLMiMub3BlbnN0YXR1cy5ub3RpZmljYXRpb24udjEuU21zRGF0YUgAEjwKCHRlbGVncmFtGAogASgLMigub3BlbnN0YXR1cy5ub3RpZmljYXRpb24udjEuVGVsZWdyYW1EYXRhSAASOgoHd2ViaG9vaxgLIAEoCzInLm9wZW5zdGF0dXMubm90aWZpY2F0aW9uLnYxLldlYmhvb2tEYXRhSAASPAoId2hhdHNhcHAYDCABKAsyKC5vcGVuc3RhdHVzLm5vdGlmaWNhdGlvbi52MS5XaGF0c2FwcERhdGFIABI7Cghtc190ZWFtcxgNIAEoCzInLm9wZW5zdGF0dXMubm90aWZpY2F0aW9uLnYxLk1zVGVhbXNEYXRhSABCBgoEZGF0YSqKBAoUTm90aWZpY2F0aW9uUHJvdmlkZXISJQohTk9USUZJQ0FUSU9OX1BST1ZJREVSX1VOU1BFQ0lGSUVEEAASIQodTk9USUZJQ0FUSU9OX1BST1ZJREVSX0RJU0NPUkQQARIfChtOT1RJRklDQVRJT05fUFJPVklERVJfRU1BSUwQAhIlCiFOT1RJRklDQVRJT05fUFJPVklERVJfR09PR0xFX0NIQVQQAxIoCiROT1RJRklDQVRJT05fUFJPVklERVJfR1JBRkFOQV9PTkNBTEwQBBIeChpOT1RJRklDQVRJT05fUFJPVklERVJfTlRGWRAFEiMKH05PVElGSUNBVElPTl9QUk9WSURFUl9QQUdFUkRVVFkQBhIiCh5OT1RJRklDQVRJT05fUFJPVklERVJfT1BTR0VOSUUQBxIfChtOT1RJRklDQVRJT05fUFJPVklERVJfU0xBQ0sQCBIdChlOT1RJRklDQVRJT05fUFJPVklERVJfU01TEAkSIgoeTk9USUZJQ0FUSU9OX1BST1ZJREVSX1RFTEVHUkFNEAoSIQodTk9USUZJQ0FUSU9OX1BST1ZJREVSX1dFQkhPT0sQCxIiCh5OT1RJRklDQVRJT05fUFJPVklERVJfV0hBVFNBUFAQDBIiCh5OT1RJRklDQVRJT05fUFJPVklERVJfTVNfVEVBTVMQDSphCg5PcHNnZW5pZVJlZ2lvbhIfChtPUFNHRU5JRV9SRUdJT05fVU5TUEVDSUZJRUQQABIWChJPUFNHRU5JRV9SRUdJT05fVVMQARIWChJPUFNHRU5JRV9SRUdJT05fRVUQAkJdWltnaXRodWIuY29tL29wZW5zdGF0dXNocS9vcGVuc3RhdHVzL3BhY2thZ2VzL3Byb3RvL29wZW5zdGF0dXMvbm90aWZpY2F0aW9uL3YxO25vdGlmaWNhdGlvbnYxYgZwcm90bzM", [file_buf_validate_validate, file_gnostic_openapi_v3_annotations], ); @@ -345,6 +345,27 @@ export type WhatsappData = export const WhatsappDataSchema: GenMessage = /*@__PURE__*/ messageDesc(file_openstatus_notification_v1_providers, 12); +/** + * MsTeamsData contains configuration for Microsoft Teams notifications. + * + * @generated from message openstatus.notification.v1.MsTeamsData + */ +export type MsTeamsData = Message<"openstatus.notification.v1.MsTeamsData"> & { + /** + * Microsoft Teams webhook URL (Power Automate Workflows). + * + * @generated from field: string webhook_url = 1; + */ + webhookUrl: string; +}; + +/** + * Describes the message openstatus.notification.v1.MsTeamsData. + * Use `create(MsTeamsDataSchema)` to create a new message. + */ +export const MsTeamsDataSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_openstatus_notification_v1_providers, 13); + /** * NotificationData is a union of provider-specific configuration. * @@ -452,6 +473,14 @@ export type NotificationData = */ value: WhatsappData; case: "whatsapp"; + } | { + /** + * Microsoft Teams configuration. + * + * @generated from field: openstatus.notification.v1.MsTeamsData ms_teams = 13; + */ + value: MsTeamsData; + case: "msTeams"; } | { case: undefined; value?: undefined }; }; @@ -462,7 +491,7 @@ export type NotificationData = export const NotificationDataSchema: GenMessage< NotificationData > = /*@__PURE__*/ - messageDesc(file_openstatus_notification_v1_providers, 13); + messageDesc(file_openstatus_notification_v1_providers, 14); /** * NotificationProvider represents the supported notification channel types. @@ -560,6 +589,13 @@ export enum NotificationProvider { * @generated from enum value: NOTIFICATION_PROVIDER_WHATSAPP = 12; */ WHATSAPP = 12, + + /** + * Microsoft Teams notification. + * + * @generated from enum value: NOTIFICATION_PROVIDER_MS_TEAMS = 13; + */ + MS_TEAMS = 13, } /** diff --git a/src/gen/openstatus/status_report/v1/service_pb.ts b/src/gen/openstatus/status_report/v1/service_pb.ts index 9fe1ac2..2063afc 100644 --- a/src/gen/openstatus/status_report/v1/service_pb.ts +++ b/src/gen/openstatus/status_report/v1/service_pb.ts @@ -15,6 +15,7 @@ import { import { file_buf_validate_validate } from "../../../buf/validate/validate_pb.ts"; import { file_gnostic_openapi_v3_annotations } from "../../../gnostic/openapi/v3/annotations_pb.ts"; import type { + ComponentImpact, StatusReport, StatusReportStatus, StatusReportSummary, @@ -27,7 +28,7 @@ import type { Message } from "@bufbuild/protobuf"; */ export const file_openstatus_status_report_v1_service: GenFile = /*@__PURE__*/ fileDesc( - "CilvcGVuc3RhdHVzL3N0YXR1c19yZXBvcnQvdjEvc2VydmljZS5wcm90bxIbb3BlbnN0YXR1cy5zdGF0dXNfcmVwb3J0LnYxIsUDChlDcmVhdGVTdGF0dXNSZXBvcnRSZXF1ZXN0EjoKBXRpdGxlGAEgASgJQiu6RyE6HxIdQVBJIERlZ3JhZGF0aW9uIEludmVzdGlnYXRpb266SARyAhABEkkKBnN0YXR1cxgCIAEoDjIvLm9wZW5zdGF0dXMuc3RhdHVzX3JlcG9ydC52MS5TdGF0dXNSZXBvcnRTdGF0dXNCCLpIBYIBAhABElUKB21lc3NhZ2UYAyABKAlCRLpHOjo4EjZXZSBhcmUgaW52ZXN0aWdhdGluZyByZXBvcnRzIG9mIGluY3JlYXNlZCBBUEkgbGF0ZW5jeS66SARyAhABEnQKBGRhdGUYBCABKAlCZrpHGDoWEhQyMDI0LTAzLTE1VDEwOjMwOjAwWrpISHJGMkReXGR7NH0tXGR7Mn0tXGR7Mn1UXGR7Mn06XGR7Mn06XGR7Mn0oXC5cZHsxLDl9KT8oWnxbKy1dXGR7Mn06XGR7Mn0pJBIYCgdwYWdlX2lkGAUgASgJQge6SARyAhABEhoKEnBhZ2VfY29tcG9uZW50X2lkcxgGIAMoCRITCgZub3RpZnkYByABKAhIAIgBAUIJCgdfbm90aWZ5Il4KGkNyZWF0ZVN0YXR1c1JlcG9ydFJlc3BvbnNlEkAKDXN0YXR1c19yZXBvcnQYASABKAsyKS5vcGVuc3RhdHVzLnN0YXR1c19yZXBvcnQudjEuU3RhdHVzUmVwb3J0Ii0KFkdldFN0YXR1c1JlcG9ydFJlcXVlc3QSEwoCaWQYASABKAlCB7pIBHICEAEiWwoXR2V0U3RhdHVzUmVwb3J0UmVzcG9uc2USQAoNc3RhdHVzX3JlcG9ydBgBIAEoCzIpLm9wZW5zdGF0dXMuc3RhdHVzX3JlcG9ydC52MS5TdGF0dXNSZXBvcnQirwEKGExpc3RTdGF0dXNSZXBvcnRzUmVxdWVzdBIdCgVsaW1pdBgBIAEoBUIJukgGGgQYZCgBSACIAQESHAoGb2Zmc2V0GAIgASgFQge6SAQaAigASAGIAQESQQoIc3RhdHVzZXMYAyADKA4yLy5vcGVuc3RhdHVzLnN0YXR1c19yZXBvcnQudjEuU3RhdHVzUmVwb3J0U3RhdHVzQggKBl9saW1pdEIJCgdfb2Zmc2V0InkKGUxpc3RTdGF0dXNSZXBvcnRzUmVzcG9uc2USSAoOc3RhdHVzX3JlcG9ydHMYASADKAsyMC5vcGVuc3RhdHVzLnN0YXR1c19yZXBvcnQudjEuU3RhdHVzUmVwb3J0U3VtbWFyeRISCgp0b3RhbF9zaXplGAIgASgFIrABChlVcGRhdGVTdGF0dXNSZXBvcnRSZXF1ZXN0EhMKAmlkGAEgASgJQge6SARyAhABEhIKBXRpdGxlGAIgASgJSACIAQESGgoScGFnZV9jb21wb25lbnRfaWRzGAMgAygJEiYKGXVwZGF0ZV9wYWdlX2NvbXBvbmVudF9pZHMYBCABKAhIAYgBAUIICgZfdGl0bGVCHAoaX3VwZGF0ZV9wYWdlX2NvbXBvbmVudF9pZHMiXgoaVXBkYXRlU3RhdHVzUmVwb3J0UmVzcG9uc2USQAoNc3RhdHVzX3JlcG9ydBgBIAEoCzIpLm9wZW5zdGF0dXMuc3RhdHVzX3JlcG9ydC52MS5TdGF0dXNSZXBvcnQiMAoZRGVsZXRlU3RhdHVzUmVwb3J0UmVxdWVzdBITCgJpZBgBIAEoCUIHukgEcgIQASItChpEZWxldGVTdGF0dXNSZXBvcnRSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIq8CChxBZGRTdGF0dXNSZXBvcnRVcGRhdGVSZXF1ZXN0EiEKEHN0YXR1c19yZXBvcnRfaWQYASABKAlCB7pIBHICEAESSQoGc3RhdHVzGAIgASgOMi8ub3BlbnN0YXR1cy5zdGF0dXNfcmVwb3J0LnYxLlN0YXR1c1JlcG9ydFN0YXR1c0IIukgFggECEAESGAoHbWVzc2FnZRgDIAEoCUIHukgEcgIQARJeCgRkYXRlGAQgASgJQku6SEhyRjJEXlxkezR9LVxkezJ9LVxkezJ9VFxkezJ9OlxkezJ9OlxkezJ9KFwuXGR7MSw5fSk/KFp8WystXVxkezJ9OlxkezJ9KSRIAIgBARITCgZub3RpZnkYBSABKAhIAYgBAUIHCgVfZGF0ZUIJCgdfbm90aWZ5ImEKHUFkZFN0YXR1c1JlcG9ydFVwZGF0ZVJlc3BvbnNlEkAKDXN0YXR1c19yZXBvcnQYASABKAsyKS5vcGVuc3RhdHVzLnN0YXR1c19yZXBvcnQudjEuU3RhdHVzUmVwb3J0Mr8LChNTdGF0dXNSZXBvcnRTZXJ2aWNlEs4DChJDcmVhdGVTdGF0dXNSZXBvcnQSNi5vcGVuc3RhdHVzLnN0YXR1c19yZXBvcnQudjEuQ3JlYXRlU3RhdHVzUmVwb3J0UmVxdWVzdBo3Lm9wZW5zdGF0dXMuc3RhdHVzX3JlcG9ydC52MS5DcmVhdGVTdGF0dXNSZXBvcnRSZXNwb25zZSLGArpHwgIavwJDcmVhdGVzIGEgbmV3IHN0YXR1cyByZXBvcnQgd2l0aCBhbiBpbml0aWFsIHVwZGF0ZSBlbnRyeS4gVGhlIHJlcG9ydCBpcyBhc3NvY2lhdGVkIHdpdGggYSBzdGF0dXMgcGFnZSBhbmQgb3B0aW9uYWxseSBzcGVjaWZpYyBwYWdlIGNvbXBvbmVudHMuIEFuIGluaXRpYWwgU3RhdHVzUmVwb3J0VXBkYXRlIGlzIGNyZWF0ZWQgYXV0b21hdGljYWxseSB3aXRoIHRoZSBwcm92aWRlZCBzdGF0dXMsIG1lc3NhZ2UsIGFuZCBkYXRlLiBJZiBub3RpZnkgaXMgdHJ1ZSwgc3Vic2NyaWJlcnMgb2YgdGhlIGFzc29jaWF0ZWQgcGFnZSBhcmUgbm90aWZpZWQgYnkgZW1haWwuEoEBCg9HZXRTdGF0dXNSZXBvcnQSMy5vcGVuc3RhdHVzLnN0YXR1c19yZXBvcnQudjEuR2V0U3RhdHVzUmVwb3J0UmVxdWVzdBo0Lm9wZW5zdGF0dXMuc3RhdHVzX3JlcG9ydC52MS5HZXRTdGF0dXNSZXBvcnRSZXNwb25zZSIDkAIBEocBChFMaXN0U3RhdHVzUmVwb3J0cxI1Lm9wZW5zdGF0dXMuc3RhdHVzX3JlcG9ydC52MS5MaXN0U3RhdHVzUmVwb3J0c1JlcXVlc3QaNi5vcGVuc3RhdHVzLnN0YXR1c19yZXBvcnQudjEuTGlzdFN0YXR1c1JlcG9ydHNSZXNwb25zZSIDkAIBEoUBChJVcGRhdGVTdGF0dXNSZXBvcnQSNi5vcGVuc3RhdHVzLnN0YXR1c19yZXBvcnQudjEuVXBkYXRlU3RhdHVzUmVwb3J0UmVxdWVzdBo3Lm9wZW5zdGF0dXMuc3RhdHVzX3JlcG9ydC52MS5VcGRhdGVTdGF0dXNSZXBvcnRSZXNwb25zZRKFAQoSRGVsZXRlU3RhdHVzUmVwb3J0EjYub3BlbnN0YXR1cy5zdGF0dXNfcmVwb3J0LnYxLkRlbGV0ZVN0YXR1c1JlcG9ydFJlcXVlc3QaNy5vcGVuc3RhdHVzLnN0YXR1c19yZXBvcnQudjEuRGVsZXRlU3RhdHVzUmVwb3J0UmVzcG9uc2USuAMKFUFkZFN0YXR1c1JlcG9ydFVwZGF0ZRI5Lm9wZW5zdGF0dXMuc3RhdHVzX3JlcG9ydC52MS5BZGRTdGF0dXNSZXBvcnRVcGRhdGVSZXF1ZXN0Gjoub3BlbnN0YXR1cy5zdGF0dXNfcmVwb3J0LnYxLkFkZFN0YXR1c1JlcG9ydFVwZGF0ZVJlc3BvbnNlIqcCukejAhqgAkFkZHMgYSBuZXcgdXBkYXRlIGVudHJ5IHRvIGFuIGV4aXN0aW5nIHN0YXR1cyByZXBvcnQgYW5kIHRyYW5zaXRpb25zIHRoZSByZXBvcnQgdG8gdGhlIHNwZWNpZmllZCBzdGF0dXMuIFN0YXR1cyByZXBvcnRzIGZvbGxvdyBhIGxpZmVjeWNsZTogaW52ZXN0aWdhdGluZyAtPiBpZGVudGlmaWVkIC0+IG1vbml0b3JpbmcgLT4gcmVzb2x2ZWQuIElmIG5vdGlmeSBpcyB0cnVlLCBzdWJzY3JpYmVycyBvZiB0aGUgYXNzb2NpYXRlZCBwYWdlIGFyZSBub3RpZmllZCBieSBlbWFpbCBhYm91dCB0aGUgdXBkYXRlLkJeWlxnaXRodWIuY29tL29wZW5zdGF0dXNocS9vcGVuc3RhdHVzL3BhY2thZ2VzL3Byb3RvL29wZW5zdGF0dXMvc3RhdHVzX3JlcG9ydC92MTtzdGF0dXNyZXBvcnR2MWIGcHJvdG8z", + "CilvcGVuc3RhdHVzL3N0YXR1c19yZXBvcnQvdjEvc2VydmljZS5wcm90bxIbb3BlbnN0YXR1cy5zdGF0dXNfcmVwb3J0LnYxIo4EChlDcmVhdGVTdGF0dXNSZXBvcnRSZXF1ZXN0EjoKBXRpdGxlGAEgASgJQiu6RyE6HxIdQVBJIERlZ3JhZGF0aW9uIEludmVzdGlnYXRpb266SARyAhABEkkKBnN0YXR1cxgCIAEoDjIvLm9wZW5zdGF0dXMuc3RhdHVzX3JlcG9ydC52MS5TdGF0dXNSZXBvcnRTdGF0dXNCCLpIBYIBAhABElUKB21lc3NhZ2UYAyABKAlCRLpHOjo4EjZXZSBhcmUgaW52ZXN0aWdhdGluZyByZXBvcnRzIG9mIGluY3JlYXNlZCBBUEkgbGF0ZW5jeS66SARyAhABEnQKBGRhdGUYBCABKAlCZrpHGDoWEhQyMDI0LTAzLTE1VDEwOjMwOjAwWrpISHJGMkReXGR7NH0tXGR7Mn0tXGR7Mn1UXGR7Mn06XGR7Mn06XGR7Mn0oXC5cZHsxLDl9KT8oWnxbKy1dXGR7Mn06XGR7Mn0pJBIYCgdwYWdlX2lkGAUgASgJQge6SARyAhABEhoKEnBhZ2VfY29tcG9uZW50X2lkcxgGIAMoCRITCgZub3RpZnkYByABKAhIAIgBARJHChFjb21wb25lbnRfaW1wYWN0cxgIIAMoCzIsLm9wZW5zdGF0dXMuc3RhdHVzX3JlcG9ydC52MS5Db21wb25lbnRJbXBhY3RCCQoHX25vdGlmeSJeChpDcmVhdGVTdGF0dXNSZXBvcnRSZXNwb25zZRJACg1zdGF0dXNfcmVwb3J0GAEgASgLMikub3BlbnN0YXR1cy5zdGF0dXNfcmVwb3J0LnYxLlN0YXR1c1JlcG9ydCItChZHZXRTdGF0dXNSZXBvcnRSZXF1ZXN0EhMKAmlkGAEgASgJQge6SARyAhABIlsKF0dldFN0YXR1c1JlcG9ydFJlc3BvbnNlEkAKDXN0YXR1c19yZXBvcnQYASABKAsyKS5vcGVuc3RhdHVzLnN0YXR1c19yZXBvcnQudjEuU3RhdHVzUmVwb3J0Iq8BChhMaXN0U3RhdHVzUmVwb3J0c1JlcXVlc3QSHQoFbGltaXQYASABKAVCCbpIBhoEGGQoAUgAiAEBEhwKBm9mZnNldBgCIAEoBUIHukgEGgIoAEgBiAEBEkEKCHN0YXR1c2VzGAMgAygOMi8ub3BlbnN0YXR1cy5zdGF0dXNfcmVwb3J0LnYxLlN0YXR1c1JlcG9ydFN0YXR1c0IICgZfbGltaXRCCQoHX29mZnNldCJ5ChlMaXN0U3RhdHVzUmVwb3J0c1Jlc3BvbnNlEkgKDnN0YXR1c19yZXBvcnRzGAEgAygLMjAub3BlbnN0YXR1cy5zdGF0dXNfcmVwb3J0LnYxLlN0YXR1c1JlcG9ydFN1bW1hcnkSEgoKdG90YWxfc2l6ZRgCIAEoBSKwAQoZVXBkYXRlU3RhdHVzUmVwb3J0UmVxdWVzdBITCgJpZBgBIAEoCUIHukgEcgIQARISCgV0aXRsZRgCIAEoCUgAiAEBEhoKEnBhZ2VfY29tcG9uZW50X2lkcxgDIAMoCRImChl1cGRhdGVfcGFnZV9jb21wb25lbnRfaWRzGAQgASgISAGIAQFCCAoGX3RpdGxlQhwKGl91cGRhdGVfcGFnZV9jb21wb25lbnRfaWRzIl4KGlVwZGF0ZVN0YXR1c1JlcG9ydFJlc3BvbnNlEkAKDXN0YXR1c19yZXBvcnQYASABKAsyKS5vcGVuc3RhdHVzLnN0YXR1c19yZXBvcnQudjEuU3RhdHVzUmVwb3J0IjAKGURlbGV0ZVN0YXR1c1JlcG9ydFJlcXVlc3QSEwoCaWQYASABKAlCB7pIBHICEAEiLQoaRGVsZXRlU3RhdHVzUmVwb3J0UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCL4AgocQWRkU3RhdHVzUmVwb3J0VXBkYXRlUmVxdWVzdBIhChBzdGF0dXNfcmVwb3J0X2lkGAEgASgJQge6SARyAhABEkkKBnN0YXR1cxgCIAEoDjIvLm9wZW5zdGF0dXMuc3RhdHVzX3JlcG9ydC52MS5TdGF0dXNSZXBvcnRTdGF0dXNCCLpIBYIBAhABEhgKB21lc3NhZ2UYAyABKAlCB7pIBHICEAESXgoEZGF0ZRgEIAEoCUJLukhIckYyRF5cZHs0fS1cZHsyfS1cZHsyfVRcZHsyfTpcZHsyfTpcZHsyfShcLlxkezEsOX0pPyhafFsrLV1cZHsyfTpcZHsyfSkkSACIAQESEwoGbm90aWZ5GAUgASgISAGIAQESRwoRY29tcG9uZW50X2ltcGFjdHMYBiADKAsyLC5vcGVuc3RhdHVzLnN0YXR1c19yZXBvcnQudjEuQ29tcG9uZW50SW1wYWN0QgcKBV9kYXRlQgkKB19ub3RpZnkiYQodQWRkU3RhdHVzUmVwb3J0VXBkYXRlUmVzcG9uc2USQAoNc3RhdHVzX3JlcG9ydBgBIAEoCzIpLm9wZW5zdGF0dXMuc3RhdHVzX3JlcG9ydC52MS5TdGF0dXNSZXBvcnQyvwsKE1N0YXR1c1JlcG9ydFNlcnZpY2USzgMKEkNyZWF0ZVN0YXR1c1JlcG9ydBI2Lm9wZW5zdGF0dXMuc3RhdHVzX3JlcG9ydC52MS5DcmVhdGVTdGF0dXNSZXBvcnRSZXF1ZXN0Gjcub3BlbnN0YXR1cy5zdGF0dXNfcmVwb3J0LnYxLkNyZWF0ZVN0YXR1c1JlcG9ydFJlc3BvbnNlIsYCukfCAhq/AkNyZWF0ZXMgYSBuZXcgc3RhdHVzIHJlcG9ydCB3aXRoIGFuIGluaXRpYWwgdXBkYXRlIGVudHJ5LiBUaGUgcmVwb3J0IGlzIGFzc29jaWF0ZWQgd2l0aCBhIHN0YXR1cyBwYWdlIGFuZCBvcHRpb25hbGx5IHNwZWNpZmljIHBhZ2UgY29tcG9uZW50cy4gQW4gaW5pdGlhbCBTdGF0dXNSZXBvcnRVcGRhdGUgaXMgY3JlYXRlZCBhdXRvbWF0aWNhbGx5IHdpdGggdGhlIHByb3ZpZGVkIHN0YXR1cywgbWVzc2FnZSwgYW5kIGRhdGUuIElmIG5vdGlmeSBpcyB0cnVlLCBzdWJzY3JpYmVycyBvZiB0aGUgYXNzb2NpYXRlZCBwYWdlIGFyZSBub3RpZmllZCBieSBlbWFpbC4SgQEKD0dldFN0YXR1c1JlcG9ydBIzLm9wZW5zdGF0dXMuc3RhdHVzX3JlcG9ydC52MS5HZXRTdGF0dXNSZXBvcnRSZXF1ZXN0GjQub3BlbnN0YXR1cy5zdGF0dXNfcmVwb3J0LnYxLkdldFN0YXR1c1JlcG9ydFJlc3BvbnNlIgOQAgEShwEKEUxpc3RTdGF0dXNSZXBvcnRzEjUub3BlbnN0YXR1cy5zdGF0dXNfcmVwb3J0LnYxLkxpc3RTdGF0dXNSZXBvcnRzUmVxdWVzdBo2Lm9wZW5zdGF0dXMuc3RhdHVzX3JlcG9ydC52MS5MaXN0U3RhdHVzUmVwb3J0c1Jlc3BvbnNlIgOQAgEShQEKElVwZGF0ZVN0YXR1c1JlcG9ydBI2Lm9wZW5zdGF0dXMuc3RhdHVzX3JlcG9ydC52MS5VcGRhdGVTdGF0dXNSZXBvcnRSZXF1ZXN0Gjcub3BlbnN0YXR1cy5zdGF0dXNfcmVwb3J0LnYxLlVwZGF0ZVN0YXR1c1JlcG9ydFJlc3BvbnNlEoUBChJEZWxldGVTdGF0dXNSZXBvcnQSNi5vcGVuc3RhdHVzLnN0YXR1c19yZXBvcnQudjEuRGVsZXRlU3RhdHVzUmVwb3J0UmVxdWVzdBo3Lm9wZW5zdGF0dXMuc3RhdHVzX3JlcG9ydC52MS5EZWxldGVTdGF0dXNSZXBvcnRSZXNwb25zZRK4AwoVQWRkU3RhdHVzUmVwb3J0VXBkYXRlEjkub3BlbnN0YXR1cy5zdGF0dXNfcmVwb3J0LnYxLkFkZFN0YXR1c1JlcG9ydFVwZGF0ZVJlcXVlc3QaOi5vcGVuc3RhdHVzLnN0YXR1c19yZXBvcnQudjEuQWRkU3RhdHVzUmVwb3J0VXBkYXRlUmVzcG9uc2UipwK6R6MCGqACQWRkcyBhIG5ldyB1cGRhdGUgZW50cnkgdG8gYW4gZXhpc3Rpbmcgc3RhdHVzIHJlcG9ydCBhbmQgdHJhbnNpdGlvbnMgdGhlIHJlcG9ydCB0byB0aGUgc3BlY2lmaWVkIHN0YXR1cy4gU3RhdHVzIHJlcG9ydHMgZm9sbG93IGEgbGlmZWN5Y2xlOiBpbnZlc3RpZ2F0aW5nIC0+IGlkZW50aWZpZWQgLT4gbW9uaXRvcmluZyAtPiByZXNvbHZlZC4gSWYgbm90aWZ5IGlzIHRydWUsIHN1YnNjcmliZXJzIG9mIHRoZSBhc3NvY2lhdGVkIHBhZ2UgYXJlIG5vdGlmaWVkIGJ5IGVtYWlsIGFib3V0IHRoZSB1cGRhdGUuQl5aXGdpdGh1Yi5jb20vb3BlbnN0YXR1c2hxL29wZW5zdGF0dXMvcGFja2FnZXMvcHJvdG8vb3BlbnN0YXR1cy9zdGF0dXNfcmVwb3J0L3YxO3N0YXR1c3JlcG9ydHYxYgZwcm90bzM", [ file_buf_validate_validate, file_gnostic_openapi_v3_annotations, @@ -91,6 +92,15 @@ export type CreateStatusReportRequest = * @generated from field: optional bool notify = 7; */ notify?: boolean; + + /** + * Per-component impacts set by the initial update (optional). When provided, + * the named components are added to the report's affected set. Omitting this + * field creates a legacy report without impact tracking. + * + * @generated from field: repeated openstatus.status_report.v1.ComponentImpact component_impacts = 8; + */ + componentImpacts: ComponentImpact[]; }; /** @@ -413,6 +423,15 @@ export type AddStatusReportUpdateRequest = * @generated from field: optional bool notify = 5; */ notify?: boolean; + + /** + * Per-component impacts this update sets (optional). Components named here + * are added to the report's affected set; omitted components keep their + * prior impact. + * + * @generated from field: repeated openstatus.status_report.v1.ComponentImpact component_impacts = 6; + */ + componentImpacts: ComponentImpact[]; }; /** diff --git a/src/gen/openstatus/status_report/v1/status_report_pb.ts b/src/gen/openstatus/status_report/v1/status_report_pb.ts index ace7638..8404d0d 100644 --- a/src/gen/openstatus/status_report/v1/status_report_pb.ts +++ b/src/gen/openstatus/status_report/v1/status_report_pb.ts @@ -16,9 +16,39 @@ import type { Message } from "@bufbuild/protobuf"; export const file_openstatus_status_report_v1_status_report: GenFile = /*@__PURE__*/ fileDesc( - "Ci9vcGVuc3RhdHVzL3N0YXR1c19yZXBvcnQvdjEvc3RhdHVzX3JlcG9ydC5wcm90bxIbb3BlbnN0YXR1cy5zdGF0dXNfcmVwb3J0LnYxIpQBChJTdGF0dXNSZXBvcnRVcGRhdGUSCgoCaWQYASABKAkSPwoGc3RhdHVzGAIgASgOMi8ub3BlbnN0YXR1cy5zdGF0dXNfcmVwb3J0LnYxLlN0YXR1c1JlcG9ydFN0YXR1cxIMCgRkYXRlGAMgASgJEg8KB21lc3NhZ2UYBCABKAkSEgoKY3JlYXRlZF9hdBgFIAEoCSK1AQoTU3RhdHVzUmVwb3J0U3VtbWFyeRIKCgJpZBgBIAEoCRI/CgZzdGF0dXMYAiABKA4yLy5vcGVuc3RhdHVzLnN0YXR1c19yZXBvcnQudjEuU3RhdHVzUmVwb3J0U3RhdHVzEg0KBXRpdGxlGAMgASgJEhoKEnBhZ2VfY29tcG9uZW50X2lkcxgEIAMoCRISCgpjcmVhdGVkX2F0GAUgASgJEhIKCnVwZGF0ZWRfYXQYBiABKAki8AEKDFN0YXR1c1JlcG9ydBIKCgJpZBgBIAEoCRI/CgZzdGF0dXMYAiABKA4yLy5vcGVuc3RhdHVzLnN0YXR1c19yZXBvcnQudjEuU3RhdHVzUmVwb3J0U3RhdHVzEg0KBXRpdGxlGAMgASgJEhoKEnBhZ2VfY29tcG9uZW50X2lkcxgEIAMoCRJACgd1cGRhdGVzGAUgAygLMi8ub3BlbnN0YXR1cy5zdGF0dXNfcmVwb3J0LnYxLlN0YXR1c1JlcG9ydFVwZGF0ZRISCgpjcmVhdGVkX2F0GAYgASgJEhIKCnVwZGF0ZWRfYXQYByABKAkqzwEKElN0YXR1c1JlcG9ydFN0YXR1cxIkCiBTVEFUVVNfUkVQT1JUX1NUQVRVU19VTlNQRUNJRklFRBAAEiYKIlNUQVRVU19SRVBPUlRfU1RBVFVTX0lOVkVTVElHQVRJTkcQARIjCh9TVEFUVVNfUkVQT1JUX1NUQVRVU19JREVOVElGSUVEEAISIwofU1RBVFVTX1JFUE9SVF9TVEFUVVNfTU9OSVRPUklORxADEiEKHVNUQVRVU19SRVBPUlRfU1RBVFVTX1JFU09MVkVEEARCXlpcZ2l0aHViLmNvbS9vcGVuc3RhdHVzaHEvb3BlbnN0YXR1cy9wYWNrYWdlcy9wcm90by9vcGVuc3RhdHVzL3N0YXR1c19yZXBvcnQvdjE7c3RhdHVzcmVwb3J0djFiBnByb3RvMw", + "Ci9vcGVuc3RhdHVzL3N0YXR1c19yZXBvcnQvdjEvc3RhdHVzX3JlcG9ydC5wcm90bxIbb3BlbnN0YXR1cy5zdGF0dXNfcmVwb3J0LnYxIm4KD0NvbXBvbmVudEltcGFjdBIZChFwYWdlX2NvbXBvbmVudF9pZBgBIAEoCRJACgZpbXBhY3QYAiABKA4yMC5vcGVuc3RhdHVzLnN0YXR1c19yZXBvcnQudjEuUGFnZUNvbXBvbmVudEltcGFjdCLdAQoSU3RhdHVzUmVwb3J0VXBkYXRlEgoKAmlkGAEgASgJEj8KBnN0YXR1cxgCIAEoDjIvLm9wZW5zdGF0dXMuc3RhdHVzX3JlcG9ydC52MS5TdGF0dXNSZXBvcnRTdGF0dXMSDAoEZGF0ZRgDIAEoCRIPCgdtZXNzYWdlGAQgASgJEhIKCmNyZWF0ZWRfYXQYBSABKAkSRwoRY29tcG9uZW50X2ltcGFjdHMYBiADKAsyLC5vcGVuc3RhdHVzLnN0YXR1c19yZXBvcnQudjEuQ29tcG9uZW50SW1wYWN0IrUBChNTdGF0dXNSZXBvcnRTdW1tYXJ5EgoKAmlkGAEgASgJEj8KBnN0YXR1cxgCIAEoDjIvLm9wZW5zdGF0dXMuc3RhdHVzX3JlcG9ydC52MS5TdGF0dXNSZXBvcnRTdGF0dXMSDQoFdGl0bGUYAyABKAkSGgoScGFnZV9jb21wb25lbnRfaWRzGAQgAygJEhIKCmNyZWF0ZWRfYXQYBSABKAkSEgoKdXBkYXRlZF9hdBgGIAEoCSLwAQoMU3RhdHVzUmVwb3J0EgoKAmlkGAEgASgJEj8KBnN0YXR1cxgCIAEoDjIvLm9wZW5zdGF0dXMuc3RhdHVzX3JlcG9ydC52MS5TdGF0dXNSZXBvcnRTdGF0dXMSDQoFdGl0bGUYAyABKAkSGgoScGFnZV9jb21wb25lbnRfaWRzGAQgAygJEkAKB3VwZGF0ZXMYBSADKAsyLy5vcGVuc3RhdHVzLnN0YXR1c19yZXBvcnQudjEuU3RhdHVzUmVwb3J0VXBkYXRlEhIKCmNyZWF0ZWRfYXQYBiABKAkSEgoKdXBkYXRlZF9hdBgHIAEoCSrPAQoSU3RhdHVzUmVwb3J0U3RhdHVzEiQKIFNUQVRVU19SRVBPUlRfU1RBVFVTX1VOU1BFQ0lGSUVEEAASJgoiU1RBVFVTX1JFUE9SVF9TVEFUVVNfSU5WRVNUSUdBVElORxABEiMKH1NUQVRVU19SRVBPUlRfU1RBVFVTX0lERU5USUZJRUQQAhIjCh9TVEFUVVNfUkVQT1JUX1NUQVRVU19NT05JVE9SSU5HEAMSIQodU1RBVFVTX1JFUE9SVF9TVEFUVVNfUkVTT0xWRUQQBCrlAQoTUGFnZUNvbXBvbmVudEltcGFjdBIlCiFQQUdFX0NPTVBPTkVOVF9JTVBBQ1RfVU5TUEVDSUZJRUQQABIlCiFQQUdFX0NPTVBPTkVOVF9JTVBBQ1RfT1BFUkFUSU9OQUwQARIuCipQQUdFX0NPTVBPTkVOVF9JTVBBQ1RfREVHUkFERURfUEVSRk9STUFOQ0UQAhIoCiRQQUdFX0NPTVBPTkVOVF9JTVBBQ1RfUEFSVElBTF9PVVRBR0UQAxImCiJQQUdFX0NPTVBPTkVOVF9JTVBBQ1RfTUFKT1JfT1VUQUdFEARCXlpcZ2l0aHViLmNvbS9vcGVuc3RhdHVzaHEvb3BlbnN0YXR1cy9wYWNrYWdlcy9wcm90by9vcGVuc3RhdHVzL3N0YXR1c19yZXBvcnQvdjE7c3RhdHVzcmVwb3J0djFiBnByb3RvMw", ); +/** + * ComponentImpact pairs a page component with the impact an update set for it. + * + * @generated from message openstatus.status_report.v1.ComponentImpact + */ +export type ComponentImpact = + & Message<"openstatus.status_report.v1.ComponentImpact"> + & { + /** + * ID of the affected page component. + * + * @generated from field: string page_component_id = 1; + */ + pageComponentId: string; + + /** + * Impact set for the component. + * + * @generated from field: openstatus.status_report.v1.PageComponentImpact impact = 2; + */ + impact: PageComponentImpact; + }; + +/** + * Describes the message openstatus.status_report.v1.ComponentImpact. + * Use `create(ComponentImpactSchema)` to create a new message. + */ +export const ComponentImpactSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_openstatus_status_report_v1_status_report, 0); + /** * StatusReportUpdate represents a single update entry in a status report timeline. * @@ -61,6 +91,13 @@ export type StatusReportUpdate = * @generated from field: string created_at = 5; */ createdAt: string; + + /** + * Per-component impacts this update set (empty for legacy reports). + * + * @generated from field: repeated openstatus.status_report.v1.ComponentImpact component_impacts = 6; + */ + componentImpacts: ComponentImpact[]; }; /** @@ -70,7 +107,7 @@ export type StatusReportUpdate = export const StatusReportUpdateSchema: GenMessage< StatusReportUpdate > = /*@__PURE__*/ - messageDesc(file_openstatus_status_report_v1_status_report, 0); + messageDesc(file_openstatus_status_report_v1_status_report, 1); /** * StatusReportSummary represents metadata for a status report (used in list responses). @@ -130,7 +167,7 @@ export type StatusReportSummary = export const StatusReportSummarySchema: GenMessage< StatusReportSummary > = /*@__PURE__*/ - messageDesc(file_openstatus_status_report_v1_status_report, 1); + messageDesc(file_openstatus_status_report_v1_status_report, 2); /** * StatusReport represents an incident or maintenance report with full details. @@ -195,7 +232,7 @@ export type StatusReport = * Use `create(StatusReportSchema)` to create a new message. */ export const StatusReportSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_openstatus_status_report_v1_status_report, 2); + messageDesc(file_openstatus_status_report_v1_status_report, 3); /** * StatusReportStatus represents the current state of a status report. @@ -236,3 +273,44 @@ export const StatusReportStatusSchema: GenEnum< StatusReportStatus > = /*@__PURE__*/ enumDesc(file_openstatus_status_report_v1_status_report, 0); + +/** + * PageComponentImpact is the per-component impact a status report update sets. + * UNSPECIFIED means the caller doesn't speak impact (legacy) — it is NOT operational. + * + * @generated from enum openstatus.status_report.v1.PageComponentImpact + */ +export enum PageComponentImpact { + /** + * @generated from enum value: PAGE_COMPONENT_IMPACT_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * @generated from enum value: PAGE_COMPONENT_IMPACT_OPERATIONAL = 1; + */ + OPERATIONAL = 1, + + /** + * @generated from enum value: PAGE_COMPONENT_IMPACT_DEGRADED_PERFORMANCE = 2; + */ + DEGRADED_PERFORMANCE = 2, + + /** + * @generated from enum value: PAGE_COMPONENT_IMPACT_PARTIAL_OUTAGE = 3; + */ + PARTIAL_OUTAGE = 3, + + /** + * @generated from enum value: PAGE_COMPONENT_IMPACT_MAJOR_OUTAGE = 4; + */ + MAJOR_OUTAGE = 4, +} + +/** + * Describes the enum openstatus.status_report.v1.PageComponentImpact. + */ +export const PageComponentImpactSchema: GenEnum< + PageComponentImpact +> = /*@__PURE__*/ + enumDesc(file_openstatus_status_report_v1_status_report, 1); diff --git a/src/mod.ts b/src/mod.ts index 2284a6c..f6a58af 100644 --- a/src/mod.ts +++ b/src/mod.ts @@ -133,12 +133,16 @@ export { CheckResponse_ServingStatus as ServingStatus } from "./gen/openstatus/h // Re-export status report types export type { + ComponentImpact, StatusReport, StatusReportSummary, StatusReportUpdate, } from "./gen/openstatus/status_report/v1/status_report_pb.ts"; -export { StatusReportStatus } from "./gen/openstatus/status_report/v1/status_report_pb.ts"; +export { + PageComponentImpact, + StatusReportStatus, +} from "./gen/openstatus/status_report/v1/status_report_pb.ts"; // Re-export status report request/response types export type { @@ -250,6 +254,7 @@ export type { EmailData, GoogleChatData, GrafanaOncallData, + MsTeamsData, NotificationData, NtfyData, OpsgenieData, -- 2.54.0