diff --git a/.github/workflows/proto-check.yml b/.github/workflows/proto-check.yml index a2ca809f..1b2f4193 100644 --- a/.github/workflows/proto-check.yml +++ b/.github/workflows/proto-check.yml @@ -35,10 +35,10 @@ jobs: node-version: 24.12.0 cache: "pnpm" - - name: 🔥 Install bun - uses: oven-sh/setup-bun@v2 + - name: 🦕 Setup Deno + uses: denoland/setup-deno@v2 with: - bun-version: latest + deno-version: 2.9.7 - name: 🐹 Setup Go uses: actions/setup-go@v5 @@ -46,7 +46,7 @@ jobs: go-version: "stable" - name: 📥 Install protoc-gen-connect-openapi - run: go install github.com/sudorandom/protoc-gen-connect-openapi@latest + run: go install github.com/sudorandom/protoc-gen-connect-openapi@v0.25.5 - name: 📥 Download deps run: pnpm install diff --git a/apps/server/static/openapi-yaml.ts b/apps/server/static/openapi-yaml.ts index 73660070..a27b01b1 100644 --- a/apps/server/static/openapi-yaml.ts +++ b/apps/server/static/openapi-yaml.ts @@ -1,2 +1,2 @@ // Generated from openapi.yaml — run `pnpm --filter @openstatus/server openapi:json`. -export default "openapi: 3.1.0\ninfo:\n description: OpenStatus is a open-source status page platform with global uptime monitoring. The OpenStatus API allows you to interact with the OpenStatus platform programmatically. To get started you need to create an account on https://www.openstatus.dev/ and create an api token in your settings. Requests are rate limited per API key or token (600 per minute, 100 per 10 seconds); exceeding a limit returns HTTP 429 with a Retry-After header. See https://www.openstatus.dev/docs/reference/api-rate-limits.\n title: OpenStatus API\n version: v2.0.0\n contact:\n email: ping@openstatus.dev\n url: https://www.openstatus.dev\nservers:\n - url: https://api.openstatus.dev\n description: Production\nexternalDocs:\n description: OpenStatus Documentation\n url: https://www.openstatus.dev/docs\ncomponents:\n responses:\n RateLimited:\n description: Rate limit exceeded (Connect code resource_exhausted). Retry after the number of seconds in the Retry-After header. See https://www.openstatus.dev/docs/reference/api-rate-limits.\n headers:\n Retry-After:\n description: Seconds to wait before retrying.\n schema:\n type: integer\n example: 7\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n securitySchemes:\n ApiKeyAuth:\n type: apiKey\n in: header\n name: x-openstatus-key\n schemas:\n connect.error:\n type: object\n properties:\n code:\n type: string\n examples:\n - not_found\n enum:\n - canceled\n - unknown\n - invalid_argument\n - deadline_exceeded\n - not_found\n - already_exists\n - permission_denied\n - resource_exhausted\n - failed_precondition\n - aborted\n - out_of_range\n - unimplemented\n - internal\n - unavailable\n - data_loss\n - unauthenticated\n description: The status code, which should be an enum value of [google.rpc.Code][google.rpc.Code].\n message:\n type: string\n description: A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the [google.rpc.Status.details][google.rpc.Status.details] field, or localized by the client.\n details:\n type: array\n items:\n $ref: '#/components/schemas/connect.error_details.Any'\n description: A list of messages that carry the error details. There is no limit on the number of messages.\n title: Connect Error\n additionalProperties: true\n description: 'Error type returned by Connect: https://connectrpc.com/docs/go/errors/#http-representation'\n connect.error_details.Any:\n type: object\n properties:\n type:\n type: string\n description: 'A URL that acts as a globally unique identifier for the type of the serialized message. For example: `type.googleapis.com/google.rpc.ErrorInfo`. This is used to determine the schema of the data in the `value` field and is the discriminator for the `debug` field.'\n value:\n type: string\n format: binary\n description: The Protobuf message, serialized as bytes and base64-encoded. The specific message type is identified by the `type` field.\n debug:\n oneOf:\n - type: object\n title: Any\n additionalProperties: true\n description: Detailed error information.\n discriminator:\n propertyName: type\n title: Debug\n description: Deserialized error detail payload. The 'type' field indicates the schema. This field is for easier debugging and should not be relied upon for application logic.\n additionalProperties: true\n description: Contains an arbitrary serialized message along with a @type that describes the type of the serialized message, with an additional debug field for ConnectRPC error details.\n openstatus.health.v1.CheckRequest:\n type: object\n properties:\n service:\n type: string\n title: service\n description: Optional service name to check. If empty, checks overall service health.\n title: CheckRequest\n additionalProperties: false\n description: CheckRequest is the request message for health checks.\n openstatus.health.v1.CheckResponse:\n type: object\n properties:\n status:\n title: status\n description: The serving status of the service.\n $ref: '#/components/schemas/openstatus.health.v1.CheckResponse.ServingStatus'\n title: CheckResponse\n additionalProperties: false\n description: CheckResponse is the response message for health checks.\n openstatus.health.v1.CheckResponse.ServingStatus:\n type: string\n title: ServingStatus\n enum:\n - SERVING_STATUS_UNSPECIFIED\n - SERVING_STATUS_SERVING\n - SERVING_STATUS_NOT_SERVING\n description: ServingStatus represents the health status of the service.\n openstatus.maintenance.v1.CreateMaintenanceRequest:\n type: object\n properties:\n title:\n type: string\n examples:\n - Database Migration\n title: title\n maxLength: 256\n minLength: 1\n description: Title of the maintenance (required, 1-256 characters).\n message:\n type: string\n title: message\n minLength: 1\n description: Message describing the maintenance (required).\n from:\n type: string\n examples:\n - \"2024-03-01T02:00:00Z\"\n title: from\n pattern: ^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d{1,9})?(Z|[+-]\\d{2}:\\d{2})$\n description: Start time of the maintenance window (RFC 3339 format, required).\n to:\n type: string\n examples:\n - \"2024-03-01T06:00:00Z\"\n title: to\n pattern: ^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d{1,9})?(Z|[+-]\\d{2}:\\d{2})$\n description: End time of the maintenance window (RFC 3339 format, required).\n pageId:\n type: string\n title: page_id\n minLength: 1\n description: Page ID to associate with this maintenance (required).\n pageComponentIds:\n type: array\n items:\n type: string\n title: page_component_ids\n description: Page component IDs to associate with this maintenance (optional).\n notify:\n type:\n - boolean\n - \"null\"\n title: notify\n description: Whether to notify subscribers about this maintenance (optional, defaults to false).\n title: CreateMaintenanceRequest\n additionalProperties: false\n description: CreateMaintenanceRequest is the request to create a new maintenance window.\n openstatus.maintenance.v1.CreateMaintenanceResponse:\n type: object\n properties:\n maintenance:\n title: maintenance\n description: The created maintenance.\n $ref: '#/components/schemas/openstatus.maintenance.v1.Maintenance'\n title: CreateMaintenanceResponse\n additionalProperties: false\n description: CreateMaintenanceResponse is the response after creating a maintenance window.\n openstatus.maintenance.v1.DeleteMaintenanceRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: ID of the maintenance to delete (required).\n title: DeleteMaintenanceRequest\n additionalProperties: false\n description: DeleteMaintenanceRequest is the request to delete a maintenance window.\n openstatus.maintenance.v1.DeleteMaintenanceResponse:\n type: object\n properties:\n success:\n type: boolean\n title: success\n description: Whether the deletion was successful.\n title: DeleteMaintenanceResponse\n additionalProperties: false\n description: DeleteMaintenanceResponse is the response after deleting a maintenance window.\n openstatus.maintenance.v1.GetMaintenanceRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: ID of the maintenance to retrieve (required).\n title: GetMaintenanceRequest\n additionalProperties: false\n description: GetMaintenanceRequest is the request to get a maintenance window by ID.\n openstatus.maintenance.v1.GetMaintenanceResponse:\n type: object\n properties:\n maintenance:\n title: maintenance\n description: The requested maintenance.\n $ref: '#/components/schemas/openstatus.maintenance.v1.Maintenance'\n title: GetMaintenanceResponse\n additionalProperties: false\n description: GetMaintenanceResponse is the response containing the maintenance window.\n openstatus.maintenance.v1.ListMaintenancesRequest:\n type: object\n properties:\n limit:\n type:\n - integer\n - \"null\"\n title: limit\n maximum: 100\n minimum: 1\n format: int32\n description: Maximum number of maintenances to return (1-100, defaults to 50).\n offset:\n type:\n - integer\n - \"null\"\n title: offset\n minimum: 0\n format: int32\n description: Number of maintenances to skip for pagination (defaults to 0).\n pageId:\n type:\n - string\n - \"null\"\n title: page_id\n description: Filter by page ID (optional).\n title: ListMaintenancesRequest\n additionalProperties: false\n description: ListMaintenancesRequest is the request to list maintenance windows.\n openstatus.maintenance.v1.ListMaintenancesResponse:\n type: object\n properties:\n maintenances:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.maintenance.v1.MaintenanceSummary'\n title: maintenances\n description: List of maintenances.\n totalSize:\n type: integer\n title: total_size\n format: int32\n description: Total number of maintenances matching the filter.\n title: ListMaintenancesResponse\n additionalProperties: false\n description: ListMaintenancesResponse is the response containing maintenance window summaries.\n openstatus.maintenance.v1.Maintenance:\n type: object\n properties:\n id:\n type: string\n title: id\n description: Unique identifier for the maintenance.\n title:\n type: string\n title: title\n description: Title of the maintenance.\n message:\n type: string\n title: message\n description: Message describing the maintenance.\n from:\n type: string\n title: from\n description: Start time of the maintenance window (RFC 3339 format).\n to:\n type: string\n title: to\n description: End time of the maintenance window (RFC 3339 format).\n pageId:\n type: string\n title: page_id\n description: ID of the page this maintenance is associated with.\n pageComponentIds:\n type: array\n items:\n type: string\n title: page_component_ids\n description: IDs of affected page components.\n createdAt:\n type: string\n title: created_at\n description: Timestamp when the maintenance was created (RFC 3339 format).\n updatedAt:\n type: string\n title: updated_at\n description: Timestamp when the maintenance was last updated (RFC 3339 format).\n title: Maintenance\n additionalProperties: false\n description: Maintenance represents a maintenance window with full details.\n openstatus.maintenance.v1.MaintenanceSummary:\n type: object\n properties:\n id:\n type: string\n title: id\n description: Unique identifier for the maintenance.\n title:\n type: string\n title: title\n description: Title of the maintenance.\n message:\n type: string\n title: message\n description: Message describing the maintenance.\n from:\n type: string\n title: from\n description: Start time of the maintenance window (RFC 3339 format).\n to:\n type: string\n title: to\n description: End time of the maintenance window (RFC 3339 format).\n pageId:\n type: string\n title: page_id\n description: ID of the page this maintenance is associated with.\n pageComponentIds:\n type: array\n items:\n type: string\n title: page_component_ids\n description: IDs of affected page components.\n createdAt:\n type: string\n title: created_at\n description: Timestamp when the maintenance was created (RFC 3339 format).\n updatedAt:\n type: string\n title: updated_at\n description: Timestamp when the maintenance was last updated (RFC 3339 format).\n title: MaintenanceSummary\n additionalProperties: false\n description: MaintenanceSummary represents metadata for a maintenance window (used in list responses).\n openstatus.maintenance.v1.UpdateMaintenanceRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: ID of the maintenance to update (required).\n title:\n type:\n - string\n - \"null\"\n title: title\n maxLength: 256\n minLength: 1\n description: New title for the maintenance (optional).\n message:\n type:\n - string\n - \"null\"\n title: message\n description: New message for the maintenance (optional).\n from:\n type:\n - string\n - \"null\"\n title: from\n pattern: ^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d{1,9})?(Z|[+-]\\d{2}:\\d{2})$\n description: New start time (RFC 3339 format, optional).\n to:\n type:\n - string\n - \"null\"\n title: to\n pattern: ^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d{1,9})?(Z|[+-]\\d{2}:\\d{2})$\n description: New end time (RFC 3339 format, optional).\n pageId:\n type:\n - string\n - \"null\"\n title: page_id\n description: 'Deprecated: page_id is now derived from page_component_ids.'\n deprecated: true\n pageComponentIds:\n type: array\n items:\n type: string\n title: page_component_ids\n description: New list of page component IDs (optional, replaces existing list).\n updatePageComponentIds:\n type:\n - boolean\n - \"null\"\n title: update_page_component_ids\n description: |-\n Set to true to update page component associations.\n When true, page_component_ids replaces the existing list (empty clears all).\n When false or unset, page_component_ids is ignored and existing associations are preserved.\n title: UpdateMaintenanceRequest\n additionalProperties: false\n description: UpdateMaintenanceRequest is the request to update a maintenance window.\n openstatus.maintenance.v1.UpdateMaintenanceResponse:\n type: object\n properties:\n maintenance:\n title: maintenance\n description: The updated maintenance.\n $ref: '#/components/schemas/openstatus.maintenance.v1.Maintenance'\n title: UpdateMaintenanceResponse\n additionalProperties: false\n description: UpdateMaintenanceResponse is the response after updating a maintenance window.\n openstatus.monitor.v1.BodyAssertion:\n type: object\n properties:\n target:\n type: string\n title: target\n description: Target value to compare against.\n comparator:\n not:\n enum:\n - STRING_COMPARATOR_UNSPECIFIED\n title: comparator\n description: Comparison operation (required, must not be UNSPECIFIED).\n $ref: '#/components/schemas/openstatus.monitor.v1.StringComparator'\n title: BodyAssertion\n additionalProperties: false\n description: BodyAssertion defines an assertion for response body content.\n openstatus.monitor.v1.CreateDNSMonitorRequest:\n type: object\n properties:\n monitor:\n title: monitor\n description: Monitor configuration (required).\n $ref: '#/components/schemas/openstatus.monitor.v1.DNSMonitor'\n title: CreateDNSMonitorRequest\n required:\n - monitor\n additionalProperties: false\n description: CreateDNSMonitorRequest is the request to create a new DNS monitor.\n openstatus.monitor.v1.CreateDNSMonitorResponse:\n type: object\n properties:\n monitor:\n title: monitor\n description: The created monitor with assigned ID.\n $ref: '#/components/schemas/openstatus.monitor.v1.DNSMonitor'\n title: CreateDNSMonitorResponse\n additionalProperties: false\n description: CreateDNSMonitorResponse is the response after creating a DNS monitor.\n openstatus.monitor.v1.CreateGRPCMonitorRequest:\n type: object\n properties:\n monitor:\n title: monitor\n description: Monitor configuration (required).\n $ref: '#/components/schemas/openstatus.monitor.v1.GRPCMonitor'\n title: CreateGRPCMonitorRequest\n required:\n - monitor\n additionalProperties: false\n description: CreateGRPCMonitorRequest is the request to create a new gRPC monitor.\n openstatus.monitor.v1.CreateGRPCMonitorResponse:\n type: object\n properties:\n monitor:\n title: monitor\n description: The created monitor with assigned ID.\n $ref: '#/components/schemas/openstatus.monitor.v1.GRPCMonitor'\n title: CreateGRPCMonitorResponse\n additionalProperties: false\n description: CreateGRPCMonitorResponse is the response after creating a gRPC monitor.\n openstatus.monitor.v1.CreateHTTPMonitorRequest:\n type: object\n properties:\n monitor:\n title: monitor\n description: Monitor configuration (required).\n $ref: '#/components/schemas/openstatus.monitor.v1.HTTPMonitor'\n title: CreateHTTPMonitorRequest\n required:\n - monitor\n additionalProperties: false\n description: CreateHTTPMonitorRequest is the request to create a new HTTP monitor.\n openstatus.monitor.v1.CreateHTTPMonitorResponse:\n type: object\n properties:\n monitor:\n title: monitor\n description: The created monitor with assigned ID.\n $ref: '#/components/schemas/openstatus.monitor.v1.HTTPMonitor'\n title: CreateHTTPMonitorResponse\n additionalProperties: false\n description: CreateHTTPMonitorResponse is the response after creating an HTTP monitor.\n openstatus.monitor.v1.CreateICMPMonitorRequest:\n type: object\n properties:\n monitor:\n title: monitor\n description: Monitor configuration (required).\n $ref: '#/components/schemas/openstatus.monitor.v1.ICMPMonitor'\n title: CreateICMPMonitorRequest\n required:\n - monitor\n additionalProperties: false\n description: CreateICMPMonitorRequest is the request to create a new ICMP monitor.\n openstatus.monitor.v1.CreateICMPMonitorResponse:\n type: object\n properties:\n monitor:\n title: monitor\n description: The created monitor with assigned ID.\n $ref: '#/components/schemas/openstatus.monitor.v1.ICMPMonitor'\n title: CreateICMPMonitorResponse\n additionalProperties: false\n description: CreateICMPMonitorResponse is the response after creating an ICMP monitor.\n openstatus.monitor.v1.CreateTCPMonitorRequest:\n type: object\n properties:\n monitor:\n title: monitor\n description: Monitor configuration (required).\n $ref: '#/components/schemas/openstatus.monitor.v1.TCPMonitor'\n title: CreateTCPMonitorRequest\n required:\n - monitor\n additionalProperties: false\n description: CreateTCPMonitorRequest is the request to create a new TCP monitor.\n openstatus.monitor.v1.CreateTCPMonitorResponse:\n type: object\n properties:\n monitor:\n title: monitor\n description: The created monitor with assigned ID.\n $ref: '#/components/schemas/openstatus.monitor.v1.TCPMonitor'\n title: CreateTCPMonitorResponse\n additionalProperties: false\n description: CreateTCPMonitorResponse is the response after creating a TCP monitor.\n openstatus.monitor.v1.DNSMonitor:\n type: object\n properties:\n id:\n type: string\n title: id\n description: Unique identifier for the monitor (output only for create requests).\n name:\n type: string\n examples:\n - DNS Resolution Check\n title: name\n maxLength: 256\n minLength: 1\n description: Name of the monitor (required, max 256 characters).\n uri:\n type: string\n examples:\n - example.com\n title: uri\n maxLength: 2048\n minLength: 1\n description: Domain to resolve (required, max 2048 characters).\n periodicity:\n not:\n enum:\n - PERIODICITY_UNSPECIFIED\n title: periodicity\n description: Check periodicity (required).\n $ref: '#/components/schemas/openstatus.monitor.v1.Periodicity'\n timeout:\n type:\n - integer\n - string\n title: timeout\n maximum: 120000\n minimum: 0\n format: int64\n description: Timeout in milliseconds (0-120000, defaults to 45000).\n degradedAt:\n type:\n - integer\n - string\n - \"null\"\n title: degraded_at\n maximum: 120000\n minimum: 0\n format: int64\n description: Latency threshold for degraded status in milliseconds (optional, 0-120000).\n retry:\n type:\n - integer\n - string\n title: retry\n maximum: 10\n minimum: 0\n format: int64\n description: Number of retry attempts (0-10, defaults to 3).\n recordAssertions:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.monitor.v1.RecordAssertion'\n title: record_assertions\n maxItems: 10\n description: DNS record assertions for validation.\n description:\n type:\n - string\n - \"null\"\n title: description\n maxLength: 1024\n description: Description of the monitor (optional).\n active:\n type:\n - boolean\n - \"null\"\n title: active\n description: Whether the monitor is active (defaults to false).\n public:\n type:\n - boolean\n - \"null\"\n title: public\n description: Whether the monitor is publicly visible (defaults to false).\n regions:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.monitor.v1.Region'\n title: regions\n maxItems: 28\n description: Geographic regions to run checks from.\n openTelemetry:\n title: open_telemetry\n description: OpenTelemetry configuration for exporting metrics.\n $ref: '#/components/schemas/openstatus.monitor.v1.OpenTelemetryConfig'\n status:\n title: status\n description: Current operational status of the monitor.\n $ref: '#/components/schemas/openstatus.monitor.v1.MonitorStatus'\n privateLocationIds:\n type: array\n items:\n type: string\n readOnly: true\n title: private_location_ids\n description: IDs of private locations that run this monitor. Read-only.\n readOnly: true\n title: DNSMonitor\n additionalProperties: false\n description: DNSMonitor defines the configuration for a DNS monitor.\n openstatus.monitor.v1.DeleteMonitorRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: Monitor ID to delete (required).\n title: DeleteMonitorRequest\n additionalProperties: false\n description: DeleteMonitorRequest is the request to delete a monitor.\n openstatus.monitor.v1.DeleteMonitorResponse:\n type: object\n properties:\n success:\n type: boolean\n title: success\n description: Whether the deletion was successful.\n title: DeleteMonitorResponse\n additionalProperties: false\n description: DeleteMonitorResponse is the response after deleting a monitor.\n openstatus.monitor.v1.GRPCMonitor:\n type: object\n properties:\n id:\n type: string\n title: id\n description: Unique identifier for the monitor (output only for create requests).\n name:\n type: string\n examples:\n - Checkout gRPC\n title: name\n maxLength: 256\n minLength: 1\n description: Name of the monitor (required, max 256 characters).\n uri:\n type: string\n examples:\n - api.example.com:443\n title: uri\n maxLength: 2048\n minLength: 1\n pattern: ^(\\[[0-9a-fA-F:]+\\]|[^:/\\s]+):[0-9]{1,5}$\n description: Target in \"host:port\" form. IPv6 addresses must be bracketed.\n periodicity:\n not:\n enum:\n - PERIODICITY_UNSPECIFIED\n title: periodicity\n description: Check periodicity (required).\n $ref: '#/components/schemas/openstatus.monitor.v1.Periodicity'\n timeout:\n type:\n - integer\n - string\n title: timeout\n maximum: 120000\n minimum: 0\n format: int64\n description: Timeout in milliseconds (0-120000, defaults to 45000).\n degradedAt:\n type:\n - integer\n - string\n - \"null\"\n title: degraded_at\n maximum: 120000\n minimum: 0\n format: int64\n description: Latency threshold for degraded status in milliseconds (optional, 0-120000).\n retry:\n type:\n - integer\n - string\n title: retry\n maximum: 10\n minimum: 0\n format: int64\n description: Number of retry attempts (0-10, defaults to 3).\n description:\n type:\n - string\n - \"null\"\n title: description\n maxLength: 1024\n description: Description of the monitor (optional).\n active:\n type:\n - boolean\n - \"null\"\n title: active\n description: Whether the monitor is active (defaults to false).\n public:\n type:\n - boolean\n - \"null\"\n title: public\n description: Whether the monitor is publicly visible (defaults to false).\n regions:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.monitor.v1.Region'\n title: regions\n maxItems: 28\n description: Geographic regions to run checks from.\n openTelemetry:\n title: open_telemetry\n description: OpenTelemetry configuration for exporting metrics.\n $ref: '#/components/schemas/openstatus.monitor.v1.OpenTelemetryConfig'\n status:\n title: status\n description: Current operational status of the monitor.\n $ref: '#/components/schemas/openstatus.monitor.v1.MonitorStatus'\n privateLocationIds:\n type: array\n items:\n type: string\n readOnly: true\n title: private_location_ids\n description: IDs of private locations that run this monitor. Read-only.\n readOnly: true\n service:\n type:\n - string\n - \"null\"\n examples:\n - checkout.v1.CheckoutService\n title: service\n maxLength: 512\n description: Service name passed to Health/Check. Empty means overall server health.\n tlsMode:\n oneOf:\n - $ref: '#/components/schemas/openstatus.monitor.v1.GRPCTlsMode'\n - type: \"null\"\n title: tls_mode\n description: How the connection to the target is secured. Defaults to TLS.\n metadata:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.monitor.v1.Headers'\n title: metadata\n maxItems: 20\n description: Metadata sent with the health check request.\n title: GRPCMonitor\n additionalProperties: false\n description: |-\n GRPCMonitor defines the configuration for a gRPC health check monitor.\n The probe calls grpc.health.v1.Health/Check on the target.\n openstatus.monitor.v1.GRPCTlsMode:\n type: string\n title: GRPCTlsMode\n enum:\n - GRPC_TLS_MODE_UNSPECIFIED\n - GRPC_TLS_MODE_TLS\n - GRPC_TLS_MODE_PLAINTEXT\n - GRPC_TLS_MODE_TLS_INSECURE\n description: GRPCTlsMode selects how the probe secures its connection to the target.\n openstatus.monitor.v1.GetMonitorHTTPResponseLogRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: Monitor ID to get a response log for (required).\n logId:\n type: string\n title: log_id\n minLength: 1\n description: Response log ID to retrieve (required).\n title: GetMonitorHTTPResponseLogRequest\n additionalProperties: false\n description: GetMonitorHTTPResponseLogRequest is the request to get one response log.\n openstatus.monitor.v1.GetMonitorHTTPResponseLogResponse:\n type: object\n properties:\n log:\n title: log\n description: Response log details.\n $ref: '#/components/schemas/openstatus.monitor.v1.HTTPResponseLogDetail'\n title: GetMonitorHTTPResponseLogResponse\n additionalProperties: false\n description: GetMonitorHTTPResponseLogResponse is the response containing one response log.\n openstatus.monitor.v1.GetMonitorRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: Monitor ID to retrieve (required).\n title: GetMonitorRequest\n additionalProperties: false\n description: GetMonitorRequest is the request to get a single monitor by ID.\n openstatus.monitor.v1.GetMonitorResponse:\n type: object\n properties:\n monitor:\n title: monitor\n description: The monitor configuration (one of HTTP, TCP, DNS, ICMP, or gRPC).\n $ref: '#/components/schemas/openstatus.monitor.v1.MonitorConfig'\n title: GetMonitorResponse\n additionalProperties: false\n description: GetMonitorResponse is the response containing the monitor.\n openstatus.monitor.v1.GetMonitorStatusRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: Monitor ID to get status for (required).\n title: GetMonitorStatusRequest\n additionalProperties: false\n description: GetMonitorStatusRequest is the request to get the status of all regions for a monitor.\n openstatus.monitor.v1.GetMonitorStatusResponse:\n type: object\n properties:\n id:\n type: string\n title: id\n description: Monitor ID.\n regions:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.monitor.v1.RegionStatus'\n title: regions\n description: Status for each region.\n title: GetMonitorStatusResponse\n additionalProperties: false\n description: GetMonitorStatusResponse is the response containing the status of all regions for a monitor.\n openstatus.monitor.v1.GetMonitorSummaryRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: Monitor ID to get summary for (required).\n timeRange:\n title: time_range\n description: Time range for metrics aggregation (defaults to 1 day if unspecified).\n $ref: '#/components/schemas/openstatus.monitor.v1.TimeRange'\n regions:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.monitor.v1.Region'\n title: regions\n maxItems: 28\n description: Optional filter by regions. If empty, returns metrics for all regions.\n title: GetMonitorSummaryRequest\n additionalProperties: false\n description: GetMonitorSummaryRequest is the request to get aggregated metrics for a monitor.\n openstatus.monitor.v1.GetMonitorSummaryResponse:\n type: object\n properties:\n id:\n type: string\n title: id\n description: Monitor ID.\n lastPingAt:\n type: string\n title: last_ping_at\n description: Timestamp of the last check in RFC 3339 format.\n totalSuccessful:\n type:\n - integer\n - string\n title: total_successful\n format: int64\n description: Total number of successful requests.\n totalDegraded:\n type:\n - integer\n - string\n title: total_degraded\n format: int64\n description: Total number of degraded requests.\n totalFailed:\n type:\n - integer\n - string\n title: total_failed\n format: int64\n description: Total number of failed requests.\n p50:\n type:\n - integer\n - string\n title: p50\n format: int64\n description: 50th percentile (median) latency in milliseconds.\n p75:\n type:\n - integer\n - string\n title: p75\n format: int64\n description: 75th percentile latency in milliseconds.\n p90:\n type:\n - integer\n - string\n title: p90\n format: int64\n description: 90th percentile latency in milliseconds.\n p95:\n type:\n - integer\n - string\n title: p95\n format: int64\n description: 95th percentile latency in milliseconds.\n p99:\n type:\n - integer\n - string\n title: p99\n format: int64\n description: 99th percentile latency in milliseconds.\n timeRange:\n title: time_range\n description: Time range used for the metrics.\n $ref: '#/components/schemas/openstatus.monitor.v1.TimeRange'\n regions:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.monitor.v1.Region'\n title: regions\n description: Regions included in the metrics.\n title: GetMonitorSummaryResponse\n additionalProperties: false\n description: GetMonitorSummaryResponse is the response containing aggregated metrics for a monitor.\n openstatus.monitor.v1.HTTPMethod:\n type: string\n title: HTTPMethod\n enum:\n - HTTP_METHOD_UNSPECIFIED\n - HTTP_METHOD_GET\n - HTTP_METHOD_POST\n - HTTP_METHOD_HEAD\n - HTTP_METHOD_PUT\n - HTTP_METHOD_PATCH\n - HTTP_METHOD_DELETE\n - HTTP_METHOD_TRACE\n - HTTP_METHOD_CONNECT\n - HTTP_METHOD_OPTIONS\n description: HTTP methods supported for monitors.\n openstatus.monitor.v1.HTTPMonitor:\n type: object\n properties:\n id:\n type: string\n title: id\n description: Unique identifier for the monitor (output only for create requests).\n name:\n type: string\n examples:\n - Production API Health Check\n title: name\n maxLength: 256\n minLength: 1\n description: Name of the monitor (required, max 256 characters).\n url:\n type: string\n examples:\n - https://api.example.com/health\n title: url\n maxLength: 2048\n minLength: 1\n format: uri\n description: URL to monitor (required, max 2048 characters).\n periodicity:\n not:\n enum:\n - PERIODICITY_UNSPECIFIED\n title: periodicity\n description: Check periodicity (required).\n $ref: '#/components/schemas/openstatus.monitor.v1.Periodicity'\n method:\n not:\n enum:\n - HTTP_METHOD_UNSPECIFIED\n title: method\n description: HTTP method to use (defaults to GET).\n $ref: '#/components/schemas/openstatus.monitor.v1.HTTPMethod'\n body:\n type: string\n examples:\n - map[key:value]\n title: body\n description: Request body (optional).\n timeout:\n type:\n - integer\n - string\n title: timeout\n maximum: 120000\n minimum: 0\n format: int64\n description: Timeout in milliseconds (0-120000, defaults to 45000).\n degradedAt:\n type:\n - integer\n - string\n - \"null\"\n title: degraded_at\n maximum: 120000\n minimum: 0\n format: int64\n description: Latency threshold for degraded status in milliseconds (optional, 0-120000).\n retry:\n type:\n - integer\n - string\n title: retry\n maximum: 10\n minimum: 0\n format: int64\n description: Number of retry attempts (0-10, defaults to 3).\n followRedirects:\n type:\n - boolean\n - \"null\"\n title: follow_redirects\n description: Whether to follow HTTP redirects (defaults to true when not specified).\n headers:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.monitor.v1.Headers'\n title: headers\n maxItems: 20\n description: Custom headers for the request.\n statusCodeAssertions:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.monitor.v1.StatusCodeAssertion'\n title: status_code_assertions\n maxItems: 10\n description: Status code assertions for the response.\n bodyAssertions:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.monitor.v1.BodyAssertion'\n title: body_assertions\n maxItems: 10\n description: Body content assertions for the response.\n headerAssertions:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.monitor.v1.HeaderAssertion'\n title: header_assertions\n maxItems: 10\n description: Header assertions for the response.\n description:\n type:\n - string\n - \"null\"\n title: description\n maxLength: 1024\n description: Description of the monitor (optional).\n active:\n type:\n - boolean\n - \"null\"\n title: active\n description: Whether the monitor is active (defaults to false).\n public:\n type:\n - boolean\n - \"null\"\n title: public\n description: Whether the monitor is publicly visible (defaults to false).\n regions:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.monitor.v1.Region'\n title: regions\n maxItems: 28\n description: Geographic regions to run checks from.\n openTelemetry:\n title: open_telemetry\n description: OpenTelemetry configuration for exporting metrics.\n $ref: '#/components/schemas/openstatus.monitor.v1.OpenTelemetryConfig'\n status:\n title: status\n description: Current operational status of the monitor.\n $ref: '#/components/schemas/openstatus.monitor.v1.MonitorStatus'\n privateLocationIds:\n type: array\n items:\n type: string\n readOnly: true\n title: private_location_ids\n description: IDs of private locations that run this monitor. Read-only.\n readOnly: true\n title: HTTPMonitor\n additionalProperties: false\n description: HTTPMonitor defines the configuration for an HTTP monitor.\n openstatus.monitor.v1.HTTPResponseLogDetail:\n type: object\n properties:\n log:\n title: log\n description: Compact response log fields.\n $ref: '#/components/schemas/openstatus.monitor.v1.HTTPResponseLogListItem'\n url:\n type: string\n title: url\n description: Checked URL.\n error:\n type: boolean\n title: error\n description: Whether the check errored.\n message:\n type:\n - string\n - \"null\"\n title: message\n description: Error message, when present.\n headers:\n type: object\n title: headers\n additionalProperties:\n type: string\n title: value\n description: Redacted response headers.\n assertions:\n type:\n - string\n - \"null\"\n title: assertions\n description: Serialized assertions used for the check.\n title: HTTPResponseLogDetail\n additionalProperties: false\n description: HTTPResponseLogDetail contains full response log debugging data.\n openstatus.monitor.v1.HTTPResponseLogDetail.HeadersEntry:\n type: object\n properties:\n key:\n type: string\n title: key\n value:\n type: string\n title: value\n title: HeadersEntry\n additionalProperties: false\n openstatus.monitor.v1.HTTPResponseLogListItem:\n type: object\n properties:\n id:\n type:\n - string\n - \"null\"\n title: id\n description: Response log ID.\n latency:\n type: integer\n title: latency\n format: int32\n description: Latency in milliseconds.\n statusCode:\n type:\n - integer\n - \"null\"\n title: status_code\n format: int32\n description: HTTP status code.\n monitorId:\n type: string\n title: monitor_id\n description: Monitor ID.\n requestStatus:\n title: request_status\n description: Request status classification.\n $ref: '#/components/schemas/openstatus.monitor.v1.HTTPResponseLogRequestStatus'\n region:\n title: region\n description: Region where the check ran.\n $ref: '#/components/schemas/openstatus.monitor.v1.Region'\n cronTimestamp:\n type:\n - integer\n - string\n title: cron_timestamp\n format: int64\n description: Cron bucket timestamp in Unix milliseconds.\n trigger:\n title: trigger\n description: Check trigger.\n $ref: '#/components/schemas/openstatus.monitor.v1.HTTPResponseLogTrigger'\n timestamp:\n type:\n - integer\n - string\n title: timestamp\n format: int64\n description: Response timestamp in Unix milliseconds.\n timing:\n oneOf:\n - $ref: '#/components/schemas/openstatus.monitor.v1.HTTPResponseLogTiming'\n - type: \"null\"\n title: timing\n description: Timing phases.\n title: HTTPResponseLogListItem\n additionalProperties: false\n description: HTTPResponseLogListItem is a compact response log entry.\n openstatus.monitor.v1.HTTPResponseLogPagination:\n type: object\n properties:\n limit:\n type: integer\n title: limit\n format: int32\n description: Requested page size.\n offset:\n type: integer\n title: offset\n format: int32\n description: Requested offset.\n hasMore:\n type: boolean\n title: has_more\n description: Whether more logs are available.\n nextOffset:\n type:\n - integer\n - \"null\"\n title: next_offset\n format: int32\n description: Next offset if more logs are available.\n title: HTTPResponseLogPagination\n additionalProperties: false\n description: HTTPResponseLogPagination contains offset pagination metadata.\n openstatus.monitor.v1.HTTPResponseLogRequestStatus:\n type: string\n title: HTTPResponseLogRequestStatus\n enum:\n - HTTP_RESPONSE_LOG_REQUEST_STATUS_UNSPECIFIED\n - HTTP_RESPONSE_LOG_REQUEST_STATUS_SUCCESS\n - HTTP_RESPONSE_LOG_REQUEST_STATUS_ERROR\n - HTTP_RESPONSE_LOG_REQUEST_STATUS_DEGRADED\n description: HTTPResponseLogRequestStatus is the result classification for an HTTP response log.\n openstatus.monitor.v1.HTTPResponseLogTiming:\n type: object\n properties:\n dns:\n type: integer\n title: dns\n format: int32\n description: DNS lookup duration.\n connect:\n type: integer\n title: connect\n format: int32\n description: TCP connection duration.\n tls:\n type: integer\n title: tls\n format: int32\n description: TLS handshake duration.\n ttfb:\n type: integer\n title: ttfb\n format: int32\n description: Time to first byte duration.\n transfer:\n type: integer\n title: transfer\n format: int32\n description: Response transfer duration.\n title: HTTPResponseLogTiming\n additionalProperties: false\n description: HTTPResponseLogTiming contains calculated timing phases in milliseconds.\n openstatus.monitor.v1.HTTPResponseLogTrigger:\n type: string\n title: HTTPResponseLogTrigger\n enum:\n - HTTP_RESPONSE_LOG_TRIGGER_UNSPECIFIED\n - HTTP_RESPONSE_LOG_TRIGGER_CRON\n - HTTP_RESPONSE_LOG_TRIGGER_API\n description: HTTPResponseLogTrigger describes what started the monitor check.\n openstatus.monitor.v1.HeaderAssertion:\n type: object\n properties:\n target:\n type: string\n title: target\n description: Target value to compare against.\n comparator:\n not:\n enum:\n - STRING_COMPARATOR_UNSPECIFIED\n title: comparator\n description: Comparison operation (required, must not be UNSPECIFIED).\n $ref: '#/components/schemas/openstatus.monitor.v1.StringComparator'\n key:\n type: string\n title: key\n minLength: 1\n description: Header key to check (required).\n title: HeaderAssertion\n additionalProperties: false\n description: HeaderAssertion defines an assertion for response headers.\n openstatus.monitor.v1.Headers:\n type: object\n properties:\n key:\n type: string\n examples:\n - Authorization\n title: key\n minLength: 1\n description: Header name.\n value:\n type: string\n examples:\n - Bearer token123\n title: value\n description: Header value.\n title: Headers\n additionalProperties: false\n description: Headers represents a key-value pair for HTTP headers.\n openstatus.monitor.v1.ICMPMonitor:\n type: object\n properties:\n id:\n type: string\n title: id\n description: Unique identifier for the monitor (output only for create requests).\n name:\n type: string\n examples:\n - Ping Gateway\n title: name\n maxLength: 256\n minLength: 1\n description: Name of the monitor (required, max 256 characters).\n uri:\n type: string\n examples:\n - 1.1.1.1\n title: uri\n maxLength: 2048\n minLength: 1\n description: URI to monitor in format \"host or IP\" (required, max 2048 characters).\n periodicity:\n not:\n enum:\n - PERIODICITY_UNSPECIFIED\n title: periodicity\n description: Check periodicity (required).\n $ref: '#/components/schemas/openstatus.monitor.v1.Periodicity'\n timeout:\n type:\n - integer\n - string\n title: timeout\n maximum: 120000\n minimum: 0\n format: int64\n description: Timeout in milliseconds (0-120000, defaults to 45000).\n degradedAt:\n type:\n - integer\n - string\n - \"null\"\n title: degraded_at\n maximum: 120000\n minimum: 0\n format: int64\n description: Latency threshold for degraded status in milliseconds (optional, 0-120000).\n retry:\n type:\n - integer\n - string\n title: retry\n maximum: 10\n minimum: 0\n format: int64\n description: Number of retry attempts (0-10, defaults to 3).\n description:\n type:\n - string\n - \"null\"\n title: description\n maxLength: 1024\n description: Description of the monitor (optional).\n active:\n type:\n - boolean\n - \"null\"\n title: active\n description: Whether the monitor is active (defaults to false).\n public:\n type:\n - boolean\n - \"null\"\n title: public\n description: Whether the monitor is publicly visible (defaults to false).\n regions:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.monitor.v1.Region'\n title: regions\n maxItems: 28\n description: Geographic regions to run checks from.\n openTelemetry:\n title: open_telemetry\n description: OpenTelemetry configuration for exporting metrics.\n $ref: '#/components/schemas/openstatus.monitor.v1.OpenTelemetryConfig'\n status:\n title: status\n description: Current operational status of the monitor.\n $ref: '#/components/schemas/openstatus.monitor.v1.MonitorStatus'\n privateLocationIds:\n type: array\n items:\n type: string\n readOnly: true\n title: private_location_ids\n description: IDs of private locations that run this monitor. Read-only.\n readOnly: true\n title: ICMPMonitor\n additionalProperties: false\n description: ICMPMonitor defines the configuration for a ICMP monitor.\n openstatus.monitor.v1.ListMonitorHTTPResponseLogsRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: Monitor ID to list response logs for (required).\n fromTimestamp:\n type:\n - integer\n - string\n - \"null\"\n title: from_timestamp\n format: int64\n description: Start of the response log window as Unix milliseconds within the 14-day retention window.\n toTimestamp:\n type:\n - integer\n - string\n - \"null\"\n title: to_timestamp\n format: int64\n description: End of the response log window as Unix milliseconds within the 14-day retention window.\n limit:\n type:\n - integer\n - \"null\"\n title: limit\n maximum: 100\n minimum: 1\n format: int32\n description: Maximum number of logs to return (1-100, defaults to 25).\n offset:\n type:\n - integer\n - \"null\"\n title: offset\n minimum: 0\n format: int32\n description: Number of logs to skip for pagination (defaults to 0).\n title: ListMonitorHTTPResponseLogsRequest\n additionalProperties: false\n description: ListMonitorHTTPResponseLogsRequest is the request to list response logs within the 14-day HTTP response-log window.\n openstatus.monitor.v1.ListMonitorHTTPResponseLogsResponse:\n type: object\n properties:\n logs:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.monitor.v1.HTTPResponseLogListItem'\n title: logs\n description: Response logs.\n pagination:\n title: pagination\n description: Pagination metadata.\n $ref: '#/components/schemas/openstatus.monitor.v1.HTTPResponseLogPagination'\n title: ListMonitorHTTPResponseLogsResponse\n additionalProperties: false\n description: ListMonitorHTTPResponseLogsResponse is the response containing response logs.\n openstatus.monitor.v1.ListMonitorsRequest:\n type: object\n properties:\n limit:\n type:\n - integer\n - \"null\"\n title: limit\n maximum: 100\n minimum: 1\n format: int32\n description: Maximum number of monitors to return (1-100, defaults to 50).\n offset:\n type:\n - integer\n - \"null\"\n title: offset\n minimum: 0\n format: int32\n description: Number of monitors to skip for pagination (defaults to 0).\n title: ListMonitorsRequest\n additionalProperties: false\n description: ListMonitorsRequest is the request to list monitors.\n openstatus.monitor.v1.ListMonitorsResponse:\n type: object\n properties:\n httpMonitors:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.monitor.v1.HTTPMonitor'\n title: http_monitors\n description: HTTP monitors in the workspace.\n tcpMonitors:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.monitor.v1.TCPMonitor'\n title: tcp_monitors\n description: TCP monitors in the workspace.\n dnsMonitors:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.monitor.v1.DNSMonitor'\n title: dns_monitors\n description: DNS monitors in the workspace.\n icmpMonitors:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.monitor.v1.ICMPMonitor'\n title: icmp_monitors\n description: ICMP monitors in the workspace.\n grpcMonitors:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.monitor.v1.GRPCMonitor'\n title: grpc_monitors\n description: gRPC monitors in the workspace.\n totalSize:\n type: integer\n title: total_size\n format: int32\n description: Total number of monitors across all types.\n title: ListMonitorsResponse\n additionalProperties: false\n description: ListMonitorsResponse is the response containing a list of monitors.\n openstatus.monitor.v1.MonitorConfig:\n type: object\n oneOf:\n - type: object\n properties:\n dns:\n title: dns\n description: DNS monitor configuration.\n $ref: '#/components/schemas/openstatus.monitor.v1.DNSMonitor'\n title: dns\n required:\n - dns\n - type: object\n properties:\n grpc:\n title: grpc\n description: gRPC monitor configuration.\n $ref: '#/components/schemas/openstatus.monitor.v1.GRPCMonitor'\n title: grpc\n required:\n - grpc\n - type: object\n properties:\n http:\n title: http\n description: HTTP monitor configuration.\n $ref: '#/components/schemas/openstatus.monitor.v1.HTTPMonitor'\n title: http\n required:\n - http\n - type: object\n properties:\n icmp:\n title: icmp\n description: ICMP monitor configuration.\n $ref: '#/components/schemas/openstatus.monitor.v1.ICMPMonitor'\n title: icmp\n required:\n - icmp\n - type: object\n properties:\n tcp:\n title: tcp\n description: TCP monitor configuration.\n $ref: '#/components/schemas/openstatus.monitor.v1.TCPMonitor'\n title: tcp\n required:\n - tcp\n - not:\n anyOf:\n - required:\n - dns\n - required:\n - grpc\n - required:\n - http\n - required:\n - icmp\n - required:\n - tcp\n unevaluatedProperties: false\n title: MonitorConfig\n description: MonitorConfig represents the type-specific configuration for a monitor.\n openstatus.monitor.v1.MonitorStatus:\n type: string\n title: MonitorStatus\n enum:\n - MONITOR_STATUS_UNSPECIFIED\n - MONITOR_STATUS_ACTIVE\n - MONITOR_STATUS_DEGRADED\n - MONITOR_STATUS_ERROR\n description: MonitorStatus represents the operational status of a monitor.\n openstatus.monitor.v1.NumberComparator:\n type: string\n title: NumberComparator\n enum:\n - NUMBER_COMPARATOR_UNSPECIFIED\n - NUMBER_COMPARATOR_EQUAL\n - NUMBER_COMPARATOR_NOT_EQUAL\n - NUMBER_COMPARATOR_GREATER_THAN\n - NUMBER_COMPARATOR_GREATER_THAN_OR_EQUAL\n - NUMBER_COMPARATOR_LESS_THAN\n - NUMBER_COMPARATOR_LESS_THAN_OR_EQUAL\n description: NumberComparator defines comparison operations for numeric values.\n openstatus.monitor.v1.OpenTelemetryConfig:\n type: object\n properties:\n endpoint:\n type: string\n title: endpoint\n maxLength: 2048\n description: OTEL endpoint URL.\n headers:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.monitor.v1.Headers'\n title: headers\n maxItems: 20\n description: Custom headers for OTEL requests.\n title: OpenTelemetryConfig\n additionalProperties: false\n description: OpenTelemetry configuration for exporting metrics.\n openstatus.monitor.v1.Periodicity:\n type: string\n title: Periodicity\n enum:\n - PERIODICITY_UNSPECIFIED\n - PERIODICITY_30S\n - PERIODICITY_1M\n - PERIODICITY_5M\n - PERIODICITY_10M\n - PERIODICITY_30M\n - PERIODICITY_1H\n description: Monitor periodicity options.\n openstatus.monitor.v1.RecordAssertion:\n type: object\n properties:\n record:\n type: string\n title: record\n enum:\n - A\n - AAAA\n - CNAME\n - MX\n - TXT\n description: DNS record type (e.g., \"A\", \"AAAA\", \"CNAME\", \"MX\", \"TXT\").\n comparator:\n not:\n enum:\n - RECORD_COMPARATOR_UNSPECIFIED\n title: comparator\n description: Comparison operation (required, must not be UNSPECIFIED).\n $ref: '#/components/schemas/openstatus.monitor.v1.RecordComparator'\n target:\n type: string\n title: target\n description: Target value to compare against.\n title: RecordAssertion\n additionalProperties: false\n description: RecordAssertion defines an assertion for DNS records.\n openstatus.monitor.v1.RecordComparator:\n type: string\n title: RecordComparator\n enum:\n - RECORD_COMPARATOR_UNSPECIFIED\n - RECORD_COMPARATOR_EQUAL\n - RECORD_COMPARATOR_NOT_EQUAL\n - RECORD_COMPARATOR_CONTAINS\n - RECORD_COMPARATOR_NOT_CONTAINS\n description: RecordComparator defines comparison operations for DNS records.\n openstatus.monitor.v1.Region:\n type: string\n title: Region\n enum:\n - REGION_UNSPECIFIED\n - REGION_FLY_AMS\n - REGION_FLY_ARN\n - REGION_FLY_BOM\n - REGION_FLY_CDG\n - REGION_FLY_DFW\n - REGION_FLY_EWR\n - REGION_FLY_FRA\n - REGION_FLY_GRU\n - REGION_FLY_IAD\n - REGION_FLY_JNB\n - REGION_FLY_LAX\n - REGION_FLY_LHR\n - REGION_FLY_NRT\n - REGION_FLY_ORD\n - REGION_FLY_SJC\n - REGION_FLY_SIN\n - REGION_FLY_SYD\n - REGION_FLY_YYZ\n - REGION_KOYEB_FRA\n - REGION_KOYEB_PAR\n - REGION_KOYEB_SFO\n - REGION_KOYEB_SIN\n - REGION_KOYEB_TYO\n - REGION_KOYEB_WAS\n - REGION_RAILWAY_US_WEST2\n - REGION_RAILWAY_US_EAST4\n - REGION_RAILWAY_EUROPE_WEST4\n - REGION_RAILWAY_ASIA_SOUTHEAST1\n description: Geographic regions where monitors can run checks from.\n openstatus.monitor.v1.RegionStatus:\n type: object\n properties:\n region:\n title: region\n description: The region identifier.\n $ref: '#/components/schemas/openstatus.monitor.v1.Region'\n status:\n title: status\n description: The status of the monitor in this region.\n $ref: '#/components/schemas/openstatus.monitor.v1.MonitorStatus'\n title: RegionStatus\n additionalProperties: false\n description: RegionStatus represents the status of a monitor in a specific region.\n openstatus.monitor.v1.StatusCodeAssertion:\n type: object\n properties:\n target:\n type:\n - integer\n - string\n title: target\n maximum: 599\n minimum: 100\n format: int64\n description: Target status code to compare against (100-599).\n comparator:\n not:\n enum:\n - NUMBER_COMPARATOR_UNSPECIFIED\n title: comparator\n description: Comparison operation (required, must not be UNSPECIFIED).\n $ref: '#/components/schemas/openstatus.monitor.v1.NumberComparator'\n title: StatusCodeAssertion\n additionalProperties: false\n description: StatusCodeAssertion defines an assertion for HTTP status codes.\n openstatus.monitor.v1.StringComparator:\n type: string\n title: StringComparator\n enum:\n - STRING_COMPARATOR_UNSPECIFIED\n - STRING_COMPARATOR_CONTAINS\n - STRING_COMPARATOR_NOT_CONTAINS\n - STRING_COMPARATOR_EQUAL\n - STRING_COMPARATOR_NOT_EQUAL\n - STRING_COMPARATOR_EMPTY\n - STRING_COMPARATOR_NOT_EMPTY\n - STRING_COMPARATOR_GREATER_THAN\n - STRING_COMPARATOR_GREATER_THAN_OR_EQUAL\n - STRING_COMPARATOR_LESS_THAN\n - STRING_COMPARATOR_LESS_THAN_OR_EQUAL\n description: StringComparator defines comparison operations for string values.\n openstatus.monitor.v1.TCPMonitor:\n type: object\n properties:\n id:\n type: string\n title: id\n description: Unique identifier for the monitor (output only for create requests).\n name:\n type: string\n examples:\n - Database Connection Check\n title: name\n maxLength: 256\n minLength: 1\n description: Name of the monitor (required, max 256 characters).\n uri:\n type: string\n examples:\n - tcp://db.example.com:5432\n title: uri\n maxLength: 2048\n minLength: 1\n description: URI to monitor in format \"host:port\" (required, max 2048 characters).\n periodicity:\n not:\n enum:\n - PERIODICITY_UNSPECIFIED\n title: periodicity\n description: Check periodicity (required).\n $ref: '#/components/schemas/openstatus.monitor.v1.Periodicity'\n timeout:\n type:\n - integer\n - string\n title: timeout\n maximum: 120000\n minimum: 0\n format: int64\n description: Timeout in milliseconds (0-120000, defaults to 45000).\n degradedAt:\n type:\n - integer\n - string\n - \"null\"\n title: degraded_at\n maximum: 120000\n minimum: 0\n format: int64\n description: Latency threshold for degraded status in milliseconds (optional, 0-120000).\n retry:\n type:\n - integer\n - string\n title: retry\n maximum: 10\n minimum: 0\n format: int64\n description: Number of retry attempts (0-10, defaults to 3).\n description:\n type:\n - string\n - \"null\"\n title: description\n maxLength: 1024\n description: Description of the monitor (optional).\n active:\n type:\n - boolean\n - \"null\"\n title: active\n description: Whether the monitor is active (defaults to false).\n public:\n type:\n - boolean\n - \"null\"\n title: public\n description: Whether the monitor is publicly visible (defaults to false).\n regions:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.monitor.v1.Region'\n title: regions\n maxItems: 28\n description: Geographic regions to run checks from.\n openTelemetry:\n title: open_telemetry\n description: OpenTelemetry configuration for exporting metrics.\n $ref: '#/components/schemas/openstatus.monitor.v1.OpenTelemetryConfig'\n status:\n title: status\n description: Current operational status of the monitor.\n $ref: '#/components/schemas/openstatus.monitor.v1.MonitorStatus'\n privateLocationIds:\n type: array\n items:\n type: string\n readOnly: true\n title: private_location_ids\n description: IDs of private locations that run this monitor. Read-only.\n readOnly: true\n title: TCPMonitor\n additionalProperties: false\n description: TCPMonitor defines the configuration for a TCP monitor.\n openstatus.monitor.v1.TimeRange:\n type: string\n title: TimeRange\n enum:\n - TIME_RANGE_UNSPECIFIED\n - TIME_RANGE_1D\n - TIME_RANGE_7D\n - TIME_RANGE_14D\n description: TimeRange represents the time period for metrics aggregation.\n openstatus.monitor.v1.TriggerMonitorRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: Monitor ID to trigger (required).\n title: TriggerMonitorRequest\n additionalProperties: false\n description: TriggerMonitorRequest is the request to trigger a monitor check.\n openstatus.monitor.v1.TriggerMonitorResponse:\n type: object\n properties:\n success:\n type: boolean\n title: success\n description: Whether the trigger was successful.\n title: TriggerMonitorResponse\n additionalProperties: false\n description: TriggerMonitorResponse is the response after triggering a monitor.\n openstatus.monitor.v1.UpdateDNSMonitorRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: Monitor ID to update (required).\n monitor:\n oneOf:\n - $ref: '#/components/schemas/openstatus.monitor.v1.DNSMonitor'\n - type: \"null\"\n title: monitor\n description: Updated monitor configuration (all fields optional for partial updates).\n title: UpdateDNSMonitorRequest\n additionalProperties: false\n description: UpdateDNSMonitorRequest is the request to update an existing DNS monitor.\n openstatus.monitor.v1.UpdateDNSMonitorResponse:\n type: object\n properties:\n monitor:\n title: monitor\n description: The updated monitor.\n $ref: '#/components/schemas/openstatus.monitor.v1.DNSMonitor'\n title: UpdateDNSMonitorResponse\n additionalProperties: false\n description: UpdateDNSMonitorResponse is the response after updating a DNS monitor.\n openstatus.monitor.v1.UpdateGRPCMonitorRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: Monitor ID to update (required).\n monitor:\n oneOf:\n - $ref: '#/components/schemas/openstatus.monitor.v1.GRPCMonitor'\n - type: \"null\"\n title: monitor\n description: Updated monitor configuration (all fields optional for partial updates).\n title: UpdateGRPCMonitorRequest\n additionalProperties: false\n description: UpdateGRPCMonitorRequest is the request to update an existing gRPC monitor.\n openstatus.monitor.v1.UpdateGRPCMonitorResponse:\n type: object\n properties:\n monitor:\n title: monitor\n description: The updated monitor.\n $ref: '#/components/schemas/openstatus.monitor.v1.GRPCMonitor'\n title: UpdateGRPCMonitorResponse\n additionalProperties: false\n description: UpdateGRPCMonitorResponse is the response after updating a gRPC monitor.\n openstatus.monitor.v1.UpdateHTTPMonitorRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: Monitor ID to update (required).\n monitor:\n oneOf:\n - $ref: '#/components/schemas/openstatus.monitor.v1.HTTPMonitor'\n - type: \"null\"\n title: monitor\n description: Updated monitor configuration (all fields optional for partial updates).\n title: UpdateHTTPMonitorRequest\n additionalProperties: false\n description: UpdateHTTPMonitorRequest is the request to update an existing HTTP monitor.\n openstatus.monitor.v1.UpdateHTTPMonitorResponse:\n type: object\n properties:\n monitor:\n title: monitor\n description: The updated monitor.\n $ref: '#/components/schemas/openstatus.monitor.v1.HTTPMonitor'\n title: UpdateHTTPMonitorResponse\n additionalProperties: false\n description: UpdateHTTPMonitorResponse is the response after updating an HTTP monitor.\n openstatus.monitor.v1.UpdateICMPMonitorRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: Monitor ID to update (required).\n monitor:\n oneOf:\n - $ref: '#/components/schemas/openstatus.monitor.v1.ICMPMonitor'\n - type: \"null\"\n title: monitor\n description: Updated monitor configuration (all fields optional for partial updates).\n title: UpdateICMPMonitorRequest\n additionalProperties: false\n description: UpdateICMPMonitorRequest is the request to update an existing ICMP monitor.\n openstatus.monitor.v1.UpdateICMPMonitorResponse:\n type: object\n properties:\n monitor:\n title: monitor\n description: The updated monitor.\n $ref: '#/components/schemas/openstatus.monitor.v1.ICMPMonitor'\n title: UpdateICMPMonitorResponse\n additionalProperties: false\n description: UpdateICMPMonitorResponse is the response after updating an ICMP monitor.\n openstatus.monitor.v1.UpdateTCPMonitorRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: Monitor ID to update (required).\n monitor:\n oneOf:\n - $ref: '#/components/schemas/openstatus.monitor.v1.TCPMonitor'\n - type: \"null\"\n title: monitor\n description: Updated monitor configuration (all fields optional for partial updates).\n title: UpdateTCPMonitorRequest\n additionalProperties: false\n description: UpdateTCPMonitorRequest is the request to update an existing TCP monitor.\n openstatus.monitor.v1.UpdateTCPMonitorResponse:\n type: object\n properties:\n monitor:\n title: monitor\n description: The updated monitor.\n $ref: '#/components/schemas/openstatus.monitor.v1.TCPMonitor'\n title: UpdateTCPMonitorResponse\n additionalProperties: false\n description: UpdateTCPMonitorResponse is the response after updating a TCP monitor.\n openstatus.notification.v1.CheckNotificationLimitRequest:\n type: object\n title: CheckNotificationLimitRequest\n additionalProperties: false\n description: CheckNotificationLimitRequest is the request to check notification limits.\n openstatus.notification.v1.CheckNotificationLimitResponse:\n type: object\n properties:\n limitReached:\n type: boolean\n title: limit_reached\n description: Whether the workspace has reached its notification limit.\n currentCount:\n type: integer\n title: current_count\n format: int32\n description: Current number of notification channels.\n maxCount:\n type: integer\n title: max_count\n format: int32\n description: Maximum allowed notification channels.\n title: CheckNotificationLimitResponse\n additionalProperties: false\n description: CheckNotificationLimitResponse is the response containing limit information.\n openstatus.notification.v1.CreateNotificationRequest:\n type: object\n properties:\n name:\n type: string\n examples:\n - Slack Ops Channel\n title: name\n minLength: 1\n description: Display name for the notification channel.\n provider:\n not:\n enum:\n - NOTIFICATION_PROVIDER_UNSPECIFIED\n title: provider\n description: Provider type.\n $ref: '#/components/schemas/openstatus.notification.v1.NotificationProvider'\n data:\n title: data\n description: Provider-specific configuration.\n $ref: '#/components/schemas/openstatus.notification.v1.NotificationData'\n monitorIds:\n type: array\n items:\n type: string\n title: monitor_ids\n description: IDs of monitors to associate with this notification.\n title: CreateNotificationRequest\n required:\n - data\n additionalProperties: false\n description: CreateNotificationRequest is the request to create a new notification channel.\n openstatus.notification.v1.CreateNotificationResponse:\n type: object\n properties:\n notification:\n title: notification\n description: The created notification channel.\n $ref: '#/components/schemas/openstatus.notification.v1.Notification'\n title: CreateNotificationResponse\n additionalProperties: false\n description: CreateNotificationResponse is the response after creating a notification channel.\n openstatus.notification.v1.DeleteNotificationRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: Notification ID to delete (required).\n title: DeleteNotificationRequest\n additionalProperties: false\n description: DeleteNotificationRequest is the request to delete a notification channel.\n openstatus.notification.v1.DeleteNotificationResponse:\n type: object\n properties:\n success:\n type: boolean\n title: success\n description: Whether the deletion was successful.\n title: DeleteNotificationResponse\n additionalProperties: false\n description: DeleteNotificationResponse is the response after deleting a notification channel.\n openstatus.notification.v1.DiscordData:\n type: object\n properties:\n webhookUrl:\n type: string\n examples:\n - https://discord.com/api/webhooks/123/abc\n title: webhook_url\n format: uri\n description: Discord webhook URL.\n title: DiscordData\n additionalProperties: false\n description: DiscordData contains configuration for Discord notifications.\n openstatus.notification.v1.EmailData:\n type: object\n properties:\n email:\n type: string\n examples:\n - ops-team@example.com\n title: email\n format: email\n description: Email address to send notifications to.\n title: EmailData\n additionalProperties: false\n description: EmailData contains configuration for email notifications.\n openstatus.notification.v1.GetNotificationRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: Notification ID to retrieve (required).\n title: GetNotificationRequest\n additionalProperties: false\n description: GetNotificationRequest is the request to get a notification channel.\n openstatus.notification.v1.GetNotificationResponse:\n type: object\n properties:\n notification:\n title: notification\n description: The notification channel.\n $ref: '#/components/schemas/openstatus.notification.v1.Notification'\n title: GetNotificationResponse\n additionalProperties: false\n description: GetNotificationResponse is the response containing the notification channel.\n openstatus.notification.v1.GoogleChatData:\n type: object\n properties:\n webhookUrl:\n type: string\n title: webhook_url\n format: uri\n description: Google Chat webhook URL.\n title: GoogleChatData\n additionalProperties: false\n description: GoogleChatData contains configuration for Google Chat notifications.\n openstatus.notification.v1.GrafanaOncallData:\n type: object\n properties:\n webhookUrl:\n type: string\n title: webhook_url\n format: uri\n description: Grafana OnCall webhook URL.\n title: GrafanaOncallData\n additionalProperties: false\n description: GrafanaOncallData contains configuration for Grafana OnCall notifications.\n openstatus.notification.v1.ListNotificationsRequest:\n type: object\n properties:\n limit:\n type:\n - integer\n - \"null\"\n title: limit\n maximum: 100\n minimum: 1\n format: int32\n description: Maximum number of notifications to return (1-100, defaults to 50).\n offset:\n type:\n - integer\n - \"null\"\n title: offset\n minimum: 0\n format: int32\n description: Number of notifications to skip for pagination (defaults to 0).\n title: ListNotificationsRequest\n additionalProperties: false\n description: ListNotificationsRequest is the request to list notification channels.\n openstatus.notification.v1.ListNotificationsResponse:\n type: object\n properties:\n notifications:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.notification.v1.NotificationSummary'\n title: notifications\n description: Notification channel summaries.\n totalSize:\n type: integer\n title: total_size\n format: int32\n description: Total number of notification channels.\n title: ListNotificationsResponse\n additionalProperties: false\n description: ListNotificationsResponse is the response containing notification channels.\n openstatus.notification.v1.MsTeamsData:\n type: object\n properties:\n webhookUrl:\n type: string\n examples:\n - https://prod-00.westeurope.logic.azure.com:443/workflows/abc/triggers/manual/paths/invoke\n title: webhook_url\n format: uri\n description: Microsoft Teams webhook URL (Power Automate Workflows).\n title: MsTeamsData\n additionalProperties: false\n description: MsTeamsData contains configuration for Microsoft Teams notifications.\n openstatus.notification.v1.Notification:\n type: object\n properties:\n id:\n type: string\n title: id\n description: Unique identifier for the notification.\n name:\n type: string\n title: name\n description: Display name for the notification channel.\n provider:\n title: provider\n description: Provider type.\n $ref: '#/components/schemas/openstatus.notification.v1.NotificationProvider'\n data:\n title: data\n description: Provider-specific configuration.\n $ref: '#/components/schemas/openstatus.notification.v1.NotificationData'\n monitorIds:\n type: array\n items:\n type: string\n title: monitor_ids\n description: IDs of monitors associated with this notification.\n createdAt:\n type: string\n title: created_at\n description: Timestamp when the notification was created (RFC 3339).\n updatedAt:\n type: string\n title: updated_at\n description: Timestamp when the notification was last updated (RFC 3339).\n title: Notification\n additionalProperties: false\n description: Notification represents a notification channel with full details.\n openstatus.notification.v1.NotificationData:\n type: object\n oneOf:\n - type: object\n properties:\n discord:\n title: discord\n description: Discord configuration.\n $ref: '#/components/schemas/openstatus.notification.v1.DiscordData'\n title: discord\n required:\n - discord\n - type: object\n properties:\n email:\n title: email\n description: Email configuration.\n $ref: '#/components/schemas/openstatus.notification.v1.EmailData'\n title: email\n required:\n - email\n - type: object\n properties:\n googleChat:\n title: google_chat\n description: Google Chat configuration.\n $ref: '#/components/schemas/openstatus.notification.v1.GoogleChatData'\n title: google_chat\n required:\n - googleChat\n - type: object\n properties:\n grafanaOncall:\n title: grafana_oncall\n description: Grafana OnCall configuration.\n $ref: '#/components/schemas/openstatus.notification.v1.GrafanaOncallData'\n title: grafana_oncall\n required:\n - grafanaOncall\n - type: object\n properties:\n msTeams:\n title: ms_teams\n description: Microsoft Teams configuration.\n $ref: '#/components/schemas/openstatus.notification.v1.MsTeamsData'\n title: ms_teams\n required:\n - msTeams\n - type: object\n properties:\n ntfy:\n title: ntfy\n description: Ntfy configuration.\n $ref: '#/components/schemas/openstatus.notification.v1.NtfyData'\n title: ntfy\n required:\n - ntfy\n - type: object\n properties:\n opsgenie:\n title: opsgenie\n description: Opsgenie configuration.\n $ref: '#/components/schemas/openstatus.notification.v1.OpsgenieData'\n title: opsgenie\n required:\n - opsgenie\n - type: object\n properties:\n pagerduty:\n title: pagerduty\n description: PagerDuty configuration.\n $ref: '#/components/schemas/openstatus.notification.v1.PagerDutyData'\n title: pagerduty\n required:\n - pagerduty\n - type: object\n properties:\n slack:\n title: slack\n description: Slack configuration.\n $ref: '#/components/schemas/openstatus.notification.v1.SlackData'\n title: slack\n required:\n - slack\n - type: object\n properties:\n sms:\n title: sms\n description: SMS configuration.\n $ref: '#/components/schemas/openstatus.notification.v1.SmsData'\n title: sms\n required:\n - sms\n - type: object\n properties:\n telegram:\n title: telegram\n description: Telegram configuration.\n $ref: '#/components/schemas/openstatus.notification.v1.TelegramData'\n title: telegram\n required:\n - telegram\n - type: object\n properties:\n webhook:\n title: webhook\n description: Webhook configuration.\n $ref: '#/components/schemas/openstatus.notification.v1.WebhookData'\n title: webhook\n required:\n - webhook\n - type: object\n properties:\n whatsapp:\n title: whatsapp\n description: WhatsApp configuration.\n $ref: '#/components/schemas/openstatus.notification.v1.WhatsappData'\n title: whatsapp\n required:\n - whatsapp\n - not:\n anyOf:\n - required:\n - discord\n - required:\n - email\n - required:\n - googleChat\n - required:\n - grafanaOncall\n - required:\n - msTeams\n - required:\n - ntfy\n - required:\n - opsgenie\n - required:\n - pagerduty\n - required:\n - slack\n - required:\n - sms\n - required:\n - telegram\n - required:\n - webhook\n - required:\n - whatsapp\n unevaluatedProperties: false\n title: NotificationData\n description: NotificationData is a union of provider-specific configuration.\n openstatus.notification.v1.NotificationProvider:\n type: string\n title: NotificationProvider\n enum:\n - NOTIFICATION_PROVIDER_UNSPECIFIED\n - NOTIFICATION_PROVIDER_DISCORD\n - NOTIFICATION_PROVIDER_EMAIL\n - NOTIFICATION_PROVIDER_GOOGLE_CHAT\n - NOTIFICATION_PROVIDER_GRAFANA_ONCALL\n - NOTIFICATION_PROVIDER_NTFY\n - NOTIFICATION_PROVIDER_PAGERDUTY\n - NOTIFICATION_PROVIDER_OPSGENIE\n - NOTIFICATION_PROVIDER_SLACK\n - NOTIFICATION_PROVIDER_SMS\n - NOTIFICATION_PROVIDER_TELEGRAM\n - NOTIFICATION_PROVIDER_WEBHOOK\n - NOTIFICATION_PROVIDER_WHATSAPP\n - NOTIFICATION_PROVIDER_MS_TEAMS\n description: NotificationProvider represents the supported notification channel types.\n openstatus.notification.v1.NotificationSummary:\n type: object\n properties:\n id:\n type: string\n title: id\n description: Unique identifier for the notification.\n name:\n type: string\n title: name\n description: Display name for the notification channel.\n provider:\n title: provider\n description: Provider type.\n $ref: '#/components/schemas/openstatus.notification.v1.NotificationProvider'\n monitorCount:\n type: integer\n title: monitor_count\n format: int32\n description: Number of monitors associated with this notification.\n createdAt:\n type: string\n title: created_at\n description: Timestamp when the notification was created (RFC 3339).\n updatedAt:\n type: string\n title: updated_at\n description: Timestamp when the notification was last updated (RFC 3339).\n title: NotificationSummary\n additionalProperties: false\n description: NotificationSummary represents a notification channel summary for list responses.\n openstatus.notification.v1.NtfyData:\n type: object\n properties:\n topic:\n type: string\n examples:\n - openstatus-alerts\n title: topic\n minLength: 1\n description: Ntfy topic to publish to.\n serverUrl:\n type: string\n title: server_url\n description: Ntfy server URL (defaults to https://ntfy.sh).\n token:\n type:\n - string\n - \"null\"\n title: token\n description: Optional authentication token.\n title: NtfyData\n additionalProperties: false\n description: NtfyData contains configuration for Ntfy notifications.\n openstatus.notification.v1.OpsgenieData:\n type: object\n properties:\n apiKey:\n type: string\n title: api_key\n minLength: 1\n description: Opsgenie API key.\n region:\n title: region\n description: Opsgenie region.\n $ref: '#/components/schemas/openstatus.notification.v1.OpsgenieRegion'\n title: OpsgenieData\n additionalProperties: false\n description: OpsgenieData contains configuration for Opsgenie notifications.\n openstatus.notification.v1.OpsgenieRegion:\n type: string\n title: OpsgenieRegion\n enum:\n - OPSGENIE_REGION_UNSPECIFIED\n - OPSGENIE_REGION_US\n - OPSGENIE_REGION_EU\n description: OpsgenieRegion represents the Opsgenie API region.\n openstatus.notification.v1.PagerDutyData:\n type: object\n properties:\n integrationKey:\n type: string\n examples:\n - a1b2c3d4e5f6g7h8i9j0\n title: integration_key\n minLength: 1\n description: PagerDuty integration key.\n title: PagerDutyData\n additionalProperties: false\n description: PagerDutyData contains configuration for PagerDuty notifications.\n openstatus.notification.v1.SendTestNotificationRequest:\n type: object\n properties:\n provider:\n not:\n enum:\n - NOTIFICATION_PROVIDER_UNSPECIFIED\n title: provider\n description: Provider type.\n $ref: '#/components/schemas/openstatus.notification.v1.NotificationProvider'\n data:\n title: data\n description: Provider-specific configuration.\n $ref: '#/components/schemas/openstatus.notification.v1.NotificationData'\n title: SendTestNotificationRequest\n required:\n - data\n additionalProperties: false\n description: SendTestNotificationRequest is the request to send a test notification.\n openstatus.notification.v1.SendTestNotificationResponse:\n type: object\n properties:\n success:\n type: boolean\n title: success\n description: Whether the test was successful.\n errorMessage:\n type:\n - string\n - \"null\"\n title: error_message\n description: Optional error message if the test failed.\n title: SendTestNotificationResponse\n additionalProperties: false\n description: SendTestNotificationResponse is the response after sending a test notification.\n openstatus.notification.v1.SlackData:\n type: object\n properties:\n webhookUrl:\n type: string\n examples:\n - https://hooks.slack.com/services/T00/B00/xxx\n title: webhook_url\n format: uri\n description: Slack webhook URL.\n title: SlackData\n additionalProperties: false\n description: SlackData contains configuration for Slack notifications.\n openstatus.notification.v1.SmsData:\n type: object\n properties:\n phoneNumber:\n type: string\n examples:\n - \"+14155551234\"\n title: phone_number\n minLength: 1\n description: Phone number to send SMS to.\n title: SmsData\n additionalProperties: false\n description: SmsData contains configuration for SMS notifications.\n openstatus.notification.v1.TelegramData:\n type: object\n properties:\n chatId:\n type: string\n examples:\n - \"-1001234567890\"\n title: chat_id\n minLength: 1\n description: Telegram chat ID.\n title: TelegramData\n additionalProperties: false\n description: TelegramData contains configuration for Telegram notifications.\n openstatus.notification.v1.UpdateNotificationRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: Notification ID to update (required).\n name:\n type:\n - string\n - \"null\"\n title: name\n description: Updated display name.\n data:\n oneOf:\n - $ref: '#/components/schemas/openstatus.notification.v1.NotificationData'\n - type: \"null\"\n title: data\n description: Updated provider-specific configuration.\n monitorIds:\n type: array\n items:\n type: string\n title: monitor_ids\n description: Updated monitor IDs to associate.\n updateMonitorIds:\n type:\n - boolean\n - \"null\"\n title: update_monitor_ids\n description: |-\n Set to true to update monitor associations.\n When true, monitor_ids replaces the existing list (empty clears all).\n When false or unset, monitor_ids is ignored and existing associations are preserved.\n title: UpdateNotificationRequest\n additionalProperties: false\n description: UpdateNotificationRequest is the request to update a notification channel.\n openstatus.notification.v1.UpdateNotificationResponse:\n type: object\n properties:\n notification:\n title: notification\n description: The updated notification channel.\n $ref: '#/components/schemas/openstatus.notification.v1.Notification'\n title: UpdateNotificationResponse\n additionalProperties: false\n description: UpdateNotificationResponse is the response after updating a notification channel.\n openstatus.notification.v1.WebhookData:\n type: object\n properties:\n endpoint:\n type: string\n examples:\n - https://api.example.com/webhooks/openstatus\n title: endpoint\n format: uri\n description: Webhook endpoint URL.\n headers:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.notification.v1.WebhookHeader'\n title: headers\n description: Optional custom headers.\n title: WebhookData\n additionalProperties: false\n description: WebhookData contains configuration for custom webhook notifications.\n openstatus.notification.v1.WebhookHeader:\n type: object\n properties:\n key:\n type: string\n title: key\n minLength: 1\n description: Header name.\n value:\n type: string\n title: value\n description: Header value.\n title: WebhookHeader\n additionalProperties: false\n description: WebhookHeader represents a custom header for webhook requests.\n openstatus.notification.v1.WhatsappData:\n type: object\n properties:\n phoneNumber:\n type: string\n title: phone_number\n minLength: 1\n description: Phone number to send WhatsApp messages to.\n title: WhatsappData\n additionalProperties: false\n description: WhatsappData contains configuration for WhatsApp notifications.\n openstatus.private_location.v1.CreatePrivateLocationRequest:\n type: object\n properties:\n name:\n type: string\n examples:\n - eu-west-agent\n title: name\n maxLength: 256\n minLength: 1\n description: Display name for the private location (required, 1-256 characters).\n monitorIds:\n type: array\n items:\n type: string\n title: monitor_ids\n description: IDs of monitors this private location should run (optional).\n metadata:\n type: object\n title: metadata\n maxProperties: 20\n additionalProperties:\n type: string\n title: value\n maxLength: 256\n description: User-defined key/value labels (optional, up to 20 entries).\n title: CreatePrivateLocationRequest\n additionalProperties: false\n description: CreatePrivateLocationRequest is the request to create a new private location.\n openstatus.private_location.v1.CreatePrivateLocationRequest.MetadataEntry:\n type: object\n properties:\n key:\n type: string\n title: key\n value:\n type: string\n title: value\n title: MetadataEntry\n additionalProperties: false\n openstatus.private_location.v1.CreatePrivateLocationResponse:\n type: object\n properties:\n privateLocation:\n title: private_location\n description: The created private location, including its generated agent token.\n $ref: '#/components/schemas/openstatus.private_location.v1.PrivateLocation'\n title: CreatePrivateLocationResponse\n additionalProperties: false\n description: CreatePrivateLocationResponse is the response after creating a private location.\n openstatus.private_location.v1.DeletePrivateLocationRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: ID of the private location to delete (required).\n title: DeletePrivateLocationRequest\n additionalProperties: false\n description: DeletePrivateLocationRequest is the request to delete a private location.\n openstatus.private_location.v1.DeletePrivateLocationResponse:\n type: object\n properties:\n success:\n type: boolean\n title: success\n description: Whether the deletion was successful.\n title: DeletePrivateLocationResponse\n additionalProperties: false\n description: DeletePrivateLocationResponse is the response after deleting a private location.\n openstatus.private_location.v1.GetPrivateLocationRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: ID of the private location to retrieve (required).\n title: GetPrivateLocationRequest\n additionalProperties: false\n description: GetPrivateLocationRequest is the request to get a private location by ID.\n openstatus.private_location.v1.GetPrivateLocationResponse:\n type: object\n properties:\n privateLocation:\n title: private_location\n description: The requested private location.\n $ref: '#/components/schemas/openstatus.private_location.v1.PrivateLocation'\n title: GetPrivateLocationResponse\n additionalProperties: false\n description: GetPrivateLocationResponse is the response containing the private location.\n openstatus.private_location.v1.ListPrivateLocationsRequest:\n type: object\n properties:\n limit:\n type:\n - integer\n - \"null\"\n title: limit\n maximum: 100\n minimum: 1\n format: int32\n description: Maximum number of private locations to return (1-100, defaults to 50).\n offset:\n type:\n - integer\n - \"null\"\n title: offset\n minimum: 0\n format: int32\n description: Number of private locations to skip for pagination (defaults to 0).\n title: ListPrivateLocationsRequest\n additionalProperties: false\n description: ListPrivateLocationsRequest is the request to list private locations.\n openstatus.private_location.v1.ListPrivateLocationsResponse:\n type: object\n properties:\n privateLocations:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.private_location.v1.PrivateLocationSummary'\n title: private_locations\n description: List of private locations.\n totalSize:\n type: integer\n title: total_size\n format: int32\n description: Total number of private locations in the workspace.\n title: ListPrivateLocationsResponse\n additionalProperties: false\n description: ListPrivateLocationsResponse is the response containing private location summaries.\n openstatus.private_location.v1.PrivateLocation:\n type: object\n properties:\n id:\n type: string\n title: id\n description: Unique identifier for the private location.\n name:\n type: string\n title: name\n description: Display name for the private location.\n token:\n type: string\n title: token\n description: |-\n Agent credential. Generated by the server on creation and used by the\n agent to authenticate; treat it as a secret.\n monitorIds:\n type: array\n items:\n type: string\n title: monitor_ids\n description: IDs of monitors this private location runs.\n lastSeenAt:\n type: string\n title: last_seen_at\n description: Last time the agent reported a result (RFC 3339), empty if it never has.\n createdAt:\n type: string\n title: created_at\n description: Timestamp when the private location was created (RFC 3339 format).\n updatedAt:\n type: string\n title: updated_at\n description: Timestamp when the private location was last updated (RFC 3339 format).\n metadata:\n type: object\n title: metadata\n additionalProperties:\n type: string\n title: value\n description: User-defined key/value labels attached to this private location.\n status:\n title: status\n description: Computed health of the agent. Read-only.\n $ref: '#/components/schemas/openstatus.private_location.v1.PrivateLocationStatus'\n title: PrivateLocation\n additionalProperties: false\n description: PrivateLocation represents a self-hosted checker agent with full details.\n openstatus.private_location.v1.PrivateLocation.MetadataEntry:\n type: object\n properties:\n key:\n type: string\n title: key\n value:\n type: string\n title: value\n title: MetadataEntry\n additionalProperties: false\n openstatus.private_location.v1.PrivateLocationStatus:\n type: string\n title: PrivateLocationStatus\n enum:\n - PRIVATE_LOCATION_STATUS_UNSPECIFIED\n - PRIVATE_LOCATION_STATUS_ACTIVE\n - PRIVATE_LOCATION_STATUS_ERROR\n description: |-\n PrivateLocationStatus is the computed health of a private location, derived\n from the agent heartbeat. Read-only — it cannot be set through the API.\n openstatus.private_location.v1.PrivateLocationSummary:\n type: object\n properties:\n id:\n type: string\n title: id\n description: Unique identifier for the private location.\n name:\n type: string\n title: name\n description: Display name for the private location.\n monitorCount:\n type: integer\n title: monitor_count\n format: int32\n description: Number of monitors this private location runs.\n lastSeenAt:\n type: string\n title: last_seen_at\n description: Last time the agent reported a result (RFC 3339), empty if it never has.\n createdAt:\n type: string\n title: created_at\n description: Timestamp when the private location was created (RFC 3339 format).\n updatedAt:\n type: string\n title: updated_at\n description: Timestamp when the private location was last updated (RFC 3339 format).\n status:\n title: status\n description: Computed health of the agent. Read-only.\n $ref: '#/components/schemas/openstatus.private_location.v1.PrivateLocationStatus'\n metadata:\n type: object\n title: metadata\n additionalProperties:\n type: string\n title: value\n description: User-defined key/value labels attached to this private location.\n title: PrivateLocationSummary\n additionalProperties: false\n description: |-\n PrivateLocationSummary represents metadata for a private location (used in\n list responses). The agent token is intentionally omitted.\n openstatus.private_location.v1.PrivateLocationSummary.MetadataEntry:\n type: object\n properties:\n key:\n type: string\n title: key\n value:\n type: string\n title: value\n title: MetadataEntry\n additionalProperties: false\n openstatus.private_location.v1.UpdatePrivateLocationRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: ID of the private location to update (required).\n name:\n type:\n - string\n - \"null\"\n title: name\n maxLength: 256\n minLength: 1\n description: New display name for the private location (optional).\n monitorIds:\n type: array\n items:\n type: string\n title: monitor_ids\n description: New list of monitor IDs. Only applied when update_monitor_ids is true.\n updateMonitorIds:\n type:\n - boolean\n - \"null\"\n title: update_monitor_ids\n description: |-\n When true, monitor_ids replaces the current associations (an empty list\n clears all). When false or unset, monitor_ids is ignored and existing\n associations are preserved.\n metadata:\n type: object\n title: metadata\n maxProperties: 20\n additionalProperties:\n type: string\n title: value\n maxLength: 256\n description: New key/value labels. Only applied when update_metadata is true.\n updateMetadata:\n type:\n - boolean\n - \"null\"\n title: update_metadata\n description: |-\n When true, metadata replaces the current labels (an empty map clears all).\n When false or unset, metadata is ignored and existing labels are preserved.\n title: UpdatePrivateLocationRequest\n additionalProperties: false\n description: UpdatePrivateLocationRequest is the request to update a private location.\n openstatus.private_location.v1.UpdatePrivateLocationRequest.MetadataEntry:\n type: object\n properties:\n key:\n type: string\n title: key\n value:\n type: string\n title: value\n title: MetadataEntry\n additionalProperties: false\n openstatus.private_location.v1.UpdatePrivateLocationResponse:\n type: object\n properties:\n privateLocation:\n title: private_location\n description: The updated private location.\n $ref: '#/components/schemas/openstatus.private_location.v1.PrivateLocation'\n title: UpdatePrivateLocationResponse\n additionalProperties: false\n description: UpdatePrivateLocationResponse is the response after updating a private location.\n openstatus.status_page.v1.AddMonitorComponentRequest:\n type: object\n properties:\n pageId:\n type: string\n title: page_id\n minLength: 1\n description: ID of the status page to add the component to (required).\n monitorId:\n type: string\n title: monitor_id\n minLength: 1\n description: ID of the monitor to associate with this component (required).\n name:\n type:\n - string\n - \"null\"\n title: name\n maxLength: 256\n description: Display name for the component (optional, defaults to monitor name).\n description:\n type:\n - string\n - \"null\"\n title: description\n maxLength: 1024\n description: Description of the component (optional).\n order:\n type:\n - integer\n - \"null\"\n title: order\n format: int32\n description: Display order of the component (optional).\n groupId:\n type:\n - string\n - \"null\"\n title: group_id\n description: ID of the group to add this component to (optional).\n title: AddMonitorComponentRequest\n additionalProperties: false\n description: AddMonitorComponentRequest is the request to add a monitor-based component to a status page.\n openstatus.status_page.v1.AddMonitorComponentResponse:\n type: object\n properties:\n component:\n title: component\n description: The created component.\n $ref: '#/components/schemas/openstatus.status_page.v1.PageComponent'\n title: AddMonitorComponentResponse\n additionalProperties: false\n description: AddMonitorComponentResponse is the response after adding a monitor component.\n openstatus.status_page.v1.AddStaticComponentRequest:\n type: object\n properties:\n pageId:\n type: string\n title: page_id\n minLength: 1\n description: ID of the status page to add the component to (required).\n name:\n type: string\n title: name\n maxLength: 256\n minLength: 1\n description: Display name for the component (required).\n description:\n type:\n - string\n - \"null\"\n title: description\n maxLength: 1024\n description: Description of the component (optional).\n order:\n type:\n - integer\n - \"null\"\n title: order\n format: int32\n description: Display order of the component (optional).\n groupId:\n type:\n - string\n - \"null\"\n title: group_id\n description: ID of the group to add this component to (optional).\n title: AddStaticComponentRequest\n additionalProperties: false\n description: AddStaticComponentRequest is the request to add a static component to a status page.\n openstatus.status_page.v1.AddStaticComponentResponse:\n type: object\n properties:\n component:\n title: component\n description: The created component.\n $ref: '#/components/schemas/openstatus.status_page.v1.PageComponent'\n title: AddStaticComponentResponse\n additionalProperties: false\n description: AddStaticComponentResponse is the response after adding a static component.\n openstatus.status_page.v1.ComponentDayBucket:\n type: object\n properties:\n day:\n type: string\n title: day\n description: Day in RFC 3339 format (UTC midnight).\n count:\n type:\n - integer\n - string\n title: count\n format: int64\n description: Total checks that day.\n ok:\n type:\n - integer\n - string\n title: ok\n format: int64\n description: Successful checks.\n degraded:\n type:\n - integer\n - string\n title: degraded\n format: int64\n description: Degraded checks.\n error:\n type:\n - integer\n - string\n title: error\n format: int64\n description: Failed checks.\n status:\n title: status\n description: Convenience resolved status for the day.\n $ref: '#/components/schemas/openstatus.status_page.v1.ComponentDayStatus'\n impact:\n oneOf:\n - $ref: '#/components/schemas/openstatus.status_report.v1.PageComponentImpact'\n - type: \"null\"\n title: impact\n description: Worst status-report impact overlapping the day (absent when none).\n title: ComponentDayBucket\n additionalProperties: false\n description: ComponentDayBucket is one day of status data for a component.\n openstatus.status_page.v1.ComponentDayStatus:\n type: string\n title: ComponentDayStatus\n enum:\n - COMPONENT_DAY_STATUS_UNSPECIFIED\n - COMPONENT_DAY_STATUS_OPERATIONAL\n - COMPONENT_DAY_STATUS_DEGRADED\n - COMPONENT_DAY_STATUS_DOWN\n - COMPONENT_DAY_STATUS_MAINTENANCE\n - COMPONENT_DAY_STATUS_EMPTY\n description: ComponentDayStatus is the resolved status of a component on a given day.\n openstatus.status_page.v1.ComponentEvent:\n type: object\n properties:\n id:\n type: string\n title: id\n description: Identifier of the underlying event.\n name:\n type: string\n title: name\n description: Human-readable name (incident \"Downtime\", maintenance / report title).\n type:\n title: type\n description: Kind of event.\n $ref: '#/components/schemas/openstatus.status_page.v1.ComponentEventType'\n status:\n title: status\n description: Projected status this event contributes.\n $ref: '#/components/schemas/openstatus.status_page.v1.ComponentEventStatus'\n from:\n type: string\n title: from\n description: Start time (RFC 3339).\n to:\n type:\n - string\n - \"null\"\n title: to\n description: End time (RFC 3339); absent while the event is ongoing.\n impact:\n oneOf:\n - $ref: '#/components/schemas/openstatus.status_report.v1.PageComponentImpact'\n - type: \"null\"\n title: impact\n description: Worst impact over the event (reports only; absent otherwise).\n title: ComponentEvent\n additionalProperties: false\n description: ComponentEvent is a single incident / maintenance / report affecting a component.\n openstatus.status_page.v1.ComponentEventStatus:\n type: string\n title: ComponentEventStatus\n enum:\n - COMPONENT_EVENT_STATUS_UNSPECIFIED\n - COMPONENT_EVENT_STATUS_OPERATIONAL\n - COMPONENT_EVENT_STATUS_DEGRADED\n - COMPONENT_EVENT_STATUS_DOWN\n - COMPONENT_EVENT_STATUS_MAINTENANCE\n description: ComponentEventStatus is the projected status an event contributes.\n openstatus.status_page.v1.ComponentEventType:\n type: string\n title: ComponentEventType\n enum:\n - COMPONENT_EVENT_TYPE_UNSPECIFIED\n - COMPONENT_EVENT_TYPE_MAINTENANCE\n - COMPONENT_EVENT_TYPE_INCIDENT\n - COMPONENT_EVENT_TYPE_REPORT\n description: ComponentEventType is the kind of timeline event affecting a component.\n openstatus.status_page.v1.ComponentStatus:\n type: object\n properties:\n componentId:\n type: string\n title: component_id\n description: ID of the component.\n status:\n title: status\n description: Current status of the component.\n $ref: '#/components/schemas/openstatus.status_page.v1.OverallStatus'\n title: ComponentStatus\n additionalProperties: false\n description: ComponentStatus represents the status of a single component.\n openstatus.status_page.v1.CreateComponentGroupRequest:\n type: object\n properties:\n pageId:\n type: string\n title: page_id\n minLength: 1\n description: ID of the status page to create the group in (required).\n name:\n type: string\n title: name\n maxLength: 256\n minLength: 1\n description: Display name for the group (required).\n defaultOpen:\n type:\n - boolean\n - \"null\"\n title: default_open\n description: Whether the group should be expanded by default on the status page (optional, defaults to false).\n title: CreateComponentGroupRequest\n additionalProperties: false\n description: CreateComponentGroupRequest is the request to create a new component group.\n openstatus.status_page.v1.CreateComponentGroupResponse:\n type: object\n properties:\n group:\n title: group\n description: The created component group.\n $ref: '#/components/schemas/openstatus.status_page.v1.PageComponentGroup'\n title: CreateComponentGroupResponse\n additionalProperties: false\n description: CreateComponentGroupResponse is the response after creating a component group.\n openstatus.status_page.v1.CreatePageSubscriptionRequest:\n type: object\n allOf:\n - properties:\n pageId:\n type: string\n title: page_id\n minLength: 1\n description: ID of the status page (required).\n name:\n type:\n - string\n - \"null\"\n title: name\n maxLength: 255\n description: Optional human-readable label.\n componentIds:\n type: array\n items:\n type: string\n title: component_ids\n description: Component scope. Empty = entire page.\n - oneOf:\n - type: object\n properties:\n emailChannel:\n title: email_channel\n $ref: '#/components/schemas/openstatus.status_page.v1.EmailChannel'\n title: email_channel\n required:\n - emailChannel\n - type: object\n properties:\n webhookChannel:\n title: webhook_channel\n $ref: '#/components/schemas/openstatus.status_page.v1.WebhookChannel'\n title: webhook_channel\n required:\n - webhookChannel\n - not:\n anyOf:\n - required:\n - emailChannel\n - required:\n - webhookChannel\n - oneOf:\n - required:\n - emailChannel\n - required:\n - webhookChannel\n unevaluatedProperties: false\n title: CreatePageSubscriptionRequest\n description: CreatePageSubscriptionRequest is the request to add a vendor-managed subscriber to a status page.\n openstatus.status_page.v1.CreatePageSubscriptionResponse:\n type: object\n properties:\n subscriber:\n title: subscriber\n description: The created subscriber.\n $ref: '#/components/schemas/openstatus.status_page.v1.PageSubscriber'\n title: CreatePageSubscriptionResponse\n additionalProperties: false\n description: CreatePageSubscriptionResponse is the response after creating a vendor-managed subscription.\n openstatus.status_page.v1.CreateStatusPageRequest:\n type: object\n properties:\n title:\n type: string\n examples:\n - Acme Corp Status\n title: title\n maxLength: 256\n minLength: 1\n description: Title of the status page (required).\n description:\n type:\n - string\n - \"null\"\n title: description\n maxLength: 1024\n description: Description of the status page (optional).\n slug:\n type: string\n examples:\n - my-status-page\n title: slug\n maxLength: 256\n minLength: 1\n pattern: ^[a-z0-9]+(?:-[a-z0-9]+)*$\n description: URL-friendly slug for the status page (required). Must be lowercase alphanumeric with hyphens.\n homepageUrl:\n type:\n - string\n - \"null\"\n examples:\n - https://www.example.com\n title: homepage_url\n description: URL to the homepage (optional).\n contactUrl:\n type:\n - string\n - \"null\"\n title: contact_url\n description: URL to the contact page (optional).\n defaultLocale:\n oneOf:\n - $ref: '#/components/schemas/openstatus.status_page.v1.Locale'\n - type: \"null\"\n title: default_locale\n description: Default locale for the status page (optional, defaults to EN).\n locales:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.status_page.v1.Locale'\n title: locales\n description: Enabled locales for the status page (optional).\n icon:\n type:\n - string\n - \"null\"\n title: icon\n maxLength: 1024\n description: Icon URL for the status page (optional).\n customDomain:\n type:\n - string\n - \"null\"\n title: custom_domain\n maxLength: 256\n description: Custom domain for the status page (optional).\n theme:\n oneOf:\n - $ref: '#/components/schemas/openstatus.status_page.v1.PageTheme'\n - type: \"null\"\n title: theme\n description: Visual theme for the status page (optional, defaults to SYSTEM).\n accessType:\n oneOf:\n - $ref: '#/components/schemas/openstatus.status_page.v1.PageAccessType'\n - type: \"null\"\n title: access_type\n description: Access type for the status page (optional, defaults to PUBLIC).\n password:\n type:\n - string\n - \"null\"\n title: password\n maxLength: 256\n minLength: 1\n description: Password for the status page (required when access_type is PASSWORD_PROTECTED).\n authEmailDomains:\n type: array\n items:\n type: string\n title: auth_email_domains\n description: Email domains allowed to access the page (used when access_type is AUTHENTICATED).\n allowIndex:\n type:\n - boolean\n - \"null\"\n title: allow_index\n description: Whether search engines are allowed to index this status page (optional, defaults to true).\n allowedIpRanges:\n type:\n - string\n - \"null\"\n title: allowed_ip_ranges\n description: Comma-separated IPv4 CIDR ranges (required when access_type is IP_RESTRICTED).\n customTheme:\n oneOf:\n - $ref: '#/components/schemas/openstatus.status_page.v1.CustomTheme'\n - type: \"null\"\n title: custom_theme\n description: |-\n Per-mode CSS variable overrides merged over the theme (optional).\n Only supported variable names are accepted. Requires the custom-theme plan feature.\n title: CreateStatusPageRequest\n additionalProperties: false\n description: CreateStatusPageRequest is the request to create a new status page.\n openstatus.status_page.v1.CreateStatusPageResponse:\n type: object\n properties:\n statusPage:\n title: status_page\n description: The created status page.\n $ref: '#/components/schemas/openstatus.status_page.v1.StatusPage'\n title: CreateStatusPageResponse\n additionalProperties: false\n description: CreateStatusPageResponse is the response after creating a status page.\n openstatus.status_page.v1.CustomTheme:\n type: object\n properties:\n light:\n type: object\n title: light\n additionalProperties:\n type: string\n title: value\n description: 'CSS variable overrides applied in light mode, keyed by variable name (e.g. \"--primary\": \"hsl(24 94% 50%)\").'\n dark:\n type: object\n title: dark\n additionalProperties:\n type: string\n title: value\n description: CSS variable overrides applied in dark mode, keyed by variable name.\n title: CustomTheme\n additionalProperties: false\n description: CustomTheme holds per-mode CSS variable overrides merged over the page theme.\n openstatus.status_page.v1.CustomTheme.DarkEntry:\n type: object\n properties:\n key:\n type: string\n title: key\n value:\n type: string\n title: value\n title: DarkEntry\n additionalProperties: false\n openstatus.status_page.v1.CustomTheme.LightEntry:\n type: object\n properties:\n key:\n type: string\n title: key\n value:\n type: string\n title: value\n title: LightEntry\n additionalProperties: false\n openstatus.status_page.v1.DeleteComponentGroupRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: ID of the component group to delete (required).\n title: DeleteComponentGroupRequest\n additionalProperties: false\n description: DeleteComponentGroupRequest is the request to delete a component group.\n openstatus.status_page.v1.DeleteComponentGroupResponse:\n type: object\n properties:\n success:\n type: boolean\n title: success\n description: Whether the deletion was successful.\n title: DeleteComponentGroupResponse\n additionalProperties: false\n description: DeleteComponentGroupResponse is the response after deleting a component group.\n openstatus.status_page.v1.DeleteStatusPageRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: ID of the status page to delete (required).\n title: DeleteStatusPageRequest\n additionalProperties: false\n description: DeleteStatusPageRequest is the request to delete a status page.\n openstatus.status_page.v1.DeleteStatusPageResponse:\n type: object\n properties:\n success:\n type: boolean\n title: success\n description: Whether the deletion was successful.\n title: DeleteStatusPageResponse\n additionalProperties: false\n description: DeleteStatusPageResponse is the response after deleting a status page.\n openstatus.status_page.v1.EmailChannel:\n type: object\n properties:\n email:\n type: string\n title: email\n format: email\n description: Email address of the subscriber (required).\n title: EmailChannel\n additionalProperties: false\n description: EmailChannel carries the email-channel fields for CreatePageSubscription.\n openstatus.status_page.v1.GetOverallStatusRequest:\n type: object\n oneOf:\n - type: object\n properties:\n id:\n type: string\n title: id\n description: ID of the status page.\n title: id\n required:\n - id\n - type: object\n properties:\n slug:\n type: string\n title: slug\n description: Slug of the status page.\n title: slug\n required:\n - slug\n - not:\n anyOf:\n - required:\n - id\n - required:\n - slug\n unevaluatedProperties: false\n title: GetOverallStatusRequest\n description: GetOverallStatusRequest is the request to get the overall status of a status page.\n openstatus.status_page.v1.GetOverallStatusResponse:\n type: object\n properties:\n overallStatus:\n title: overall_status\n description: Aggregated status across all components.\n $ref: '#/components/schemas/openstatus.status_page.v1.OverallStatus'\n componentStatuses:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.status_page.v1.ComponentStatus'\n title: component_statuses\n description: Status of individual components.\n title: GetOverallStatusResponse\n additionalProperties: false\n description: GetOverallStatusResponse is the response containing the overall status and individual component statuses.\n openstatus.status_page.v1.GetPageComponentDailySummaryRequest:\n type: object\n allOf:\n - properties:\n componentIds:\n type: array\n items:\n type: string\n minLength: 1\n title: component_ids\n description: Restrict the result to these component ids (optional, defaults to all components).\n days:\n type:\n - integer\n - \"null\"\n title: days\n maximum: 45\n minimum: 1\n format: int32\n description: Number of days to return (1-45, defaults to 45 if unspecified).\n - oneOf:\n - type: object\n properties:\n id:\n type: string\n title: id\n description: ID of the status page.\n title: id\n required:\n - id\n - type: object\n properties:\n slug:\n type: string\n title: slug\n description: Slug of the status page.\n title: slug\n required:\n - slug\n - not:\n anyOf:\n - required:\n - id\n - required:\n - slug\n unevaluatedProperties: false\n title: GetPageComponentDailySummaryRequest\n description: GetPageComponentDailySummaryRequest is the request for per-component daily summaries.\n openstatus.status_page.v1.GetPageComponentDailySummaryResponse:\n type: object\n properties:\n components:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.status_page.v1.PageComponentDailySummary'\n title: components\n description: Per-component daily summaries, in page order.\n title: GetPageComponentDailySummaryResponse\n additionalProperties: false\n description: GetPageComponentDailySummaryResponse is the response containing per-component summaries.\n openstatus.status_page.v1.GetPageComponentRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: ID of the component to retrieve (required).\n title: GetPageComponentRequest\n additionalProperties: false\n description: GetPageComponentRequest is the request to fetch a single component by ID.\n openstatus.status_page.v1.GetPageComponentResponse:\n type: object\n properties:\n component:\n title: component\n description: The requested component.\n $ref: '#/components/schemas/openstatus.status_page.v1.PageComponent'\n title: GetPageComponentResponse\n additionalProperties: false\n description: GetPageComponentResponse is the response containing the component.\n openstatus.status_page.v1.GetStatusPageContentRequest:\n type: object\n oneOf:\n - type: object\n properties:\n id:\n type: string\n title: id\n description: ID of the status page.\n title: id\n required:\n - id\n - type: object\n properties:\n slug:\n type: string\n title: slug\n description: Slug of the status page.\n title: slug\n required:\n - slug\n - not:\n anyOf:\n - required:\n - id\n - required:\n - slug\n unevaluatedProperties: false\n title: GetStatusPageContentRequest\n description: GetStatusPageContentRequest is the request to get the full content of a status page.\n openstatus.status_page.v1.GetStatusPageContentResponse:\n type: object\n properties:\n statusPage:\n title: status_page\n description: The status page details.\n $ref: '#/components/schemas/openstatus.status_page.v1.StatusPage'\n components:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.status_page.v1.PageComponent'\n title: components\n description: Components on the status page.\n groups:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.status_page.v1.PageComponentGroup'\n title: groups\n description: Component groups on the status page.\n statusReports:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.status_report.v1.StatusReport'\n title: status_reports\n description: Active and recent status reports.\n maintenances:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.maintenance.v1.MaintenanceSummary'\n title: maintenances\n description: Scheduled maintenances.\n title: GetStatusPageContentResponse\n additionalProperties: false\n description: GetStatusPageContentResponse is the response containing the full status page content.\n openstatus.status_page.v1.GetStatusPageOverviewRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: ID of the status page (required, workspace-scoped).\n title: GetStatusPageOverviewRequest\n additionalProperties: false\n description: GetStatusPageOverviewRequest requests the full overview of a status page by id.\n openstatus.status_page.v1.GetStatusPageOverviewResponse:\n type: object\n properties:\n statusPage:\n title: status_page\n description: The status page details.\n $ref: '#/components/schemas/openstatus.status_page.v1.StatusPage'\n configuration:\n title: configuration\n description: Rich rendering configuration of the page.\n $ref: '#/components/schemas/openstatus.status_page.v1.PageConfiguration'\n components:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.status_page.v1.PageComponent'\n title: components\n description: Components on the status page.\n groups:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.status_page.v1.PageComponentGroup'\n title: groups\n description: Component groups on the status page.\n statusReports:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.status_report.v1.StatusReport'\n title: status_reports\n description: Active and recent status reports.\n maintenances:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.maintenance.v1.MaintenanceSummary'\n title: maintenances\n description: Scheduled maintenances.\n overallStatus:\n title: overall_status\n description: Aggregated status across all components.\n $ref: '#/components/schemas/openstatus.status_page.v1.OverallStatus'\n componentStatuses:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.status_page.v1.ComponentStatus'\n title: component_statuses\n description: Status of individual components.\n title: GetStatusPageOverviewResponse\n additionalProperties: false\n description: GetStatusPageOverviewResponse bundles all data for a single status page.\n openstatus.status_page.v1.GetStatusPageRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: ID of the status page to retrieve (required).\n title: GetStatusPageRequest\n additionalProperties: false\n description: GetStatusPageRequest is the request to get a status page by ID.\n openstatus.status_page.v1.GetStatusPageResponse:\n type: object\n properties:\n statusPage:\n title: status_page\n description: The requested status page.\n $ref: '#/components/schemas/openstatus.status_page.v1.StatusPage'\n title: GetStatusPageResponse\n additionalProperties: false\n description: GetStatusPageResponse is the response containing the status page.\n openstatus.status_page.v1.ListStatusPagesRequest:\n type: object\n properties:\n limit:\n type:\n - integer\n - \"null\"\n title: limit\n maximum: 100\n minimum: 1\n format: int32\n description: Maximum number of pages to return (1-100, defaults to 50).\n offset:\n type:\n - integer\n - \"null\"\n title: offset\n minimum: 0\n format: int32\n description: Number of pages to skip for pagination (defaults to 0).\n title: ListStatusPagesRequest\n additionalProperties: false\n description: ListStatusPagesRequest is the request to list status pages.\n openstatus.status_page.v1.ListStatusPagesResponse:\n type: object\n properties:\n statusPages:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.status_page.v1.StatusPageSummary'\n title: status_pages\n description: List of status pages (metadata only).\n totalSize:\n type: integer\n title: total_size\n format: int32\n description: Total number of status pages.\n title: ListStatusPagesResponse\n additionalProperties: false\n description: ListStatusPagesResponse is the response containing status page summaries.\n openstatus.status_page.v1.ListSubscribersRequest:\n type: object\n properties:\n pageId:\n type: string\n title: page_id\n minLength: 1\n description: ID of the status page to list subscribers for (required).\n limit:\n type:\n - integer\n - \"null\"\n title: limit\n maximum: 100\n minimum: 1\n format: int32\n description: Maximum number of subscribers to return (1-100, defaults to 50).\n offset:\n type:\n - integer\n - \"null\"\n title: offset\n minimum: 0\n format: int32\n description: Number of subscribers to skip for pagination (defaults to 0).\n includeUnsubscribed:\n type:\n - boolean\n - \"null\"\n title: include_unsubscribed\n description: Whether to include unsubscribed users (defaults to false).\n title: ListSubscribersRequest\n additionalProperties: false\n description: ListSubscribersRequest is the request to list subscribers of a status page.\n openstatus.status_page.v1.ListSubscribersResponse:\n type: object\n properties:\n subscribers:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.status_page.v1.PageSubscriber'\n title: subscribers\n description: List of subscribers.\n totalSize:\n type: integer\n title: total_size\n format: int32\n description: Total number of subscribers matching the filter.\n title: ListSubscribersResponse\n additionalProperties: false\n description: ListSubscribersResponse is the response containing status page subscribers.\n openstatus.status_page.v1.Locale:\n type: string\n title: Locale\n enum:\n - LOCALE_UNSPECIFIED\n - LOCALE_EN\n - LOCALE_FR\n - LOCALE_DE\n - LOCALE_TR\n - LOCALE_HI\n - LOCALE_KO\n - LOCALE_JA\n description: Locale defines the supported languages for a status page.\n openstatus.status_page.v1.OverallStatus:\n type: string\n title: OverallStatus\n enum:\n - OVERALL_STATUS_UNSPECIFIED\n - OVERALL_STATUS_OPERATIONAL\n - OVERALL_STATUS_DEGRADED\n - OVERALL_STATUS_PARTIAL_OUTAGE\n - OVERALL_STATUS_MAJOR_OUTAGE\n - OVERALL_STATUS_MAINTENANCE\n - OVERALL_STATUS_UNKNOWN\n description: OverallStatus represents the aggregated status of all components on a page.\n openstatus.status_page.v1.PageAccessType:\n type: string\n title: PageAccessType\n enum:\n - PAGE_ACCESS_TYPE_UNSPECIFIED\n - PAGE_ACCESS_TYPE_PUBLIC\n - PAGE_ACCESS_TYPE_PASSWORD_PROTECTED\n - PAGE_ACCESS_TYPE_AUTHENTICATED\n - PAGE_ACCESS_TYPE_IP_RESTRICTED\n description: PageAccessType defines who can access the status page.\n openstatus.status_page.v1.PageBarType:\n type: string\n title: PageBarType\n enum:\n - PAGE_BAR_TYPE_UNSPECIFIED\n - PAGE_BAR_TYPE_ABSOLUTE\n - PAGE_BAR_TYPE_MANUAL\n description: PageBarType mirrors page.configuration.type (how the status bar is computed).\n openstatus.status_page.v1.PageComponent:\n type: object\n properties:\n id:\n type: string\n title: id\n description: Unique identifier for the component.\n pageId:\n type: string\n title: page_id\n description: ID of the status page this component belongs to.\n name:\n type: string\n title: name\n description: Display name of the component.\n description:\n type: string\n title: description\n description: Description of the component (optional).\n type:\n title: type\n description: Type of the component (monitor or static).\n $ref: '#/components/schemas/openstatus.status_page.v1.PageComponentType'\n monitorId:\n type: string\n title: monitor_id\n description: ID of the monitor if type is MONITOR (optional).\n order:\n type: integer\n title: order\n format: int32\n description: Display order of the component.\n groupId:\n type: string\n title: group_id\n description: ID of the group this component belongs to (optional).\n groupOrder:\n type: integer\n title: group_order\n format: int32\n description: Order within the group if grouped.\n createdAt:\n type: string\n title: created_at\n description: Timestamp when the component was created (RFC 3339 format).\n updatedAt:\n type: string\n title: updated_at\n description: Timestamp when the component was last updated (RFC 3339 format).\n title: PageComponent\n additionalProperties: false\n description: PageComponent represents a component displayed on a status page.\n openstatus.status_page.v1.PageComponentDailySummary:\n type: object\n properties:\n componentId:\n type: string\n title: component_id\n description: ID of the component.\n type:\n title: type\n description: Component type (monitor or static).\n $ref: '#/components/schemas/openstatus.status_page.v1.PageComponentType'\n monitorId:\n type:\n - string\n - \"null\"\n title: monitor_id\n description: Monitor id backing the component (absent for static components).\n name:\n type: string\n title: name\n description: Display name of the component.\n buckets:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.status_page.v1.ComponentDayBucket'\n title: buckets\n description: Per-day buckets, oldest first.\n events:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.status_page.v1.ComponentEvent'\n title: events\n description: Events affecting the component within the window.\n title: PageComponentDailySummary\n additionalProperties: false\n description: PageComponentDailySummary is the per-day buckets + event timeline for one component.\n openstatus.status_page.v1.PageComponentGroup:\n type: object\n properties:\n id:\n type: string\n title: id\n description: Unique identifier for the group.\n pageId:\n type: string\n title: page_id\n description: ID of the status page this group belongs to.\n name:\n type: string\n title: name\n description: Display name of the group.\n createdAt:\n type: string\n title: created_at\n description: Timestamp when the group was created (RFC 3339 format).\n updatedAt:\n type: string\n title: updated_at\n description: Timestamp when the group was last updated (RFC 3339 format).\n defaultOpen:\n type: boolean\n title: default_open\n description: Whether the group should be expanded by default on the status page.\n title: PageComponentGroup\n additionalProperties: false\n description: PageComponentGroup represents a group of components on a status page.\n openstatus.status_page.v1.PageComponentType:\n type: string\n title: PageComponentType\n enum:\n - PAGE_COMPONENT_TYPE_UNSPECIFIED\n - PAGE_COMPONENT_TYPE_MONITOR\n - PAGE_COMPONENT_TYPE_STATIC\n description: PageComponentType defines the type of a component on a status page.\n openstatus.status_page.v1.PageConfiguration:\n type: object\n properties:\n metricType:\n title: metric_type\n description: Which metric the status bars represent (configuration.value).\n $ref: '#/components/schemas/openstatus.status_page.v1.PageMetricType'\n barType:\n title: bar_type\n description: How the status bar is computed (configuration.type).\n $ref: '#/components/schemas/openstatus.status_page.v1.PageBarType'\n showUptime:\n type: boolean\n title: show_uptime\n description: Whether to show the uptime percentage (configuration.uptime).\n themeKey:\n type: string\n title: theme_key\n description: |-\n Theme key from the theme store (configuration.theme), e.g. \"default\".\n Free-form string rather than an enum because the theme catalog is dynamic.\n days:\n type: integer\n title: days\n format: int32\n description: 'Number of uptime-bar days rendered on the page (configuration.days): 30 or 45.'\n title: PageConfiguration\n additionalProperties: false\n description: PageConfiguration is the rich rendering config stored in page.configuration.\n openstatus.status_page.v1.PageMetricType:\n type: string\n title: PageMetricType\n enum:\n - PAGE_METRIC_TYPE_UNSPECIFIED\n - PAGE_METRIC_TYPE_DURATION\n - PAGE_METRIC_TYPE_REQUESTS\n - PAGE_METRIC_TYPE_MANUAL\n description: PageMetricType mirrors page.configuration.value (which metric the status bars represent).\n openstatus.status_page.v1.PageSubscriber:\n type: object\n properties:\n id:\n type: string\n title: id\n description: Unique identifier for the subscriber.\n pageId:\n type: string\n title: page_id\n description: ID of the status page the user is subscribed to.\n email:\n type: string\n title: email\n description: Email address of the subscriber (empty for webhook channels).\n acceptedAt:\n type: string\n title: accepted_at\n description: Timestamp when the subscription was accepted/confirmed (RFC 3339 format, optional).\n unsubscribedAt:\n type: string\n title: unsubscribed_at\n description: Timestamp when the user unsubscribed (RFC 3339 format, optional).\n createdAt:\n type: string\n title: created_at\n description: Timestamp when the subscription was created (RFC 3339 format).\n updatedAt:\n type: string\n title: updated_at\n description: Timestamp when the subscription was last updated (RFC 3339 format).\n source:\n title: source\n description: How the subscription was created. Vendor-added rows skip verification.\n $ref: '#/components/schemas/openstatus.status_page.v1.SubscriberSource'\n name:\n type:\n - string\n - \"null\"\n title: name\n description: 'Optional human-readable label (e.g. \"Supabase #incidents\").'\n channelType:\n type: string\n title: channel_type\n description: 'Channel type: \"email\" or \"webhook\".'\n webhookUrl:\n type:\n - string\n - \"null\"\n title: webhook_url\n description: Webhook URL (populated only for channel_type = \"webhook\").\n channelConfig:\n type:\n - string\n - \"null\"\n title: channel_config\n description: JSON-encoded channel config (e.g. custom headers). Populated for webhook channels.\n componentIds:\n type: array\n items:\n type: string\n title: component_ids\n description: IDs of components this subscription is scoped to. Empty = entire page.\n title: PageSubscriber\n additionalProperties: false\n description: PageSubscriber represents a subscriber to a status page.\n openstatus.status_page.v1.PageTheme:\n type: string\n title: PageTheme\n enum:\n - PAGE_THEME_UNSPECIFIED\n - PAGE_THEME_SYSTEM\n - PAGE_THEME_LIGHT\n - PAGE_THEME_DARK\n description: PageTheme defines the visual theme of the status page.\n openstatus.status_page.v1.RemoveComponentRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: ID of the component to remove (required).\n title: RemoveComponentRequest\n additionalProperties: false\n description: RemoveComponentRequest is the request to remove a component from a status page.\n openstatus.status_page.v1.RemoveComponentResponse:\n type: object\n properties:\n success:\n type: boolean\n title: success\n description: Whether the removal was successful.\n title: RemoveComponentResponse\n additionalProperties: false\n description: RemoveComponentResponse is the response after removing a component.\n openstatus.status_page.v1.StatusPage:\n type: object\n properties:\n id:\n type: string\n title: id\n description: Unique identifier for the status page.\n title:\n type: string\n title: title\n description: Title of the status page.\n description:\n type: string\n title: description\n description: Description of the status page.\n slug:\n type: string\n examples:\n - acme-corp\n title: slug\n description: URL-friendly slug for the status page.\n customDomain:\n type: string\n examples:\n - status.example.com\n title: custom_domain\n description: Custom domain for the status page (optional).\n published:\n type: boolean\n title: published\n description: Whether the status page is published and visible.\n accessType:\n title: access_type\n description: Access type for the status page.\n $ref: '#/components/schemas/openstatus.status_page.v1.PageAccessType'\n theme:\n title: theme\n description: Visual theme for the status page.\n $ref: '#/components/schemas/openstatus.status_page.v1.PageTheme'\n homepageUrl:\n type: string\n title: homepage_url\n description: URL to the homepage (optional).\n contactUrl:\n type: string\n title: contact_url\n description: URL to the contact page (optional).\n icon:\n type: string\n title: icon\n description: Icon URL for the status page (optional).\n createdAt:\n type: string\n examples:\n - \"2024-01-15T09:00:00Z\"\n title: created_at\n description: Timestamp when the page was created (RFC 3339 format).\n updatedAt:\n type: string\n examples:\n - \"2024-06-20T14:30:00Z\"\n title: updated_at\n description: Timestamp when the page was last updated (RFC 3339 format).\n defaultLocale:\n title: default_locale\n description: Default locale for the status page.\n $ref: '#/components/schemas/openstatus.status_page.v1.Locale'\n locales:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.status_page.v1.Locale'\n title: locales\n description: Enabled locales for the status page.\n password:\n type: string\n title: password\n description: Password for the status page (only set when access_type is PASSWORD_PROTECTED).\n authEmailDomains:\n type: array\n items:\n type: string\n title: auth_email_domains\n description: Email domains allowed to access the page (only set when access_type is AUTHENTICATED).\n allowIndex:\n type: boolean\n title: allow_index\n description: Whether search engines are allowed to index this status page.\n allowedIpRanges:\n type: string\n title: allowed_ip_ranges\n description: Comma-separated IPv4 CIDR ranges (only set when access_type is IP_RESTRICTED).\n customTheme:\n oneOf:\n - $ref: '#/components/schemas/openstatus.status_page.v1.CustomTheme'\n - type: \"null\"\n title: custom_theme\n description: Per-mode CSS variable overrides merged over the theme (only set when configured).\n title: StatusPage\n additionalProperties: false\n description: StatusPage represents a full status page with all details.\n openstatus.status_page.v1.StatusPageSummary:\n type: object\n properties:\n id:\n type: string\n title: id\n description: Unique identifier for the status page.\n title:\n type: string\n title: title\n description: Title of the status page.\n slug:\n type: string\n title: slug\n description: URL-friendly slug for the status page.\n published:\n type: boolean\n title: published\n description: Whether the status page is published and visible.\n createdAt:\n type: string\n title: created_at\n description: Timestamp when the page was created (RFC 3339 format).\n updatedAt:\n type: string\n title: updated_at\n description: Timestamp when the page was last updated (RFC 3339 format).\n customDomain:\n type: string\n examples:\n - status.example.com\n title: custom_domain\n description: Custom domain for the status page (optional).\n title: StatusPageSummary\n additionalProperties: false\n description: StatusPageSummary represents metadata for a status page (used in list responses).\n openstatus.status_page.v1.SubscribeToPageRequest:\n type: object\n properties:\n pageId:\n type: string\n title: page_id\n minLength: 1\n description: ID of the status page to subscribe to (required).\n email:\n type: string\n examples:\n - user@example.com\n title: email\n format: email\n description: Email address to subscribe (required).\n title: SubscribeToPageRequest\n additionalProperties: false\n description: SubscribeToPageRequest is the request to subscribe an email to a status page.\n openstatus.status_page.v1.SubscribeToPageResponse:\n type: object\n properties:\n subscriber:\n title: subscriber\n description: The created subscriber.\n $ref: '#/components/schemas/openstatus.status_page.v1.PageSubscriber'\n title: SubscribeToPageResponse\n additionalProperties: false\n description: SubscribeToPageResponse is the response after subscribing to a status page.\n openstatus.status_page.v1.SubscriberSource:\n type: string\n title: SubscriberSource\n enum:\n - SUBSCRIBER_SOURCE_UNSPECIFIED\n - SUBSCRIBER_SOURCE_SELF_SIGNUP\n - SUBSCRIBER_SOURCE_VENDOR\n - SUBSCRIBER_SOURCE_IMPORT\n description: SubscriberSource indicates how the subscription was created.\n openstatus.status_page.v1.UnsubscribeFromPageRequest:\n type: object\n allOf:\n - properties:\n pageId:\n type: string\n title: page_id\n minLength: 1\n description: ID of the status page to unsubscribe from (required).\n - oneOf:\n - type: object\n properties:\n email:\n type: string\n title: email\n description: Email address to unsubscribe.\n title: email\n required:\n - email\n - type: object\n properties:\n id:\n type: string\n title: id\n description: Subscriber ID.\n title: id\n required:\n - id\n - not:\n anyOf:\n - required:\n - email\n - required:\n - id\n unevaluatedProperties: false\n title: UnsubscribeFromPageRequest\n description: UnsubscribeFromPageRequest is the request to unsubscribe from a status page.\n openstatus.status_page.v1.UnsubscribeFromPageResponse:\n type: object\n properties:\n success:\n type: boolean\n title: success\n description: Whether the unsubscription was successful.\n title: UnsubscribeFromPageResponse\n additionalProperties: false\n description: UnsubscribeFromPageResponse is the response after unsubscribing from a status page.\n openstatus.status_page.v1.UpdateComponentGroupRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: ID of the component group to update (required).\n name:\n type:\n - string\n - \"null\"\n title: name\n maxLength: 256\n minLength: 1\n description: New display name for the group (optional).\n defaultOpen:\n type:\n - boolean\n - \"null\"\n title: default_open\n description: Whether the group should be expanded by default on the status page (optional).\n title: UpdateComponentGroupRequest\n additionalProperties: false\n description: UpdateComponentGroupRequest is the request to update a component group.\n openstatus.status_page.v1.UpdateComponentGroupResponse:\n type: object\n properties:\n group:\n title: group\n description: The updated component group.\n $ref: '#/components/schemas/openstatus.status_page.v1.PageComponentGroup'\n title: UpdateComponentGroupResponse\n additionalProperties: false\n description: UpdateComponentGroupResponse is the response after updating a component group.\n openstatus.status_page.v1.UpdateComponentRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: ID of the component to update (required).\n name:\n type:\n - string\n - \"null\"\n title: name\n maxLength: 256\n description: New display name for the component (optional).\n description:\n type:\n - string\n - \"null\"\n title: description\n maxLength: 1024\n description: New description for the component (optional).\n order:\n type:\n - integer\n - \"null\"\n title: order\n format: int32\n description: New display order (optional).\n groupId:\n type:\n - string\n - \"null\"\n title: group_id\n description: New group ID (optional, set to empty string to remove from group).\n groupOrder:\n type:\n - integer\n - \"null\"\n title: group_order\n format: int32\n description: New order within the group (optional).\n title: UpdateComponentRequest\n additionalProperties: false\n description: UpdateComponentRequest is the request to update a component.\n openstatus.status_page.v1.UpdateComponentResponse:\n type: object\n properties:\n component:\n title: component\n description: The updated component.\n $ref: '#/components/schemas/openstatus.status_page.v1.PageComponent'\n title: UpdateComponentResponse\n additionalProperties: false\n description: UpdateComponentResponse is the response after updating a component.\n openstatus.status_page.v1.UpdateStatusPageRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: ID of the status page to update (required).\n title:\n type:\n - string\n - \"null\"\n title: title\n maxLength: 256\n minLength: 1\n description: New title for the status page (optional).\n description:\n type:\n - string\n - \"null\"\n title: description\n maxLength: 1024\n description: New description for the status page (optional).\n slug:\n type:\n - string\n - \"null\"\n title: slug\n maxLength: 256\n minLength: 1\n pattern: ^[a-z0-9]+(?:-[a-z0-9]+)*$\n description: New slug for the status page (optional).\n homepageUrl:\n type:\n - string\n - \"null\"\n title: homepage_url\n description: New homepage URL (optional).\n contactUrl:\n type:\n - string\n - \"null\"\n title: contact_url\n description: New contact URL (optional).\n defaultLocale:\n oneOf:\n - $ref: '#/components/schemas/openstatus.status_page.v1.Locale'\n - type: \"null\"\n title: default_locale\n description: New default locale for the status page (optional).\n locales:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.status_page.v1.Locale'\n title: locales\n description: New enabled locales for the status page (optional).\n icon:\n type:\n - string\n - \"null\"\n title: icon\n maxLength: 1024\n description: New icon URL for the status page (optional).\n customDomain:\n type:\n - string\n - \"null\"\n title: custom_domain\n maxLength: 256\n description: New custom domain (optional).\n theme:\n oneOf:\n - $ref: '#/components/schemas/openstatus.status_page.v1.PageTheme'\n - type: \"null\"\n title: theme\n description: New visual theme (optional).\n accessType:\n oneOf:\n - $ref: '#/components/schemas/openstatus.status_page.v1.PageAccessType'\n - type: \"null\"\n title: access_type\n description: New access type (optional).\n password:\n type:\n - string\n - \"null\"\n title: password\n maxLength: 256\n minLength: 1\n description: New password (optional, required when access_type is PASSWORD_PROTECTED).\n authEmailDomains:\n type: array\n items:\n type: string\n title: auth_email_domains\n description: New email domains (optional, required when access_type is AUTHENTICATED).\n allowIndex:\n type:\n - boolean\n - \"null\"\n title: allow_index\n description: Whether search engines are allowed to index this status page (optional).\n allowedIpRanges:\n type:\n - string\n - \"null\"\n title: allowed_ip_ranges\n description: Comma-separated IPv4 CIDR ranges (required when access_type is IP_RESTRICTED).\n customTheme:\n oneOf:\n - $ref: '#/components/schemas/openstatus.status_page.v1.CustomTheme'\n - type: \"null\"\n title: custom_theme\n description: |-\n New per-mode CSS variable overrides (optional). Omit to keep the current\n value; send an empty message to clear. Requires the custom-theme plan feature.\n title: UpdateStatusPageRequest\n additionalProperties: false\n description: UpdateStatusPageRequest is the request to update a status page.\n openstatus.status_page.v1.UpdateStatusPageResponse:\n type: object\n properties:\n statusPage:\n title: status_page\n description: The updated status page.\n $ref: '#/components/schemas/openstatus.status_page.v1.StatusPage'\n title: UpdateStatusPageResponse\n additionalProperties: false\n description: UpdateStatusPageResponse is the response after updating a status page.\n openstatus.status_page.v1.WebhookChannel:\n type: object\n properties:\n webhookUrl:\n type: string\n title: webhook_url\n maxLength: 2048\n minLength: 1\n format: uri\n description: Webhook URL (required). Payload flavor (Slack / Discord / generic) is auto-detected from the URL prefix.\n headers:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.status_page.v1.WebhookChannelHeader'\n title: headers\n description: Optional custom HTTP headers attached to every dispatch.\n title: WebhookChannel\n additionalProperties: false\n description: WebhookChannel carries the webhook-channel fields for CreatePageSubscription.\n openstatus.status_page.v1.WebhookChannelHeader:\n type: object\n properties:\n key:\n type: string\n title: key\n minLength: 1\n value:\n type: string\n title: value\n title: WebhookChannelHeader\n additionalProperties: false\n description: WebhookChannelHeader is a single custom HTTP header.\n openstatus.status_report.v1.AddStatusReportUpdateRequest:\n type: object\n properties:\n statusReportId:\n type: string\n title: status_report_id\n minLength: 1\n description: ID of the status report to update (required).\n status:\n title: status\n description: New status for the report (required).\n $ref: '#/components/schemas/openstatus.status_report.v1.StatusReportStatus'\n message:\n type: string\n title: message\n minLength: 1\n description: Message describing what changed (required).\n date:\n type:\n - string\n - \"null\"\n title: date\n pattern: ^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d{1,9})?(Z|[+-]\\d{2}:\\d{2})$\n description: Optional date for the update (RFC 3339 format). Defaults to current time if not provided.\n notify:\n type:\n - boolean\n - \"null\"\n title: notify\n description: Whether to notify subscribers about this update (optional, defaults to false).\n componentImpacts:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.status_report.v1.ComponentImpact'\n title: component_impacts\n description: |-\n Per-component impacts this update sets (optional). Components named here\n are added to the report's affected set; omitted components keep their\n prior impact.\n title: AddStatusReportUpdateRequest\n additionalProperties: false\n description: AddStatusReportUpdateRequest is the request to add a new update to a status report.\n openstatus.status_report.v1.AddStatusReportUpdateResponse:\n type: object\n properties:\n statusReport:\n title: status_report\n description: The updated status report with the new update included.\n $ref: '#/components/schemas/openstatus.status_report.v1.StatusReport'\n title: AddStatusReportUpdateResponse\n additionalProperties: false\n description: AddStatusReportUpdateResponse is the response after adding an update to a status report.\n openstatus.status_report.v1.ComponentImpact:\n type: object\n properties:\n pageComponentId:\n type: string\n title: page_component_id\n description: ID of the affected page component.\n impact:\n title: impact\n description: Impact set for the component.\n $ref: '#/components/schemas/openstatus.status_report.v1.PageComponentImpact'\n title: ComponentImpact\n additionalProperties: false\n description: ComponentImpact pairs a page component with the impact an update set for it.\n openstatus.status_report.v1.CreateStatusReportRequest:\n type: object\n properties:\n title:\n type: string\n examples:\n - API Degradation Investigation\n title: title\n minLength: 1\n description: Title of the status report (required).\n status:\n title: status\n description: Initial status (required).\n $ref: '#/components/schemas/openstatus.status_report.v1.StatusReportStatus'\n message:\n type: string\n examples:\n - We are investigating reports of increased API latency.\n title: message\n minLength: 1\n description: Initial message describing the incident (required).\n date:\n type: string\n examples:\n - \"2024-03-15T10:30:00Z\"\n title: date\n pattern: ^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d{1,9})?(Z|[+-]\\d{2}:\\d{2})$\n description: Date when the event occurred (RFC 3339 format, required).\n pageId:\n type: string\n title: page_id\n minLength: 1\n description: Page ID to associate with this report (required).\n pageComponentIds:\n type: array\n items:\n type: string\n title: page_component_ids\n description: Page component IDs to associate with this report (optional).\n notify:\n type:\n - boolean\n - \"null\"\n title: notify\n description: Whether to notify subscribers about this status report (optional, defaults to false).\n componentImpacts:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.status_report.v1.ComponentImpact'\n title: component_impacts\n description: |-\n Per-component impacts set by the initial update (optional). When provided,\n the named components are added to the report's affected set. Omitting this\n field creates a legacy report without impact tracking.\n title: CreateStatusReportRequest\n additionalProperties: false\n description: CreateStatusReportRequest is the request to create a new status report.\n openstatus.status_report.v1.CreateStatusReportResponse:\n type: object\n properties:\n statusReport:\n title: status_report\n description: The created status report.\n $ref: '#/components/schemas/openstatus.status_report.v1.StatusReport'\n title: CreateStatusReportResponse\n additionalProperties: false\n description: CreateStatusReportResponse is the response after creating a status report.\n openstatus.status_report.v1.DeleteStatusReportRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: ID of the status report to delete (required).\n title: DeleteStatusReportRequest\n additionalProperties: false\n description: DeleteStatusReportRequest is the request to delete a status report.\n openstatus.status_report.v1.DeleteStatusReportResponse:\n type: object\n properties:\n success:\n type: boolean\n title: success\n description: Whether the deletion was successful.\n title: DeleteStatusReportResponse\n additionalProperties: false\n description: DeleteStatusReportResponse is the response after deleting a status report.\n openstatus.status_report.v1.GetStatusReportRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: ID of the status report to retrieve (required).\n title: GetStatusReportRequest\n additionalProperties: false\n description: GetStatusReportRequest is the request to get a status report by ID.\n openstatus.status_report.v1.GetStatusReportResponse:\n type: object\n properties:\n statusReport:\n title: status_report\n description: The requested status report.\n $ref: '#/components/schemas/openstatus.status_report.v1.StatusReport'\n title: GetStatusReportResponse\n additionalProperties: false\n description: GetStatusReportResponse is the response containing the status report with its full update timeline.\n openstatus.status_report.v1.ListStatusReportsRequest:\n type: object\n properties:\n limit:\n type:\n - integer\n - \"null\"\n title: limit\n maximum: 100\n minimum: 1\n format: int32\n description: Maximum number of reports to return (1-100, defaults to 50).\n offset:\n type:\n - integer\n - \"null\"\n title: offset\n minimum: 0\n format: int32\n description: Number of reports to skip for pagination (defaults to 0).\n statuses:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.status_report.v1.StatusReportStatus'\n title: statuses\n description: Filter by status (optional). If empty, returns all statuses.\n title: ListStatusReportsRequest\n additionalProperties: false\n description: ListStatusReportsRequest is the request to list status reports.\n openstatus.status_report.v1.ListStatusReportsResponse:\n type: object\n properties:\n statusReports:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.status_report.v1.StatusReportSummary'\n title: status_reports\n description: List of status reports (metadata only, use GetStatusReport for full details).\n totalSize:\n type: integer\n title: total_size\n format: int32\n description: Total number of reports matching the filter.\n title: ListStatusReportsResponse\n additionalProperties: false\n description: ListStatusReportsResponse is the response containing status report summaries.\n openstatus.status_report.v1.PageComponentImpact:\n type: string\n title: PageComponentImpact\n enum:\n - PAGE_COMPONENT_IMPACT_UNSPECIFIED\n - PAGE_COMPONENT_IMPACT_OPERATIONAL\n - PAGE_COMPONENT_IMPACT_DEGRADED_PERFORMANCE\n - PAGE_COMPONENT_IMPACT_PARTIAL_OUTAGE\n - PAGE_COMPONENT_IMPACT_MAJOR_OUTAGE\n description: |-\n PageComponentImpact is the per-component impact a status report update sets.\n UNSPECIFIED means the caller doesn't speak impact (legacy) — it is NOT operational.\n openstatus.status_report.v1.StatusReport:\n type: object\n properties:\n id:\n type: string\n title: id\n description: Unique identifier for the status report.\n status:\n title: status\n description: Current status of the report.\n $ref: '#/components/schemas/openstatus.status_report.v1.StatusReportStatus'\n title:\n type: string\n title: title\n description: Title of the status report.\n pageComponentIds:\n type: array\n items:\n type: string\n title: page_component_ids\n description: IDs of affected page components.\n updates:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.status_report.v1.StatusReportUpdate'\n title: updates\n description: Timeline of updates for this report (only included in GetStatusReport).\n createdAt:\n type: string\n title: created_at\n description: Timestamp when the report was created (RFC 3339 format).\n updatedAt:\n type: string\n title: updated_at\n description: Timestamp when the report was last updated (RFC 3339 format).\n title: StatusReport\n additionalProperties: false\n description: StatusReport represents an incident or maintenance report with full details.\n openstatus.status_report.v1.StatusReportStatus:\n type: string\n title: StatusReportStatus\n enum:\n - STATUS_REPORT_STATUS_UNSPECIFIED\n - STATUS_REPORT_STATUS_INVESTIGATING\n - STATUS_REPORT_STATUS_IDENTIFIED\n - STATUS_REPORT_STATUS_MONITORING\n - STATUS_REPORT_STATUS_RESOLVED\n description: StatusReportStatus represents the current state of a status report.\n openstatus.status_report.v1.StatusReportSummary:\n type: object\n properties:\n id:\n type: string\n title: id\n description: Unique identifier for the status report.\n status:\n title: status\n description: Current status of the report.\n $ref: '#/components/schemas/openstatus.status_report.v1.StatusReportStatus'\n title:\n type: string\n title: title\n description: Title of the status report.\n pageComponentIds:\n type: array\n items:\n type: string\n title: page_component_ids\n description: IDs of affected page components.\n createdAt:\n type: string\n title: created_at\n description: Timestamp when the report was created (RFC 3339 format).\n updatedAt:\n type: string\n title: updated_at\n description: Timestamp when the report was last updated (RFC 3339 format).\n title: StatusReportSummary\n additionalProperties: false\n description: StatusReportSummary represents metadata for a status report (used in list responses).\n openstatus.status_report.v1.StatusReportUpdate:\n type: object\n properties:\n id:\n type: string\n title: id\n description: Unique identifier for the update.\n status:\n title: status\n description: Status at the time of this update.\n $ref: '#/components/schemas/openstatus.status_report.v1.StatusReportStatus'\n date:\n type: string\n title: date\n description: Timestamp when this update occurred (RFC 3339 format).\n message:\n type: string\n title: message\n description: Message describing the update.\n createdAt:\n type: string\n title: created_at\n description: Timestamp when the update was created (RFC 3339 format).\n componentImpacts:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.status_report.v1.ComponentImpact'\n title: component_impacts\n description: Per-component impacts this update set (empty for legacy reports).\n title: StatusReportUpdate\n additionalProperties: false\n description: StatusReportUpdate represents a single update entry in a status report timeline.\n openstatus.status_report.v1.UpdateStatusReportRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: ID of the status report to update (required).\n title:\n type:\n - string\n - \"null\"\n title: title\n description: New title for the report (optional).\n pageComponentIds:\n type: array\n items:\n type: string\n title: page_component_ids\n description: New list of page component IDs (optional, replaces existing list).\n updatePageComponentIds:\n type:\n - boolean\n - \"null\"\n title: update_page_component_ids\n description: |-\n Set to true to update page component associations.\n When true, page_component_ids replaces the existing list (empty clears all).\n When false or unset, page_component_ids is ignored and existing associations are preserved.\n title: UpdateStatusReportRequest\n additionalProperties: false\n description: UpdateStatusReportRequest is the request to update a status report's metadata.\n openstatus.status_report.v1.UpdateStatusReportResponse:\n type: object\n properties:\n statusReport:\n title: status_report\n description: The updated status report.\n $ref: '#/components/schemas/openstatus.status_report.v1.StatusReport'\n title: UpdateStatusReportResponse\n additionalProperties: false\n description: UpdateStatusReportResponse is the response after updating a status report.\nsecurity:\n - ApiKeyAuth: []\ntags:\n - name: MonitorService\n description: |\n Create, update, delete, and query monitors. Supports HTTP, TCP, and DNS monitor types\n with configurable check intervals, regions, assertions, and alerting thresholds.\n - name: StatusPageService\n description: |\n Manage public status pages with components, component groups, and email subscribers.\n Includes endpoints for retrieving full page content and aggregated status.\n - name: NotificationService\n description: |\n Configure notification channels (Slack, Discord, PagerDuty, email, webhooks, etc.)\n and associate them with monitors. Supports 12 notification providers.\n - name: StatusReportService\n description: |\n Create and manage incident reports with status updates. Reports follow a lifecycle:\n investigating -> identified -> monitoring -> resolved.\n - name: MaintenanceService\n description: |\n Schedule maintenance windows for status page components. Subscribers can be\n notified automatically when maintenance is created.\n - name: HealthService\n description: Health check endpoint for load balancer probes. No authentication required.\n - name: PrivateLocationService\n description: |-\n PrivateLocationService provides CRUD operations for private locations —\n self-hosted checker agents that run monitors from your own network.\npaths:\n /rpc/openstatus.health.v1.HealthService/Check:\n get:\n tags:\n - HealthService\n summary: Check\n description: Check returns the current serving status of the service.\n operationId: HealthService_Check.get\n parameters:\n - name: message\n in: query\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.health.v1.CheckRequest'\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.health.v1.CheckResponse'\n post:\n tags:\n - HealthService\n summary: Check\n description: Check returns the current serving status of the service.\n operationId: HealthService_Check\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.health.v1.CheckRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.health.v1.CheckResponse'\n /rpc/openstatus.maintenance.v1.MaintenanceService/CreateMaintenance:\n post:\n tags:\n - MaintenanceService\n summary: CreateMaintenance\n description: CreateMaintenance creates a new maintenance window.\n operationId: MaintenanceService_CreateMaintenance\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.maintenance.v1.CreateMaintenanceRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.maintenance.v1.CreateMaintenanceResponse'\n /rpc/openstatus.maintenance.v1.MaintenanceService/DeleteMaintenance:\n post:\n tags:\n - MaintenanceService\n summary: DeleteMaintenance\n description: DeleteMaintenance removes a maintenance window.\n operationId: MaintenanceService_DeleteMaintenance\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.maintenance.v1.DeleteMaintenanceRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.maintenance.v1.DeleteMaintenanceResponse'\n /rpc/openstatus.maintenance.v1.MaintenanceService/GetMaintenance:\n get:\n tags:\n - MaintenanceService\n summary: GetMaintenance\n description: GetMaintenance retrieves a specific maintenance window by ID.\n operationId: MaintenanceService_GetMaintenance.get\n parameters:\n - name: message\n in: query\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.maintenance.v1.GetMaintenanceRequest'\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.maintenance.v1.GetMaintenanceResponse'\n post:\n tags:\n - MaintenanceService\n summary: GetMaintenance\n description: GetMaintenance retrieves a specific maintenance window by ID.\n operationId: MaintenanceService_GetMaintenance\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.maintenance.v1.GetMaintenanceRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.maintenance.v1.GetMaintenanceResponse'\n /rpc/openstatus.maintenance.v1.MaintenanceService/ListMaintenances:\n get:\n tags:\n - MaintenanceService\n summary: ListMaintenances\n description: ListMaintenances returns all maintenance windows for the workspace.\n operationId: MaintenanceService_ListMaintenances.get\n parameters:\n - name: message\n in: query\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.maintenance.v1.ListMaintenancesRequest'\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.maintenance.v1.ListMaintenancesResponse'\n post:\n tags:\n - MaintenanceService\n summary: ListMaintenances\n description: ListMaintenances returns all maintenance windows for the workspace.\n operationId: MaintenanceService_ListMaintenances\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.maintenance.v1.ListMaintenancesRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.maintenance.v1.ListMaintenancesResponse'\n /rpc/openstatus.maintenance.v1.MaintenanceService/UpdateMaintenance:\n post:\n tags:\n - MaintenanceService\n summary: UpdateMaintenance\n description: UpdateMaintenance updates a maintenance window.\n operationId: MaintenanceService_UpdateMaintenance\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.maintenance.v1.UpdateMaintenanceRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.maintenance.v1.UpdateMaintenanceResponse'\n /rpc/openstatus.monitor.v1.MonitorService/CreateDNSMonitor:\n post:\n tags:\n - MonitorService\n summary: CreateDNSMonitor\n description: CreateDNSMonitor creates a new DNS monitor.\n operationId: MonitorService_CreateDNSMonitor\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.CreateDNSMonitorRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.CreateDNSMonitorResponse'\n /rpc/openstatus.monitor.v1.MonitorService/CreateGRPCMonitor:\n post:\n tags:\n - MonitorService\n summary: CreateGRPCMonitor\n description: CreateGRPCMonitor creates a new gRPC health check monitor.\n operationId: MonitorService_CreateGRPCMonitor\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.CreateGRPCMonitorRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.CreateGRPCMonitorResponse'\n /rpc/openstatus.monitor.v1.MonitorService/CreateHTTPMonitor:\n post:\n tags:\n - MonitorService\n summary: CreateHTTPMonitor\n description: Creates a new HTTP monitor in the authenticated workspace. Configure the target URL, HTTP method, request headers and body, response assertions (status code, body content, headers), check periodicity, geographic regions, and optional OpenTelemetry export. The monitor starts checking immediately if set to active.\n operationId: MonitorService_CreateHTTPMonitor\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.CreateHTTPMonitorRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.CreateHTTPMonitorResponse'\n /rpc/openstatus.monitor.v1.MonitorService/CreateICMPMonitor:\n post:\n tags:\n - MonitorService\n summary: CreateICMPMonitor\n description: CreateICMPMonitor creates a new ICMP monitor.\n operationId: MonitorService_CreateICMPMonitor\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.CreateICMPMonitorRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.CreateICMPMonitorResponse'\n /rpc/openstatus.monitor.v1.MonitorService/CreateTCPMonitor:\n post:\n tags:\n - MonitorService\n summary: CreateTCPMonitor\n description: CreateTCPMonitor creates a new TCP monitor.\n operationId: MonitorService_CreateTCPMonitor\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.CreateTCPMonitorRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.CreateTCPMonitorResponse'\n /rpc/openstatus.monitor.v1.MonitorService/DeleteMonitor:\n post:\n tags:\n - MonitorService\n summary: DeleteMonitor\n description: DeleteMonitor removes a monitor.\n operationId: MonitorService_DeleteMonitor\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.DeleteMonitorRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.DeleteMonitorResponse'\n /rpc/openstatus.monitor.v1.MonitorService/GetMonitor:\n get:\n tags:\n - MonitorService\n summary: GetMonitor\n description: |-\n GetMonitor returns a single monitor by ID within the authenticated workspace.\n Returns the monitor configuration (HTTP, TCP, DNS, ICMP, or gRPC) using the MonitorConfig oneof type.\n operationId: MonitorService_GetMonitor.get\n parameters:\n - name: message\n in: query\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.GetMonitorRequest'\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.GetMonitorResponse'\n post:\n tags:\n - MonitorService\n summary: GetMonitor\n description: |-\n GetMonitor returns a single monitor by ID within the authenticated workspace.\n Returns the monitor configuration (HTTP, TCP, DNS, ICMP, or gRPC) using the MonitorConfig oneof type.\n operationId: MonitorService_GetMonitor\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.GetMonitorRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.GetMonitorResponse'\n /rpc/openstatus.monitor.v1.MonitorService/GetMonitorHTTPResponseLog:\n get:\n tags:\n - MonitorService\n summary: GetMonitorHTTPResponseLog\n description: GetMonitorHTTPResponseLog returns one response log for an HTTP monitor.\n operationId: MonitorService_GetMonitorHTTPResponseLog.get\n parameters:\n - name: message\n in: query\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.GetMonitorHTTPResponseLogRequest'\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.GetMonitorHTTPResponseLogResponse'\n post:\n tags:\n - MonitorService\n summary: GetMonitorHTTPResponseLog\n description: GetMonitorHTTPResponseLog returns one response log for an HTTP monitor.\n operationId: MonitorService_GetMonitorHTTPResponseLog\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.GetMonitorHTTPResponseLogRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.GetMonitorHTTPResponseLogResponse'\n /rpc/openstatus.monitor.v1.MonitorService/GetMonitorStatus:\n get:\n tags:\n - MonitorService\n summary: GetMonitorStatus\n description: GetMonitorStatus returns the current status of all regions for a monitor.\n operationId: MonitorService_GetMonitorStatus.get\n parameters:\n - name: message\n in: query\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.GetMonitorStatusRequest'\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.GetMonitorStatusResponse'\n post:\n tags:\n - MonitorService\n summary: GetMonitorStatus\n description: GetMonitorStatus returns the current status of all regions for a monitor.\n operationId: MonitorService_GetMonitorStatus\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.GetMonitorStatusRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.GetMonitorStatusResponse'\n /rpc/openstatus.monitor.v1.MonitorService/GetMonitorSummary:\n get:\n tags:\n - MonitorService\n summary: GetMonitorSummary\n description: Returns aggregated metrics for a monitor including latency percentiles (p50, p75, p90, p95, p99), request counts by status (successful, degraded, failed), and the timestamp of the last check. Metrics can be scoped to a time range (1 day, 7 days, or 14 days) and filtered by specific regions.\n operationId: MonitorService_GetMonitorSummary.get\n parameters:\n - name: message\n in: query\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.GetMonitorSummaryRequest'\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.GetMonitorSummaryResponse'\n post:\n tags:\n - MonitorService\n summary: GetMonitorSummary\n description: Returns aggregated metrics for a monitor including latency percentiles (p50, p75, p90, p95, p99), request counts by status (successful, degraded, failed), and the timestamp of the last check. Metrics can be scoped to a time range (1 day, 7 days, or 14 days) and filtered by specific regions.\n operationId: MonitorService_GetMonitorSummary\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.GetMonitorSummaryRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.GetMonitorSummaryResponse'\n /rpc/openstatus.monitor.v1.MonitorService/ListMonitorHTTPResponseLogs:\n get:\n tags:\n - MonitorService\n summary: ListMonitorHTTPResponseLogs\n description: ListMonitorHTTPResponseLogs returns paginated response logs for an HTTP monitor from the 14-day HTTP response-log window.\n operationId: MonitorService_ListMonitorHTTPResponseLogs.get\n parameters:\n - name: message\n in: query\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.ListMonitorHTTPResponseLogsRequest'\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.ListMonitorHTTPResponseLogsResponse'\n post:\n tags:\n - MonitorService\n summary: ListMonitorHTTPResponseLogs\n description: ListMonitorHTTPResponseLogs returns paginated response logs for an HTTP monitor from the 14-day HTTP response-log window.\n operationId: MonitorService_ListMonitorHTTPResponseLogs\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.ListMonitorHTTPResponseLogsRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.ListMonitorHTTPResponseLogsResponse'\n /rpc/openstatus.monitor.v1.MonitorService/ListMonitors:\n get:\n tags:\n - MonitorService\n summary: ListMonitors\n description: ListMonitors returns a paginated list of all monitors in the workspace.\n operationId: MonitorService_ListMonitors.get\n parameters:\n - name: message\n in: query\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.ListMonitorsRequest'\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.ListMonitorsResponse'\n post:\n tags:\n - MonitorService\n summary: ListMonitors\n description: ListMonitors returns a paginated list of all monitors in the workspace.\n operationId: MonitorService_ListMonitors\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.ListMonitorsRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.ListMonitorsResponse'\n /rpc/openstatus.monitor.v1.MonitorService/TriggerMonitor:\n post:\n tags:\n - MonitorService\n summary: TriggerMonitor\n description: Manually triggers an immediate check for the specified monitor across all configured regions. This operation is rate-limited under the synthetic-checks quota. A monitor run record is created and the check is dispatched to the checker service.\n operationId: MonitorService_TriggerMonitor\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.TriggerMonitorRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.TriggerMonitorResponse'\n /rpc/openstatus.monitor.v1.MonitorService/UpdateDNSMonitor:\n post:\n tags:\n - MonitorService\n summary: UpdateDNSMonitor\n description: UpdateDNSMonitor updates an existing DNS monitor.\n operationId: MonitorService_UpdateDNSMonitor\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.UpdateDNSMonitorRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.UpdateDNSMonitorResponse'\n /rpc/openstatus.monitor.v1.MonitorService/UpdateGRPCMonitor:\n post:\n tags:\n - MonitorService\n summary: UpdateGRPCMonitor\n description: UpdateGRPCMonitor updates an existing gRPC monitor.\n operationId: MonitorService_UpdateGRPCMonitor\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.UpdateGRPCMonitorRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.UpdateGRPCMonitorResponse'\n /rpc/openstatus.monitor.v1.MonitorService/UpdateHTTPMonitor:\n post:\n tags:\n - MonitorService\n summary: UpdateHTTPMonitor\n description: UpdateHTTPMonitor updates an existing HTTP monitor.\n operationId: MonitorService_UpdateHTTPMonitor\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.UpdateHTTPMonitorRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.UpdateHTTPMonitorResponse'\n /rpc/openstatus.monitor.v1.MonitorService/UpdateICMPMonitor:\n post:\n tags:\n - MonitorService\n summary: UpdateICMPMonitor\n description: UpdateICMPMonitor updates an existing ICMP monitor.\n operationId: MonitorService_UpdateICMPMonitor\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.UpdateICMPMonitorRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.UpdateICMPMonitorResponse'\n /rpc/openstatus.monitor.v1.MonitorService/UpdateTCPMonitor:\n post:\n tags:\n - MonitorService\n summary: UpdateTCPMonitor\n description: UpdateTCPMonitor updates an existing TCP monitor.\n operationId: MonitorService_UpdateTCPMonitor\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.UpdateTCPMonitorRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.UpdateTCPMonitorResponse'\n /rpc/openstatus.notification.v1.NotificationService/CheckNotificationLimit:\n get:\n tags:\n - NotificationService\n summary: CheckNotificationLimit\n description: CheckNotificationLimit checks if the workspace has reached its notification limit.\n operationId: NotificationService_CheckNotificationLimit.get\n parameters:\n - name: message\n in: query\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.notification.v1.CheckNotificationLimitRequest'\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.notification.v1.CheckNotificationLimitResponse'\n post:\n tags:\n - NotificationService\n summary: CheckNotificationLimit\n description: CheckNotificationLimit checks if the workspace has reached its notification limit.\n operationId: NotificationService_CheckNotificationLimit\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.notification.v1.CheckNotificationLimitRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.notification.v1.CheckNotificationLimitResponse'\n /rpc/openstatus.notification.v1.NotificationService/CreateNotification:\n post:\n tags:\n - NotificationService\n summary: CreateNotification\n description: CreateNotification creates a new notification channel.\n operationId: NotificationService_CreateNotification\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.notification.v1.CreateNotificationRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.notification.v1.CreateNotificationResponse'\n /rpc/openstatus.notification.v1.NotificationService/DeleteNotification:\n post:\n tags:\n - NotificationService\n summary: DeleteNotification\n description: DeleteNotification removes a notification channel.\n operationId: NotificationService_DeleteNotification\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.notification.v1.DeleteNotificationRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.notification.v1.DeleteNotificationResponse'\n /rpc/openstatus.notification.v1.NotificationService/GetNotification:\n get:\n tags:\n - NotificationService\n summary: GetNotification\n description: GetNotification retrieves a notification channel by ID.\n operationId: NotificationService_GetNotification.get\n parameters:\n - name: message\n in: query\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.notification.v1.GetNotificationRequest'\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.notification.v1.GetNotificationResponse'\n post:\n tags:\n - NotificationService\n summary: GetNotification\n description: GetNotification retrieves a notification channel by ID.\n operationId: NotificationService_GetNotification\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.notification.v1.GetNotificationRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.notification.v1.GetNotificationResponse'\n /rpc/openstatus.notification.v1.NotificationService/ListNotifications:\n get:\n tags:\n - NotificationService\n summary: ListNotifications\n description: ListNotifications returns a list of notification channels.\n operationId: NotificationService_ListNotifications.get\n parameters:\n - name: message\n in: query\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.notification.v1.ListNotificationsRequest'\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.notification.v1.ListNotificationsResponse'\n post:\n tags:\n - NotificationService\n summary: ListNotifications\n description: ListNotifications returns a list of notification channels.\n operationId: NotificationService_ListNotifications\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.notification.v1.ListNotificationsRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.notification.v1.ListNotificationsResponse'\n /rpc/openstatus.notification.v1.NotificationService/SendTestNotification:\n post:\n tags:\n - NotificationService\n summary: SendTestNotification\n description: Sends a test notification to the specified provider to verify that the configuration is correct. This does not require an existing notification channel - just provide the provider type and its configuration data. Returns success status and an error message if the test failed.\n operationId: NotificationService_SendTestNotification\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.notification.v1.SendTestNotificationRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.notification.v1.SendTestNotificationResponse'\n /rpc/openstatus.notification.v1.NotificationService/UpdateNotification:\n post:\n tags:\n - NotificationService\n summary: UpdateNotification\n description: UpdateNotification updates an existing notification channel.\n operationId: NotificationService_UpdateNotification\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.notification.v1.UpdateNotificationRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.notification.v1.UpdateNotificationResponse'\n /rpc/openstatus.private_location.v1.PrivateLocationService/CreatePrivateLocation:\n post:\n tags:\n - PrivateLocationService\n summary: CreatePrivateLocation\n description: Creates a private location. The agent token is generated by the server and returned in the response - it cannot be supplied by the caller. Use the token to configure the agent so it can pull its monitors and report results.\n operationId: PrivateLocationService_CreatePrivateLocation\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.private_location.v1.CreatePrivateLocationRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.private_location.v1.CreatePrivateLocationResponse'\n /rpc/openstatus.private_location.v1.PrivateLocationService/DeletePrivateLocation:\n post:\n tags:\n - PrivateLocationService\n summary: DeletePrivateLocation\n description: DeletePrivateLocation removes a private location.\n operationId: PrivateLocationService_DeletePrivateLocation\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.private_location.v1.DeletePrivateLocationRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.private_location.v1.DeletePrivateLocationResponse'\n /rpc/openstatus.private_location.v1.PrivateLocationService/GetPrivateLocation:\n get:\n tags:\n - PrivateLocationService\n summary: GetPrivateLocation\n description: |-\n GetPrivateLocation retrieves a single private location by ID, including\n its agent token.\n operationId: PrivateLocationService_GetPrivateLocation.get\n parameters:\n - name: message\n in: query\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.private_location.v1.GetPrivateLocationRequest'\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.private_location.v1.GetPrivateLocationResponse'\n post:\n tags:\n - PrivateLocationService\n summary: GetPrivateLocation\n description: |-\n GetPrivateLocation retrieves a single private location by ID, including\n its agent token.\n operationId: PrivateLocationService_GetPrivateLocation\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.private_location.v1.GetPrivateLocationRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.private_location.v1.GetPrivateLocationResponse'\n /rpc/openstatus.private_location.v1.PrivateLocationService/ListPrivateLocations:\n get:\n tags:\n - PrivateLocationService\n summary: ListPrivateLocations\n description: |-\n ListPrivateLocations returns a paginated list of private location\n summaries. Agent tokens are not included - use GetPrivateLocation.\n operationId: PrivateLocationService_ListPrivateLocations.get\n parameters:\n - name: message\n in: query\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.private_location.v1.ListPrivateLocationsRequest'\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.private_location.v1.ListPrivateLocationsResponse'\n post:\n tags:\n - PrivateLocationService\n summary: ListPrivateLocations\n description: |-\n ListPrivateLocations returns a paginated list of private location\n summaries. Agent tokens are not included - use GetPrivateLocation.\n operationId: PrivateLocationService_ListPrivateLocations\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.private_location.v1.ListPrivateLocationsRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.private_location.v1.ListPrivateLocationsResponse'\n /rpc/openstatus.private_location.v1.PrivateLocationService/UpdatePrivateLocation:\n post:\n tags:\n - PrivateLocationService\n summary: UpdatePrivateLocation\n description: UpdatePrivateLocation updates a private location.\n operationId: PrivateLocationService_UpdatePrivateLocation\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.private_location.v1.UpdatePrivateLocationRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.private_location.v1.UpdatePrivateLocationResponse'\n /rpc/openstatus.status_page.v1.StatusPageService/AddMonitorComponent:\n post:\n tags:\n - StatusPageService\n summary: AddMonitorComponent\n description: AddMonitorComponent adds a monitor-based component to a status page.\n operationId: StatusPageService_AddMonitorComponent\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.AddMonitorComponentRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.AddMonitorComponentResponse'\n /rpc/openstatus.status_page.v1.StatusPageService/AddStaticComponent:\n post:\n tags:\n - StatusPageService\n summary: AddStaticComponent\n description: AddStaticComponent adds a static component to a status page.\n operationId: StatusPageService_AddStaticComponent\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.AddStaticComponentRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.AddStaticComponentResponse'\n /rpc/openstatus.status_page.v1.StatusPageService/CreateComponentGroup:\n post:\n tags:\n - StatusPageService\n summary: CreateComponentGroup\n description: CreateComponentGroup creates a new component group.\n operationId: StatusPageService_CreateComponentGroup\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.CreateComponentGroupRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.CreateComponentGroupResponse'\n /rpc/openstatus.status_page.v1.StatusPageService/CreatePageSubscription:\n post:\n tags:\n - StatusPageService\n summary: 'CreatePageSubscription: operator-added subscriber (email or webhook), no verification.'\n description: Operator-added subscriber (email or webhook) with no verification flow — the partner starts receiving notifications immediately. Supports Slack and Discord webhook URLs in addition to email. A management token is still generated so the subscriber can self-manage (update scope, unsubscribe) without operator involvement. Use this for vendor/partner integrations where consent is established out-of-band; use SubscribeToPage for subscriber-initiated signups that require double opt-in.\n operationId: StatusPageService_CreatePageSubscription\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.CreatePageSubscriptionRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.CreatePageSubscriptionResponse'\n /rpc/openstatus.status_page.v1.StatusPageService/CreateStatusPage:\n post:\n tags:\n - StatusPageService\n summary: CreateStatusPage\n description: CreateStatusPage creates a new status page.\n operationId: StatusPageService_CreateStatusPage\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.CreateStatusPageRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.CreateStatusPageResponse'\n /rpc/openstatus.status_page.v1.StatusPageService/DeleteComponentGroup:\n post:\n tags:\n - StatusPageService\n summary: DeleteComponentGroup\n description: DeleteComponentGroup removes a component group.\n operationId: StatusPageService_DeleteComponentGroup\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.DeleteComponentGroupRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.DeleteComponentGroupResponse'\n /rpc/openstatus.status_page.v1.StatusPageService/DeleteStatusPage:\n post:\n tags:\n - StatusPageService\n summary: DeleteStatusPage\n description: DeleteStatusPage removes a status page.\n operationId: StatusPageService_DeleteStatusPage\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.DeleteStatusPageRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.DeleteStatusPageResponse'\n /rpc/openstatus.status_page.v1.StatusPageService/GetOverallStatus:\n get:\n tags:\n - StatusPageService\n summary: GetOverallStatus\n description: 'Returns the overall status of a status page along with individual component statuses. The overall status is computed from active status reports and maintenances with the following priority: degraded (from active status reports) > maintenance (from active maintenance windows) > operational.'\n operationId: StatusPageService_GetOverallStatus.get\n parameters:\n - name: message\n in: query\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.GetOverallStatusRequest'\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.GetOverallStatusResponse'\n post:\n tags:\n - StatusPageService\n summary: GetOverallStatus\n description: 'Returns the overall status of a status page along with individual component statuses. The overall status is computed from active status reports and maintenances with the following priority: degraded (from active status reports) > maintenance (from active maintenance windows) > operational.'\n operationId: StatusPageService_GetOverallStatus\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.GetOverallStatusRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.GetOverallStatusResponse'\n /rpc/openstatus.status_page.v1.StatusPageService/GetPageComponent:\n get:\n tags:\n - StatusPageService\n summary: GetPageComponent\n description: Returns a single status-page component by its ID, scoped to the authenticated workspace. Use this to resolve a component id to its name (and other fields) instead of fetching the whole page via GetStatusPageContent and filtering .components.\n operationId: StatusPageService_GetPageComponent.get\n parameters:\n - name: message\n in: query\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.GetPageComponentRequest'\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.GetPageComponentResponse'\n post:\n tags:\n - StatusPageService\n summary: GetPageComponent\n description: Returns a single status-page component by its ID, scoped to the authenticated workspace. Use this to resolve a component id to its name (and other fields) instead of fetching the whole page via GetStatusPageContent and filtering .components.\n operationId: StatusPageService_GetPageComponent\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.GetPageComponentRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.GetPageComponentResponse'\n /rpc/openstatus.status_page.v1.StatusPageService/GetPageComponentDailySummary:\n get:\n tags:\n - StatusPageService\n summary: GetPageComponentDailySummary\n description: 'Returns per-component daily status buckets (ok/degraded/error/count plus a resolved status) merged with the incident, maintenance, and status-report timeline over the last N days (max 45). Suitable as a single source of truth for status-bar and uptime-calendar rendering. Supports two access paths: by id (authenticated, workspace-scoped) or by slug (public access, requires the page to be published with access_type=PUBLIC).'\n operationId: StatusPageService_GetPageComponentDailySummary.get\n parameters:\n - name: message\n in: query\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.GetPageComponentDailySummaryRequest'\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.GetPageComponentDailySummaryResponse'\n post:\n tags:\n - StatusPageService\n summary: GetPageComponentDailySummary\n description: 'Returns per-component daily status buckets (ok/degraded/error/count plus a resolved status) merged with the incident, maintenance, and status-report timeline over the last N days (max 45). Suitable as a single source of truth for status-bar and uptime-calendar rendering. Supports two access paths: by id (authenticated, workspace-scoped) or by slug (public access, requires the page to be published with access_type=PUBLIC).'\n operationId: StatusPageService_GetPageComponentDailySummary\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.GetPageComponentDailySummaryRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.GetPageComponentDailySummaryResponse'\n /rpc/openstatus.status_page.v1.StatusPageService/GetStatusPage:\n get:\n tags:\n - StatusPageService\n summary: GetStatusPage\n description: GetStatusPage retrieves a specific status page by ID.\n operationId: StatusPageService_GetStatusPage.get\n parameters:\n - name: message\n in: query\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.GetStatusPageRequest'\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.GetStatusPageResponse'\n post:\n tags:\n - StatusPageService\n summary: GetStatusPage\n description: GetStatusPage retrieves a specific status page by ID.\n operationId: StatusPageService_GetStatusPage\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.GetStatusPageRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.GetStatusPageResponse'\n /rpc/openstatus.status_page.v1.StatusPageService/GetStatusPageContent:\n get:\n tags:\n - StatusPageService\n summary: GetStatusPageContent\n description: 'Returns the full content of a status page including its components, component groups, active status reports, and scheduled maintenances. Supports two access paths: by ID (requires authentication, workspace-scoped) or by slug (public access, requires the page to be published with access_type=PUBLIC).'\n operationId: StatusPageService_GetStatusPageContent.get\n parameters:\n - name: message\n in: query\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.GetStatusPageContentRequest'\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.GetStatusPageContentResponse'\n post:\n tags:\n - StatusPageService\n summary: GetStatusPageContent\n description: 'Returns the full content of a status page including its components, component groups, active status reports, and scheduled maintenances. Supports two access paths: by ID (requires authentication, workspace-scoped) or by slug (public access, requires the page to be published with access_type=PUBLIC).'\n operationId: StatusPageService_GetStatusPageContent\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.GetStatusPageContentRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.GetStatusPageContentResponse'\n /rpc/openstatus.status_page.v1.StatusPageService/GetStatusPageOverview:\n get:\n tags:\n - StatusPageService\n summary: GetStatusPageOverview\n description: 'Returns everything about a single status page in one authenticated call: the page, its rich rendering configuration, components, component groups, active/recent status reports, maintenances, and the computed overall + per-component statuses. Workspace-scoped by id; there is no public slug access path. Does not include uptime time-series — use GetPageComponentDailySummary for that.'\n operationId: StatusPageService_GetStatusPageOverview.get\n parameters:\n - name: message\n in: query\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.GetStatusPageOverviewRequest'\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.GetStatusPageOverviewResponse'\n post:\n tags:\n - StatusPageService\n summary: GetStatusPageOverview\n description: 'Returns everything about a single status page in one authenticated call: the page, its rich rendering configuration, components, component groups, active/recent status reports, maintenances, and the computed overall + per-component statuses. Workspace-scoped by id; there is no public slug access path. Does not include uptime time-series — use GetPageComponentDailySummary for that.'\n operationId: StatusPageService_GetStatusPageOverview\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.GetStatusPageOverviewRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.GetStatusPageOverviewResponse'\n /rpc/openstatus.status_page.v1.StatusPageService/ListStatusPages:\n get:\n tags:\n - StatusPageService\n summary: ListStatusPages\n description: ListStatusPages returns all status pages for the workspace.\n operationId: StatusPageService_ListStatusPages.get\n parameters:\n - name: message\n in: query\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.ListStatusPagesRequest'\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.ListStatusPagesResponse'\n post:\n tags:\n - StatusPageService\n summary: ListStatusPages\n description: ListStatusPages returns all status pages for the workspace.\n operationId: StatusPageService_ListStatusPages\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.ListStatusPagesRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.ListStatusPagesResponse'\n /rpc/openstatus.status_page.v1.StatusPageService/ListSubscribers:\n get:\n tags:\n - StatusPageService\n summary: ListSubscribers\n description: ListSubscribers returns all subscribers for a status page.\n operationId: StatusPageService_ListSubscribers.get\n parameters:\n - name: message\n in: query\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.ListSubscribersRequest'\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.ListSubscribersResponse'\n post:\n tags:\n - StatusPageService\n summary: ListSubscribers\n description: ListSubscribers returns all subscribers for a status page.\n operationId: StatusPageService_ListSubscribers\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.ListSubscribersRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.ListSubscribersResponse'\n /rpc/openstatus.status_page.v1.StatusPageService/RemoveComponent:\n post:\n tags:\n - StatusPageService\n summary: RemoveComponent\n description: RemoveComponent removes a component from a status page.\n operationId: StatusPageService_RemoveComponent\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.RemoveComponentRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.RemoveComponentResponse'\n /rpc/openstatus.status_page.v1.StatusPageService/SubscribeToPage:\n post:\n tags:\n - StatusPageService\n summary: 'SubscribeToPage: end-user email self-signup with double opt-in verification.'\n description: End-user email self-signup with double opt-in verification. A verification email is sent and the subscription activates only after the recipient confirms. If the email was previously unsubscribed, the existing row is reactivated instead of a duplicate being created. Use this for subscriber-initiated signups on the public status page; use CreatePageSubscription for operator-initiated (vendor) subscriptions that should skip verification.\n operationId: StatusPageService_SubscribeToPage\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.SubscribeToPageRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.SubscribeToPageResponse'\n /rpc/openstatus.status_page.v1.StatusPageService/UnsubscribeFromPage:\n post:\n tags:\n - StatusPageService\n summary: UnsubscribeFromPage\n description: UnsubscribeFromPage removes a subscription from a status page.\n operationId: StatusPageService_UnsubscribeFromPage\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.UnsubscribeFromPageRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.UnsubscribeFromPageResponse'\n /rpc/openstatus.status_page.v1.StatusPageService/UpdateComponent:\n post:\n tags:\n - StatusPageService\n summary: UpdateComponent\n description: UpdateComponent updates an existing component.\n operationId: StatusPageService_UpdateComponent\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.UpdateComponentRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.UpdateComponentResponse'\n /rpc/openstatus.status_page.v1.StatusPageService/UpdateComponentGroup:\n post:\n tags:\n - StatusPageService\n summary: UpdateComponentGroup\n description: UpdateComponentGroup updates an existing component group.\n operationId: StatusPageService_UpdateComponentGroup\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.UpdateComponentGroupRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.UpdateComponentGroupResponse'\n /rpc/openstatus.status_page.v1.StatusPageService/UpdateStatusPage:\n post:\n tags:\n - StatusPageService\n summary: UpdateStatusPage\n description: UpdateStatusPage updates an existing status page.\n operationId: StatusPageService_UpdateStatusPage\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.UpdateStatusPageRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.UpdateStatusPageResponse'\n /rpc/openstatus.status_report.v1.StatusReportService/AddStatusReportUpdate:\n post:\n tags:\n - StatusReportService\n summary: AddStatusReportUpdate\n description: 'Adds a new update entry to an existing status report and transitions the report to the specified status. Status reports follow a lifecycle: investigating -> identified -> monitoring -> resolved. If notify is true, subscribers of the associated page are notified by email about the update.'\n operationId: StatusReportService_AddStatusReportUpdate\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_report.v1.AddStatusReportUpdateRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_report.v1.AddStatusReportUpdateResponse'\n /rpc/openstatus.status_report.v1.StatusReportService/CreateStatusReport:\n post:\n tags:\n - StatusReportService\n summary: CreateStatusReport\n description: Creates a new status report with an initial update entry. The report is associated with a status page and optionally specific page components. An initial StatusReportUpdate is created automatically with the provided status, message, and date. If notify is true, subscribers of the associated page are notified by email.\n operationId: StatusReportService_CreateStatusReport\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_report.v1.CreateStatusReportRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_report.v1.CreateStatusReportResponse'\n /rpc/openstatus.status_report.v1.StatusReportService/DeleteStatusReport:\n post:\n tags:\n - StatusReportService\n summary: DeleteStatusReport\n description: DeleteStatusReport removes a status report and all its updates.\n operationId: StatusReportService_DeleteStatusReport\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_report.v1.DeleteStatusReportRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_report.v1.DeleteStatusReportResponse'\n /rpc/openstatus.status_report.v1.StatusReportService/GetStatusReport:\n get:\n tags:\n - StatusReportService\n summary: GetStatusReport\n description: GetStatusReport retrieves a specific status report by ID (includes full update timeline).\n operationId: StatusReportService_GetStatusReport.get\n parameters:\n - name: message\n in: query\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_report.v1.GetStatusReportRequest'\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_report.v1.GetStatusReportResponse'\n post:\n tags:\n - StatusReportService\n summary: GetStatusReport\n description: GetStatusReport retrieves a specific status report by ID (includes full update timeline).\n operationId: StatusReportService_GetStatusReport\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_report.v1.GetStatusReportRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_report.v1.GetStatusReportResponse'\n /rpc/openstatus.status_report.v1.StatusReportService/ListStatusReports:\n get:\n tags:\n - StatusReportService\n summary: ListStatusReports\n description: ListStatusReports returns all status reports for the workspace (metadata only).\n operationId: StatusReportService_ListStatusReports.get\n parameters:\n - name: message\n in: query\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_report.v1.ListStatusReportsRequest'\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_report.v1.ListStatusReportsResponse'\n post:\n tags:\n - StatusReportService\n summary: ListStatusReports\n description: ListStatusReports returns all status reports for the workspace (metadata only).\n operationId: StatusReportService_ListStatusReports\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_report.v1.ListStatusReportsRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_report.v1.ListStatusReportsResponse'\n /rpc/openstatus.status_report.v1.StatusReportService/UpdateStatusReport:\n post:\n tags:\n - StatusReportService\n summary: UpdateStatusReport\n description: UpdateStatusReport updates the metadata of a status report (title, page components).\n operationId: StatusReportService_UpdateStatusReport\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_report.v1.UpdateStatusReportRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_report.v1.UpdateStatusReportResponse'\n"; +export default "openapi: 3.1.0\ninfo:\n description: OpenStatus is a open-source status page platform with global uptime monitoring. The OpenStatus API allows you to interact with the OpenStatus platform programmatically. To get started you need to create an account on https://www.openstatus.dev/ and create an api token in your settings. Requests are rate limited per API key or token (600 per minute, 100 per 10 seconds); exceeding a limit returns HTTP 429 with a Retry-After header. See https://www.openstatus.dev/docs/reference/api-rate-limits.\n title: OpenStatus API\n version: v2.0.0\n contact:\n email: ping@openstatus.dev\n url: https://www.openstatus.dev\nservers:\n - url: https://api.openstatus.dev\n description: Production\nexternalDocs:\n description: OpenStatus Documentation\n url: https://www.openstatus.dev/docs\ncomponents:\n responses:\n RateLimited:\n description: Rate limit exceeded (Connect code resource_exhausted). Retry after the number of seconds in the Retry-After header. See https://www.openstatus.dev/docs/reference/api-rate-limits.\n headers:\n Retry-After:\n description: Seconds to wait before retrying.\n schema:\n type: integer\n example: 7\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n securitySchemes:\n ApiKeyAuth:\n type: apiKey\n in: header\n name: x-openstatus-key\n schemas:\n connect.error:\n type: object\n properties:\n code:\n type: string\n examples:\n - not_found\n enum:\n - canceled\n - unknown\n - invalid_argument\n - deadline_exceeded\n - not_found\n - already_exists\n - permission_denied\n - resource_exhausted\n - failed_precondition\n - aborted\n - out_of_range\n - unimplemented\n - internal\n - unavailable\n - data_loss\n - unauthenticated\n description: The status code, which should be an enum value of [google.rpc.Code][google.rpc.Code].\n message:\n type: string\n description: A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the [google.rpc.Status.details][google.rpc.Status.details] field, or localized by the client.\n details:\n type: array\n items:\n $ref: '#/components/schemas/connect.error_details.Any'\n description: A list of messages that carry the error details. There is no limit on the number of messages.\n title: Connect Error\n additionalProperties: true\n description: 'Error type returned by Connect: https://connectrpc.com/docs/go/errors/#http-representation'\n connect.error_details.Any:\n type: object\n properties:\n type:\n type: string\n description: 'A URL that acts as a globally unique identifier for the type of the serialized message. For example: `type.googleapis.com/google.rpc.ErrorInfo`. This is used to determine the schema of the data in the `value` field and is the discriminator for the `debug` field.'\n value:\n type: string\n format: binary\n description: The Protobuf message, serialized as bytes and base64-encoded. The specific message type is identified by the `type` field.\n debug:\n oneOf:\n - type: object\n title: Any\n additionalProperties: true\n description: Detailed error information.\n discriminator:\n propertyName: type\n title: Debug\n description: Deserialized error detail payload. The 'type' field indicates the schema. This field is for easier debugging and should not be relied upon for application logic.\n additionalProperties: true\n description: Contains an arbitrary serialized message along with a @type that describes the type of the serialized message, with an additional debug field for ConnectRPC error details.\n openstatus.health.v1.CheckRequest:\n type: object\n properties:\n service:\n type: string\n title: service\n description: Optional service name to check. If empty, checks overall service health.\n title: CheckRequest\n additionalProperties: false\n description: CheckRequest is the request message for health checks.\n openstatus.health.v1.CheckResponse:\n type: object\n properties:\n status:\n title: status\n description: The serving status of the service.\n $ref: '#/components/schemas/openstatus.health.v1.CheckResponse.ServingStatus'\n title: CheckResponse\n additionalProperties: false\n description: CheckResponse is the response message for health checks.\n openstatus.health.v1.CheckResponse.ServingStatus:\n type: string\n title: ServingStatus\n enum:\n - SERVING_STATUS_UNSPECIFIED\n - SERVING_STATUS_SERVING\n - SERVING_STATUS_NOT_SERVING\n description: ServingStatus represents the health status of the service.\n openstatus.maintenance.v1.CreateMaintenanceRequest:\n type: object\n properties:\n title:\n type: string\n examples:\n - Database Migration\n title: title\n maxLength: 256\n minLength: 1\n description: Title of the maintenance (required, 1-256 characters).\n message:\n type: string\n title: message\n minLength: 1\n description: Message describing the maintenance (required).\n from:\n type: string\n examples:\n - \"2024-03-01T02:00:00Z\"\n title: from\n pattern: ^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d{1,9})?(Z|[+-]\\d{2}:\\d{2})$\n description: Start time of the maintenance window (RFC 3339 format, required).\n to:\n type: string\n examples:\n - \"2024-03-01T06:00:00Z\"\n title: to\n pattern: ^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d{1,9})?(Z|[+-]\\d{2}:\\d{2})$\n description: End time of the maintenance window (RFC 3339 format, required).\n pageId:\n type: string\n title: page_id\n minLength: 1\n description: Page ID to associate with this maintenance (required).\n pageComponentIds:\n type: array\n items:\n type: string\n title: page_component_ids\n description: Page component IDs to associate with this maintenance (optional).\n notify:\n type:\n - boolean\n - \"null\"\n title: notify\n description: Whether to notify subscribers about this maintenance (optional, defaults to false).\n title: CreateMaintenanceRequest\n additionalProperties: false\n description: CreateMaintenanceRequest is the request to create a new maintenance window.\n openstatus.maintenance.v1.CreateMaintenanceResponse:\n type: object\n properties:\n maintenance:\n title: maintenance\n description: The created maintenance.\n $ref: '#/components/schemas/openstatus.maintenance.v1.Maintenance'\n title: CreateMaintenanceResponse\n additionalProperties: false\n description: CreateMaintenanceResponse is the response after creating a maintenance window.\n openstatus.maintenance.v1.DeleteMaintenanceRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: ID of the maintenance to delete (required).\n title: DeleteMaintenanceRequest\n additionalProperties: false\n description: DeleteMaintenanceRequest is the request to delete a maintenance window.\n openstatus.maintenance.v1.DeleteMaintenanceResponse:\n type: object\n properties:\n success:\n type: boolean\n title: success\n description: Whether the deletion was successful.\n title: DeleteMaintenanceResponse\n additionalProperties: false\n description: DeleteMaintenanceResponse is the response after deleting a maintenance window.\n openstatus.maintenance.v1.GetMaintenanceRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: ID of the maintenance to retrieve (required).\n title: GetMaintenanceRequest\n additionalProperties: false\n description: GetMaintenanceRequest is the request to get a maintenance window by ID.\n openstatus.maintenance.v1.GetMaintenanceResponse:\n type: object\n properties:\n maintenance:\n title: maintenance\n description: The requested maintenance.\n $ref: '#/components/schemas/openstatus.maintenance.v1.Maintenance'\n title: GetMaintenanceResponse\n additionalProperties: false\n description: GetMaintenanceResponse is the response containing the maintenance window.\n openstatus.maintenance.v1.ListMaintenancesRequest:\n type: object\n properties:\n limit:\n type:\n - integer\n - \"null\"\n title: limit\n maximum: 100\n minimum: 1\n format: int32\n description: Maximum number of maintenances to return (1-100, defaults to 50).\n offset:\n type:\n - integer\n - \"null\"\n title: offset\n minimum: 0\n format: int32\n description: Number of maintenances to skip for pagination (defaults to 0).\n pageId:\n type:\n - string\n - \"null\"\n title: page_id\n description: Filter by page ID (optional).\n title: ListMaintenancesRequest\n additionalProperties: false\n description: ListMaintenancesRequest is the request to list maintenance windows.\n openstatus.maintenance.v1.ListMaintenancesResponse:\n type: object\n properties:\n maintenances:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.maintenance.v1.MaintenanceSummary'\n title: maintenances\n description: List of maintenances.\n totalSize:\n type: integer\n title: total_size\n format: int32\n description: Total number of maintenances matching the filter.\n title: ListMaintenancesResponse\n additionalProperties: false\n description: ListMaintenancesResponse is the response containing maintenance window summaries.\n openstatus.maintenance.v1.Maintenance:\n type: object\n properties:\n id:\n type: string\n title: id\n description: Unique identifier for the maintenance.\n title:\n type: string\n title: title\n description: Title of the maintenance.\n message:\n type: string\n title: message\n description: Message describing the maintenance.\n from:\n type: string\n title: from\n description: Start time of the maintenance window (RFC 3339 format).\n to:\n type: string\n title: to\n description: End time of the maintenance window (RFC 3339 format).\n pageId:\n type: string\n title: page_id\n description: ID of the page this maintenance is associated with.\n pageComponentIds:\n type: array\n items:\n type: string\n title: page_component_ids\n description: IDs of affected page components.\n createdAt:\n type: string\n title: created_at\n description: Timestamp when the maintenance was created (RFC 3339 format).\n updatedAt:\n type: string\n title: updated_at\n description: Timestamp when the maintenance was last updated (RFC 3339 format).\n title: Maintenance\n additionalProperties: false\n description: Maintenance represents a maintenance window with full details.\n openstatus.maintenance.v1.MaintenanceSummary:\n type: object\n properties:\n id:\n type: string\n title: id\n description: Unique identifier for the maintenance.\n title:\n type: string\n title: title\n description: Title of the maintenance.\n message:\n type: string\n title: message\n description: Message describing the maintenance.\n from:\n type: string\n title: from\n description: Start time of the maintenance window (RFC 3339 format).\n to:\n type: string\n title: to\n description: End time of the maintenance window (RFC 3339 format).\n pageId:\n type: string\n title: page_id\n description: ID of the page this maintenance is associated with.\n pageComponentIds:\n type: array\n items:\n type: string\n title: page_component_ids\n description: IDs of affected page components.\n createdAt:\n type: string\n title: created_at\n description: Timestamp when the maintenance was created (RFC 3339 format).\n updatedAt:\n type: string\n title: updated_at\n description: Timestamp when the maintenance was last updated (RFC 3339 format).\n title: MaintenanceSummary\n additionalProperties: false\n description: MaintenanceSummary represents metadata for a maintenance window (used in list responses).\n openstatus.maintenance.v1.UpdateMaintenanceRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: ID of the maintenance to update (required).\n title:\n type:\n - string\n - \"null\"\n title: title\n maxLength: 256\n minLength: 1\n description: New title for the maintenance (optional).\n message:\n type:\n - string\n - \"null\"\n title: message\n description: New message for the maintenance (optional).\n from:\n type:\n - string\n - \"null\"\n title: from\n pattern: ^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d{1,9})?(Z|[+-]\\d{2}:\\d{2})$\n description: New start time (RFC 3339 format, optional).\n to:\n type:\n - string\n - \"null\"\n title: to\n pattern: ^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d{1,9})?(Z|[+-]\\d{2}:\\d{2})$\n description: New end time (RFC 3339 format, optional).\n pageId:\n type:\n - string\n - \"null\"\n title: page_id\n description: 'Deprecated: page_id is now derived from page_component_ids.'\n deprecated: true\n pageComponentIds:\n type: array\n items:\n type: string\n title: page_component_ids\n description: New list of page component IDs (optional, replaces existing list).\n updatePageComponentIds:\n type:\n - boolean\n - \"null\"\n title: update_page_component_ids\n description: |-\n Set to true to update page component associations.\n When true, page_component_ids replaces the existing list (empty clears all).\n When false or unset, page_component_ids is ignored and existing associations are preserved.\n title: UpdateMaintenanceRequest\n additionalProperties: false\n description: UpdateMaintenanceRequest is the request to update a maintenance window.\n openstatus.maintenance.v1.UpdateMaintenanceResponse:\n type: object\n properties:\n maintenance:\n title: maintenance\n description: The updated maintenance.\n $ref: '#/components/schemas/openstatus.maintenance.v1.Maintenance'\n title: UpdateMaintenanceResponse\n additionalProperties: false\n description: UpdateMaintenanceResponse is the response after updating a maintenance window.\n openstatus.monitor.v1.BodyAssertion:\n type: object\n properties:\n target:\n type: string\n title: target\n description: Target value to compare against.\n comparator:\n not:\n enum:\n - STRING_COMPARATOR_UNSPECIFIED\n title: comparator\n description: Comparison operation (required, must not be UNSPECIFIED).\n $ref: '#/components/schemas/openstatus.monitor.v1.StringComparator'\n title: BodyAssertion\n additionalProperties: false\n description: BodyAssertion defines an assertion for response body content.\n openstatus.monitor.v1.CreateDNSMonitorRequest:\n type: object\n properties:\n monitor:\n title: monitor\n description: Monitor configuration (required).\n $ref: '#/components/schemas/openstatus.monitor.v1.DNSMonitor'\n title: CreateDNSMonitorRequest\n required:\n - monitor\n additionalProperties: false\n description: CreateDNSMonitorRequest is the request to create a new DNS monitor.\n openstatus.monitor.v1.CreateDNSMonitorResponse:\n type: object\n properties:\n monitor:\n title: monitor\n description: The created monitor with assigned ID.\n $ref: '#/components/schemas/openstatus.monitor.v1.DNSMonitor'\n title: CreateDNSMonitorResponse\n additionalProperties: false\n description: CreateDNSMonitorResponse is the response after creating a DNS monitor.\n openstatus.monitor.v1.CreateGRPCMonitorRequest:\n type: object\n properties:\n monitor:\n title: monitor\n description: Monitor configuration (required).\n $ref: '#/components/schemas/openstatus.monitor.v1.GRPCMonitor'\n title: CreateGRPCMonitorRequest\n required:\n - monitor\n additionalProperties: false\n description: CreateGRPCMonitorRequest is the request to create a new gRPC monitor.\n openstatus.monitor.v1.CreateGRPCMonitorResponse:\n type: object\n properties:\n monitor:\n title: monitor\n description: The created monitor with assigned ID.\n $ref: '#/components/schemas/openstatus.monitor.v1.GRPCMonitor'\n title: CreateGRPCMonitorResponse\n additionalProperties: false\n description: CreateGRPCMonitorResponse is the response after creating a gRPC monitor.\n openstatus.monitor.v1.CreateHTTPMonitorRequest:\n type: object\n properties:\n monitor:\n title: monitor\n description: Monitor configuration (required).\n $ref: '#/components/schemas/openstatus.monitor.v1.HTTPMonitor'\n title: CreateHTTPMonitorRequest\n required:\n - monitor\n additionalProperties: false\n description: CreateHTTPMonitorRequest is the request to create a new HTTP monitor.\n openstatus.monitor.v1.CreateHTTPMonitorResponse:\n type: object\n properties:\n monitor:\n title: monitor\n description: The created monitor with assigned ID.\n $ref: '#/components/schemas/openstatus.monitor.v1.HTTPMonitor'\n title: CreateHTTPMonitorResponse\n additionalProperties: false\n description: CreateHTTPMonitorResponse is the response after creating an HTTP monitor.\n openstatus.monitor.v1.CreateICMPMonitorRequest:\n type: object\n properties:\n monitor:\n title: monitor\n description: Monitor configuration (required).\n $ref: '#/components/schemas/openstatus.monitor.v1.ICMPMonitor'\n title: CreateICMPMonitorRequest\n required:\n - monitor\n additionalProperties: false\n description: CreateICMPMonitorRequest is the request to create a new ICMP monitor.\n openstatus.monitor.v1.CreateICMPMonitorResponse:\n type: object\n properties:\n monitor:\n title: monitor\n description: The created monitor with assigned ID.\n $ref: '#/components/schemas/openstatus.monitor.v1.ICMPMonitor'\n title: CreateICMPMonitorResponse\n additionalProperties: false\n description: CreateICMPMonitorResponse is the response after creating an ICMP monitor.\n openstatus.monitor.v1.CreateTCPMonitorRequest:\n type: object\n properties:\n monitor:\n title: monitor\n description: Monitor configuration (required).\n $ref: '#/components/schemas/openstatus.monitor.v1.TCPMonitor'\n title: CreateTCPMonitorRequest\n required:\n - monitor\n additionalProperties: false\n description: CreateTCPMonitorRequest is the request to create a new TCP monitor.\n openstatus.monitor.v1.CreateTCPMonitorResponse:\n type: object\n properties:\n monitor:\n title: monitor\n description: The created monitor with assigned ID.\n $ref: '#/components/schemas/openstatus.monitor.v1.TCPMonitor'\n title: CreateTCPMonitorResponse\n additionalProperties: false\n description: CreateTCPMonitorResponse is the response after creating a TCP monitor.\n openstatus.monitor.v1.DNSMonitor:\n type: object\n properties:\n id:\n type: string\n title: id\n description: Unique identifier for the monitor (output only for create requests).\n name:\n type: string\n examples:\n - DNS Resolution Check\n title: name\n maxLength: 256\n minLength: 1\n description: Name of the monitor (required, max 256 characters).\n uri:\n type: string\n examples:\n - example.com\n title: uri\n maxLength: 2048\n minLength: 1\n description: Domain to resolve (required, max 2048 characters).\n periodicity:\n not:\n enum:\n - PERIODICITY_UNSPECIFIED\n title: periodicity\n description: Check periodicity (required).\n $ref: '#/components/schemas/openstatus.monitor.v1.Periodicity'\n timeout:\n type:\n - integer\n - string\n title: timeout\n maximum: 120000\n minimum: 0\n format: int64\n description: Timeout in milliseconds (0-120000, defaults to 45000).\n degradedAt:\n type:\n - integer\n - string\n - \"null\"\n title: degraded_at\n maximum: 120000\n minimum: 0\n format: int64\n description: Latency threshold for degraded status in milliseconds (optional, 0-120000).\n retry:\n type:\n - integer\n - string\n title: retry\n maximum: 10\n minimum: 0\n format: int64\n description: Number of retry attempts (0-10, defaults to 3).\n recordAssertions:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.monitor.v1.RecordAssertion'\n title: record_assertions\n maxItems: 10\n description: DNS record assertions for validation.\n description:\n type:\n - string\n - \"null\"\n title: description\n maxLength: 1024\n description: Description of the monitor (optional).\n active:\n type:\n - boolean\n - \"null\"\n title: active\n description: Whether the monitor is active (defaults to false).\n public:\n type:\n - boolean\n - \"null\"\n title: public\n description: Whether the monitor is publicly visible (defaults to false).\n regions:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.monitor.v1.Region'\n title: regions\n maxItems: 28\n description: Geographic regions to run checks from.\n openTelemetry:\n title: open_telemetry\n description: OpenTelemetry configuration for exporting metrics.\n $ref: '#/components/schemas/openstatus.monitor.v1.OpenTelemetryConfig'\n status:\n title: status\n description: Current operational status of the monitor.\n $ref: '#/components/schemas/openstatus.monitor.v1.MonitorStatus'\n privateLocationIds:\n type: array\n items:\n type: string\n readOnly: true\n title: private_location_ids\n description: IDs of private locations that run this monitor. Read-only.\n readOnly: true\n title: DNSMonitor\n additionalProperties: false\n description: DNSMonitor defines the configuration for a DNS monitor.\n openstatus.monitor.v1.DeleteMonitorRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: Monitor ID to delete (required).\n title: DeleteMonitorRequest\n additionalProperties: false\n description: DeleteMonitorRequest is the request to delete a monitor.\n openstatus.monitor.v1.DeleteMonitorResponse:\n type: object\n properties:\n success:\n type: boolean\n title: success\n description: Whether the deletion was successful.\n title: DeleteMonitorResponse\n additionalProperties: false\n description: DeleteMonitorResponse is the response after deleting a monitor.\n openstatus.monitor.v1.GRPCMonitor:\n type: object\n properties:\n id:\n type: string\n title: id\n description: Unique identifier for the monitor (output only for create requests).\n name:\n type: string\n examples:\n - Checkout gRPC\n title: name\n maxLength: 256\n minLength: 1\n description: Name of the monitor (required, max 256 characters).\n uri:\n type: string\n examples:\n - api.example.com:443\n title: uri\n maxLength: 2048\n minLength: 1\n pattern: ^(\\[[0-9a-fA-F:]+\\]|[^:/\\s]+):[0-9]{1,5}$\n description: Target in \"host:port\" form. IPv6 addresses must be bracketed.\n periodicity:\n not:\n enum:\n - PERIODICITY_UNSPECIFIED\n title: periodicity\n description: Check periodicity (required).\n $ref: '#/components/schemas/openstatus.monitor.v1.Periodicity'\n timeout:\n type:\n - integer\n - string\n title: timeout\n maximum: 120000\n minimum: 0\n format: int64\n description: Timeout in milliseconds (0-120000, defaults to 45000).\n degradedAt:\n type:\n - integer\n - string\n - \"null\"\n title: degraded_at\n maximum: 120000\n minimum: 0\n format: int64\n description: Latency threshold for degraded status in milliseconds (optional, 0-120000).\n retry:\n type:\n - integer\n - string\n title: retry\n maximum: 10\n minimum: 0\n format: int64\n description: Number of retry attempts (0-10, defaults to 3).\n description:\n type:\n - string\n - \"null\"\n title: description\n maxLength: 1024\n description: Description of the monitor (optional).\n active:\n type:\n - boolean\n - \"null\"\n title: active\n description: Whether the monitor is active (defaults to false).\n public:\n type:\n - boolean\n - \"null\"\n title: public\n description: Whether the monitor is publicly visible (defaults to false).\n regions:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.monitor.v1.Region'\n title: regions\n maxItems: 28\n description: Geographic regions to run checks from.\n openTelemetry:\n title: open_telemetry\n description: OpenTelemetry configuration for exporting metrics.\n $ref: '#/components/schemas/openstatus.monitor.v1.OpenTelemetryConfig'\n status:\n title: status\n description: Current operational status of the monitor.\n $ref: '#/components/schemas/openstatus.monitor.v1.MonitorStatus'\n privateLocationIds:\n type: array\n items:\n type: string\n readOnly: true\n title: private_location_ids\n description: IDs of private locations that run this monitor. Read-only.\n readOnly: true\n service:\n type:\n - string\n - \"null\"\n examples:\n - checkout.v1.CheckoutService\n title: service\n maxLength: 512\n description: Service name passed to Health/Check. Empty means overall server health.\n tlsMode:\n oneOf:\n - $ref: '#/components/schemas/openstatus.monitor.v1.GRPCTlsMode'\n - type: \"null\"\n title: tls_mode\n description: How the connection to the target is secured. Defaults to TLS.\n metadata:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.monitor.v1.Headers'\n title: metadata\n maxItems: 20\n description: Metadata sent with the health check request.\n title: GRPCMonitor\n additionalProperties: false\n description: |-\n GRPCMonitor defines the configuration for a gRPC health check monitor.\n The probe calls grpc.health.v1.Health/Check on the target.\n openstatus.monitor.v1.GRPCTlsMode:\n type: string\n title: GRPCTlsMode\n enum:\n - GRPC_TLS_MODE_UNSPECIFIED\n - GRPC_TLS_MODE_TLS\n - GRPC_TLS_MODE_PLAINTEXT\n - GRPC_TLS_MODE_TLS_INSECURE\n description: GRPCTlsMode selects how the probe secures its connection to the target.\n openstatus.monitor.v1.GetMonitorHTTPResponseLogRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: Monitor ID to get a response log for (required).\n logId:\n type: string\n title: log_id\n minLength: 1\n description: Response log ID to retrieve (required).\n title: GetMonitorHTTPResponseLogRequest\n additionalProperties: false\n description: GetMonitorHTTPResponseLogRequest is the request to get one response log.\n openstatus.monitor.v1.GetMonitorHTTPResponseLogResponse:\n type: object\n properties:\n log:\n title: log\n description: Response log details.\n $ref: '#/components/schemas/openstatus.monitor.v1.HTTPResponseLogDetail'\n title: GetMonitorHTTPResponseLogResponse\n additionalProperties: false\n description: GetMonitorHTTPResponseLogResponse is the response containing one response log.\n openstatus.monitor.v1.GetMonitorRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: Monitor ID to retrieve (required).\n title: GetMonitorRequest\n additionalProperties: false\n description: GetMonitorRequest is the request to get a single monitor by ID.\n openstatus.monitor.v1.GetMonitorResponse:\n type: object\n properties:\n monitor:\n title: monitor\n description: The monitor configuration (one of HTTP, TCP, DNS, ICMP, or gRPC).\n $ref: '#/components/schemas/openstatus.monitor.v1.MonitorConfig'\n title: GetMonitorResponse\n additionalProperties: false\n description: GetMonitorResponse is the response containing the monitor.\n openstatus.monitor.v1.GetMonitorStatusRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: Monitor ID to get status for (required).\n title: GetMonitorStatusRequest\n additionalProperties: false\n description: GetMonitorStatusRequest is the request to get the status of all regions for a monitor.\n openstatus.monitor.v1.GetMonitorStatusResponse:\n type: object\n properties:\n id:\n type: string\n title: id\n description: Monitor ID.\n regions:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.monitor.v1.RegionStatus'\n title: regions\n description: Status for each region.\n title: GetMonitorStatusResponse\n additionalProperties: false\n description: GetMonitorStatusResponse is the response containing the status of all regions for a monitor.\n openstatus.monitor.v1.GetMonitorSummaryRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: Monitor ID to get summary for (required).\n timeRange:\n title: time_range\n description: Time range for metrics aggregation (defaults to 1 day if unspecified).\n $ref: '#/components/schemas/openstatus.monitor.v1.TimeRange'\n regions:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.monitor.v1.Region'\n title: regions\n maxItems: 28\n description: Optional filter by regions. If empty, returns metrics for all regions.\n title: GetMonitorSummaryRequest\n additionalProperties: false\n description: GetMonitorSummaryRequest is the request to get aggregated metrics for a monitor.\n openstatus.monitor.v1.GetMonitorSummaryResponse:\n type: object\n properties:\n id:\n type: string\n title: id\n description: Monitor ID.\n lastPingAt:\n type: string\n title: last_ping_at\n description: Timestamp of the last check in RFC 3339 format.\n totalSuccessful:\n type:\n - integer\n - string\n title: total_successful\n format: int64\n description: Total number of successful requests.\n totalDegraded:\n type:\n - integer\n - string\n title: total_degraded\n format: int64\n description: Total number of degraded requests.\n totalFailed:\n type:\n - integer\n - string\n title: total_failed\n format: int64\n description: Total number of failed requests.\n p50:\n type:\n - integer\n - string\n title: p50\n format: int64\n description: 50th percentile (median) latency in milliseconds.\n p75:\n type:\n - integer\n - string\n title: p75\n format: int64\n description: 75th percentile latency in milliseconds.\n p90:\n type:\n - integer\n - string\n title: p90\n format: int64\n description: 90th percentile latency in milliseconds.\n p95:\n type:\n - integer\n - string\n title: p95\n format: int64\n description: 95th percentile latency in milliseconds.\n p99:\n type:\n - integer\n - string\n title: p99\n format: int64\n description: 99th percentile latency in milliseconds.\n timeRange:\n title: time_range\n description: Time range used for the metrics.\n $ref: '#/components/schemas/openstatus.monitor.v1.TimeRange'\n regions:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.monitor.v1.Region'\n title: regions\n description: Regions included in the metrics.\n title: GetMonitorSummaryResponse\n additionalProperties: false\n description: GetMonitorSummaryResponse is the response containing aggregated metrics for a monitor.\n openstatus.monitor.v1.HTTPMethod:\n type: string\n title: HTTPMethod\n enum:\n - HTTP_METHOD_UNSPECIFIED\n - HTTP_METHOD_GET\n - HTTP_METHOD_POST\n - HTTP_METHOD_HEAD\n - HTTP_METHOD_PUT\n - HTTP_METHOD_PATCH\n - HTTP_METHOD_DELETE\n - HTTP_METHOD_TRACE\n - HTTP_METHOD_CONNECT\n - HTTP_METHOD_OPTIONS\n description: HTTP methods supported for monitors.\n openstatus.monitor.v1.HTTPMonitor:\n type: object\n properties:\n id:\n type: string\n title: id\n description: Unique identifier for the monitor (output only for create requests).\n name:\n type: string\n examples:\n - Production API Health Check\n title: name\n maxLength: 256\n minLength: 1\n description: Name of the monitor (required, max 256 characters).\n url:\n type: string\n examples:\n - https://api.example.com/health\n title: url\n maxLength: 2048\n minLength: 1\n format: uri\n description: URL to monitor (required, max 2048 characters).\n periodicity:\n not:\n enum:\n - PERIODICITY_UNSPECIFIED\n title: periodicity\n description: Check periodicity (required).\n $ref: '#/components/schemas/openstatus.monitor.v1.Periodicity'\n method:\n not:\n enum:\n - HTTP_METHOD_UNSPECIFIED\n title: method\n description: HTTP method to use (defaults to GET).\n $ref: '#/components/schemas/openstatus.monitor.v1.HTTPMethod'\n body:\n type: string\n examples:\n - map[key:value]\n title: body\n description: Request body (optional).\n timeout:\n type:\n - integer\n - string\n title: timeout\n maximum: 120000\n minimum: 0\n format: int64\n description: Timeout in milliseconds (0-120000, defaults to 45000).\n degradedAt:\n type:\n - integer\n - string\n - \"null\"\n title: degraded_at\n maximum: 120000\n minimum: 0\n format: int64\n description: Latency threshold for degraded status in milliseconds (optional, 0-120000).\n retry:\n type:\n - integer\n - string\n title: retry\n maximum: 10\n minimum: 0\n format: int64\n description: Number of retry attempts (0-10, defaults to 3).\n followRedirects:\n type:\n - boolean\n - \"null\"\n title: follow_redirects\n description: Whether to follow HTTP redirects (defaults to true when not specified).\n headers:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.monitor.v1.Headers'\n title: headers\n maxItems: 20\n description: Custom headers for the request.\n statusCodeAssertions:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.monitor.v1.StatusCodeAssertion'\n title: status_code_assertions\n maxItems: 10\n description: Status code assertions for the response.\n bodyAssertions:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.monitor.v1.BodyAssertion'\n title: body_assertions\n maxItems: 10\n description: Body content assertions for the response.\n headerAssertions:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.monitor.v1.HeaderAssertion'\n title: header_assertions\n maxItems: 10\n description: Header assertions for the response.\n description:\n type:\n - string\n - \"null\"\n title: description\n maxLength: 1024\n description: Description of the monitor (optional).\n active:\n type:\n - boolean\n - \"null\"\n title: active\n description: Whether the monitor is active (defaults to false).\n public:\n type:\n - boolean\n - \"null\"\n title: public\n description: Whether the monitor is publicly visible (defaults to false).\n regions:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.monitor.v1.Region'\n title: regions\n maxItems: 28\n description: Geographic regions to run checks from.\n openTelemetry:\n title: open_telemetry\n description: OpenTelemetry configuration for exporting metrics.\n $ref: '#/components/schemas/openstatus.monitor.v1.OpenTelemetryConfig'\n status:\n title: status\n description: Current operational status of the monitor.\n $ref: '#/components/schemas/openstatus.monitor.v1.MonitorStatus'\n privateLocationIds:\n type: array\n items:\n type: string\n readOnly: true\n title: private_location_ids\n description: IDs of private locations that run this monitor. Read-only.\n readOnly: true\n title: HTTPMonitor\n additionalProperties: false\n description: HTTPMonitor defines the configuration for an HTTP monitor.\n openstatus.monitor.v1.HTTPResponseLogDetail:\n type: object\n properties:\n log:\n title: log\n description: Compact response log fields.\n $ref: '#/components/schemas/openstatus.monitor.v1.HTTPResponseLogListItem'\n url:\n type: string\n title: url\n description: Checked URL.\n error:\n type: boolean\n title: error\n description: Whether the check errored.\n message:\n type:\n - string\n - \"null\"\n title: message\n description: Error message, when present.\n headers:\n type: object\n title: headers\n additionalProperties:\n type: string\n title: value\n description: Redacted response headers.\n assertions:\n type:\n - string\n - \"null\"\n title: assertions\n description: Serialized assertions used for the check.\n title: HTTPResponseLogDetail\n additionalProperties: false\n description: HTTPResponseLogDetail contains full response log debugging data.\n openstatus.monitor.v1.HTTPResponseLogDetail.HeadersEntry:\n type: object\n properties:\n key:\n type: string\n title: key\n value:\n type: string\n title: value\n title: HeadersEntry\n additionalProperties: false\n openstatus.monitor.v1.HTTPResponseLogListItem:\n type: object\n properties:\n id:\n type:\n - string\n - \"null\"\n title: id\n description: Response log ID.\n latency:\n type: integer\n title: latency\n format: int32\n description: Latency in milliseconds.\n statusCode:\n type:\n - integer\n - \"null\"\n title: status_code\n format: int32\n description: HTTP status code.\n monitorId:\n type: string\n title: monitor_id\n description: Monitor ID.\n requestStatus:\n title: request_status\n description: Request status classification.\n $ref: '#/components/schemas/openstatus.monitor.v1.HTTPResponseLogRequestStatus'\n region:\n title: region\n description: Region where the check ran.\n $ref: '#/components/schemas/openstatus.monitor.v1.Region'\n cronTimestamp:\n type:\n - integer\n - string\n title: cron_timestamp\n format: int64\n description: Cron bucket timestamp in Unix milliseconds.\n trigger:\n title: trigger\n description: Check trigger.\n $ref: '#/components/schemas/openstatus.monitor.v1.HTTPResponseLogTrigger'\n timestamp:\n type:\n - integer\n - string\n title: timestamp\n format: int64\n description: Response timestamp in Unix milliseconds.\n timing:\n oneOf:\n - $ref: '#/components/schemas/openstatus.monitor.v1.HTTPResponseLogTiming'\n - type: \"null\"\n title: timing\n description: Timing phases.\n title: HTTPResponseLogListItem\n additionalProperties: false\n description: HTTPResponseLogListItem is a compact response log entry.\n openstatus.monitor.v1.HTTPResponseLogPagination:\n type: object\n properties:\n limit:\n type: integer\n title: limit\n format: int32\n description: Requested page size.\n offset:\n type: integer\n title: offset\n format: int32\n description: Requested offset.\n hasMore:\n type: boolean\n title: has_more\n description: Whether more logs are available.\n nextOffset:\n type:\n - integer\n - \"null\"\n title: next_offset\n format: int32\n description: Next offset if more logs are available.\n title: HTTPResponseLogPagination\n additionalProperties: false\n description: HTTPResponseLogPagination contains offset pagination metadata.\n openstatus.monitor.v1.HTTPResponseLogRequestStatus:\n type: string\n title: HTTPResponseLogRequestStatus\n enum:\n - HTTP_RESPONSE_LOG_REQUEST_STATUS_UNSPECIFIED\n - HTTP_RESPONSE_LOG_REQUEST_STATUS_SUCCESS\n - HTTP_RESPONSE_LOG_REQUEST_STATUS_ERROR\n - HTTP_RESPONSE_LOG_REQUEST_STATUS_DEGRADED\n description: HTTPResponseLogRequestStatus is the result classification for an HTTP response log.\n openstatus.monitor.v1.HTTPResponseLogTiming:\n type: object\n properties:\n dns:\n type: integer\n title: dns\n format: int32\n description: DNS lookup duration.\n connect:\n type: integer\n title: connect\n format: int32\n description: TCP connection duration.\n tls:\n type: integer\n title: tls\n format: int32\n description: TLS handshake duration.\n ttfb:\n type: integer\n title: ttfb\n format: int32\n description: Time to first byte duration.\n transfer:\n type: integer\n title: transfer\n format: int32\n description: Response transfer duration.\n title: HTTPResponseLogTiming\n additionalProperties: false\n description: HTTPResponseLogTiming contains calculated timing phases in milliseconds.\n openstatus.monitor.v1.HTTPResponseLogTrigger:\n type: string\n title: HTTPResponseLogTrigger\n enum:\n - HTTP_RESPONSE_LOG_TRIGGER_UNSPECIFIED\n - HTTP_RESPONSE_LOG_TRIGGER_CRON\n - HTTP_RESPONSE_LOG_TRIGGER_API\n description: HTTPResponseLogTrigger describes what started the monitor check.\n openstatus.monitor.v1.HeaderAssertion:\n type: object\n properties:\n target:\n type: string\n title: target\n description: Target value to compare against.\n comparator:\n not:\n enum:\n - STRING_COMPARATOR_UNSPECIFIED\n title: comparator\n description: Comparison operation (required, must not be UNSPECIFIED).\n $ref: '#/components/schemas/openstatus.monitor.v1.StringComparator'\n key:\n type: string\n title: key\n minLength: 1\n description: Header key to check (required).\n title: HeaderAssertion\n additionalProperties: false\n description: HeaderAssertion defines an assertion for response headers.\n openstatus.monitor.v1.Headers:\n type: object\n properties:\n key:\n type: string\n examples:\n - Authorization\n title: key\n minLength: 1\n description: Header name.\n value:\n type: string\n examples:\n - Bearer token123\n title: value\n description: Header value.\n title: Headers\n additionalProperties: false\n description: Headers represents a key-value pair for HTTP headers.\n openstatus.monitor.v1.ICMPMonitor:\n type: object\n properties:\n id:\n type: string\n title: id\n description: Unique identifier for the monitor (output only for create requests).\n name:\n type: string\n examples:\n - Ping Gateway\n title: name\n maxLength: 256\n minLength: 1\n description: Name of the monitor (required, max 256 characters).\n uri:\n type: string\n examples:\n - 1.1.1.1\n title: uri\n maxLength: 2048\n minLength: 1\n description: URI to monitor in format \"host or IP\" (required, max 2048 characters).\n periodicity:\n not:\n enum:\n - PERIODICITY_UNSPECIFIED\n title: periodicity\n description: Check periodicity (required).\n $ref: '#/components/schemas/openstatus.monitor.v1.Periodicity'\n timeout:\n type:\n - integer\n - string\n title: timeout\n maximum: 120000\n minimum: 0\n format: int64\n description: Timeout in milliseconds (0-120000, defaults to 45000).\n degradedAt:\n type:\n - integer\n - string\n - \"null\"\n title: degraded_at\n maximum: 120000\n minimum: 0\n format: int64\n description: Latency threshold for degraded status in milliseconds (optional, 0-120000).\n retry:\n type:\n - integer\n - string\n title: retry\n maximum: 10\n minimum: 0\n format: int64\n description: Number of retry attempts (0-10, defaults to 3).\n description:\n type:\n - string\n - \"null\"\n title: description\n maxLength: 1024\n description: Description of the monitor (optional).\n active:\n type:\n - boolean\n - \"null\"\n title: active\n description: Whether the monitor is active (defaults to false).\n public:\n type:\n - boolean\n - \"null\"\n title: public\n description: Whether the monitor is publicly visible (defaults to false).\n regions:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.monitor.v1.Region'\n title: regions\n maxItems: 28\n description: Geographic regions to run checks from.\n openTelemetry:\n title: open_telemetry\n description: OpenTelemetry configuration for exporting metrics.\n $ref: '#/components/schemas/openstatus.monitor.v1.OpenTelemetryConfig'\n status:\n title: status\n description: Current operational status of the monitor.\n $ref: '#/components/schemas/openstatus.monitor.v1.MonitorStatus'\n privateLocationIds:\n type: array\n items:\n type: string\n readOnly: true\n title: private_location_ids\n description: IDs of private locations that run this monitor. Read-only.\n readOnly: true\n title: ICMPMonitor\n additionalProperties: false\n description: ICMPMonitor defines the configuration for a ICMP monitor.\n openstatus.monitor.v1.ListMonitorHTTPResponseLogsRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: Monitor ID to list response logs for (required).\n fromTimestamp:\n type:\n - integer\n - string\n - \"null\"\n title: from_timestamp\n format: int64\n description: Start of the response log window as Unix milliseconds within the 14-day retention window.\n toTimestamp:\n type:\n - integer\n - string\n - \"null\"\n title: to_timestamp\n format: int64\n description: End of the response log window as Unix milliseconds within the 14-day retention window.\n limit:\n type:\n - integer\n - \"null\"\n title: limit\n maximum: 100\n minimum: 1\n format: int32\n description: Maximum number of logs to return (1-100, defaults to 25).\n offset:\n type:\n - integer\n - \"null\"\n title: offset\n minimum: 0\n format: int32\n description: Number of logs to skip for pagination (defaults to 0).\n title: ListMonitorHTTPResponseLogsRequest\n additionalProperties: false\n description: ListMonitorHTTPResponseLogsRequest is the request to list response logs within the 14-day HTTP response-log window.\n openstatus.monitor.v1.ListMonitorHTTPResponseLogsResponse:\n type: object\n properties:\n logs:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.monitor.v1.HTTPResponseLogListItem'\n title: logs\n description: Response logs.\n pagination:\n title: pagination\n description: Pagination metadata.\n $ref: '#/components/schemas/openstatus.monitor.v1.HTTPResponseLogPagination'\n title: ListMonitorHTTPResponseLogsResponse\n additionalProperties: false\n description: ListMonitorHTTPResponseLogsResponse is the response containing response logs.\n openstatus.monitor.v1.ListMonitorsRequest:\n type: object\n properties:\n limit:\n type:\n - integer\n - \"null\"\n title: limit\n maximum: 100\n minimum: 1\n format: int32\n description: Maximum number of monitors to return (1-100, defaults to 50).\n offset:\n type:\n - integer\n - \"null\"\n title: offset\n minimum: 0\n format: int32\n description: Number of monitors to skip for pagination (defaults to 0).\n title: ListMonitorsRequest\n additionalProperties: false\n description: ListMonitorsRequest is the request to list monitors.\n openstatus.monitor.v1.ListMonitorsResponse:\n type: object\n properties:\n httpMonitors:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.monitor.v1.HTTPMonitor'\n title: http_monitors\n description: HTTP monitors in the workspace.\n tcpMonitors:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.monitor.v1.TCPMonitor'\n title: tcp_monitors\n description: TCP monitors in the workspace.\n dnsMonitors:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.monitor.v1.DNSMonitor'\n title: dns_monitors\n description: DNS monitors in the workspace.\n icmpMonitors:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.monitor.v1.ICMPMonitor'\n title: icmp_monitors\n description: ICMP monitors in the workspace.\n grpcMonitors:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.monitor.v1.GRPCMonitor'\n title: grpc_monitors\n description: gRPC monitors in the workspace.\n totalSize:\n type: integer\n title: total_size\n format: int32\n description: Total number of monitors across all types.\n title: ListMonitorsResponse\n additionalProperties: false\n description: ListMonitorsResponse is the response containing a list of monitors.\n openstatus.monitor.v1.MonitorConfig:\n type: object\n oneOf:\n - type: object\n properties:\n dns:\n title: dns\n description: DNS monitor configuration.\n $ref: '#/components/schemas/openstatus.monitor.v1.DNSMonitor'\n title: dns\n required:\n - dns\n - type: object\n properties:\n grpc:\n title: grpc\n description: gRPC monitor configuration.\n $ref: '#/components/schemas/openstatus.monitor.v1.GRPCMonitor'\n title: grpc\n required:\n - grpc\n - type: object\n properties:\n http:\n title: http\n description: HTTP monitor configuration.\n $ref: '#/components/schemas/openstatus.monitor.v1.HTTPMonitor'\n title: http\n required:\n - http\n - type: object\n properties:\n icmp:\n title: icmp\n description: ICMP monitor configuration.\n $ref: '#/components/schemas/openstatus.monitor.v1.ICMPMonitor'\n title: icmp\n required:\n - icmp\n - type: object\n properties:\n tcp:\n title: tcp\n description: TCP monitor configuration.\n $ref: '#/components/schemas/openstatus.monitor.v1.TCPMonitor'\n title: tcp\n required:\n - tcp\n title: MonitorConfig\n additionalProperties: false\n description: MonitorConfig represents the type-specific configuration for a monitor.\n openstatus.monitor.v1.MonitorStatus:\n type: string\n title: MonitorStatus\n enum:\n - MONITOR_STATUS_UNSPECIFIED\n - MONITOR_STATUS_ACTIVE\n - MONITOR_STATUS_DEGRADED\n - MONITOR_STATUS_ERROR\n description: MonitorStatus represents the operational status of a monitor.\n openstatus.monitor.v1.NumberComparator:\n type: string\n title: NumberComparator\n enum:\n - NUMBER_COMPARATOR_UNSPECIFIED\n - NUMBER_COMPARATOR_EQUAL\n - NUMBER_COMPARATOR_NOT_EQUAL\n - NUMBER_COMPARATOR_GREATER_THAN\n - NUMBER_COMPARATOR_GREATER_THAN_OR_EQUAL\n - NUMBER_COMPARATOR_LESS_THAN\n - NUMBER_COMPARATOR_LESS_THAN_OR_EQUAL\n description: NumberComparator defines comparison operations for numeric values.\n openstatus.monitor.v1.OpenTelemetryConfig:\n type: object\n properties:\n endpoint:\n type: string\n title: endpoint\n maxLength: 2048\n description: OTEL endpoint URL.\n headers:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.monitor.v1.Headers'\n title: headers\n maxItems: 20\n description: Custom headers for OTEL requests.\n title: OpenTelemetryConfig\n additionalProperties: false\n description: OpenTelemetry configuration for exporting metrics.\n openstatus.monitor.v1.Periodicity:\n type: string\n title: Periodicity\n enum:\n - PERIODICITY_UNSPECIFIED\n - PERIODICITY_30S\n - PERIODICITY_1M\n - PERIODICITY_5M\n - PERIODICITY_10M\n - PERIODICITY_30M\n - PERIODICITY_1H\n description: Monitor periodicity options.\n openstatus.monitor.v1.RecordAssertion:\n type: object\n properties:\n record:\n type: string\n title: record\n enum:\n - A\n - AAAA\n - CNAME\n - MX\n - TXT\n description: DNS record type (e.g., \"A\", \"AAAA\", \"CNAME\", \"MX\", \"TXT\").\n comparator:\n not:\n enum:\n - RECORD_COMPARATOR_UNSPECIFIED\n title: comparator\n description: Comparison operation (required, must not be UNSPECIFIED).\n $ref: '#/components/schemas/openstatus.monitor.v1.RecordComparator'\n target:\n type: string\n title: target\n description: Target value to compare against.\n title: RecordAssertion\n additionalProperties: false\n description: RecordAssertion defines an assertion for DNS records.\n openstatus.monitor.v1.RecordComparator:\n type: string\n title: RecordComparator\n enum:\n - RECORD_COMPARATOR_UNSPECIFIED\n - RECORD_COMPARATOR_EQUAL\n - RECORD_COMPARATOR_NOT_EQUAL\n - RECORD_COMPARATOR_CONTAINS\n - RECORD_COMPARATOR_NOT_CONTAINS\n description: RecordComparator defines comparison operations for DNS records.\n openstatus.monitor.v1.Region:\n type: string\n title: Region\n enum:\n - REGION_UNSPECIFIED\n - REGION_FLY_AMS\n - REGION_FLY_ARN\n - REGION_FLY_BOM\n - REGION_FLY_CDG\n - REGION_FLY_DFW\n - REGION_FLY_EWR\n - REGION_FLY_FRA\n - REGION_FLY_GRU\n - REGION_FLY_IAD\n - REGION_FLY_JNB\n - REGION_FLY_LAX\n - REGION_FLY_LHR\n - REGION_FLY_NRT\n - REGION_FLY_ORD\n - REGION_FLY_SJC\n - REGION_FLY_SIN\n - REGION_FLY_SYD\n - REGION_FLY_YYZ\n - REGION_KOYEB_FRA\n - REGION_KOYEB_PAR\n - REGION_KOYEB_SFO\n - REGION_KOYEB_SIN\n - REGION_KOYEB_TYO\n - REGION_KOYEB_WAS\n - REGION_RAILWAY_US_WEST2\n - REGION_RAILWAY_US_EAST4\n - REGION_RAILWAY_EUROPE_WEST4\n - REGION_RAILWAY_ASIA_SOUTHEAST1\n description: Geographic regions where monitors can run checks from.\n openstatus.monitor.v1.RegionStatus:\n type: object\n properties:\n region:\n title: region\n description: The region identifier.\n $ref: '#/components/schemas/openstatus.monitor.v1.Region'\n status:\n title: status\n description: The status of the monitor in this region.\n $ref: '#/components/schemas/openstatus.monitor.v1.MonitorStatus'\n title: RegionStatus\n additionalProperties: false\n description: RegionStatus represents the status of a monitor in a specific region.\n openstatus.monitor.v1.StatusCodeAssertion:\n type: object\n properties:\n target:\n type:\n - integer\n - string\n title: target\n maximum: 599\n minimum: 100\n format: int64\n description: Target status code to compare against (100-599).\n comparator:\n not:\n enum:\n - NUMBER_COMPARATOR_UNSPECIFIED\n title: comparator\n description: Comparison operation (required, must not be UNSPECIFIED).\n $ref: '#/components/schemas/openstatus.monitor.v1.NumberComparator'\n title: StatusCodeAssertion\n additionalProperties: false\n description: StatusCodeAssertion defines an assertion for HTTP status codes.\n openstatus.monitor.v1.StringComparator:\n type: string\n title: StringComparator\n enum:\n - STRING_COMPARATOR_UNSPECIFIED\n - STRING_COMPARATOR_CONTAINS\n - STRING_COMPARATOR_NOT_CONTAINS\n - STRING_COMPARATOR_EQUAL\n - STRING_COMPARATOR_NOT_EQUAL\n - STRING_COMPARATOR_EMPTY\n - STRING_COMPARATOR_NOT_EMPTY\n - STRING_COMPARATOR_GREATER_THAN\n - STRING_COMPARATOR_GREATER_THAN_OR_EQUAL\n - STRING_COMPARATOR_LESS_THAN\n - STRING_COMPARATOR_LESS_THAN_OR_EQUAL\n description: StringComparator defines comparison operations for string values.\n openstatus.monitor.v1.TCPMonitor:\n type: object\n properties:\n id:\n type: string\n title: id\n description: Unique identifier for the monitor (output only for create requests).\n name:\n type: string\n examples:\n - Database Connection Check\n title: name\n maxLength: 256\n minLength: 1\n description: Name of the monitor (required, max 256 characters).\n uri:\n type: string\n examples:\n - tcp://db.example.com:5432\n title: uri\n maxLength: 2048\n minLength: 1\n description: URI to monitor in format \"host:port\" (required, max 2048 characters).\n periodicity:\n not:\n enum:\n - PERIODICITY_UNSPECIFIED\n title: periodicity\n description: Check periodicity (required).\n $ref: '#/components/schemas/openstatus.monitor.v1.Periodicity'\n timeout:\n type:\n - integer\n - string\n title: timeout\n maximum: 120000\n minimum: 0\n format: int64\n description: Timeout in milliseconds (0-120000, defaults to 45000).\n degradedAt:\n type:\n - integer\n - string\n - \"null\"\n title: degraded_at\n maximum: 120000\n minimum: 0\n format: int64\n description: Latency threshold for degraded status in milliseconds (optional, 0-120000).\n retry:\n type:\n - integer\n - string\n title: retry\n maximum: 10\n minimum: 0\n format: int64\n description: Number of retry attempts (0-10, defaults to 3).\n description:\n type:\n - string\n - \"null\"\n title: description\n maxLength: 1024\n description: Description of the monitor (optional).\n active:\n type:\n - boolean\n - \"null\"\n title: active\n description: Whether the monitor is active (defaults to false).\n public:\n type:\n - boolean\n - \"null\"\n title: public\n description: Whether the monitor is publicly visible (defaults to false).\n regions:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.monitor.v1.Region'\n title: regions\n maxItems: 28\n description: Geographic regions to run checks from.\n openTelemetry:\n title: open_telemetry\n description: OpenTelemetry configuration for exporting metrics.\n $ref: '#/components/schemas/openstatus.monitor.v1.OpenTelemetryConfig'\n status:\n title: status\n description: Current operational status of the monitor.\n $ref: '#/components/schemas/openstatus.monitor.v1.MonitorStatus'\n privateLocationIds:\n type: array\n items:\n type: string\n readOnly: true\n title: private_location_ids\n description: IDs of private locations that run this monitor. Read-only.\n readOnly: true\n title: TCPMonitor\n additionalProperties: false\n description: TCPMonitor defines the configuration for a TCP monitor.\n openstatus.monitor.v1.TimeRange:\n type: string\n title: TimeRange\n enum:\n - TIME_RANGE_UNSPECIFIED\n - TIME_RANGE_1D\n - TIME_RANGE_7D\n - TIME_RANGE_14D\n description: TimeRange represents the time period for metrics aggregation.\n openstatus.monitor.v1.TriggerMonitorRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: Monitor ID to trigger (required).\n title: TriggerMonitorRequest\n additionalProperties: false\n description: TriggerMonitorRequest is the request to trigger a monitor check.\n openstatus.monitor.v1.TriggerMonitorResponse:\n type: object\n properties:\n success:\n type: boolean\n title: success\n description: Whether the trigger was successful.\n title: TriggerMonitorResponse\n additionalProperties: false\n description: TriggerMonitorResponse is the response after triggering a monitor.\n openstatus.monitor.v1.UpdateDNSMonitorRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: Monitor ID to update (required).\n monitor:\n oneOf:\n - $ref: '#/components/schemas/openstatus.monitor.v1.DNSMonitor'\n - type: \"null\"\n title: monitor\n description: Updated monitor configuration (all fields optional for partial updates).\n title: UpdateDNSMonitorRequest\n additionalProperties: false\n description: UpdateDNSMonitorRequest is the request to update an existing DNS monitor.\n openstatus.monitor.v1.UpdateDNSMonitorResponse:\n type: object\n properties:\n monitor:\n title: monitor\n description: The updated monitor.\n $ref: '#/components/schemas/openstatus.monitor.v1.DNSMonitor'\n title: UpdateDNSMonitorResponse\n additionalProperties: false\n description: UpdateDNSMonitorResponse is the response after updating a DNS monitor.\n openstatus.monitor.v1.UpdateGRPCMonitorRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: Monitor ID to update (required).\n monitor:\n oneOf:\n - $ref: '#/components/schemas/openstatus.monitor.v1.GRPCMonitor'\n - type: \"null\"\n title: monitor\n description: Updated monitor configuration (all fields optional for partial updates).\n title: UpdateGRPCMonitorRequest\n additionalProperties: false\n description: UpdateGRPCMonitorRequest is the request to update an existing gRPC monitor.\n openstatus.monitor.v1.UpdateGRPCMonitorResponse:\n type: object\n properties:\n monitor:\n title: monitor\n description: The updated monitor.\n $ref: '#/components/schemas/openstatus.monitor.v1.GRPCMonitor'\n title: UpdateGRPCMonitorResponse\n additionalProperties: false\n description: UpdateGRPCMonitorResponse is the response after updating a gRPC monitor.\n openstatus.monitor.v1.UpdateHTTPMonitorRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: Monitor ID to update (required).\n monitor:\n oneOf:\n - $ref: '#/components/schemas/openstatus.monitor.v1.HTTPMonitor'\n - type: \"null\"\n title: monitor\n description: Updated monitor configuration (all fields optional for partial updates).\n title: UpdateHTTPMonitorRequest\n additionalProperties: false\n description: UpdateHTTPMonitorRequest is the request to update an existing HTTP monitor.\n openstatus.monitor.v1.UpdateHTTPMonitorResponse:\n type: object\n properties:\n monitor:\n title: monitor\n description: The updated monitor.\n $ref: '#/components/schemas/openstatus.monitor.v1.HTTPMonitor'\n title: UpdateHTTPMonitorResponse\n additionalProperties: false\n description: UpdateHTTPMonitorResponse is the response after updating an HTTP monitor.\n openstatus.monitor.v1.UpdateICMPMonitorRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: Monitor ID to update (required).\n monitor:\n oneOf:\n - $ref: '#/components/schemas/openstatus.monitor.v1.ICMPMonitor'\n - type: \"null\"\n title: monitor\n description: Updated monitor configuration (all fields optional for partial updates).\n title: UpdateICMPMonitorRequest\n additionalProperties: false\n description: UpdateICMPMonitorRequest is the request to update an existing ICMP monitor.\n openstatus.monitor.v1.UpdateICMPMonitorResponse:\n type: object\n properties:\n monitor:\n title: monitor\n description: The updated monitor.\n $ref: '#/components/schemas/openstatus.monitor.v1.ICMPMonitor'\n title: UpdateICMPMonitorResponse\n additionalProperties: false\n description: UpdateICMPMonitorResponse is the response after updating an ICMP monitor.\n openstatus.monitor.v1.UpdateTCPMonitorRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: Monitor ID to update (required).\n monitor:\n oneOf:\n - $ref: '#/components/schemas/openstatus.monitor.v1.TCPMonitor'\n - type: \"null\"\n title: monitor\n description: Updated monitor configuration (all fields optional for partial updates).\n title: UpdateTCPMonitorRequest\n additionalProperties: false\n description: UpdateTCPMonitorRequest is the request to update an existing TCP monitor.\n openstatus.monitor.v1.UpdateTCPMonitorResponse:\n type: object\n properties:\n monitor:\n title: monitor\n description: The updated monitor.\n $ref: '#/components/schemas/openstatus.monitor.v1.TCPMonitor'\n title: UpdateTCPMonitorResponse\n additionalProperties: false\n description: UpdateTCPMonitorResponse is the response after updating a TCP monitor.\n openstatus.notification.v1.CheckNotificationLimitRequest:\n type: object\n title: CheckNotificationLimitRequest\n additionalProperties: false\n description: CheckNotificationLimitRequest is the request to check notification limits.\n openstatus.notification.v1.CheckNotificationLimitResponse:\n type: object\n properties:\n limitReached:\n type: boolean\n title: limit_reached\n description: Whether the workspace has reached its notification limit.\n currentCount:\n type: integer\n title: current_count\n format: int32\n description: Current number of notification channels.\n maxCount:\n type: integer\n title: max_count\n format: int32\n description: Maximum allowed notification channels.\n title: CheckNotificationLimitResponse\n additionalProperties: false\n description: CheckNotificationLimitResponse is the response containing limit information.\n openstatus.notification.v1.CreateNotificationRequest:\n type: object\n properties:\n name:\n type: string\n examples:\n - Slack Ops Channel\n title: name\n minLength: 1\n description: Display name for the notification channel.\n provider:\n not:\n enum:\n - NOTIFICATION_PROVIDER_UNSPECIFIED\n title: provider\n description: Provider type.\n $ref: '#/components/schemas/openstatus.notification.v1.NotificationProvider'\n data:\n title: data\n description: Provider-specific configuration.\n $ref: '#/components/schemas/openstatus.notification.v1.NotificationData'\n monitorIds:\n type: array\n items:\n type: string\n title: monitor_ids\n description: IDs of monitors to associate with this notification.\n title: CreateNotificationRequest\n required:\n - data\n additionalProperties: false\n description: CreateNotificationRequest is the request to create a new notification channel.\n openstatus.notification.v1.CreateNotificationResponse:\n type: object\n properties:\n notification:\n title: notification\n description: The created notification channel.\n $ref: '#/components/schemas/openstatus.notification.v1.Notification'\n title: CreateNotificationResponse\n additionalProperties: false\n description: CreateNotificationResponse is the response after creating a notification channel.\n openstatus.notification.v1.DeleteNotificationRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: Notification ID to delete (required).\n title: DeleteNotificationRequest\n additionalProperties: false\n description: DeleteNotificationRequest is the request to delete a notification channel.\n openstatus.notification.v1.DeleteNotificationResponse:\n type: object\n properties:\n success:\n type: boolean\n title: success\n description: Whether the deletion was successful.\n title: DeleteNotificationResponse\n additionalProperties: false\n description: DeleteNotificationResponse is the response after deleting a notification channel.\n openstatus.notification.v1.DiscordData:\n type: object\n properties:\n webhookUrl:\n type: string\n examples:\n - https://discord.com/api/webhooks/123/abc\n title: webhook_url\n format: uri\n description: Discord webhook URL.\n title: DiscordData\n additionalProperties: false\n description: DiscordData contains configuration for Discord notifications.\n openstatus.notification.v1.EmailData:\n type: object\n properties:\n email:\n type: string\n examples:\n - ops-team@example.com\n title: email\n format: email\n description: Email address to send notifications to.\n title: EmailData\n additionalProperties: false\n description: EmailData contains configuration for email notifications.\n openstatus.notification.v1.GetNotificationRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: Notification ID to retrieve (required).\n title: GetNotificationRequest\n additionalProperties: false\n description: GetNotificationRequest is the request to get a notification channel.\n openstatus.notification.v1.GetNotificationResponse:\n type: object\n properties:\n notification:\n title: notification\n description: The notification channel.\n $ref: '#/components/schemas/openstatus.notification.v1.Notification'\n title: GetNotificationResponse\n additionalProperties: false\n description: GetNotificationResponse is the response containing the notification channel.\n openstatus.notification.v1.GoogleChatData:\n type: object\n properties:\n webhookUrl:\n type: string\n title: webhook_url\n format: uri\n description: Google Chat webhook URL.\n title: GoogleChatData\n additionalProperties: false\n description: GoogleChatData contains configuration for Google Chat notifications.\n openstatus.notification.v1.GrafanaOncallData:\n type: object\n properties:\n webhookUrl:\n type: string\n title: webhook_url\n format: uri\n description: Grafana OnCall webhook URL.\n title: GrafanaOncallData\n additionalProperties: false\n description: GrafanaOncallData contains configuration for Grafana OnCall notifications.\n openstatus.notification.v1.ListNotificationsRequest:\n type: object\n properties:\n limit:\n type:\n - integer\n - \"null\"\n title: limit\n maximum: 100\n minimum: 1\n format: int32\n description: Maximum number of notifications to return (1-100, defaults to 50).\n offset:\n type:\n - integer\n - \"null\"\n title: offset\n minimum: 0\n format: int32\n description: Number of notifications to skip for pagination (defaults to 0).\n title: ListNotificationsRequest\n additionalProperties: false\n description: ListNotificationsRequest is the request to list notification channels.\n openstatus.notification.v1.ListNotificationsResponse:\n type: object\n properties:\n notifications:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.notification.v1.NotificationSummary'\n title: notifications\n description: Notification channel summaries.\n totalSize:\n type: integer\n title: total_size\n format: int32\n description: Total number of notification channels.\n title: ListNotificationsResponse\n additionalProperties: false\n description: ListNotificationsResponse is the response containing notification channels.\n openstatus.notification.v1.MsTeamsData:\n type: object\n properties:\n webhookUrl:\n type: string\n examples:\n - https://prod-00.westeurope.logic.azure.com:443/workflows/abc/triggers/manual/paths/invoke\n title: webhook_url\n format: uri\n description: Microsoft Teams webhook URL (Power Automate Workflows).\n title: MsTeamsData\n additionalProperties: false\n description: MsTeamsData contains configuration for Microsoft Teams notifications.\n openstatus.notification.v1.Notification:\n type: object\n properties:\n id:\n type: string\n title: id\n description: Unique identifier for the notification.\n name:\n type: string\n title: name\n description: Display name for the notification channel.\n provider:\n title: provider\n description: Provider type.\n $ref: '#/components/schemas/openstatus.notification.v1.NotificationProvider'\n data:\n title: data\n description: Provider-specific configuration.\n $ref: '#/components/schemas/openstatus.notification.v1.NotificationData'\n monitorIds:\n type: array\n items:\n type: string\n title: monitor_ids\n description: IDs of monitors associated with this notification.\n createdAt:\n type: string\n title: created_at\n description: Timestamp when the notification was created (RFC 3339).\n updatedAt:\n type: string\n title: updated_at\n description: Timestamp when the notification was last updated (RFC 3339).\n title: Notification\n additionalProperties: false\n description: Notification represents a notification channel with full details.\n openstatus.notification.v1.NotificationData:\n type: object\n oneOf:\n - type: object\n properties:\n discord:\n title: discord\n description: Discord configuration.\n $ref: '#/components/schemas/openstatus.notification.v1.DiscordData'\n title: discord\n required:\n - discord\n - type: object\n properties:\n email:\n title: email\n description: Email configuration.\n $ref: '#/components/schemas/openstatus.notification.v1.EmailData'\n title: email\n required:\n - email\n - type: object\n properties:\n googleChat:\n title: google_chat\n description: Google Chat configuration.\n $ref: '#/components/schemas/openstatus.notification.v1.GoogleChatData'\n title: google_chat\n required:\n - googleChat\n - type: object\n properties:\n grafanaOncall:\n title: grafana_oncall\n description: Grafana OnCall configuration.\n $ref: '#/components/schemas/openstatus.notification.v1.GrafanaOncallData'\n title: grafana_oncall\n required:\n - grafanaOncall\n - type: object\n properties:\n msTeams:\n title: ms_teams\n description: Microsoft Teams configuration.\n $ref: '#/components/schemas/openstatus.notification.v1.MsTeamsData'\n title: ms_teams\n required:\n - msTeams\n - type: object\n properties:\n ntfy:\n title: ntfy\n description: Ntfy configuration.\n $ref: '#/components/schemas/openstatus.notification.v1.NtfyData'\n title: ntfy\n required:\n - ntfy\n - type: object\n properties:\n opsgenie:\n title: opsgenie\n description: Opsgenie configuration.\n $ref: '#/components/schemas/openstatus.notification.v1.OpsgenieData'\n title: opsgenie\n required:\n - opsgenie\n - type: object\n properties:\n pagerduty:\n title: pagerduty\n description: PagerDuty configuration.\n $ref: '#/components/schemas/openstatus.notification.v1.PagerDutyData'\n title: pagerduty\n required:\n - pagerduty\n - type: object\n properties:\n slack:\n title: slack\n description: Slack configuration.\n $ref: '#/components/schemas/openstatus.notification.v1.SlackData'\n title: slack\n required:\n - slack\n - type: object\n properties:\n sms:\n title: sms\n description: SMS configuration.\n $ref: '#/components/schemas/openstatus.notification.v1.SmsData'\n title: sms\n required:\n - sms\n - type: object\n properties:\n telegram:\n title: telegram\n description: Telegram configuration.\n $ref: '#/components/schemas/openstatus.notification.v1.TelegramData'\n title: telegram\n required:\n - telegram\n - type: object\n properties:\n webhook:\n title: webhook\n description: Webhook configuration.\n $ref: '#/components/schemas/openstatus.notification.v1.WebhookData'\n title: webhook\n required:\n - webhook\n - type: object\n properties:\n whatsapp:\n title: whatsapp\n description: WhatsApp configuration.\n $ref: '#/components/schemas/openstatus.notification.v1.WhatsappData'\n title: whatsapp\n required:\n - whatsapp\n title: NotificationData\n additionalProperties: false\n description: NotificationData is a union of provider-specific configuration.\n openstatus.notification.v1.NotificationProvider:\n type: string\n title: NotificationProvider\n enum:\n - NOTIFICATION_PROVIDER_UNSPECIFIED\n - NOTIFICATION_PROVIDER_DISCORD\n - NOTIFICATION_PROVIDER_EMAIL\n - NOTIFICATION_PROVIDER_GOOGLE_CHAT\n - NOTIFICATION_PROVIDER_GRAFANA_ONCALL\n - NOTIFICATION_PROVIDER_NTFY\n - NOTIFICATION_PROVIDER_PAGERDUTY\n - NOTIFICATION_PROVIDER_OPSGENIE\n - NOTIFICATION_PROVIDER_SLACK\n - NOTIFICATION_PROVIDER_SMS\n - NOTIFICATION_PROVIDER_TELEGRAM\n - NOTIFICATION_PROVIDER_WEBHOOK\n - NOTIFICATION_PROVIDER_WHATSAPP\n - NOTIFICATION_PROVIDER_MS_TEAMS\n description: NotificationProvider represents the supported notification channel types.\n openstatus.notification.v1.NotificationSummary:\n type: object\n properties:\n id:\n type: string\n title: id\n description: Unique identifier for the notification.\n name:\n type: string\n title: name\n description: Display name for the notification channel.\n provider:\n title: provider\n description: Provider type.\n $ref: '#/components/schemas/openstatus.notification.v1.NotificationProvider'\n monitorCount:\n type: integer\n title: monitor_count\n format: int32\n description: Number of monitors associated with this notification.\n createdAt:\n type: string\n title: created_at\n description: Timestamp when the notification was created (RFC 3339).\n updatedAt:\n type: string\n title: updated_at\n description: Timestamp when the notification was last updated (RFC 3339).\n title: NotificationSummary\n additionalProperties: false\n description: NotificationSummary represents a notification channel summary for list responses.\n openstatus.notification.v1.NtfyData:\n type: object\n properties:\n topic:\n type: string\n examples:\n - openstatus-alerts\n title: topic\n minLength: 1\n description: Ntfy topic to publish to.\n serverUrl:\n type: string\n title: server_url\n description: Ntfy server URL (defaults to https://ntfy.sh).\n token:\n type:\n - string\n - \"null\"\n title: token\n description: Optional authentication token.\n title: NtfyData\n additionalProperties: false\n description: NtfyData contains configuration for Ntfy notifications.\n openstatus.notification.v1.OpsgenieData:\n type: object\n properties:\n apiKey:\n type: string\n title: api_key\n minLength: 1\n description: Opsgenie API key.\n region:\n title: region\n description: Opsgenie region.\n $ref: '#/components/schemas/openstatus.notification.v1.OpsgenieRegion'\n title: OpsgenieData\n additionalProperties: false\n description: OpsgenieData contains configuration for Opsgenie notifications.\n openstatus.notification.v1.OpsgenieRegion:\n type: string\n title: OpsgenieRegion\n enum:\n - OPSGENIE_REGION_UNSPECIFIED\n - OPSGENIE_REGION_US\n - OPSGENIE_REGION_EU\n description: OpsgenieRegion represents the Opsgenie API region.\n openstatus.notification.v1.PagerDutyData:\n type: object\n properties:\n integrationKey:\n type: string\n examples:\n - a1b2c3d4e5f6g7h8i9j0\n title: integration_key\n minLength: 1\n description: PagerDuty integration key.\n title: PagerDutyData\n additionalProperties: false\n description: PagerDutyData contains configuration for PagerDuty notifications.\n openstatus.notification.v1.SendTestNotificationRequest:\n type: object\n properties:\n provider:\n not:\n enum:\n - NOTIFICATION_PROVIDER_UNSPECIFIED\n title: provider\n description: Provider type.\n $ref: '#/components/schemas/openstatus.notification.v1.NotificationProvider'\n data:\n title: data\n description: Provider-specific configuration.\n $ref: '#/components/schemas/openstatus.notification.v1.NotificationData'\n title: SendTestNotificationRequest\n required:\n - data\n additionalProperties: false\n description: SendTestNotificationRequest is the request to send a test notification.\n openstatus.notification.v1.SendTestNotificationResponse:\n type: object\n properties:\n success:\n type: boolean\n title: success\n description: Whether the test was successful.\n errorMessage:\n type:\n - string\n - \"null\"\n title: error_message\n description: Optional error message if the test failed.\n title: SendTestNotificationResponse\n additionalProperties: false\n description: SendTestNotificationResponse is the response after sending a test notification.\n openstatus.notification.v1.SlackData:\n type: object\n properties:\n webhookUrl:\n type: string\n examples:\n - https://hooks.slack.com/services/T00/B00/xxx\n title: webhook_url\n format: uri\n description: Slack webhook URL.\n title: SlackData\n additionalProperties: false\n description: SlackData contains configuration for Slack notifications.\n openstatus.notification.v1.SmsData:\n type: object\n properties:\n phoneNumber:\n type: string\n examples:\n - \"+14155551234\"\n title: phone_number\n minLength: 1\n description: Phone number to send SMS to.\n title: SmsData\n additionalProperties: false\n description: SmsData contains configuration for SMS notifications.\n openstatus.notification.v1.TelegramData:\n type: object\n properties:\n chatId:\n type: string\n examples:\n - \"-1001234567890\"\n title: chat_id\n minLength: 1\n description: Telegram chat ID.\n title: TelegramData\n additionalProperties: false\n description: TelegramData contains configuration for Telegram notifications.\n openstatus.notification.v1.UpdateNotificationRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: Notification ID to update (required).\n name:\n type:\n - string\n - \"null\"\n title: name\n description: Updated display name.\n data:\n oneOf:\n - $ref: '#/components/schemas/openstatus.notification.v1.NotificationData'\n - type: \"null\"\n title: data\n description: Updated provider-specific configuration.\n monitorIds:\n type: array\n items:\n type: string\n title: monitor_ids\n description: Updated monitor IDs to associate.\n updateMonitorIds:\n type:\n - boolean\n - \"null\"\n title: update_monitor_ids\n description: |-\n Set to true to update monitor associations.\n When true, monitor_ids replaces the existing list (empty clears all).\n When false or unset, monitor_ids is ignored and existing associations are preserved.\n title: UpdateNotificationRequest\n additionalProperties: false\n description: UpdateNotificationRequest is the request to update a notification channel.\n openstatus.notification.v1.UpdateNotificationResponse:\n type: object\n properties:\n notification:\n title: notification\n description: The updated notification channel.\n $ref: '#/components/schemas/openstatus.notification.v1.Notification'\n title: UpdateNotificationResponse\n additionalProperties: false\n description: UpdateNotificationResponse is the response after updating a notification channel.\n openstatus.notification.v1.WebhookData:\n type: object\n properties:\n endpoint:\n type: string\n examples:\n - https://api.example.com/webhooks/openstatus\n title: endpoint\n format: uri\n description: Webhook endpoint URL.\n headers:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.notification.v1.WebhookHeader'\n title: headers\n description: Optional custom headers.\n title: WebhookData\n additionalProperties: false\n description: WebhookData contains configuration for custom webhook notifications.\n openstatus.notification.v1.WebhookHeader:\n type: object\n properties:\n key:\n type: string\n title: key\n minLength: 1\n description: Header name.\n value:\n type: string\n title: value\n description: Header value.\n title: WebhookHeader\n additionalProperties: false\n description: WebhookHeader represents a custom header for webhook requests.\n openstatus.notification.v1.WhatsappData:\n type: object\n properties:\n phoneNumber:\n type: string\n title: phone_number\n minLength: 1\n description: Phone number to send WhatsApp messages to.\n title: WhatsappData\n additionalProperties: false\n description: WhatsappData contains configuration for WhatsApp notifications.\n openstatus.private_location.v1.CreatePrivateLocationRequest:\n type: object\n properties:\n name:\n type: string\n examples:\n - eu-west-agent\n title: name\n maxLength: 256\n minLength: 1\n description: Display name for the private location (required, 1-256 characters).\n monitorIds:\n type: array\n items:\n type: string\n title: monitor_ids\n description: IDs of monitors this private location should run (optional).\n metadata:\n type: object\n title: metadata\n maxProperties: 20\n additionalProperties:\n type: string\n title: value\n maxLength: 256\n description: User-defined key/value labels (optional, up to 20 entries).\n title: CreatePrivateLocationRequest\n additionalProperties: false\n description: CreatePrivateLocationRequest is the request to create a new private location.\n openstatus.private_location.v1.CreatePrivateLocationRequest.MetadataEntry:\n type: object\n properties:\n key:\n type: string\n title: key\n value:\n type: string\n title: value\n title: MetadataEntry\n additionalProperties: false\n openstatus.private_location.v1.CreatePrivateLocationResponse:\n type: object\n properties:\n privateLocation:\n title: private_location\n description: The created private location, including its generated agent token.\n $ref: '#/components/schemas/openstatus.private_location.v1.PrivateLocation'\n title: CreatePrivateLocationResponse\n additionalProperties: false\n description: CreatePrivateLocationResponse is the response after creating a private location.\n openstatus.private_location.v1.DeletePrivateLocationRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: ID of the private location to delete (required).\n title: DeletePrivateLocationRequest\n additionalProperties: false\n description: DeletePrivateLocationRequest is the request to delete a private location.\n openstatus.private_location.v1.DeletePrivateLocationResponse:\n type: object\n properties:\n success:\n type: boolean\n title: success\n description: Whether the deletion was successful.\n title: DeletePrivateLocationResponse\n additionalProperties: false\n description: DeletePrivateLocationResponse is the response after deleting a private location.\n openstatus.private_location.v1.GetPrivateLocationRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: ID of the private location to retrieve (required).\n title: GetPrivateLocationRequest\n additionalProperties: false\n description: GetPrivateLocationRequest is the request to get a private location by ID.\n openstatus.private_location.v1.GetPrivateLocationResponse:\n type: object\n properties:\n privateLocation:\n title: private_location\n description: The requested private location.\n $ref: '#/components/schemas/openstatus.private_location.v1.PrivateLocation'\n title: GetPrivateLocationResponse\n additionalProperties: false\n description: GetPrivateLocationResponse is the response containing the private location.\n openstatus.private_location.v1.ListPrivateLocationsRequest:\n type: object\n properties:\n limit:\n type:\n - integer\n - \"null\"\n title: limit\n maximum: 100\n minimum: 1\n format: int32\n description: Maximum number of private locations to return (1-100, defaults to 50).\n offset:\n type:\n - integer\n - \"null\"\n title: offset\n minimum: 0\n format: int32\n description: Number of private locations to skip for pagination (defaults to 0).\n title: ListPrivateLocationsRequest\n additionalProperties: false\n description: ListPrivateLocationsRequest is the request to list private locations.\n openstatus.private_location.v1.ListPrivateLocationsResponse:\n type: object\n properties:\n privateLocations:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.private_location.v1.PrivateLocationSummary'\n title: private_locations\n description: List of private locations.\n totalSize:\n type: integer\n title: total_size\n format: int32\n description: Total number of private locations in the workspace.\n title: ListPrivateLocationsResponse\n additionalProperties: false\n description: ListPrivateLocationsResponse is the response containing private location summaries.\n openstatus.private_location.v1.PrivateLocation:\n type: object\n properties:\n id:\n type: string\n title: id\n description: Unique identifier for the private location.\n name:\n type: string\n title: name\n description: Display name for the private location.\n token:\n type: string\n title: token\n description: |-\n Agent credential. Generated by the server on creation and used by the\n agent to authenticate; treat it as a secret.\n monitorIds:\n type: array\n items:\n type: string\n title: monitor_ids\n description: IDs of monitors this private location runs.\n lastSeenAt:\n type: string\n title: last_seen_at\n description: Last time the agent reported a result (RFC 3339), empty if it never has.\n createdAt:\n type: string\n title: created_at\n description: Timestamp when the private location was created (RFC 3339 format).\n updatedAt:\n type: string\n title: updated_at\n description: Timestamp when the private location was last updated (RFC 3339 format).\n metadata:\n type: object\n title: metadata\n additionalProperties:\n type: string\n title: value\n description: User-defined key/value labels attached to this private location.\n status:\n title: status\n description: Computed health of the agent. Read-only.\n $ref: '#/components/schemas/openstatus.private_location.v1.PrivateLocationStatus'\n title: PrivateLocation\n additionalProperties: false\n description: PrivateLocation represents a self-hosted checker agent with full details.\n openstatus.private_location.v1.PrivateLocation.MetadataEntry:\n type: object\n properties:\n key:\n type: string\n title: key\n value:\n type: string\n title: value\n title: MetadataEntry\n additionalProperties: false\n openstatus.private_location.v1.PrivateLocationStatus:\n type: string\n title: PrivateLocationStatus\n enum:\n - PRIVATE_LOCATION_STATUS_UNSPECIFIED\n - PRIVATE_LOCATION_STATUS_ACTIVE\n - PRIVATE_LOCATION_STATUS_ERROR\n description: |-\n PrivateLocationStatus is the computed health of a private location, derived\n from the agent heartbeat. Read-only — it cannot be set through the API.\n openstatus.private_location.v1.PrivateLocationSummary:\n type: object\n properties:\n id:\n type: string\n title: id\n description: Unique identifier for the private location.\n name:\n type: string\n title: name\n description: Display name for the private location.\n monitorCount:\n type: integer\n title: monitor_count\n format: int32\n description: Number of monitors this private location runs.\n lastSeenAt:\n type: string\n title: last_seen_at\n description: Last time the agent reported a result (RFC 3339), empty if it never has.\n createdAt:\n type: string\n title: created_at\n description: Timestamp when the private location was created (RFC 3339 format).\n updatedAt:\n type: string\n title: updated_at\n description: Timestamp when the private location was last updated (RFC 3339 format).\n status:\n title: status\n description: Computed health of the agent. Read-only.\n $ref: '#/components/schemas/openstatus.private_location.v1.PrivateLocationStatus'\n metadata:\n type: object\n title: metadata\n additionalProperties:\n type: string\n title: value\n description: User-defined key/value labels attached to this private location.\n title: PrivateLocationSummary\n additionalProperties: false\n description: |-\n PrivateLocationSummary represents metadata for a private location (used in\n list responses). The agent token is intentionally omitted.\n openstatus.private_location.v1.PrivateLocationSummary.MetadataEntry:\n type: object\n properties:\n key:\n type: string\n title: key\n value:\n type: string\n title: value\n title: MetadataEntry\n additionalProperties: false\n openstatus.private_location.v1.UpdatePrivateLocationRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: ID of the private location to update (required).\n name:\n type:\n - string\n - \"null\"\n title: name\n maxLength: 256\n minLength: 1\n description: New display name for the private location (optional).\n monitorIds:\n type: array\n items:\n type: string\n title: monitor_ids\n description: New list of monitor IDs. Only applied when update_monitor_ids is true.\n updateMonitorIds:\n type:\n - boolean\n - \"null\"\n title: update_monitor_ids\n description: |-\n When true, monitor_ids replaces the current associations (an empty list\n clears all). When false or unset, monitor_ids is ignored and existing\n associations are preserved.\n metadata:\n type: object\n title: metadata\n maxProperties: 20\n additionalProperties:\n type: string\n title: value\n maxLength: 256\n description: New key/value labels. Only applied when update_metadata is true.\n updateMetadata:\n type:\n - boolean\n - \"null\"\n title: update_metadata\n description: |-\n When true, metadata replaces the current labels (an empty map clears all).\n When false or unset, metadata is ignored and existing labels are preserved.\n title: UpdatePrivateLocationRequest\n additionalProperties: false\n description: UpdatePrivateLocationRequest is the request to update a private location.\n openstatus.private_location.v1.UpdatePrivateLocationRequest.MetadataEntry:\n type: object\n properties:\n key:\n type: string\n title: key\n value:\n type: string\n title: value\n title: MetadataEntry\n additionalProperties: false\n openstatus.private_location.v1.UpdatePrivateLocationResponse:\n type: object\n properties:\n privateLocation:\n title: private_location\n description: The updated private location.\n $ref: '#/components/schemas/openstatus.private_location.v1.PrivateLocation'\n title: UpdatePrivateLocationResponse\n additionalProperties: false\n description: UpdatePrivateLocationResponse is the response after updating a private location.\n openstatus.status_page.v1.AddMonitorComponentRequest:\n type: object\n properties:\n pageId:\n type: string\n title: page_id\n minLength: 1\n description: ID of the status page to add the component to (required).\n monitorId:\n type: string\n title: monitor_id\n minLength: 1\n description: ID of the monitor to associate with this component (required).\n name:\n type:\n - string\n - \"null\"\n title: name\n maxLength: 256\n description: Display name for the component (optional, defaults to monitor name).\n description:\n type:\n - string\n - \"null\"\n title: description\n maxLength: 1024\n description: Description of the component (optional).\n order:\n type:\n - integer\n - \"null\"\n title: order\n format: int32\n description: Display order of the component (optional).\n groupId:\n type:\n - string\n - \"null\"\n title: group_id\n description: ID of the group to add this component to (optional).\n title: AddMonitorComponentRequest\n additionalProperties: false\n description: AddMonitorComponentRequest is the request to add a monitor-based component to a status page.\n openstatus.status_page.v1.AddMonitorComponentResponse:\n type: object\n properties:\n component:\n title: component\n description: The created component.\n $ref: '#/components/schemas/openstatus.status_page.v1.PageComponent'\n title: AddMonitorComponentResponse\n additionalProperties: false\n description: AddMonitorComponentResponse is the response after adding a monitor component.\n openstatus.status_page.v1.AddStaticComponentRequest:\n type: object\n properties:\n pageId:\n type: string\n title: page_id\n minLength: 1\n description: ID of the status page to add the component to (required).\n name:\n type: string\n title: name\n maxLength: 256\n minLength: 1\n description: Display name for the component (required).\n description:\n type:\n - string\n - \"null\"\n title: description\n maxLength: 1024\n description: Description of the component (optional).\n order:\n type:\n - integer\n - \"null\"\n title: order\n format: int32\n description: Display order of the component (optional).\n groupId:\n type:\n - string\n - \"null\"\n title: group_id\n description: ID of the group to add this component to (optional).\n title: AddStaticComponentRequest\n additionalProperties: false\n description: AddStaticComponentRequest is the request to add a static component to a status page.\n openstatus.status_page.v1.AddStaticComponentResponse:\n type: object\n properties:\n component:\n title: component\n description: The created component.\n $ref: '#/components/schemas/openstatus.status_page.v1.PageComponent'\n title: AddStaticComponentResponse\n additionalProperties: false\n description: AddStaticComponentResponse is the response after adding a static component.\n openstatus.status_page.v1.ComponentDayBucket:\n type: object\n properties:\n day:\n type: string\n title: day\n description: Day in RFC 3339 format (UTC midnight).\n count:\n type:\n - integer\n - string\n title: count\n format: int64\n description: Total checks that day.\n ok:\n type:\n - integer\n - string\n title: ok\n format: int64\n description: Successful checks.\n degraded:\n type:\n - integer\n - string\n title: degraded\n format: int64\n description: Degraded checks.\n error:\n type:\n - integer\n - string\n title: error\n format: int64\n description: Failed checks.\n status:\n title: status\n description: Convenience resolved status for the day.\n $ref: '#/components/schemas/openstatus.status_page.v1.ComponentDayStatus'\n impact:\n oneOf:\n - $ref: '#/components/schemas/openstatus.status_report.v1.PageComponentImpact'\n - type: \"null\"\n title: impact\n description: Worst status-report impact overlapping the day (absent when none).\n title: ComponentDayBucket\n additionalProperties: false\n description: ComponentDayBucket is one day of status data for a component.\n openstatus.status_page.v1.ComponentDayStatus:\n type: string\n title: ComponentDayStatus\n enum:\n - COMPONENT_DAY_STATUS_UNSPECIFIED\n - COMPONENT_DAY_STATUS_OPERATIONAL\n - COMPONENT_DAY_STATUS_DEGRADED\n - COMPONENT_DAY_STATUS_DOWN\n - COMPONENT_DAY_STATUS_MAINTENANCE\n - COMPONENT_DAY_STATUS_EMPTY\n description: ComponentDayStatus is the resolved status of a component on a given day.\n openstatus.status_page.v1.ComponentEvent:\n type: object\n properties:\n id:\n type: string\n title: id\n description: Identifier of the underlying event.\n name:\n type: string\n title: name\n description: Human-readable name (incident \"Downtime\", maintenance / report title).\n type:\n title: type\n description: Kind of event.\n $ref: '#/components/schemas/openstatus.status_page.v1.ComponentEventType'\n status:\n title: status\n description: Projected status this event contributes.\n $ref: '#/components/schemas/openstatus.status_page.v1.ComponentEventStatus'\n from:\n type: string\n title: from\n description: Start time (RFC 3339).\n to:\n type:\n - string\n - \"null\"\n title: to\n description: End time (RFC 3339); absent while the event is ongoing.\n impact:\n oneOf:\n - $ref: '#/components/schemas/openstatus.status_report.v1.PageComponentImpact'\n - type: \"null\"\n title: impact\n description: Worst impact over the event (reports only; absent otherwise).\n title: ComponentEvent\n additionalProperties: false\n description: ComponentEvent is a single incident / maintenance / report affecting a component.\n openstatus.status_page.v1.ComponentEventStatus:\n type: string\n title: ComponentEventStatus\n enum:\n - COMPONENT_EVENT_STATUS_UNSPECIFIED\n - COMPONENT_EVENT_STATUS_OPERATIONAL\n - COMPONENT_EVENT_STATUS_DEGRADED\n - COMPONENT_EVENT_STATUS_DOWN\n - COMPONENT_EVENT_STATUS_MAINTENANCE\n description: ComponentEventStatus is the projected status an event contributes.\n openstatus.status_page.v1.ComponentEventType:\n type: string\n title: ComponentEventType\n enum:\n - COMPONENT_EVENT_TYPE_UNSPECIFIED\n - COMPONENT_EVENT_TYPE_MAINTENANCE\n - COMPONENT_EVENT_TYPE_INCIDENT\n - COMPONENT_EVENT_TYPE_REPORT\n description: ComponentEventType is the kind of timeline event affecting a component.\n openstatus.status_page.v1.ComponentStatus:\n type: object\n properties:\n componentId:\n type: string\n title: component_id\n description: ID of the component.\n status:\n title: status\n description: Current status of the component.\n $ref: '#/components/schemas/openstatus.status_page.v1.OverallStatus'\n title: ComponentStatus\n additionalProperties: false\n description: ComponentStatus represents the status of a single component.\n openstatus.status_page.v1.CreateComponentGroupRequest:\n type: object\n properties:\n pageId:\n type: string\n title: page_id\n minLength: 1\n description: ID of the status page to create the group in (required).\n name:\n type: string\n title: name\n maxLength: 256\n minLength: 1\n description: Display name for the group (required).\n defaultOpen:\n type:\n - boolean\n - \"null\"\n title: default_open\n description: Whether the group should be expanded by default on the status page (optional, defaults to false).\n title: CreateComponentGroupRequest\n additionalProperties: false\n description: CreateComponentGroupRequest is the request to create a new component group.\n openstatus.status_page.v1.CreateComponentGroupResponse:\n type: object\n properties:\n group:\n title: group\n description: The created component group.\n $ref: '#/components/schemas/openstatus.status_page.v1.PageComponentGroup'\n title: CreateComponentGroupResponse\n additionalProperties: false\n description: CreateComponentGroupResponse is the response after creating a component group.\n openstatus.status_page.v1.CreatePageSubscriptionRequest:\n type: object\n allOf:\n - properties:\n pageId:\n type: string\n title: page_id\n minLength: 1\n description: ID of the status page (required).\n name:\n type:\n - string\n - \"null\"\n title: name\n maxLength: 255\n description: Optional human-readable label.\n componentIds:\n type: array\n items:\n type: string\n title: component_ids\n description: Component scope. Empty = entire page.\n - oneOf:\n - type: object\n properties:\n emailChannel:\n title: email_channel\n $ref: '#/components/schemas/openstatus.status_page.v1.EmailChannel'\n title: email_channel\n required:\n - emailChannel\n - type: object\n properties:\n webhookChannel:\n title: webhook_channel\n $ref: '#/components/schemas/openstatus.status_page.v1.WebhookChannel'\n title: webhook_channel\n required:\n - webhookChannel\n title: CreatePageSubscriptionRequest\n additionalProperties: false\n description: CreatePageSubscriptionRequest is the request to add a vendor-managed subscriber to a status page.\n openstatus.status_page.v1.CreatePageSubscriptionResponse:\n type: object\n properties:\n subscriber:\n title: subscriber\n description: The created subscriber.\n $ref: '#/components/schemas/openstatus.status_page.v1.PageSubscriber'\n title: CreatePageSubscriptionResponse\n additionalProperties: false\n description: CreatePageSubscriptionResponse is the response after creating a vendor-managed subscription.\n openstatus.status_page.v1.CreateStatusPageRequest:\n type: object\n properties:\n title:\n type: string\n examples:\n - Acme Corp Status\n title: title\n maxLength: 256\n minLength: 1\n description: Title of the status page (required).\n description:\n type:\n - string\n - \"null\"\n title: description\n maxLength: 1024\n description: Description of the status page (optional).\n slug:\n type: string\n examples:\n - my-status-page\n title: slug\n maxLength: 256\n minLength: 1\n pattern: ^[a-z0-9]+(?:-[a-z0-9]+)*$\n description: URL-friendly slug for the status page (required). Must be lowercase alphanumeric with hyphens.\n homepageUrl:\n type:\n - string\n - \"null\"\n examples:\n - https://www.example.com\n title: homepage_url\n description: URL to the homepage (optional).\n contactUrl:\n type:\n - string\n - \"null\"\n title: contact_url\n description: URL to the contact page (optional).\n defaultLocale:\n oneOf:\n - $ref: '#/components/schemas/openstatus.status_page.v1.Locale'\n - type: \"null\"\n title: default_locale\n description: Default locale for the status page (optional, defaults to EN).\n locales:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.status_page.v1.Locale'\n title: locales\n description: Enabled locales for the status page (optional).\n icon:\n type:\n - string\n - \"null\"\n title: icon\n maxLength: 1024\n description: Icon URL for the status page (optional).\n customDomain:\n type:\n - string\n - \"null\"\n title: custom_domain\n maxLength: 256\n description: Custom domain for the status page (optional).\n theme:\n oneOf:\n - $ref: '#/components/schemas/openstatus.status_page.v1.PageTheme'\n - type: \"null\"\n title: theme\n description: Visual theme for the status page (optional, defaults to SYSTEM).\n accessType:\n oneOf:\n - $ref: '#/components/schemas/openstatus.status_page.v1.PageAccessType'\n - type: \"null\"\n title: access_type\n description: Access type for the status page (optional, defaults to PUBLIC).\n password:\n type:\n - string\n - \"null\"\n title: password\n maxLength: 256\n minLength: 1\n description: Password for the status page (required when access_type is PASSWORD_PROTECTED).\n authEmailDomains:\n type: array\n items:\n type: string\n title: auth_email_domains\n description: Email domains allowed to access the page (used when access_type is AUTHENTICATED).\n allowIndex:\n type:\n - boolean\n - \"null\"\n title: allow_index\n description: Whether search engines are allowed to index this status page (optional, defaults to true).\n allowedIpRanges:\n type:\n - string\n - \"null\"\n title: allowed_ip_ranges\n description: Comma-separated IPv4 CIDR ranges (required when access_type is IP_RESTRICTED).\n customTheme:\n oneOf:\n - $ref: '#/components/schemas/openstatus.status_page.v1.CustomTheme'\n - type: \"null\"\n title: custom_theme\n description: |-\n Per-mode CSS variable overrides merged over the theme (optional).\n Only supported variable names are accepted. Requires the custom-theme plan feature.\n title: CreateStatusPageRequest\n additionalProperties: false\n description: CreateStatusPageRequest is the request to create a new status page.\n openstatus.status_page.v1.CreateStatusPageResponse:\n type: object\n properties:\n statusPage:\n title: status_page\n description: The created status page.\n $ref: '#/components/schemas/openstatus.status_page.v1.StatusPage'\n title: CreateStatusPageResponse\n additionalProperties: false\n description: CreateStatusPageResponse is the response after creating a status page.\n openstatus.status_page.v1.CustomTheme:\n type: object\n properties:\n light:\n type: object\n title: light\n additionalProperties:\n type: string\n title: value\n description: 'CSS variable overrides applied in light mode, keyed by variable name (e.g. \"--primary\": \"hsl(24 94% 50%)\").'\n dark:\n type: object\n title: dark\n additionalProperties:\n type: string\n title: value\n description: CSS variable overrides applied in dark mode, keyed by variable name.\n title: CustomTheme\n additionalProperties: false\n description: CustomTheme holds per-mode CSS variable overrides merged over the page theme.\n openstatus.status_page.v1.CustomTheme.DarkEntry:\n type: object\n properties:\n key:\n type: string\n title: key\n value:\n type: string\n title: value\n title: DarkEntry\n additionalProperties: false\n openstatus.status_page.v1.CustomTheme.LightEntry:\n type: object\n properties:\n key:\n type: string\n title: key\n value:\n type: string\n title: value\n title: LightEntry\n additionalProperties: false\n openstatus.status_page.v1.DeleteComponentGroupRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: ID of the component group to delete (required).\n title: DeleteComponentGroupRequest\n additionalProperties: false\n description: DeleteComponentGroupRequest is the request to delete a component group.\n openstatus.status_page.v1.DeleteComponentGroupResponse:\n type: object\n properties:\n success:\n type: boolean\n title: success\n description: Whether the deletion was successful.\n title: DeleteComponentGroupResponse\n additionalProperties: false\n description: DeleteComponentGroupResponse is the response after deleting a component group.\n openstatus.status_page.v1.DeleteStatusPageRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: ID of the status page to delete (required).\n title: DeleteStatusPageRequest\n additionalProperties: false\n description: DeleteStatusPageRequest is the request to delete a status page.\n openstatus.status_page.v1.DeleteStatusPageResponse:\n type: object\n properties:\n success:\n type: boolean\n title: success\n description: Whether the deletion was successful.\n title: DeleteStatusPageResponse\n additionalProperties: false\n description: DeleteStatusPageResponse is the response after deleting a status page.\n openstatus.status_page.v1.EmailChannel:\n type: object\n properties:\n email:\n type: string\n title: email\n format: email\n description: Email address of the subscriber (required).\n title: EmailChannel\n additionalProperties: false\n description: EmailChannel carries the email-channel fields for CreatePageSubscription.\n openstatus.status_page.v1.GetOverallStatusRequest:\n type: object\n oneOf:\n - type: object\n properties:\n id:\n type: string\n title: id\n description: ID of the status page.\n title: id\n required:\n - id\n - type: object\n properties:\n slug:\n type: string\n title: slug\n description: Slug of the status page.\n title: slug\n required:\n - slug\n title: GetOverallStatusRequest\n additionalProperties: false\n description: GetOverallStatusRequest is the request to get the overall status of a status page.\n openstatus.status_page.v1.GetOverallStatusResponse:\n type: object\n properties:\n overallStatus:\n title: overall_status\n description: Aggregated status across all components.\n $ref: '#/components/schemas/openstatus.status_page.v1.OverallStatus'\n componentStatuses:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.status_page.v1.ComponentStatus'\n title: component_statuses\n description: Status of individual components.\n title: GetOverallStatusResponse\n additionalProperties: false\n description: GetOverallStatusResponse is the response containing the overall status and individual component statuses.\n openstatus.status_page.v1.GetPageComponentDailySummaryRequest:\n type: object\n allOf:\n - properties:\n componentIds:\n type: array\n items:\n type: string\n minLength: 1\n title: component_ids\n description: Restrict the result to these component ids (optional, defaults to all components).\n days:\n type:\n - integer\n - \"null\"\n title: days\n maximum: 45\n minimum: 1\n format: int32\n description: Number of days to return (1-45, defaults to 45 if unspecified).\n - oneOf:\n - type: object\n properties:\n id:\n type: string\n title: id\n description: ID of the status page.\n title: id\n required:\n - id\n - type: object\n properties:\n slug:\n type: string\n title: slug\n description: Slug of the status page.\n title: slug\n required:\n - slug\n title: GetPageComponentDailySummaryRequest\n additionalProperties: false\n description: GetPageComponentDailySummaryRequest is the request for per-component daily summaries.\n openstatus.status_page.v1.GetPageComponentDailySummaryResponse:\n type: object\n properties:\n components:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.status_page.v1.PageComponentDailySummary'\n title: components\n description: Per-component daily summaries, in page order.\n title: GetPageComponentDailySummaryResponse\n additionalProperties: false\n description: GetPageComponentDailySummaryResponse is the response containing per-component summaries.\n openstatus.status_page.v1.GetPageComponentRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: ID of the component to retrieve (required).\n title: GetPageComponentRequest\n additionalProperties: false\n description: GetPageComponentRequest is the request to fetch a single component by ID.\n openstatus.status_page.v1.GetPageComponentResponse:\n type: object\n properties:\n component:\n title: component\n description: The requested component.\n $ref: '#/components/schemas/openstatus.status_page.v1.PageComponent'\n title: GetPageComponentResponse\n additionalProperties: false\n description: GetPageComponentResponse is the response containing the component.\n openstatus.status_page.v1.GetStatusPageContentRequest:\n type: object\n oneOf:\n - type: object\n properties:\n id:\n type: string\n title: id\n description: ID of the status page.\n title: id\n required:\n - id\n - type: object\n properties:\n slug:\n type: string\n title: slug\n description: Slug of the status page.\n title: slug\n required:\n - slug\n title: GetStatusPageContentRequest\n additionalProperties: false\n description: GetStatusPageContentRequest is the request to get the full content of a status page.\n openstatus.status_page.v1.GetStatusPageContentResponse:\n type: object\n properties:\n statusPage:\n title: status_page\n description: The status page details.\n $ref: '#/components/schemas/openstatus.status_page.v1.StatusPage'\n components:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.status_page.v1.PageComponent'\n title: components\n description: Components on the status page.\n groups:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.status_page.v1.PageComponentGroup'\n title: groups\n description: Component groups on the status page.\n statusReports:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.status_report.v1.StatusReport'\n title: status_reports\n description: Active and recent status reports.\n maintenances:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.maintenance.v1.MaintenanceSummary'\n title: maintenances\n description: Scheduled maintenances.\n title: GetStatusPageContentResponse\n additionalProperties: false\n description: GetStatusPageContentResponse is the response containing the full status page content.\n openstatus.status_page.v1.GetStatusPageOverviewRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: ID of the status page (required, workspace-scoped).\n title: GetStatusPageOverviewRequest\n additionalProperties: false\n description: GetStatusPageOverviewRequest requests the full overview of a status page by id.\n openstatus.status_page.v1.GetStatusPageOverviewResponse:\n type: object\n properties:\n statusPage:\n title: status_page\n description: The status page details.\n $ref: '#/components/schemas/openstatus.status_page.v1.StatusPage'\n configuration:\n title: configuration\n description: Rich rendering configuration of the page.\n $ref: '#/components/schemas/openstatus.status_page.v1.PageConfiguration'\n components:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.status_page.v1.PageComponent'\n title: components\n description: Components on the status page.\n groups:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.status_page.v1.PageComponentGroup'\n title: groups\n description: Component groups on the status page.\n statusReports:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.status_report.v1.StatusReport'\n title: status_reports\n description: Active and recent status reports.\n maintenances:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.maintenance.v1.MaintenanceSummary'\n title: maintenances\n description: Scheduled maintenances.\n overallStatus:\n title: overall_status\n description: Aggregated status across all components.\n $ref: '#/components/schemas/openstatus.status_page.v1.OverallStatus'\n componentStatuses:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.status_page.v1.ComponentStatus'\n title: component_statuses\n description: Status of individual components.\n title: GetStatusPageOverviewResponse\n additionalProperties: false\n description: GetStatusPageOverviewResponse bundles all data for a single status page.\n openstatus.status_page.v1.GetStatusPageRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: ID of the status page to retrieve (required).\n title: GetStatusPageRequest\n additionalProperties: false\n description: GetStatusPageRequest is the request to get a status page by ID.\n openstatus.status_page.v1.GetStatusPageResponse:\n type: object\n properties:\n statusPage:\n title: status_page\n description: The requested status page.\n $ref: '#/components/schemas/openstatus.status_page.v1.StatusPage'\n title: GetStatusPageResponse\n additionalProperties: false\n description: GetStatusPageResponse is the response containing the status page.\n openstatus.status_page.v1.ListStatusPagesRequest:\n type: object\n properties:\n limit:\n type:\n - integer\n - \"null\"\n title: limit\n maximum: 100\n minimum: 1\n format: int32\n description: Maximum number of pages to return (1-100, defaults to 50).\n offset:\n type:\n - integer\n - \"null\"\n title: offset\n minimum: 0\n format: int32\n description: Number of pages to skip for pagination (defaults to 0).\n title: ListStatusPagesRequest\n additionalProperties: false\n description: ListStatusPagesRequest is the request to list status pages.\n openstatus.status_page.v1.ListStatusPagesResponse:\n type: object\n properties:\n statusPages:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.status_page.v1.StatusPageSummary'\n title: status_pages\n description: List of status pages (metadata only).\n totalSize:\n type: integer\n title: total_size\n format: int32\n description: Total number of status pages.\n title: ListStatusPagesResponse\n additionalProperties: false\n description: ListStatusPagesResponse is the response containing status page summaries.\n openstatus.status_page.v1.ListSubscribersRequest:\n type: object\n properties:\n pageId:\n type: string\n title: page_id\n minLength: 1\n description: ID of the status page to list subscribers for (required).\n limit:\n type:\n - integer\n - \"null\"\n title: limit\n maximum: 100\n minimum: 1\n format: int32\n description: Maximum number of subscribers to return (1-100, defaults to 50).\n offset:\n type:\n - integer\n - \"null\"\n title: offset\n minimum: 0\n format: int32\n description: Number of subscribers to skip for pagination (defaults to 0).\n includeUnsubscribed:\n type:\n - boolean\n - \"null\"\n title: include_unsubscribed\n description: Whether to include unsubscribed users (defaults to false).\n title: ListSubscribersRequest\n additionalProperties: false\n description: ListSubscribersRequest is the request to list subscribers of a status page.\n openstatus.status_page.v1.ListSubscribersResponse:\n type: object\n properties:\n subscribers:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.status_page.v1.PageSubscriber'\n title: subscribers\n description: List of subscribers.\n totalSize:\n type: integer\n title: total_size\n format: int32\n description: Total number of subscribers matching the filter.\n title: ListSubscribersResponse\n additionalProperties: false\n description: ListSubscribersResponse is the response containing status page subscribers.\n openstatus.status_page.v1.Locale:\n type: string\n title: Locale\n enum:\n - LOCALE_UNSPECIFIED\n - LOCALE_EN\n - LOCALE_FR\n - LOCALE_DE\n - LOCALE_TR\n - LOCALE_HI\n - LOCALE_KO\n - LOCALE_JA\n description: Locale defines the supported languages for a status page.\n openstatus.status_page.v1.OverallStatus:\n type: string\n title: OverallStatus\n enum:\n - OVERALL_STATUS_UNSPECIFIED\n - OVERALL_STATUS_OPERATIONAL\n - OVERALL_STATUS_DEGRADED\n - OVERALL_STATUS_PARTIAL_OUTAGE\n - OVERALL_STATUS_MAJOR_OUTAGE\n - OVERALL_STATUS_MAINTENANCE\n - OVERALL_STATUS_UNKNOWN\n description: OverallStatus represents the aggregated status of all components on a page.\n openstatus.status_page.v1.PageAccessType:\n type: string\n title: PageAccessType\n enum:\n - PAGE_ACCESS_TYPE_UNSPECIFIED\n - PAGE_ACCESS_TYPE_PUBLIC\n - PAGE_ACCESS_TYPE_PASSWORD_PROTECTED\n - PAGE_ACCESS_TYPE_AUTHENTICATED\n - PAGE_ACCESS_TYPE_IP_RESTRICTED\n description: PageAccessType defines who can access the status page.\n openstatus.status_page.v1.PageBarType:\n type: string\n title: PageBarType\n enum:\n - PAGE_BAR_TYPE_UNSPECIFIED\n - PAGE_BAR_TYPE_ABSOLUTE\n - PAGE_BAR_TYPE_MANUAL\n description: PageBarType mirrors page.configuration.type (how the status bar is computed).\n openstatus.status_page.v1.PageComponent:\n type: object\n properties:\n id:\n type: string\n title: id\n description: Unique identifier for the component.\n pageId:\n type: string\n title: page_id\n description: ID of the status page this component belongs to.\n name:\n type: string\n title: name\n description: Display name of the component.\n description:\n type: string\n title: description\n description: Description of the component (optional).\n type:\n title: type\n description: Type of the component (monitor or static).\n $ref: '#/components/schemas/openstatus.status_page.v1.PageComponentType'\n monitorId:\n type: string\n title: monitor_id\n description: ID of the monitor if type is MONITOR (optional).\n order:\n type: integer\n title: order\n format: int32\n description: Display order of the component.\n groupId:\n type: string\n title: group_id\n description: ID of the group this component belongs to (optional).\n groupOrder:\n type: integer\n title: group_order\n format: int32\n description: Order within the group if grouped.\n createdAt:\n type: string\n title: created_at\n description: Timestamp when the component was created (RFC 3339 format).\n updatedAt:\n type: string\n title: updated_at\n description: Timestamp when the component was last updated (RFC 3339 format).\n title: PageComponent\n additionalProperties: false\n description: PageComponent represents a component displayed on a status page.\n openstatus.status_page.v1.PageComponentDailySummary:\n type: object\n properties:\n componentId:\n type: string\n title: component_id\n description: ID of the component.\n type:\n title: type\n description: Component type (monitor or static).\n $ref: '#/components/schemas/openstatus.status_page.v1.PageComponentType'\n monitorId:\n type:\n - string\n - \"null\"\n title: monitor_id\n description: Monitor id backing the component (absent for static components).\n name:\n type: string\n title: name\n description: Display name of the component.\n buckets:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.status_page.v1.ComponentDayBucket'\n title: buckets\n description: Per-day buckets, oldest first.\n events:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.status_page.v1.ComponentEvent'\n title: events\n description: Events affecting the component within the window.\n title: PageComponentDailySummary\n additionalProperties: false\n description: PageComponentDailySummary is the per-day buckets + event timeline for one component.\n openstatus.status_page.v1.PageComponentGroup:\n type: object\n properties:\n id:\n type: string\n title: id\n description: Unique identifier for the group.\n pageId:\n type: string\n title: page_id\n description: ID of the status page this group belongs to.\n name:\n type: string\n title: name\n description: Display name of the group.\n createdAt:\n type: string\n title: created_at\n description: Timestamp when the group was created (RFC 3339 format).\n updatedAt:\n type: string\n title: updated_at\n description: Timestamp when the group was last updated (RFC 3339 format).\n defaultOpen:\n type: boolean\n title: default_open\n description: Whether the group should be expanded by default on the status page.\n title: PageComponentGroup\n additionalProperties: false\n description: PageComponentGroup represents a group of components on a status page.\n openstatus.status_page.v1.PageComponentType:\n type: string\n title: PageComponentType\n enum:\n - PAGE_COMPONENT_TYPE_UNSPECIFIED\n - PAGE_COMPONENT_TYPE_MONITOR\n - PAGE_COMPONENT_TYPE_STATIC\n description: PageComponentType defines the type of a component on a status page.\n openstatus.status_page.v1.PageConfiguration:\n type: object\n properties:\n metricType:\n title: metric_type\n description: Which metric the status bars represent (configuration.value).\n $ref: '#/components/schemas/openstatus.status_page.v1.PageMetricType'\n barType:\n title: bar_type\n description: How the status bar is computed (configuration.type).\n $ref: '#/components/schemas/openstatus.status_page.v1.PageBarType'\n showUptime:\n type: boolean\n title: show_uptime\n description: Whether to show the uptime percentage (configuration.uptime).\n themeKey:\n type: string\n title: theme_key\n description: |-\n Theme key from the theme store (configuration.theme), e.g. \"default\".\n Free-form string rather than an enum because the theme catalog is dynamic.\n days:\n type: integer\n title: days\n format: int32\n description: 'Number of uptime-bar days rendered on the page (configuration.days): 30 or 45.'\n title: PageConfiguration\n additionalProperties: false\n description: PageConfiguration is the rich rendering config stored in page.configuration.\n openstatus.status_page.v1.PageMetricType:\n type: string\n title: PageMetricType\n enum:\n - PAGE_METRIC_TYPE_UNSPECIFIED\n - PAGE_METRIC_TYPE_DURATION\n - PAGE_METRIC_TYPE_REQUESTS\n - PAGE_METRIC_TYPE_MANUAL\n description: PageMetricType mirrors page.configuration.value (which metric the status bars represent).\n openstatus.status_page.v1.PageSubscriber:\n type: object\n properties:\n id:\n type: string\n title: id\n description: Unique identifier for the subscriber.\n pageId:\n type: string\n title: page_id\n description: ID of the status page the user is subscribed to.\n email:\n type: string\n title: email\n description: Email address of the subscriber (empty for webhook channels).\n acceptedAt:\n type: string\n title: accepted_at\n description: Timestamp when the subscription was accepted/confirmed (RFC 3339 format, optional).\n unsubscribedAt:\n type: string\n title: unsubscribed_at\n description: Timestamp when the user unsubscribed (RFC 3339 format, optional).\n createdAt:\n type: string\n title: created_at\n description: Timestamp when the subscription was created (RFC 3339 format).\n updatedAt:\n type: string\n title: updated_at\n description: Timestamp when the subscription was last updated (RFC 3339 format).\n source:\n title: source\n description: How the subscription was created. Vendor-added rows skip verification.\n $ref: '#/components/schemas/openstatus.status_page.v1.SubscriberSource'\n name:\n type:\n - string\n - \"null\"\n title: name\n description: 'Optional human-readable label (e.g. \"Supabase #incidents\").'\n channelType:\n type: string\n title: channel_type\n description: 'Channel type: \"email\" or \"webhook\".'\n webhookUrl:\n type:\n - string\n - \"null\"\n title: webhook_url\n description: Webhook URL (populated only for channel_type = \"webhook\").\n channelConfig:\n type:\n - string\n - \"null\"\n title: channel_config\n description: JSON-encoded channel config (e.g. custom headers). Populated for webhook channels.\n componentIds:\n type: array\n items:\n type: string\n title: component_ids\n description: IDs of components this subscription is scoped to. Empty = entire page.\n title: PageSubscriber\n additionalProperties: false\n description: PageSubscriber represents a subscriber to a status page.\n openstatus.status_page.v1.PageTheme:\n type: string\n title: PageTheme\n enum:\n - PAGE_THEME_UNSPECIFIED\n - PAGE_THEME_SYSTEM\n - PAGE_THEME_LIGHT\n - PAGE_THEME_DARK\n description: PageTheme defines the visual theme of the status page.\n openstatus.status_page.v1.RemoveComponentRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: ID of the component to remove (required).\n title: RemoveComponentRequest\n additionalProperties: false\n description: RemoveComponentRequest is the request to remove a component from a status page.\n openstatus.status_page.v1.RemoveComponentResponse:\n type: object\n properties:\n success:\n type: boolean\n title: success\n description: Whether the removal was successful.\n title: RemoveComponentResponse\n additionalProperties: false\n description: RemoveComponentResponse is the response after removing a component.\n openstatus.status_page.v1.StatusPage:\n type: object\n properties:\n id:\n type: string\n title: id\n description: Unique identifier for the status page.\n title:\n type: string\n title: title\n description: Title of the status page.\n description:\n type: string\n title: description\n description: Description of the status page.\n slug:\n type: string\n examples:\n - acme-corp\n title: slug\n description: URL-friendly slug for the status page.\n customDomain:\n type: string\n examples:\n - status.example.com\n title: custom_domain\n description: Custom domain for the status page (optional).\n published:\n type: boolean\n title: published\n description: Whether the status page is published and visible.\n accessType:\n title: access_type\n description: Access type for the status page.\n $ref: '#/components/schemas/openstatus.status_page.v1.PageAccessType'\n theme:\n title: theme\n description: Visual theme for the status page.\n $ref: '#/components/schemas/openstatus.status_page.v1.PageTheme'\n homepageUrl:\n type: string\n title: homepage_url\n description: URL to the homepage (optional).\n contactUrl:\n type: string\n title: contact_url\n description: URL to the contact page (optional).\n icon:\n type: string\n title: icon\n description: Icon URL for the status page (optional).\n createdAt:\n type: string\n examples:\n - \"2024-01-15T09:00:00Z\"\n title: created_at\n description: Timestamp when the page was created (RFC 3339 format).\n updatedAt:\n type: string\n examples:\n - \"2024-06-20T14:30:00Z\"\n title: updated_at\n description: Timestamp when the page was last updated (RFC 3339 format).\n defaultLocale:\n title: default_locale\n description: Default locale for the status page.\n $ref: '#/components/schemas/openstatus.status_page.v1.Locale'\n locales:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.status_page.v1.Locale'\n title: locales\n description: Enabled locales for the status page.\n password:\n type: string\n title: password\n description: Password for the status page (only set when access_type is PASSWORD_PROTECTED).\n authEmailDomains:\n type: array\n items:\n type: string\n title: auth_email_domains\n description: Email domains allowed to access the page (only set when access_type is AUTHENTICATED).\n allowIndex:\n type: boolean\n title: allow_index\n description: Whether search engines are allowed to index this status page.\n allowedIpRanges:\n type: string\n title: allowed_ip_ranges\n description: Comma-separated IPv4 CIDR ranges (only set when access_type is IP_RESTRICTED).\n customTheme:\n oneOf:\n - $ref: '#/components/schemas/openstatus.status_page.v1.CustomTheme'\n - type: \"null\"\n title: custom_theme\n description: Per-mode CSS variable overrides merged over the theme (only set when configured).\n title: StatusPage\n additionalProperties: false\n description: StatusPage represents a full status page with all details.\n openstatus.status_page.v1.StatusPageSummary:\n type: object\n properties:\n id:\n type: string\n title: id\n description: Unique identifier for the status page.\n title:\n type: string\n title: title\n description: Title of the status page.\n slug:\n type: string\n title: slug\n description: URL-friendly slug for the status page.\n published:\n type: boolean\n title: published\n description: Whether the status page is published and visible.\n createdAt:\n type: string\n title: created_at\n description: Timestamp when the page was created (RFC 3339 format).\n updatedAt:\n type: string\n title: updated_at\n description: Timestamp when the page was last updated (RFC 3339 format).\n customDomain:\n type: string\n examples:\n - status.example.com\n title: custom_domain\n description: Custom domain for the status page (optional).\n title: StatusPageSummary\n additionalProperties: false\n description: StatusPageSummary represents metadata for a status page (used in list responses).\n openstatus.status_page.v1.SubscribeToPageRequest:\n type: object\n properties:\n pageId:\n type: string\n title: page_id\n minLength: 1\n description: ID of the status page to subscribe to (required).\n email:\n type: string\n examples:\n - user@example.com\n title: email\n format: email\n description: Email address to subscribe (required).\n title: SubscribeToPageRequest\n additionalProperties: false\n description: SubscribeToPageRequest is the request to subscribe an email to a status page.\n openstatus.status_page.v1.SubscribeToPageResponse:\n type: object\n properties:\n subscriber:\n title: subscriber\n description: The created subscriber.\n $ref: '#/components/schemas/openstatus.status_page.v1.PageSubscriber'\n title: SubscribeToPageResponse\n additionalProperties: false\n description: SubscribeToPageResponse is the response after subscribing to a status page.\n openstatus.status_page.v1.SubscriberSource:\n type: string\n title: SubscriberSource\n enum:\n - SUBSCRIBER_SOURCE_UNSPECIFIED\n - SUBSCRIBER_SOURCE_SELF_SIGNUP\n - SUBSCRIBER_SOURCE_VENDOR\n - SUBSCRIBER_SOURCE_IMPORT\n description: SubscriberSource indicates how the subscription was created.\n openstatus.status_page.v1.UnsubscribeFromPageRequest:\n type: object\n allOf:\n - properties:\n pageId:\n type: string\n title: page_id\n minLength: 1\n description: ID of the status page to unsubscribe from (required).\n - oneOf:\n - type: object\n properties:\n email:\n type: string\n title: email\n description: Email address to unsubscribe.\n title: email\n required:\n - email\n - type: object\n properties:\n id:\n type: string\n title: id\n description: Subscriber ID.\n title: id\n required:\n - id\n title: UnsubscribeFromPageRequest\n additionalProperties: false\n description: UnsubscribeFromPageRequest is the request to unsubscribe from a status page.\n openstatus.status_page.v1.UnsubscribeFromPageResponse:\n type: object\n properties:\n success:\n type: boolean\n title: success\n description: Whether the unsubscription was successful.\n title: UnsubscribeFromPageResponse\n additionalProperties: false\n description: UnsubscribeFromPageResponse is the response after unsubscribing from a status page.\n openstatus.status_page.v1.UpdateComponentGroupRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: ID of the component group to update (required).\n name:\n type:\n - string\n - \"null\"\n title: name\n maxLength: 256\n minLength: 1\n description: New display name for the group (optional).\n defaultOpen:\n type:\n - boolean\n - \"null\"\n title: default_open\n description: Whether the group should be expanded by default on the status page (optional).\n title: UpdateComponentGroupRequest\n additionalProperties: false\n description: UpdateComponentGroupRequest is the request to update a component group.\n openstatus.status_page.v1.UpdateComponentGroupResponse:\n type: object\n properties:\n group:\n title: group\n description: The updated component group.\n $ref: '#/components/schemas/openstatus.status_page.v1.PageComponentGroup'\n title: UpdateComponentGroupResponse\n additionalProperties: false\n description: UpdateComponentGroupResponse is the response after updating a component group.\n openstatus.status_page.v1.UpdateComponentRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: ID of the component to update (required).\n name:\n type:\n - string\n - \"null\"\n title: name\n maxLength: 256\n description: New display name for the component (optional).\n description:\n type:\n - string\n - \"null\"\n title: description\n maxLength: 1024\n description: New description for the component (optional).\n order:\n type:\n - integer\n - \"null\"\n title: order\n format: int32\n description: New display order (optional).\n groupId:\n type:\n - string\n - \"null\"\n title: group_id\n description: New group ID (optional, set to empty string to remove from group).\n groupOrder:\n type:\n - integer\n - \"null\"\n title: group_order\n format: int32\n description: New order within the group (optional).\n title: UpdateComponentRequest\n additionalProperties: false\n description: UpdateComponentRequest is the request to update a component.\n openstatus.status_page.v1.UpdateComponentResponse:\n type: object\n properties:\n component:\n title: component\n description: The updated component.\n $ref: '#/components/schemas/openstatus.status_page.v1.PageComponent'\n title: UpdateComponentResponse\n additionalProperties: false\n description: UpdateComponentResponse is the response after updating a component.\n openstatus.status_page.v1.UpdateStatusPageRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: ID of the status page to update (required).\n title:\n type:\n - string\n - \"null\"\n title: title\n maxLength: 256\n minLength: 1\n description: New title for the status page (optional).\n description:\n type:\n - string\n - \"null\"\n title: description\n maxLength: 1024\n description: New description for the status page (optional).\n slug:\n type:\n - string\n - \"null\"\n title: slug\n maxLength: 256\n minLength: 1\n pattern: ^[a-z0-9]+(?:-[a-z0-9]+)*$\n description: New slug for the status page (optional).\n homepageUrl:\n type:\n - string\n - \"null\"\n title: homepage_url\n description: New homepage URL (optional).\n contactUrl:\n type:\n - string\n - \"null\"\n title: contact_url\n description: New contact URL (optional).\n defaultLocale:\n oneOf:\n - $ref: '#/components/schemas/openstatus.status_page.v1.Locale'\n - type: \"null\"\n title: default_locale\n description: New default locale for the status page (optional).\n locales:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.status_page.v1.Locale'\n title: locales\n description: New enabled locales for the status page (optional).\n icon:\n type:\n - string\n - \"null\"\n title: icon\n maxLength: 1024\n description: New icon URL for the status page (optional).\n customDomain:\n type:\n - string\n - \"null\"\n title: custom_domain\n maxLength: 256\n description: New custom domain (optional).\n theme:\n oneOf:\n - $ref: '#/components/schemas/openstatus.status_page.v1.PageTheme'\n - type: \"null\"\n title: theme\n description: New visual theme (optional).\n accessType:\n oneOf:\n - $ref: '#/components/schemas/openstatus.status_page.v1.PageAccessType'\n - type: \"null\"\n title: access_type\n description: New access type (optional).\n password:\n type:\n - string\n - \"null\"\n title: password\n maxLength: 256\n minLength: 1\n description: New password (optional, required when access_type is PASSWORD_PROTECTED).\n authEmailDomains:\n type: array\n items:\n type: string\n title: auth_email_domains\n description: New email domains (optional, required when access_type is AUTHENTICATED).\n allowIndex:\n type:\n - boolean\n - \"null\"\n title: allow_index\n description: Whether search engines are allowed to index this status page (optional).\n allowedIpRanges:\n type:\n - string\n - \"null\"\n title: allowed_ip_ranges\n description: Comma-separated IPv4 CIDR ranges (required when access_type is IP_RESTRICTED).\n customTheme:\n oneOf:\n - $ref: '#/components/schemas/openstatus.status_page.v1.CustomTheme'\n - type: \"null\"\n title: custom_theme\n description: |-\n New per-mode CSS variable overrides (optional). Omit to keep the current\n value; send an empty message to clear. Requires the custom-theme plan feature.\n title: UpdateStatusPageRequest\n additionalProperties: false\n description: UpdateStatusPageRequest is the request to update a status page.\n openstatus.status_page.v1.UpdateStatusPageResponse:\n type: object\n properties:\n statusPage:\n title: status_page\n description: The updated status page.\n $ref: '#/components/schemas/openstatus.status_page.v1.StatusPage'\n title: UpdateStatusPageResponse\n additionalProperties: false\n description: UpdateStatusPageResponse is the response after updating a status page.\n openstatus.status_page.v1.WebhookChannel:\n type: object\n properties:\n webhookUrl:\n type: string\n title: webhook_url\n maxLength: 2048\n minLength: 1\n format: uri\n description: Webhook URL (required). Payload flavor (Slack / Discord / generic) is auto-detected from the URL prefix.\n headers:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.status_page.v1.WebhookChannelHeader'\n title: headers\n description: Optional custom HTTP headers attached to every dispatch.\n title: WebhookChannel\n additionalProperties: false\n description: WebhookChannel carries the webhook-channel fields for CreatePageSubscription.\n openstatus.status_page.v1.WebhookChannelHeader:\n type: object\n properties:\n key:\n type: string\n title: key\n minLength: 1\n value:\n type: string\n title: value\n title: WebhookChannelHeader\n additionalProperties: false\n description: WebhookChannelHeader is a single custom HTTP header.\n openstatus.status_report.v1.AddStatusReportUpdateRequest:\n type: object\n properties:\n statusReportId:\n type: string\n title: status_report_id\n minLength: 1\n description: ID of the status report to update (required).\n status:\n title: status\n description: New status for the report (required).\n $ref: '#/components/schemas/openstatus.status_report.v1.StatusReportStatus'\n message:\n type: string\n title: message\n minLength: 1\n description: Message describing what changed (required).\n date:\n type:\n - string\n - \"null\"\n title: date\n pattern: ^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d{1,9})?(Z|[+-]\\d{2}:\\d{2})$\n description: Optional date for the update (RFC 3339 format). Defaults to current time if not provided.\n notify:\n type:\n - boolean\n - \"null\"\n title: notify\n description: Whether to notify subscribers about this update (optional, defaults to false).\n componentImpacts:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.status_report.v1.ComponentImpact'\n title: component_impacts\n description: |-\n Per-component impacts this update sets (optional). Components named here\n are added to the report's affected set; omitted components keep their\n prior impact.\n title: AddStatusReportUpdateRequest\n additionalProperties: false\n description: AddStatusReportUpdateRequest is the request to add a new update to a status report.\n openstatus.status_report.v1.AddStatusReportUpdateResponse:\n type: object\n properties:\n statusReport:\n title: status_report\n description: The updated status report with the new update included.\n $ref: '#/components/schemas/openstatus.status_report.v1.StatusReport'\n title: AddStatusReportUpdateResponse\n additionalProperties: false\n description: AddStatusReportUpdateResponse is the response after adding an update to a status report.\n openstatus.status_report.v1.ComponentImpact:\n type: object\n properties:\n pageComponentId:\n type: string\n title: page_component_id\n description: ID of the affected page component.\n impact:\n title: impact\n description: Impact set for the component.\n $ref: '#/components/schemas/openstatus.status_report.v1.PageComponentImpact'\n title: ComponentImpact\n additionalProperties: false\n description: ComponentImpact pairs a page component with the impact an update set for it.\n openstatus.status_report.v1.CreateStatusReportRequest:\n type: object\n properties:\n title:\n type: string\n examples:\n - API Degradation Investigation\n title: title\n minLength: 1\n description: Title of the status report (required).\n status:\n title: status\n description: Initial status (required).\n $ref: '#/components/schemas/openstatus.status_report.v1.StatusReportStatus'\n message:\n type: string\n examples:\n - We are investigating reports of increased API latency.\n title: message\n minLength: 1\n description: Initial message describing the incident (required).\n date:\n type: string\n examples:\n - \"2024-03-15T10:30:00Z\"\n title: date\n pattern: ^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d{1,9})?(Z|[+-]\\d{2}:\\d{2})$\n description: Date when the event occurred (RFC 3339 format, required).\n pageId:\n type: string\n title: page_id\n minLength: 1\n description: Page ID to associate with this report (required).\n pageComponentIds:\n type: array\n items:\n type: string\n title: page_component_ids\n description: Page component IDs to associate with this report (optional).\n notify:\n type:\n - boolean\n - \"null\"\n title: notify\n description: Whether to notify subscribers about this status report (optional, defaults to false).\n componentImpacts:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.status_report.v1.ComponentImpact'\n title: component_impacts\n description: |-\n Per-component impacts set by the initial update (optional). When provided,\n the named components are added to the report's affected set. Omitting this\n field creates a legacy report without impact tracking.\n title: CreateStatusReportRequest\n additionalProperties: false\n description: CreateStatusReportRequest is the request to create a new status report.\n openstatus.status_report.v1.CreateStatusReportResponse:\n type: object\n properties:\n statusReport:\n title: status_report\n description: The created status report.\n $ref: '#/components/schemas/openstatus.status_report.v1.StatusReport'\n title: CreateStatusReportResponse\n additionalProperties: false\n description: CreateStatusReportResponse is the response after creating a status report.\n openstatus.status_report.v1.DeleteStatusReportRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: ID of the status report to delete (required).\n title: DeleteStatusReportRequest\n additionalProperties: false\n description: DeleteStatusReportRequest is the request to delete a status report.\n openstatus.status_report.v1.DeleteStatusReportResponse:\n type: object\n properties:\n success:\n type: boolean\n title: success\n description: Whether the deletion was successful.\n title: DeleteStatusReportResponse\n additionalProperties: false\n description: DeleteStatusReportResponse is the response after deleting a status report.\n openstatus.status_report.v1.GetStatusReportRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: ID of the status report to retrieve (required).\n title: GetStatusReportRequest\n additionalProperties: false\n description: GetStatusReportRequest is the request to get a status report by ID.\n openstatus.status_report.v1.GetStatusReportResponse:\n type: object\n properties:\n statusReport:\n title: status_report\n description: The requested status report.\n $ref: '#/components/schemas/openstatus.status_report.v1.StatusReport'\n title: GetStatusReportResponse\n additionalProperties: false\n description: GetStatusReportResponse is the response containing the status report with its full update timeline.\n openstatus.status_report.v1.ListStatusReportsRequest:\n type: object\n properties:\n limit:\n type:\n - integer\n - \"null\"\n title: limit\n maximum: 100\n minimum: 1\n format: int32\n description: Maximum number of reports to return (1-100, defaults to 50).\n offset:\n type:\n - integer\n - \"null\"\n title: offset\n minimum: 0\n format: int32\n description: Number of reports to skip for pagination (defaults to 0).\n statuses:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.status_report.v1.StatusReportStatus'\n title: statuses\n description: Filter by status (optional). If empty, returns all statuses.\n title: ListStatusReportsRequest\n additionalProperties: false\n description: ListStatusReportsRequest is the request to list status reports.\n openstatus.status_report.v1.ListStatusReportsResponse:\n type: object\n properties:\n statusReports:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.status_report.v1.StatusReportSummary'\n title: status_reports\n description: List of status reports (metadata only, use GetStatusReport for full details).\n totalSize:\n type: integer\n title: total_size\n format: int32\n description: Total number of reports matching the filter.\n title: ListStatusReportsResponse\n additionalProperties: false\n description: ListStatusReportsResponse is the response containing status report summaries.\n openstatus.status_report.v1.PageComponentImpact:\n type: string\n title: PageComponentImpact\n enum:\n - PAGE_COMPONENT_IMPACT_UNSPECIFIED\n - PAGE_COMPONENT_IMPACT_OPERATIONAL\n - PAGE_COMPONENT_IMPACT_DEGRADED_PERFORMANCE\n - PAGE_COMPONENT_IMPACT_PARTIAL_OUTAGE\n - PAGE_COMPONENT_IMPACT_MAJOR_OUTAGE\n description: |-\n PageComponentImpact is the per-component impact a status report update sets.\n UNSPECIFIED means the caller doesn't speak impact (legacy) — it is NOT operational.\n openstatus.status_report.v1.StatusReport:\n type: object\n properties:\n id:\n type: string\n title: id\n description: Unique identifier for the status report.\n status:\n title: status\n description: Current status of the report.\n $ref: '#/components/schemas/openstatus.status_report.v1.StatusReportStatus'\n title:\n type: string\n title: title\n description: Title of the status report.\n pageComponentIds:\n type: array\n items:\n type: string\n title: page_component_ids\n description: IDs of affected page components.\n updates:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.status_report.v1.StatusReportUpdate'\n title: updates\n description: Timeline of updates for this report (only included in GetStatusReport).\n createdAt:\n type: string\n title: created_at\n description: Timestamp when the report was created (RFC 3339 format).\n updatedAt:\n type: string\n title: updated_at\n description: Timestamp when the report was last updated (RFC 3339 format).\n title: StatusReport\n additionalProperties: false\n description: StatusReport represents an incident or maintenance report with full details.\n openstatus.status_report.v1.StatusReportStatus:\n type: string\n title: StatusReportStatus\n enum:\n - STATUS_REPORT_STATUS_UNSPECIFIED\n - STATUS_REPORT_STATUS_INVESTIGATING\n - STATUS_REPORT_STATUS_IDENTIFIED\n - STATUS_REPORT_STATUS_MONITORING\n - STATUS_REPORT_STATUS_RESOLVED\n description: StatusReportStatus represents the current state of a status report.\n openstatus.status_report.v1.StatusReportSummary:\n type: object\n properties:\n id:\n type: string\n title: id\n description: Unique identifier for the status report.\n status:\n title: status\n description: Current status of the report.\n $ref: '#/components/schemas/openstatus.status_report.v1.StatusReportStatus'\n title:\n type: string\n title: title\n description: Title of the status report.\n pageComponentIds:\n type: array\n items:\n type: string\n title: page_component_ids\n description: IDs of affected page components.\n createdAt:\n type: string\n title: created_at\n description: Timestamp when the report was created (RFC 3339 format).\n updatedAt:\n type: string\n title: updated_at\n description: Timestamp when the report was last updated (RFC 3339 format).\n title: StatusReportSummary\n additionalProperties: false\n description: StatusReportSummary represents metadata for a status report (used in list responses).\n openstatus.status_report.v1.StatusReportUpdate:\n type: object\n properties:\n id:\n type: string\n title: id\n description: Unique identifier for the update.\n status:\n title: status\n description: Status at the time of this update.\n $ref: '#/components/schemas/openstatus.status_report.v1.StatusReportStatus'\n date:\n type: string\n title: date\n description: Timestamp when this update occurred (RFC 3339 format).\n message:\n type: string\n title: message\n description: Message describing the update.\n createdAt:\n type: string\n title: created_at\n description: Timestamp when the update was created (RFC 3339 format).\n componentImpacts:\n type: array\n items:\n $ref: '#/components/schemas/openstatus.status_report.v1.ComponentImpact'\n title: component_impacts\n description: Per-component impacts this update set (empty for legacy reports).\n title: StatusReportUpdate\n additionalProperties: false\n description: StatusReportUpdate represents a single update entry in a status report timeline.\n openstatus.status_report.v1.UpdateStatusReportRequest:\n type: object\n properties:\n id:\n type: string\n title: id\n minLength: 1\n description: ID of the status report to update (required).\n title:\n type:\n - string\n - \"null\"\n title: title\n description: New title for the report (optional).\n pageComponentIds:\n type: array\n items:\n type: string\n title: page_component_ids\n description: New list of page component IDs (optional, replaces existing list).\n updatePageComponentIds:\n type:\n - boolean\n - \"null\"\n title: update_page_component_ids\n description: |-\n Set to true to update page component associations.\n When true, page_component_ids replaces the existing list (empty clears all).\n When false or unset, page_component_ids is ignored and existing associations are preserved.\n title: UpdateStatusReportRequest\n additionalProperties: false\n description: UpdateStatusReportRequest is the request to update a status report's metadata.\n openstatus.status_report.v1.UpdateStatusReportResponse:\n type: object\n properties:\n statusReport:\n title: status_report\n description: The updated status report.\n $ref: '#/components/schemas/openstatus.status_report.v1.StatusReport'\n title: UpdateStatusReportResponse\n additionalProperties: false\n description: UpdateStatusReportResponse is the response after updating a status report.\nsecurity:\n - ApiKeyAuth: []\ntags:\n - name: MonitorService\n description: |\n Create, update, delete, and query monitors. Supports HTTP, TCP, and DNS monitor types\n with configurable check intervals, regions, assertions, and alerting thresholds.\n - name: StatusPageService\n description: |\n Manage public status pages with components, component groups, and email subscribers.\n Includes endpoints for retrieving full page content and aggregated status.\n - name: NotificationService\n description: |\n Configure notification channels (Slack, Discord, PagerDuty, email, webhooks, etc.)\n and associate them with monitors. Supports 12 notification providers.\n - name: StatusReportService\n description: |\n Create and manage incident reports with status updates. Reports follow a lifecycle:\n investigating -> identified -> monitoring -> resolved.\n - name: MaintenanceService\n description: |\n Schedule maintenance windows for status page components. Subscribers can be\n notified automatically when maintenance is created.\n - name: HealthService\n description: Health check endpoint for load balancer probes. No authentication required.\n - name: PrivateLocationService\n description: |-\n PrivateLocationService provides CRUD operations for private locations —\n self-hosted checker agents that run monitors from your own network.\npaths:\n /rpc/openstatus.health.v1.HealthService/Check:\n get:\n tags:\n - HealthService\n summary: Check\n description: Check returns the current serving status of the service.\n operationId: HealthService_Check.get\n parameters:\n - name: message\n in: query\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.health.v1.CheckRequest'\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.health.v1.CheckResponse'\n post:\n tags:\n - HealthService\n summary: Check\n description: Check returns the current serving status of the service.\n operationId: HealthService_Check\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.health.v1.CheckRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.health.v1.CheckResponse'\n /rpc/openstatus.maintenance.v1.MaintenanceService/CreateMaintenance:\n post:\n tags:\n - MaintenanceService\n summary: CreateMaintenance\n description: CreateMaintenance creates a new maintenance window.\n operationId: MaintenanceService_CreateMaintenance\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.maintenance.v1.CreateMaintenanceRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.maintenance.v1.CreateMaintenanceResponse'\n /rpc/openstatus.maintenance.v1.MaintenanceService/DeleteMaintenance:\n post:\n tags:\n - MaintenanceService\n summary: DeleteMaintenance\n description: DeleteMaintenance removes a maintenance window.\n operationId: MaintenanceService_DeleteMaintenance\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.maintenance.v1.DeleteMaintenanceRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.maintenance.v1.DeleteMaintenanceResponse'\n /rpc/openstatus.maintenance.v1.MaintenanceService/GetMaintenance:\n get:\n tags:\n - MaintenanceService\n summary: GetMaintenance\n description: GetMaintenance retrieves a specific maintenance window by ID.\n operationId: MaintenanceService_GetMaintenance.get\n parameters:\n - name: message\n in: query\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.maintenance.v1.GetMaintenanceRequest'\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.maintenance.v1.GetMaintenanceResponse'\n post:\n tags:\n - MaintenanceService\n summary: GetMaintenance\n description: GetMaintenance retrieves a specific maintenance window by ID.\n operationId: MaintenanceService_GetMaintenance\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.maintenance.v1.GetMaintenanceRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.maintenance.v1.GetMaintenanceResponse'\n /rpc/openstatus.maintenance.v1.MaintenanceService/ListMaintenances:\n get:\n tags:\n - MaintenanceService\n summary: ListMaintenances\n description: ListMaintenances returns all maintenance windows for the workspace.\n operationId: MaintenanceService_ListMaintenances.get\n parameters:\n - name: message\n in: query\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.maintenance.v1.ListMaintenancesRequest'\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.maintenance.v1.ListMaintenancesResponse'\n post:\n tags:\n - MaintenanceService\n summary: ListMaintenances\n description: ListMaintenances returns all maintenance windows for the workspace.\n operationId: MaintenanceService_ListMaintenances\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.maintenance.v1.ListMaintenancesRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.maintenance.v1.ListMaintenancesResponse'\n /rpc/openstatus.maintenance.v1.MaintenanceService/UpdateMaintenance:\n post:\n tags:\n - MaintenanceService\n summary: UpdateMaintenance\n description: UpdateMaintenance updates a maintenance window.\n operationId: MaintenanceService_UpdateMaintenance\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.maintenance.v1.UpdateMaintenanceRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.maintenance.v1.UpdateMaintenanceResponse'\n /rpc/openstatus.monitor.v1.MonitorService/CreateDNSMonitor:\n post:\n tags:\n - MonitorService\n summary: CreateDNSMonitor\n description: CreateDNSMonitor creates a new DNS monitor.\n operationId: MonitorService_CreateDNSMonitor\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.CreateDNSMonitorRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.CreateDNSMonitorResponse'\n /rpc/openstatus.monitor.v1.MonitorService/CreateGRPCMonitor:\n post:\n tags:\n - MonitorService\n summary: CreateGRPCMonitor\n description: CreateGRPCMonitor creates a new gRPC health check monitor.\n operationId: MonitorService_CreateGRPCMonitor\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.CreateGRPCMonitorRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.CreateGRPCMonitorResponse'\n /rpc/openstatus.monitor.v1.MonitorService/CreateHTTPMonitor:\n post:\n tags:\n - MonitorService\n summary: CreateHTTPMonitor\n description: Creates a new HTTP monitor in the authenticated workspace. Configure the target URL, HTTP method, request headers and body, response assertions (status code, body content, headers), check periodicity, geographic regions, and optional OpenTelemetry export. The monitor starts checking immediately if set to active.\n operationId: MonitorService_CreateHTTPMonitor\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.CreateHTTPMonitorRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.CreateHTTPMonitorResponse'\n /rpc/openstatus.monitor.v1.MonitorService/CreateICMPMonitor:\n post:\n tags:\n - MonitorService\n summary: CreateICMPMonitor\n description: CreateICMPMonitor creates a new ICMP monitor.\n operationId: MonitorService_CreateICMPMonitor\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.CreateICMPMonitorRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.CreateICMPMonitorResponse'\n /rpc/openstatus.monitor.v1.MonitorService/CreateTCPMonitor:\n post:\n tags:\n - MonitorService\n summary: CreateTCPMonitor\n description: CreateTCPMonitor creates a new TCP monitor.\n operationId: MonitorService_CreateTCPMonitor\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.CreateTCPMonitorRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.CreateTCPMonitorResponse'\n /rpc/openstatus.monitor.v1.MonitorService/DeleteMonitor:\n post:\n tags:\n - MonitorService\n summary: DeleteMonitor\n description: DeleteMonitor removes a monitor.\n operationId: MonitorService_DeleteMonitor\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.DeleteMonitorRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.DeleteMonitorResponse'\n /rpc/openstatus.monitor.v1.MonitorService/GetMonitor:\n get:\n tags:\n - MonitorService\n summary: GetMonitor\n description: |-\n GetMonitor returns a single monitor by ID within the authenticated workspace.\n Returns the monitor configuration (HTTP, TCP, DNS, ICMP, or gRPC) using the MonitorConfig oneof type.\n operationId: MonitorService_GetMonitor.get\n parameters:\n - name: message\n in: query\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.GetMonitorRequest'\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.GetMonitorResponse'\n post:\n tags:\n - MonitorService\n summary: GetMonitor\n description: |-\n GetMonitor returns a single monitor by ID within the authenticated workspace.\n Returns the monitor configuration (HTTP, TCP, DNS, ICMP, or gRPC) using the MonitorConfig oneof type.\n operationId: MonitorService_GetMonitor\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.GetMonitorRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.GetMonitorResponse'\n /rpc/openstatus.monitor.v1.MonitorService/GetMonitorHTTPResponseLog:\n get:\n tags:\n - MonitorService\n summary: GetMonitorHTTPResponseLog\n description: GetMonitorHTTPResponseLog returns one response log for an HTTP monitor.\n operationId: MonitorService_GetMonitorHTTPResponseLog.get\n parameters:\n - name: message\n in: query\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.GetMonitorHTTPResponseLogRequest'\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.GetMonitorHTTPResponseLogResponse'\n post:\n tags:\n - MonitorService\n summary: GetMonitorHTTPResponseLog\n description: GetMonitorHTTPResponseLog returns one response log for an HTTP monitor.\n operationId: MonitorService_GetMonitorHTTPResponseLog\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.GetMonitorHTTPResponseLogRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.GetMonitorHTTPResponseLogResponse'\n /rpc/openstatus.monitor.v1.MonitorService/GetMonitorStatus:\n get:\n tags:\n - MonitorService\n summary: GetMonitorStatus\n description: GetMonitorStatus returns the current status of all regions for a monitor.\n operationId: MonitorService_GetMonitorStatus.get\n parameters:\n - name: message\n in: query\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.GetMonitorStatusRequest'\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.GetMonitorStatusResponse'\n post:\n tags:\n - MonitorService\n summary: GetMonitorStatus\n description: GetMonitorStatus returns the current status of all regions for a monitor.\n operationId: MonitorService_GetMonitorStatus\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.GetMonitorStatusRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.GetMonitorStatusResponse'\n /rpc/openstatus.monitor.v1.MonitorService/GetMonitorSummary:\n get:\n tags:\n - MonitorService\n summary: GetMonitorSummary\n description: Returns aggregated metrics for a monitor including latency percentiles (p50, p75, p90, p95, p99), request counts by status (successful, degraded, failed), and the timestamp of the last check. Metrics can be scoped to a time range (1 day, 7 days, or 14 days) and filtered by specific regions.\n operationId: MonitorService_GetMonitorSummary.get\n parameters:\n - name: message\n in: query\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.GetMonitorSummaryRequest'\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.GetMonitorSummaryResponse'\n post:\n tags:\n - MonitorService\n summary: GetMonitorSummary\n description: Returns aggregated metrics for a monitor including latency percentiles (p50, p75, p90, p95, p99), request counts by status (successful, degraded, failed), and the timestamp of the last check. Metrics can be scoped to a time range (1 day, 7 days, or 14 days) and filtered by specific regions.\n operationId: MonitorService_GetMonitorSummary\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.GetMonitorSummaryRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.GetMonitorSummaryResponse'\n /rpc/openstatus.monitor.v1.MonitorService/ListMonitorHTTPResponseLogs:\n get:\n tags:\n - MonitorService\n summary: ListMonitorHTTPResponseLogs\n description: ListMonitorHTTPResponseLogs returns paginated response logs for an HTTP monitor from the 14-day HTTP response-log window.\n operationId: MonitorService_ListMonitorHTTPResponseLogs.get\n parameters:\n - name: message\n in: query\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.ListMonitorHTTPResponseLogsRequest'\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.ListMonitorHTTPResponseLogsResponse'\n post:\n tags:\n - MonitorService\n summary: ListMonitorHTTPResponseLogs\n description: ListMonitorHTTPResponseLogs returns paginated response logs for an HTTP monitor from the 14-day HTTP response-log window.\n operationId: MonitorService_ListMonitorHTTPResponseLogs\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.ListMonitorHTTPResponseLogsRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.ListMonitorHTTPResponseLogsResponse'\n /rpc/openstatus.monitor.v1.MonitorService/ListMonitors:\n get:\n tags:\n - MonitorService\n summary: ListMonitors\n description: ListMonitors returns a paginated list of all monitors in the workspace.\n operationId: MonitorService_ListMonitors.get\n parameters:\n - name: message\n in: query\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.ListMonitorsRequest'\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.ListMonitorsResponse'\n post:\n tags:\n - MonitorService\n summary: ListMonitors\n description: ListMonitors returns a paginated list of all monitors in the workspace.\n operationId: MonitorService_ListMonitors\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.ListMonitorsRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.ListMonitorsResponse'\n /rpc/openstatus.monitor.v1.MonitorService/TriggerMonitor:\n post:\n tags:\n - MonitorService\n summary: TriggerMonitor\n description: Manually triggers an immediate check for the specified monitor across all configured regions. This operation is rate-limited under the synthetic-checks quota. A monitor run record is created and the check is dispatched to the checker service.\n operationId: MonitorService_TriggerMonitor\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.TriggerMonitorRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.TriggerMonitorResponse'\n /rpc/openstatus.monitor.v1.MonitorService/UpdateDNSMonitor:\n post:\n tags:\n - MonitorService\n summary: UpdateDNSMonitor\n description: UpdateDNSMonitor updates an existing DNS monitor.\n operationId: MonitorService_UpdateDNSMonitor\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.UpdateDNSMonitorRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.UpdateDNSMonitorResponse'\n /rpc/openstatus.monitor.v1.MonitorService/UpdateGRPCMonitor:\n post:\n tags:\n - MonitorService\n summary: UpdateGRPCMonitor\n description: UpdateGRPCMonitor updates an existing gRPC monitor.\n operationId: MonitorService_UpdateGRPCMonitor\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.UpdateGRPCMonitorRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.UpdateGRPCMonitorResponse'\n /rpc/openstatus.monitor.v1.MonitorService/UpdateHTTPMonitor:\n post:\n tags:\n - MonitorService\n summary: UpdateHTTPMonitor\n description: UpdateHTTPMonitor updates an existing HTTP monitor.\n operationId: MonitorService_UpdateHTTPMonitor\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.UpdateHTTPMonitorRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.UpdateHTTPMonitorResponse'\n /rpc/openstatus.monitor.v1.MonitorService/UpdateICMPMonitor:\n post:\n tags:\n - MonitorService\n summary: UpdateICMPMonitor\n description: UpdateICMPMonitor updates an existing ICMP monitor.\n operationId: MonitorService_UpdateICMPMonitor\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.UpdateICMPMonitorRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.UpdateICMPMonitorResponse'\n /rpc/openstatus.monitor.v1.MonitorService/UpdateTCPMonitor:\n post:\n tags:\n - MonitorService\n summary: UpdateTCPMonitor\n description: UpdateTCPMonitor updates an existing TCP monitor.\n operationId: MonitorService_UpdateTCPMonitor\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.UpdateTCPMonitorRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.monitor.v1.UpdateTCPMonitorResponse'\n /rpc/openstatus.notification.v1.NotificationService/CheckNotificationLimit:\n get:\n tags:\n - NotificationService\n summary: CheckNotificationLimit\n description: CheckNotificationLimit checks if the workspace has reached its notification limit.\n operationId: NotificationService_CheckNotificationLimit.get\n parameters:\n - name: message\n in: query\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.notification.v1.CheckNotificationLimitRequest'\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.notification.v1.CheckNotificationLimitResponse'\n post:\n tags:\n - NotificationService\n summary: CheckNotificationLimit\n description: CheckNotificationLimit checks if the workspace has reached its notification limit.\n operationId: NotificationService_CheckNotificationLimit\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.notification.v1.CheckNotificationLimitRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.notification.v1.CheckNotificationLimitResponse'\n /rpc/openstatus.notification.v1.NotificationService/CreateNotification:\n post:\n tags:\n - NotificationService\n summary: CreateNotification\n description: CreateNotification creates a new notification channel.\n operationId: NotificationService_CreateNotification\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.notification.v1.CreateNotificationRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.notification.v1.CreateNotificationResponse'\n /rpc/openstatus.notification.v1.NotificationService/DeleteNotification:\n post:\n tags:\n - NotificationService\n summary: DeleteNotification\n description: DeleteNotification removes a notification channel.\n operationId: NotificationService_DeleteNotification\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.notification.v1.DeleteNotificationRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.notification.v1.DeleteNotificationResponse'\n /rpc/openstatus.notification.v1.NotificationService/GetNotification:\n get:\n tags:\n - NotificationService\n summary: GetNotification\n description: GetNotification retrieves a notification channel by ID.\n operationId: NotificationService_GetNotification.get\n parameters:\n - name: message\n in: query\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.notification.v1.GetNotificationRequest'\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.notification.v1.GetNotificationResponse'\n post:\n tags:\n - NotificationService\n summary: GetNotification\n description: GetNotification retrieves a notification channel by ID.\n operationId: NotificationService_GetNotification\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.notification.v1.GetNotificationRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.notification.v1.GetNotificationResponse'\n /rpc/openstatus.notification.v1.NotificationService/ListNotifications:\n get:\n tags:\n - NotificationService\n summary: ListNotifications\n description: ListNotifications returns a list of notification channels.\n operationId: NotificationService_ListNotifications.get\n parameters:\n - name: message\n in: query\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.notification.v1.ListNotificationsRequest'\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.notification.v1.ListNotificationsResponse'\n post:\n tags:\n - NotificationService\n summary: ListNotifications\n description: ListNotifications returns a list of notification channels.\n operationId: NotificationService_ListNotifications\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.notification.v1.ListNotificationsRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.notification.v1.ListNotificationsResponse'\n /rpc/openstatus.notification.v1.NotificationService/SendTestNotification:\n post:\n tags:\n - NotificationService\n summary: SendTestNotification\n description: Sends a test notification to the specified provider to verify that the configuration is correct. This does not require an existing notification channel - just provide the provider type and its configuration data. Returns success status and an error message if the test failed.\n operationId: NotificationService_SendTestNotification\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.notification.v1.SendTestNotificationRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.notification.v1.SendTestNotificationResponse'\n /rpc/openstatus.notification.v1.NotificationService/UpdateNotification:\n post:\n tags:\n - NotificationService\n summary: UpdateNotification\n description: UpdateNotification updates an existing notification channel.\n operationId: NotificationService_UpdateNotification\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.notification.v1.UpdateNotificationRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.notification.v1.UpdateNotificationResponse'\n /rpc/openstatus.private_location.v1.PrivateLocationService/CreatePrivateLocation:\n post:\n tags:\n - PrivateLocationService\n summary: CreatePrivateLocation\n description: Creates a private location. The agent token is generated by the server and returned in the response - it cannot be supplied by the caller. Use the token to configure the agent so it can pull its monitors and report results.\n operationId: PrivateLocationService_CreatePrivateLocation\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.private_location.v1.CreatePrivateLocationRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.private_location.v1.CreatePrivateLocationResponse'\n /rpc/openstatus.private_location.v1.PrivateLocationService/DeletePrivateLocation:\n post:\n tags:\n - PrivateLocationService\n summary: DeletePrivateLocation\n description: DeletePrivateLocation removes a private location.\n operationId: PrivateLocationService_DeletePrivateLocation\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.private_location.v1.DeletePrivateLocationRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.private_location.v1.DeletePrivateLocationResponse'\n /rpc/openstatus.private_location.v1.PrivateLocationService/GetPrivateLocation:\n get:\n tags:\n - PrivateLocationService\n summary: GetPrivateLocation\n description: |-\n GetPrivateLocation retrieves a single private location by ID, including\n its agent token.\n operationId: PrivateLocationService_GetPrivateLocation.get\n parameters:\n - name: message\n in: query\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.private_location.v1.GetPrivateLocationRequest'\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.private_location.v1.GetPrivateLocationResponse'\n post:\n tags:\n - PrivateLocationService\n summary: GetPrivateLocation\n description: |-\n GetPrivateLocation retrieves a single private location by ID, including\n its agent token.\n operationId: PrivateLocationService_GetPrivateLocation\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.private_location.v1.GetPrivateLocationRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.private_location.v1.GetPrivateLocationResponse'\n /rpc/openstatus.private_location.v1.PrivateLocationService/ListPrivateLocations:\n get:\n tags:\n - PrivateLocationService\n summary: ListPrivateLocations\n description: |-\n ListPrivateLocations returns a paginated list of private location\n summaries. Agent tokens are not included - use GetPrivateLocation.\n operationId: PrivateLocationService_ListPrivateLocations.get\n parameters:\n - name: message\n in: query\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.private_location.v1.ListPrivateLocationsRequest'\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.private_location.v1.ListPrivateLocationsResponse'\n post:\n tags:\n - PrivateLocationService\n summary: ListPrivateLocations\n description: |-\n ListPrivateLocations returns a paginated list of private location\n summaries. Agent tokens are not included - use GetPrivateLocation.\n operationId: PrivateLocationService_ListPrivateLocations\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.private_location.v1.ListPrivateLocationsRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.private_location.v1.ListPrivateLocationsResponse'\n /rpc/openstatus.private_location.v1.PrivateLocationService/UpdatePrivateLocation:\n post:\n tags:\n - PrivateLocationService\n summary: UpdatePrivateLocation\n description: UpdatePrivateLocation updates a private location.\n operationId: PrivateLocationService_UpdatePrivateLocation\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.private_location.v1.UpdatePrivateLocationRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.private_location.v1.UpdatePrivateLocationResponse'\n /rpc/openstatus.status_page.v1.StatusPageService/AddMonitorComponent:\n post:\n tags:\n - StatusPageService\n summary: AddMonitorComponent\n description: AddMonitorComponent adds a monitor-based component to a status page.\n operationId: StatusPageService_AddMonitorComponent\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.AddMonitorComponentRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.AddMonitorComponentResponse'\n /rpc/openstatus.status_page.v1.StatusPageService/AddStaticComponent:\n post:\n tags:\n - StatusPageService\n summary: AddStaticComponent\n description: AddStaticComponent adds a static component to a status page.\n operationId: StatusPageService_AddStaticComponent\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.AddStaticComponentRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.AddStaticComponentResponse'\n /rpc/openstatus.status_page.v1.StatusPageService/CreateComponentGroup:\n post:\n tags:\n - StatusPageService\n summary: CreateComponentGroup\n description: CreateComponentGroup creates a new component group.\n operationId: StatusPageService_CreateComponentGroup\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.CreateComponentGroupRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.CreateComponentGroupResponse'\n /rpc/openstatus.status_page.v1.StatusPageService/CreatePageSubscription:\n post:\n tags:\n - StatusPageService\n summary: 'CreatePageSubscription: operator-added subscriber (email or webhook), no verification.'\n description: Operator-added subscriber (email or webhook) with no verification flow — the partner starts receiving notifications immediately. Supports Slack and Discord webhook URLs in addition to email. A management token is still generated so the subscriber can self-manage (update scope, unsubscribe) without operator involvement. Use this for vendor/partner integrations where consent is established out-of-band; use SubscribeToPage for subscriber-initiated signups that require double opt-in.\n operationId: StatusPageService_CreatePageSubscription\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.CreatePageSubscriptionRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.CreatePageSubscriptionResponse'\n /rpc/openstatus.status_page.v1.StatusPageService/CreateStatusPage:\n post:\n tags:\n - StatusPageService\n summary: CreateStatusPage\n description: CreateStatusPage creates a new status page.\n operationId: StatusPageService_CreateStatusPage\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.CreateStatusPageRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.CreateStatusPageResponse'\n /rpc/openstatus.status_page.v1.StatusPageService/DeleteComponentGroup:\n post:\n tags:\n - StatusPageService\n summary: DeleteComponentGroup\n description: DeleteComponentGroup removes a component group.\n operationId: StatusPageService_DeleteComponentGroup\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.DeleteComponentGroupRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.DeleteComponentGroupResponse'\n /rpc/openstatus.status_page.v1.StatusPageService/DeleteStatusPage:\n post:\n tags:\n - StatusPageService\n summary: DeleteStatusPage\n description: DeleteStatusPage removes a status page.\n operationId: StatusPageService_DeleteStatusPage\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.DeleteStatusPageRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.DeleteStatusPageResponse'\n /rpc/openstatus.status_page.v1.StatusPageService/GetOverallStatus:\n get:\n tags:\n - StatusPageService\n summary: GetOverallStatus\n description: 'Returns the overall status of a status page along with individual component statuses. The overall status is computed from active status reports and maintenances with the following priority: degraded (from active status reports) > maintenance (from active maintenance windows) > operational.'\n operationId: StatusPageService_GetOverallStatus.get\n parameters:\n - name: message\n in: query\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.GetOverallStatusRequest'\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.GetOverallStatusResponse'\n post:\n tags:\n - StatusPageService\n summary: GetOverallStatus\n description: 'Returns the overall status of a status page along with individual component statuses. The overall status is computed from active status reports and maintenances with the following priority: degraded (from active status reports) > maintenance (from active maintenance windows) > operational.'\n operationId: StatusPageService_GetOverallStatus\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.GetOverallStatusRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.GetOverallStatusResponse'\n /rpc/openstatus.status_page.v1.StatusPageService/GetPageComponent:\n get:\n tags:\n - StatusPageService\n summary: GetPageComponent\n description: Returns a single status-page component by its ID, scoped to the authenticated workspace. Use this to resolve a component id to its name (and other fields) instead of fetching the whole page via GetStatusPageContent and filtering .components.\n operationId: StatusPageService_GetPageComponent.get\n parameters:\n - name: message\n in: query\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.GetPageComponentRequest'\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.GetPageComponentResponse'\n post:\n tags:\n - StatusPageService\n summary: GetPageComponent\n description: Returns a single status-page component by its ID, scoped to the authenticated workspace. Use this to resolve a component id to its name (and other fields) instead of fetching the whole page via GetStatusPageContent and filtering .components.\n operationId: StatusPageService_GetPageComponent\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.GetPageComponentRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.GetPageComponentResponse'\n /rpc/openstatus.status_page.v1.StatusPageService/GetPageComponentDailySummary:\n get:\n tags:\n - StatusPageService\n summary: GetPageComponentDailySummary\n description: 'Returns per-component daily status buckets (ok/degraded/error/count plus a resolved status) merged with the incident, maintenance, and status-report timeline over the last N days (max 45). Suitable as a single source of truth for status-bar and uptime-calendar rendering. Supports two access paths: by id (authenticated, workspace-scoped) or by slug (public access, requires the page to be published with access_type=PUBLIC).'\n operationId: StatusPageService_GetPageComponentDailySummary.get\n parameters:\n - name: message\n in: query\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.GetPageComponentDailySummaryRequest'\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.GetPageComponentDailySummaryResponse'\n post:\n tags:\n - StatusPageService\n summary: GetPageComponentDailySummary\n description: 'Returns per-component daily status buckets (ok/degraded/error/count plus a resolved status) merged with the incident, maintenance, and status-report timeline over the last N days (max 45). Suitable as a single source of truth for status-bar and uptime-calendar rendering. Supports two access paths: by id (authenticated, workspace-scoped) or by slug (public access, requires the page to be published with access_type=PUBLIC).'\n operationId: StatusPageService_GetPageComponentDailySummary\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.GetPageComponentDailySummaryRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.GetPageComponentDailySummaryResponse'\n /rpc/openstatus.status_page.v1.StatusPageService/GetStatusPage:\n get:\n tags:\n - StatusPageService\n summary: GetStatusPage\n description: GetStatusPage retrieves a specific status page by ID.\n operationId: StatusPageService_GetStatusPage.get\n parameters:\n - name: message\n in: query\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.GetStatusPageRequest'\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.GetStatusPageResponse'\n post:\n tags:\n - StatusPageService\n summary: GetStatusPage\n description: GetStatusPage retrieves a specific status page by ID.\n operationId: StatusPageService_GetStatusPage\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.GetStatusPageRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.GetStatusPageResponse'\n /rpc/openstatus.status_page.v1.StatusPageService/GetStatusPageContent:\n get:\n tags:\n - StatusPageService\n summary: GetStatusPageContent\n description: 'Returns the full content of a status page including its components, component groups, active status reports, and scheduled maintenances. Supports two access paths: by ID (requires authentication, workspace-scoped) or by slug (public access, requires the page to be published with access_type=PUBLIC).'\n operationId: StatusPageService_GetStatusPageContent.get\n parameters:\n - name: message\n in: query\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.GetStatusPageContentRequest'\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.GetStatusPageContentResponse'\n post:\n tags:\n - StatusPageService\n summary: GetStatusPageContent\n description: 'Returns the full content of a status page including its components, component groups, active status reports, and scheduled maintenances. Supports two access paths: by ID (requires authentication, workspace-scoped) or by slug (public access, requires the page to be published with access_type=PUBLIC).'\n operationId: StatusPageService_GetStatusPageContent\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.GetStatusPageContentRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.GetStatusPageContentResponse'\n /rpc/openstatus.status_page.v1.StatusPageService/GetStatusPageOverview:\n get:\n tags:\n - StatusPageService\n summary: GetStatusPageOverview\n description: 'Returns everything about a single status page in one authenticated call: the page, its rich rendering configuration, components, component groups, active/recent status reports, maintenances, and the computed overall + per-component statuses. Workspace-scoped by id; there is no public slug access path. Does not include uptime time-series — use GetPageComponentDailySummary for that.'\n operationId: StatusPageService_GetStatusPageOverview.get\n parameters:\n - name: message\n in: query\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.GetStatusPageOverviewRequest'\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.GetStatusPageOverviewResponse'\n post:\n tags:\n - StatusPageService\n summary: GetStatusPageOverview\n description: 'Returns everything about a single status page in one authenticated call: the page, its rich rendering configuration, components, component groups, active/recent status reports, maintenances, and the computed overall + per-component statuses. Workspace-scoped by id; there is no public slug access path. Does not include uptime time-series — use GetPageComponentDailySummary for that.'\n operationId: StatusPageService_GetStatusPageOverview\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.GetStatusPageOverviewRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.GetStatusPageOverviewResponse'\n /rpc/openstatus.status_page.v1.StatusPageService/ListStatusPages:\n get:\n tags:\n - StatusPageService\n summary: ListStatusPages\n description: ListStatusPages returns all status pages for the workspace.\n operationId: StatusPageService_ListStatusPages.get\n parameters:\n - name: message\n in: query\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.ListStatusPagesRequest'\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.ListStatusPagesResponse'\n post:\n tags:\n - StatusPageService\n summary: ListStatusPages\n description: ListStatusPages returns all status pages for the workspace.\n operationId: StatusPageService_ListStatusPages\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.ListStatusPagesRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.ListStatusPagesResponse'\n /rpc/openstatus.status_page.v1.StatusPageService/ListSubscribers:\n get:\n tags:\n - StatusPageService\n summary: ListSubscribers\n description: ListSubscribers returns all subscribers for a status page.\n operationId: StatusPageService_ListSubscribers.get\n parameters:\n - name: message\n in: query\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.ListSubscribersRequest'\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.ListSubscribersResponse'\n post:\n tags:\n - StatusPageService\n summary: ListSubscribers\n description: ListSubscribers returns all subscribers for a status page.\n operationId: StatusPageService_ListSubscribers\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.ListSubscribersRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.ListSubscribersResponse'\n /rpc/openstatus.status_page.v1.StatusPageService/RemoveComponent:\n post:\n tags:\n - StatusPageService\n summary: RemoveComponent\n description: RemoveComponent removes a component from a status page.\n operationId: StatusPageService_RemoveComponent\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.RemoveComponentRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.RemoveComponentResponse'\n /rpc/openstatus.status_page.v1.StatusPageService/SubscribeToPage:\n post:\n tags:\n - StatusPageService\n summary: 'SubscribeToPage: end-user email self-signup with double opt-in verification.'\n description: End-user email self-signup with double opt-in verification. A verification email is sent and the subscription activates only after the recipient confirms. If the email was previously unsubscribed, the existing row is reactivated instead of a duplicate being created. Use this for subscriber-initiated signups on the public status page; use CreatePageSubscription for operator-initiated (vendor) subscriptions that should skip verification.\n operationId: StatusPageService_SubscribeToPage\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.SubscribeToPageRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.SubscribeToPageResponse'\n /rpc/openstatus.status_page.v1.StatusPageService/UnsubscribeFromPage:\n post:\n tags:\n - StatusPageService\n summary: UnsubscribeFromPage\n description: UnsubscribeFromPage removes a subscription from a status page.\n operationId: StatusPageService_UnsubscribeFromPage\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.UnsubscribeFromPageRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.UnsubscribeFromPageResponse'\n /rpc/openstatus.status_page.v1.StatusPageService/UpdateComponent:\n post:\n tags:\n - StatusPageService\n summary: UpdateComponent\n description: UpdateComponent updates an existing component.\n operationId: StatusPageService_UpdateComponent\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.UpdateComponentRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.UpdateComponentResponse'\n /rpc/openstatus.status_page.v1.StatusPageService/UpdateComponentGroup:\n post:\n tags:\n - StatusPageService\n summary: UpdateComponentGroup\n description: UpdateComponentGroup updates an existing component group.\n operationId: StatusPageService_UpdateComponentGroup\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.UpdateComponentGroupRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.UpdateComponentGroupResponse'\n /rpc/openstatus.status_page.v1.StatusPageService/UpdateStatusPage:\n post:\n tags:\n - StatusPageService\n summary: UpdateStatusPage\n description: UpdateStatusPage updates an existing status page.\n operationId: StatusPageService_UpdateStatusPage\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.UpdateStatusPageRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_page.v1.UpdateStatusPageResponse'\n /rpc/openstatus.status_report.v1.StatusReportService/AddStatusReportUpdate:\n post:\n tags:\n - StatusReportService\n summary: AddStatusReportUpdate\n description: 'Adds a new update entry to an existing status report and transitions the report to the specified status. Status reports follow a lifecycle: investigating -> identified -> monitoring -> resolved. If notify is true, subscribers of the associated page are notified by email about the update.'\n operationId: StatusReportService_AddStatusReportUpdate\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_report.v1.AddStatusReportUpdateRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_report.v1.AddStatusReportUpdateResponse'\n /rpc/openstatus.status_report.v1.StatusReportService/CreateStatusReport:\n post:\n tags:\n - StatusReportService\n summary: CreateStatusReport\n description: Creates a new status report with an initial update entry. The report is associated with a status page and optionally specific page components. An initial StatusReportUpdate is created automatically with the provided status, message, and date. If notify is true, subscribers of the associated page are notified by email.\n operationId: StatusReportService_CreateStatusReport\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_report.v1.CreateStatusReportRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_report.v1.CreateStatusReportResponse'\n /rpc/openstatus.status_report.v1.StatusReportService/DeleteStatusReport:\n post:\n tags:\n - StatusReportService\n summary: DeleteStatusReport\n description: DeleteStatusReport removes a status report and all its updates.\n operationId: StatusReportService_DeleteStatusReport\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_report.v1.DeleteStatusReportRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_report.v1.DeleteStatusReportResponse'\n /rpc/openstatus.status_report.v1.StatusReportService/GetStatusReport:\n get:\n tags:\n - StatusReportService\n summary: GetStatusReport\n description: GetStatusReport retrieves a specific status report by ID (includes full update timeline).\n operationId: StatusReportService_GetStatusReport.get\n parameters:\n - name: message\n in: query\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_report.v1.GetStatusReportRequest'\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_report.v1.GetStatusReportResponse'\n post:\n tags:\n - StatusReportService\n summary: GetStatusReport\n description: GetStatusReport retrieves a specific status report by ID (includes full update timeline).\n operationId: StatusReportService_GetStatusReport\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_report.v1.GetStatusReportRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_report.v1.GetStatusReportResponse'\n /rpc/openstatus.status_report.v1.StatusReportService/ListStatusReports:\n get:\n tags:\n - StatusReportService\n summary: ListStatusReports\n description: ListStatusReports returns all status reports for the workspace (metadata only).\n operationId: StatusReportService_ListStatusReports.get\n parameters:\n - name: message\n in: query\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_report.v1.ListStatusReportsRequest'\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_report.v1.ListStatusReportsResponse'\n post:\n tags:\n - StatusReportService\n summary: ListStatusReports\n description: ListStatusReports returns all status reports for the workspace (metadata only).\n operationId: StatusReportService_ListStatusReports\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_report.v1.ListStatusReportsRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_report.v1.ListStatusReportsResponse'\n /rpc/openstatus.status_report.v1.StatusReportService/UpdateStatusReport:\n post:\n tags:\n - StatusReportService\n summary: UpdateStatusReport\n description: UpdateStatusReport updates the metadata of a status report (title, page components).\n operationId: StatusReportService_UpdateStatusReport\n requestBody:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_report.v1.UpdateStatusReportRequest'\n required: true\n responses:\n \"429\":\n $ref: '#/components/responses/RateLimited'\n default:\n description: Error\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/connect.error'\n \"200\":\n description: Success\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/openstatus.status_report.v1.UpdateStatusReportResponse'\n"; diff --git a/apps/server/static/openapi.json b/apps/server/static/openapi.json index 85b41d8c..bf768b5c 100644 --- a/apps/server/static/openapi.json +++ b/apps/server/static/openapi.json @@ -1908,31 +1908,10 @@ }, "title": "tcp", "required": ["tcp"] - }, - { - "not": { - "anyOf": [ - { - "required": ["dns"] - }, - { - "required": ["grpc"] - }, - { - "required": ["http"] - }, - { - "required": ["icmp"] - }, - { - "required": ["tcp"] - } - ] - } } ], - "unevaluatedProperties": false, "title": "MonitorConfig", + "additionalProperties": false, "description": "MonitorConfig represents the type-specific configuration for a monitor." }, "openstatus.monitor.v1.MonitorStatus": { @@ -2930,55 +2909,10 @@ }, "title": "whatsapp", "required": ["whatsapp"] - }, - { - "not": { - "anyOf": [ - { - "required": ["discord"] - }, - { - "required": ["email"] - }, - { - "required": ["googleChat"] - }, - { - "required": ["grafanaOncall"] - }, - { - "required": ["msTeams"] - }, - { - "required": ["ntfy"] - }, - { - "required": ["opsgenie"] - }, - { - "required": ["pagerduty"] - }, - { - "required": ["slack"] - }, - { - "required": ["sms"] - }, - { - "required": ["telegram"] - }, - { - "required": ["webhook"] - }, - { - "required": ["whatsapp"] - } - ] - } } ], - "unevaluatedProperties": false, "title": "NotificationData", + "additionalProperties": false, "description": "NotificationData is a union of provider-specific configuration." }, "openstatus.notification.v1.NotificationProvider": { @@ -4055,34 +3989,12 @@ }, "title": "webhook_channel", "required": ["webhookChannel"] - }, - { - "not": { - "anyOf": [ - { - "required": ["emailChannel"] - }, - { - "required": ["webhookChannel"] - } - ] - } - } - ] - }, - { - "oneOf": [ - { - "required": ["emailChannel"] - }, - { - "required": ["webhookChannel"] } ] } ], - "unevaluatedProperties": false, "title": "CreatePageSubscriptionRequest", + "additionalProperties": false, "description": "CreatePageSubscriptionRequest is the request to add a vendor-managed subscriber to a status page." }, "openstatus.status_page.v1.CreatePageSubscriptionResponse": { @@ -4396,22 +4308,10 @@ }, "title": "slug", "required": ["slug"] - }, - { - "not": { - "anyOf": [ - { - "required": ["id"] - }, - { - "required": ["slug"] - } - ] - } } ], - "unevaluatedProperties": false, "title": "GetOverallStatusRequest", + "additionalProperties": false, "description": "GetOverallStatusRequest is the request to get the overall status of a status page." }, "openstatus.status_page.v1.GetOverallStatusResponse": { @@ -4484,24 +4384,12 @@ }, "title": "slug", "required": ["slug"] - }, - { - "not": { - "anyOf": [ - { - "required": ["id"] - }, - { - "required": ["slug"] - } - ] - } } ] } ], - "unevaluatedProperties": false, "title": "GetPageComponentDailySummaryRequest", + "additionalProperties": false, "description": "GetPageComponentDailySummaryRequest is the request for per-component daily summaries." }, "openstatus.status_page.v1.GetPageComponentDailySummaryResponse": { @@ -4573,22 +4461,10 @@ }, "title": "slug", "required": ["slug"] - }, - { - "not": { - "anyOf": [ - { - "required": ["id"] - }, - { - "required": ["slug"] - } - ] - } } ], - "unevaluatedProperties": false, "title": "GetStatusPageContentRequest", + "additionalProperties": false, "description": "GetStatusPageContentRequest is the request to get the full content of a status page." }, "openstatus.status_page.v1.GetStatusPageContentResponse": { @@ -5460,24 +5336,12 @@ }, "title": "id", "required": ["id"] - }, - { - "not": { - "anyOf": [ - { - "required": ["email"] - }, - { - "required": ["id"] - } - ] - } } ] } ], - "unevaluatedProperties": false, "title": "UnsubscribeFromPageRequest", + "additionalProperties": false, "description": "UnsubscribeFromPageRequest is the request to unsubscribe from a status page." }, "openstatus.status_page.v1.UnsubscribeFromPageResponse": { diff --git a/apps/server/static/openapi.yaml b/apps/server/static/openapi.yaml index f5ecd819..5b99d6ca 100644 --- a/apps/server/static/openapi.yaml +++ b/apps/server/static/openapi.yaml @@ -1661,20 +1661,8 @@ components: title: tcp required: - tcp - - not: - anyOf: - - required: - - dns - - required: - - grpc - - required: - - http - - required: - - icmp - - required: - - tcp - unevaluatedProperties: false title: MonitorConfig + additionalProperties: false description: MonitorConfig represents the type-specific configuration for a monitor. openstatus.monitor.v1.MonitorStatus: type: string @@ -2484,36 +2472,8 @@ components: title: whatsapp required: - whatsapp - - not: - anyOf: - - required: - - discord - - required: - - email - - required: - - googleChat - - required: - - grafanaOncall - - required: - - msTeams - - required: - - ntfy - - required: - - opsgenie - - required: - - pagerduty - - required: - - slack - - required: - - sms - - required: - - telegram - - required: - - webhook - - required: - - whatsapp - unevaluatedProperties: false title: NotificationData + additionalProperties: false description: NotificationData is a union of provider-specific configuration. openstatus.notification.v1.NotificationProvider: type: string @@ -3422,19 +3382,8 @@ components: title: webhook_channel required: - webhookChannel - - not: - anyOf: - - required: - - emailChannel - - required: - - webhookChannel - - oneOf: - - required: - - emailChannel - - required: - - webhookChannel - unevaluatedProperties: false title: CreatePageSubscriptionRequest + additionalProperties: false description: CreatePageSubscriptionRequest is the request to add a vendor-managed subscriber to a status page. openstatus.status_page.v1.CreatePageSubscriptionResponse: type: object @@ -3688,14 +3637,8 @@ components: title: slug required: - slug - - not: - anyOf: - - required: - - id - - required: - - slug - unevaluatedProperties: false title: GetOverallStatusRequest + additionalProperties: false description: GetOverallStatusRequest is the request to get the overall status of a status page. openstatus.status_page.v1.GetOverallStatusResponse: type: object @@ -3752,14 +3695,8 @@ components: title: slug required: - slug - - not: - anyOf: - - required: - - id - - required: - - slug - unevaluatedProperties: false title: GetPageComponentDailySummaryRequest + additionalProperties: false description: GetPageComponentDailySummaryRequest is the request for per-component daily summaries. openstatus.status_page.v1.GetPageComponentDailySummaryResponse: type: object @@ -3815,14 +3752,8 @@ components: title: slug required: - slug - - not: - anyOf: - - required: - - id - - required: - - slug - unevaluatedProperties: false title: GetStatusPageContentRequest + additionalProperties: false description: GetStatusPageContentRequest is the request to get the full content of a status page. openstatus.status_page.v1.GetStatusPageContentResponse: type: object @@ -4533,14 +4464,8 @@ components: title: id required: - id - - not: - anyOf: - - required: - - email - - required: - - id - unevaluatedProperties: false title: UnsubscribeFromPageRequest + additionalProperties: false description: UnsubscribeFromPageRequest is the request to unsubscribe from a status page. openstatus.status_page.v1.UnsubscribeFromPageResponse: type: object diff --git a/packages/proto/gen/openapi.yaml b/packages/proto/gen/openapi.yaml index f5ecd819..5b99d6ca 100644 --- a/packages/proto/gen/openapi.yaml +++ b/packages/proto/gen/openapi.yaml @@ -1661,20 +1661,8 @@ components: title: tcp required: - tcp - - not: - anyOf: - - required: - - dns - - required: - - grpc - - required: - - http - - required: - - icmp - - required: - - tcp - unevaluatedProperties: false title: MonitorConfig + additionalProperties: false description: MonitorConfig represents the type-specific configuration for a monitor. openstatus.monitor.v1.MonitorStatus: type: string @@ -2484,36 +2472,8 @@ components: title: whatsapp required: - whatsapp - - not: - anyOf: - - required: - - discord - - required: - - email - - required: - - googleChat - - required: - - grafanaOncall - - required: - - msTeams - - required: - - ntfy - - required: - - opsgenie - - required: - - pagerduty - - required: - - slack - - required: - - sms - - required: - - telegram - - required: - - webhook - - required: - - whatsapp - unevaluatedProperties: false title: NotificationData + additionalProperties: false description: NotificationData is a union of provider-specific configuration. openstatus.notification.v1.NotificationProvider: type: string @@ -3422,19 +3382,8 @@ components: title: webhook_channel required: - webhookChannel - - not: - anyOf: - - required: - - emailChannel - - required: - - webhookChannel - - oneOf: - - required: - - emailChannel - - required: - - webhookChannel - unevaluatedProperties: false title: CreatePageSubscriptionRequest + additionalProperties: false description: CreatePageSubscriptionRequest is the request to add a vendor-managed subscriber to a status page. openstatus.status_page.v1.CreatePageSubscriptionResponse: type: object @@ -3688,14 +3637,8 @@ components: title: slug required: - slug - - not: - anyOf: - - required: - - id - - required: - - slug - unevaluatedProperties: false title: GetOverallStatusRequest + additionalProperties: false description: GetOverallStatusRequest is the request to get the overall status of a status page. openstatus.status_page.v1.GetOverallStatusResponse: type: object @@ -3752,14 +3695,8 @@ components: title: slug required: - slug - - not: - anyOf: - - required: - - id - - required: - - slug - unevaluatedProperties: false title: GetPageComponentDailySummaryRequest + additionalProperties: false description: GetPageComponentDailySummaryRequest is the request for per-component daily summaries. openstatus.status_page.v1.GetPageComponentDailySummaryResponse: type: object @@ -3815,14 +3752,8 @@ components: title: slug required: - slug - - not: - anyOf: - - required: - - id - - required: - - slug - unevaluatedProperties: false title: GetStatusPageContentRequest + additionalProperties: false description: GetStatusPageContentRequest is the request to get the full content of a status page. openstatus.status_page.v1.GetStatusPageContentResponse: type: object @@ -4533,14 +4464,8 @@ components: title: id required: - id - - not: - anyOf: - - required: - - email - - required: - - id - unevaluatedProperties: false title: UnsubscribeFromPageRequest + additionalProperties: false description: UnsubscribeFromPageRequest is the request to unsubscribe from a status page. openstatus.status_page.v1.UnsubscribeFromPageResponse: type: object diff --git a/packages/proto/gen/ts/buf/validate/validate_pb.ts b/packages/proto/gen/ts/buf/validate/validate_pb.ts index c10448bd..ddb9f312 100644 --- a/packages/proto/gen/ts/buf/validate/validate_pb.ts +++ b/packages/proto/gen/ts/buf/validate/validate_pb.ts @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -// @generated by protoc-gen-es v2.12.0 with parameter "target=ts,import_extension=.ts" +// @generated by protoc-gen-es v2.15.0 with parameter "target=ts,import_extension=.ts" // @generated from file buf/validate/validate.proto (package buf.validate, syntax proto2) /* eslint-disable */ diff --git a/packages/proto/gen/ts/gnostic/openapi/v3/annotations_pb.ts b/packages/proto/gen/ts/gnostic/openapi/v3/annotations_pb.ts index 5e02c15e..ca1faef8 100644 --- a/packages/proto/gen/ts/gnostic/openapi/v3/annotations_pb.ts +++ b/packages/proto/gen/ts/gnostic/openapi/v3/annotations_pb.ts @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -// @generated by protoc-gen-es v2.12.0 with parameter "target=ts,import_extension=.ts" +// @generated by protoc-gen-es v2.15.0 with parameter "target=ts,import_extension=.ts" // @generated from file gnostic/openapi/v3/annotations.proto (package gnostic.openapi.v3, syntax proto3) /* eslint-disable */ diff --git a/packages/proto/gen/ts/gnostic/openapi/v3/openapiv3_pb.ts b/packages/proto/gen/ts/gnostic/openapi/v3/openapiv3_pb.ts index 89d49296..0cc93446 100644 --- a/packages/proto/gen/ts/gnostic/openapi/v3/openapiv3_pb.ts +++ b/packages/proto/gen/ts/gnostic/openapi/v3/openapiv3_pb.ts @@ -14,7 +14,7 @@ // THIS FILE IS AUTOMATICALLY GENERATED. -// @generated by protoc-gen-es v2.12.0 with parameter "target=ts,import_extension=.ts" +// @generated by protoc-gen-es v2.15.0 with parameter "target=ts,import_extension=.ts" // @generated from file gnostic/openapi/v3/openapiv3.proto (package gnostic.openapi.v3, syntax proto3) /* eslint-disable */ diff --git a/packages/proto/gen/ts/openstatus/health/v1/health_pb.ts b/packages/proto/gen/ts/openstatus/health/v1/health_pb.ts index d3264136..2c084c87 100644 --- a/packages/proto/gen/ts/openstatus/health/v1/health_pb.ts +++ b/packages/proto/gen/ts/openstatus/health/v1/health_pb.ts @@ -1,4 +1,4 @@ -// @generated by protoc-gen-es v2.12.0 with parameter "target=ts,import_extension=.ts" +// @generated by protoc-gen-es v2.15.0 with parameter "target=ts,import_extension=.ts" // @generated from file openstatus/health/v1/health.proto (package openstatus.health.v1, syntax proto3) /* eslint-disable */ diff --git a/packages/proto/gen/ts/openstatus/maintenance/v1/maintenance_pb.ts b/packages/proto/gen/ts/openstatus/maintenance/v1/maintenance_pb.ts index 03dbf5a3..5f4d0fa3 100644 --- a/packages/proto/gen/ts/openstatus/maintenance/v1/maintenance_pb.ts +++ b/packages/proto/gen/ts/openstatus/maintenance/v1/maintenance_pb.ts @@ -1,4 +1,4 @@ -// @generated by protoc-gen-es v2.12.0 with parameter "target=ts,import_extension=.ts" +// @generated by protoc-gen-es v2.15.0 with parameter "target=ts,import_extension=.ts" // @generated from file openstatus/maintenance/v1/maintenance.proto (package openstatus.maintenance.v1, syntax proto3) /* eslint-disable */ diff --git a/packages/proto/gen/ts/openstatus/maintenance/v1/service_pb.ts b/packages/proto/gen/ts/openstatus/maintenance/v1/service_pb.ts index 51f6d4a7..534798e8 100644 --- a/packages/proto/gen/ts/openstatus/maintenance/v1/service_pb.ts +++ b/packages/proto/gen/ts/openstatus/maintenance/v1/service_pb.ts @@ -1,4 +1,4 @@ -// @generated by protoc-gen-es v2.12.0 with parameter "target=ts,import_extension=.ts" +// @generated by protoc-gen-es v2.15.0 with parameter "target=ts,import_extension=.ts" // @generated from file openstatus/maintenance/v1/service.proto (package openstatus.maintenance.v1, syntax proto3) /* eslint-disable */ diff --git a/packages/proto/gen/ts/openstatus/monitor/v1/assertions_pb.ts b/packages/proto/gen/ts/openstatus/monitor/v1/assertions_pb.ts index 954c446b..12737497 100644 --- a/packages/proto/gen/ts/openstatus/monitor/v1/assertions_pb.ts +++ b/packages/proto/gen/ts/openstatus/monitor/v1/assertions_pb.ts @@ -1,4 +1,4 @@ -// @generated by protoc-gen-es v2.12.0 with parameter "target=ts,import_extension=.ts" +// @generated by protoc-gen-es v2.15.0 with parameter "target=ts,import_extension=.ts" // @generated from file openstatus/monitor/v1/assertions.proto (package openstatus.monitor.v1, syntax proto3) /* eslint-disable */ diff --git a/packages/proto/gen/ts/openstatus/monitor/v1/dns_monitor_pb.ts b/packages/proto/gen/ts/openstatus/monitor/v1/dns_monitor_pb.ts index b7ca4aa3..88a3a634 100644 --- a/packages/proto/gen/ts/openstatus/monitor/v1/dns_monitor_pb.ts +++ b/packages/proto/gen/ts/openstatus/monitor/v1/dns_monitor_pb.ts @@ -1,4 +1,4 @@ -// @generated by protoc-gen-es v2.12.0 with parameter "target=ts,import_extension=.ts" +// @generated by protoc-gen-es v2.15.0 with parameter "target=ts,import_extension=.ts" // @generated from file openstatus/monitor/v1/dns_monitor.proto (package openstatus.monitor.v1, syntax proto3) /* eslint-disable */ diff --git a/packages/proto/gen/ts/openstatus/monitor/v1/grpc_monitor_pb.ts b/packages/proto/gen/ts/openstatus/monitor/v1/grpc_monitor_pb.ts index ed04312a..ad958782 100644 --- a/packages/proto/gen/ts/openstatus/monitor/v1/grpc_monitor_pb.ts +++ b/packages/proto/gen/ts/openstatus/monitor/v1/grpc_monitor_pb.ts @@ -1,4 +1,4 @@ -// @generated by protoc-gen-es v2.12.0 with parameter "target=ts,import_extension=.ts" +// @generated by protoc-gen-es v2.15.0 with parameter "target=ts,import_extension=.ts" // @generated from file openstatus/monitor/v1/grpc_monitor.proto (package openstatus.monitor.v1, syntax proto3) /* eslint-disable */ diff --git a/packages/proto/gen/ts/openstatus/monitor/v1/http_monitor_pb.ts b/packages/proto/gen/ts/openstatus/monitor/v1/http_monitor_pb.ts index 7671607d..574766d9 100644 --- a/packages/proto/gen/ts/openstatus/monitor/v1/http_monitor_pb.ts +++ b/packages/proto/gen/ts/openstatus/monitor/v1/http_monitor_pb.ts @@ -1,4 +1,4 @@ -// @generated by protoc-gen-es v2.12.0 with parameter "target=ts,import_extension=.ts" +// @generated by protoc-gen-es v2.15.0 with parameter "target=ts,import_extension=.ts" // @generated from file openstatus/monitor/v1/http_monitor.proto (package openstatus.monitor.v1, syntax proto3) /* eslint-disable */ diff --git a/packages/proto/gen/ts/openstatus/monitor/v1/icmp_monitor_pb.ts b/packages/proto/gen/ts/openstatus/monitor/v1/icmp_monitor_pb.ts index a05cb46b..88b6526a 100644 --- a/packages/proto/gen/ts/openstatus/monitor/v1/icmp_monitor_pb.ts +++ b/packages/proto/gen/ts/openstatus/monitor/v1/icmp_monitor_pb.ts @@ -1,4 +1,4 @@ -// @generated by protoc-gen-es v2.12.0 with parameter "target=ts,import_extension=.ts" +// @generated by protoc-gen-es v2.15.0 with parameter "target=ts,import_extension=.ts" // @generated from file openstatus/monitor/v1/icmp_monitor.proto (package openstatus.monitor.v1, syntax proto3) /* eslint-disable */ diff --git a/packages/proto/gen/ts/openstatus/monitor/v1/monitor_pb.ts b/packages/proto/gen/ts/openstatus/monitor/v1/monitor_pb.ts index 2822c393..86512c46 100644 --- a/packages/proto/gen/ts/openstatus/monitor/v1/monitor_pb.ts +++ b/packages/proto/gen/ts/openstatus/monitor/v1/monitor_pb.ts @@ -1,4 +1,4 @@ -// @generated by protoc-gen-es v2.12.0 with parameter "target=ts,import_extension=.ts" +// @generated by protoc-gen-es v2.15.0 with parameter "target=ts,import_extension=.ts" // @generated from file openstatus/monitor/v1/monitor.proto (package openstatus.monitor.v1, syntax proto3) /* eslint-disable */ diff --git a/packages/proto/gen/ts/openstatus/monitor/v1/service_pb.ts b/packages/proto/gen/ts/openstatus/monitor/v1/service_pb.ts index 2e0f6450..6cad011a 100644 --- a/packages/proto/gen/ts/openstatus/monitor/v1/service_pb.ts +++ b/packages/proto/gen/ts/openstatus/monitor/v1/service_pb.ts @@ -1,4 +1,4 @@ -// @generated by protoc-gen-es v2.12.0 with parameter "target=ts,import_extension=.ts" +// @generated by protoc-gen-es v2.15.0 with parameter "target=ts,import_extension=.ts" // @generated from file openstatus/monitor/v1/service.proto (package openstatus.monitor.v1, syntax proto3) /* eslint-disable */ diff --git a/packages/proto/gen/ts/openstatus/monitor/v1/tcp_monitor_pb.ts b/packages/proto/gen/ts/openstatus/monitor/v1/tcp_monitor_pb.ts index 74aedce4..999d5575 100644 --- a/packages/proto/gen/ts/openstatus/monitor/v1/tcp_monitor_pb.ts +++ b/packages/proto/gen/ts/openstatus/monitor/v1/tcp_monitor_pb.ts @@ -1,4 +1,4 @@ -// @generated by protoc-gen-es v2.12.0 with parameter "target=ts,import_extension=.ts" +// @generated by protoc-gen-es v2.15.0 with parameter "target=ts,import_extension=.ts" // @generated from file openstatus/monitor/v1/tcp_monitor.proto (package openstatus.monitor.v1, syntax proto3) /* eslint-disable */ diff --git a/packages/proto/gen/ts/openstatus/notification/v1/notification_pb.ts b/packages/proto/gen/ts/openstatus/notification/v1/notification_pb.ts index 2750e4a6..901434e1 100644 --- a/packages/proto/gen/ts/openstatus/notification/v1/notification_pb.ts +++ b/packages/proto/gen/ts/openstatus/notification/v1/notification_pb.ts @@ -1,4 +1,4 @@ -// @generated by protoc-gen-es v2.12.0 with parameter "target=ts,import_extension=.ts" +// @generated by protoc-gen-es v2.15.0 with parameter "target=ts,import_extension=.ts" // @generated from file openstatus/notification/v1/notification.proto (package openstatus.notification.v1, syntax proto3) /* eslint-disable */ diff --git a/packages/proto/gen/ts/openstatus/notification/v1/providers_pb.ts b/packages/proto/gen/ts/openstatus/notification/v1/providers_pb.ts index 16f4ba1b..1179e1f6 100644 --- a/packages/proto/gen/ts/openstatus/notification/v1/providers_pb.ts +++ b/packages/proto/gen/ts/openstatus/notification/v1/providers_pb.ts @@ -1,4 +1,4 @@ -// @generated by protoc-gen-es v2.12.0 with parameter "target=ts,import_extension=.ts" +// @generated by protoc-gen-es v2.15.0 with parameter "target=ts,import_extension=.ts" // @generated from file openstatus/notification/v1/providers.proto (package openstatus.notification.v1, syntax proto3) /* eslint-disable */ diff --git a/packages/proto/gen/ts/openstatus/notification/v1/service_pb.ts b/packages/proto/gen/ts/openstatus/notification/v1/service_pb.ts index 2b70a877..4373b83a 100644 --- a/packages/proto/gen/ts/openstatus/notification/v1/service_pb.ts +++ b/packages/proto/gen/ts/openstatus/notification/v1/service_pb.ts @@ -1,4 +1,4 @@ -// @generated by protoc-gen-es v2.12.0 with parameter "target=ts,import_extension=.ts" +// @generated by protoc-gen-es v2.15.0 with parameter "target=ts,import_extension=.ts" // @generated from file openstatus/notification/v1/service.proto (package openstatus.notification.v1, syntax proto3) /* eslint-disable */ diff --git a/packages/proto/gen/ts/openstatus/private_location/v1/private_location_pb.ts b/packages/proto/gen/ts/openstatus/private_location/v1/private_location_pb.ts index 0c81780c..24057da3 100644 --- a/packages/proto/gen/ts/openstatus/private_location/v1/private_location_pb.ts +++ b/packages/proto/gen/ts/openstatus/private_location/v1/private_location_pb.ts @@ -1,4 +1,4 @@ -// @generated by protoc-gen-es v2.12.0 with parameter "target=ts,import_extension=.ts" +// @generated by protoc-gen-es v2.15.0 with parameter "target=ts,import_extension=.ts" // @generated from file openstatus/private_location/v1/private_location.proto (package openstatus.private_location.v1, syntax proto3) /* eslint-disable */ diff --git a/packages/proto/gen/ts/openstatus/private_location/v1/service_pb.ts b/packages/proto/gen/ts/openstatus/private_location/v1/service_pb.ts index 32d98ad1..cb40c801 100644 --- a/packages/proto/gen/ts/openstatus/private_location/v1/service_pb.ts +++ b/packages/proto/gen/ts/openstatus/private_location/v1/service_pb.ts @@ -1,4 +1,4 @@ -// @generated by protoc-gen-es v2.12.0 with parameter "target=ts,import_extension=.ts" +// @generated by protoc-gen-es v2.15.0 with parameter "target=ts,import_extension=.ts" // @generated from file openstatus/private_location/v1/service.proto (package openstatus.private_location.v1, syntax proto3) /* eslint-disable */ diff --git a/packages/proto/gen/ts/openstatus/status_page/v1/page_component_pb.ts b/packages/proto/gen/ts/openstatus/status_page/v1/page_component_pb.ts index b491af30..ca393aac 100644 --- a/packages/proto/gen/ts/openstatus/status_page/v1/page_component_pb.ts +++ b/packages/proto/gen/ts/openstatus/status_page/v1/page_component_pb.ts @@ -1,4 +1,4 @@ -// @generated by protoc-gen-es v2.12.0 with parameter "target=ts,import_extension=.ts" +// @generated by protoc-gen-es v2.15.0 with parameter "target=ts,import_extension=.ts" // @generated from file openstatus/status_page/v1/page_component.proto (package openstatus.status_page.v1, syntax proto3) /* eslint-disable */ diff --git a/packages/proto/gen/ts/openstatus/status_page/v1/page_subscriber_pb.ts b/packages/proto/gen/ts/openstatus/status_page/v1/page_subscriber_pb.ts index 6fd954fd..3a2697b7 100644 --- a/packages/proto/gen/ts/openstatus/status_page/v1/page_subscriber_pb.ts +++ b/packages/proto/gen/ts/openstatus/status_page/v1/page_subscriber_pb.ts @@ -1,4 +1,4 @@ -// @generated by protoc-gen-es v2.12.0 with parameter "target=ts,import_extension=.ts" +// @generated by protoc-gen-es v2.15.0 with parameter "target=ts,import_extension=.ts" // @generated from file openstatus/status_page/v1/page_subscriber.proto (package openstatus.status_page.v1, syntax proto3) /* eslint-disable */ diff --git a/packages/proto/gen/ts/openstatus/status_page/v1/service_pb.ts b/packages/proto/gen/ts/openstatus/status_page/v1/service_pb.ts index 583b1369..1ba32be7 100644 --- a/packages/proto/gen/ts/openstatus/status_page/v1/service_pb.ts +++ b/packages/proto/gen/ts/openstatus/status_page/v1/service_pb.ts @@ -1,4 +1,4 @@ -// @generated by protoc-gen-es v2.12.0 with parameter "target=ts,import_extension=.ts" +// @generated by protoc-gen-es v2.15.0 with parameter "target=ts,import_extension=.ts" // @generated from file openstatus/status_page/v1/service.proto (package openstatus.status_page.v1, syntax proto3) /* eslint-disable */ diff --git a/packages/proto/gen/ts/openstatus/status_page/v1/status_page_pb.ts b/packages/proto/gen/ts/openstatus/status_page/v1/status_page_pb.ts index 9e753368..03030ec8 100644 --- a/packages/proto/gen/ts/openstatus/status_page/v1/status_page_pb.ts +++ b/packages/proto/gen/ts/openstatus/status_page/v1/status_page_pb.ts @@ -1,4 +1,4 @@ -// @generated by protoc-gen-es v2.12.0 with parameter "target=ts,import_extension=.ts" +// @generated by protoc-gen-es v2.15.0 with parameter "target=ts,import_extension=.ts" // @generated from file openstatus/status_page/v1/status_page.proto (package openstatus.status_page.v1, syntax proto3) /* eslint-disable */ diff --git a/packages/proto/gen/ts/openstatus/status_report/v1/service_pb.ts b/packages/proto/gen/ts/openstatus/status_report/v1/service_pb.ts index 1a80db5c..b8f76554 100644 --- a/packages/proto/gen/ts/openstatus/status_report/v1/service_pb.ts +++ b/packages/proto/gen/ts/openstatus/status_report/v1/service_pb.ts @@ -1,4 +1,4 @@ -// @generated by protoc-gen-es v2.12.0 with parameter "target=ts,import_extension=.ts" +// @generated by protoc-gen-es v2.15.0 with parameter "target=ts,import_extension=.ts" // @generated from file openstatus/status_report/v1/service.proto (package openstatus.status_report.v1, syntax proto3) /* eslint-disable */ diff --git a/packages/proto/gen/ts/openstatus/status_report/v1/status_report_pb.ts b/packages/proto/gen/ts/openstatus/status_report/v1/status_report_pb.ts index 60d488c9..95ead3c1 100644 --- a/packages/proto/gen/ts/openstatus/status_report/v1/status_report_pb.ts +++ b/packages/proto/gen/ts/openstatus/status_report/v1/status_report_pb.ts @@ -1,4 +1,4 @@ -// @generated by protoc-gen-es v2.12.0 with parameter "target=ts,import_extension=.ts" +// @generated by protoc-gen-es v2.15.0 with parameter "target=ts,import_extension=.ts" // @generated from file openstatus/status_report/v1/status_report.proto (package openstatus.status_report.v1, syntax proto3) /* eslint-disable */ diff --git a/packages/proto/package.json b/packages/proto/package.json index ecd311ce..12ce39dd 100644 --- a/packages/proto/package.json +++ b/packages/proto/package.json @@ -40,7 +40,7 @@ }, "scripts": { "check": "deno check --sloppy-imports .", - "buf:openapi": "buf generate --path api/openstatus --template buf.gen.openapi.yaml && deno scripts/clean-openapi.ts", + "buf:openapi": "buf generate --path api/openstatus --template buf.gen.openapi.yaml && deno run --allow-read=gen/openapi.yaml --allow-write=gen/openapi.yaml,../../apps/server/static/openapi.yaml scripts/clean-openapi.ts", "buf:ts": "buf generate --path api/openstatus --template buf.gen.ts.yaml", "buf:go": "buf generate --path internal/private_location --template buf.gen.go.yaml", "buf:lint": "buf lint",