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,