openapi: 3.0.0 paths: /monitors/bulk/pause: post: description: >- Pauses monitors matching the specified filters. Provide groupId, tagId, or both. When both are given, only monitors matching both filters are affected. Returns per-monitor results. operationId: BulkMonitorsController_bulkPause parameters: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PublicBulkPauseDto' responses: '201': description: '' content: application/json: schema: $ref: '#/components/schemas/BulkOperationResponseDto' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: Pause monitors by group and/or tag tags: - Monitors - Bulk Operations /monitors/bulk/start: post: description: >- Starts all paused monitors matching the specified filters. Provide groupId, tagId, or both. When both are given, only monitors matching both filters are affected. Returns per-monitor results. operationId: BulkMonitorsController_bulkStart parameters: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PublicBulkStartDto' responses: '201': description: '' content: application/json: schema: $ref: '#/components/schemas/BulkOperationResponseDto' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: Start monitors by group and/or tag tags: - Monitors - Bulk Operations /monitors/bulk/update: post: description: >- Updates settings for monitors matching the specified filters. Provide groupId, tagId, or both. When both are given, only monitors matching both filters are affected. Returns per-monitor results. operationId: BulkMonitorsController_bulkUpdate parameters: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PublicBulkUpdateDto' responses: '201': description: '' content: application/json: schema: $ref: '#/components/schemas/BulkOperationResponseDto' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: Update monitors by group and/or tag tags: - Monitors - Bulk Operations /incidents: get: description: >- List all incidents in a user's account with optional filtering. Sorted by start date descending, newest first. Values can be paginated with the cursor parameter. operationId: IncidentsController_list parameters: - name: limit required: false in: query description: >- Maximum number of items to return per page. Default: 50, Min: 1, Max: 200. schema: minimum: 1 maximum: 200 example: 50 type: number - name: cursor required: false in: query description: >- Opaque cursor taken from the previous page’s `nextLink`. An incident ID from an earlier version of this endpoint is still accepted and resumes right after that incident. schema: pattern: /^[A-Za-z0-9_-]+$/ example: MTc4OTA0NTYwMDAwMHwxNDAwfDMxOTg0OTk3MTM4MTQ2NzcxMg type: string - name: monitor_id required: false in: query description: Filter incidents by monitor ID schema: minimum: 1 example: 123 type: number - name: monitor_name required: false in: query description: Filter incidents by monitor name (partial match) schema: example: production type: string - name: started_after required: false in: query description: Filter incidents started after this date (ISO 8601 format) schema: example: '2024-01-01T00:00:00Z' type: string - name: started_before required: false in: query description: Filter incidents started before this date (ISO 8601 format) schema: example: '2024-12-31T23:59:59Z' type: string - name: status required: false in: query description: >- Filter incidents by status. "open" returns only currently ongoing incidents, regardless of started_after/started_before. schema: enum: - open type: string responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/IncidentSummaryPaginationDto' '400': description: >- Invalid `cursor`: unknown, belonging to another account, or malformed. Omit `cursor` to start again from the first page. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: List incidents tags: - Incidents /incidents/{id}: get: description: Get incident details including root cause information operationId: IncidentsController_get parameters: - name: id required: true in: path description: The incident ID schema: type: string responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/IncidentDetailDto' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: Get an incident by ID tags: - Incidents /incidents/{id}/comments: get: description: >- Returns paginated comments for a specific incident, ordered by creation date ascending (oldest first). operationId: IncidentsController_listComments parameters: - name: id required: true in: path description: The incident ID schema: type: string - name: cursor required: false in: query description: Cursor to paginate through comments (comment ID) schema: pattern: /^\d+$/ example: '42' type: string - name: limit required: false in: query description: Number of comments to return (1-100, default 50) schema: minimum: 1 maximum: 100 default: 50 example: 50 type: number responses: '200': description: List of comments for the incident content: application/json: schema: $ref: '#/components/schemas/PublicIncidentCommentsPaginationDto' '401': description: Unauthorized - missing or invalid authentication content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' '404': description: Incident not found content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: List incident comments tags: - Incidents post: description: Create a new comment on an incident operationId: IncidentsController_createComment parameters: - name: id required: true in: path description: ID of the incident schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateIncidentCommentRequestDto' responses: '201': description: Comment created successfully '400': description: Invalid request body content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' '401': description: Unauthorized - missing or invalid authentication content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' '403': description: Forbidden - no write permission content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' '404': description: Incident not found content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: Create incident comment tags: - Incidents /incidents/{id}/activity-log: get: description: >- Returns the activity log for an incident, including status updates, comments, and notifications. Sorted by date descending, newest first. Values can be paginated with the cursor parameter. operationId: IncidentsController_getActivityLog parameters: - name: id required: true in: path description: ID of the incident schema: type: string - name: cursor required: false in: query description: >- Cursor to paginate through further notification entries (comments, status updates and system events are only returned on the first page) schema: pattern: /^[A-Za-z0-9_-]+$/ example: MjAyNi0wOS0xMiAxMDowMjowMXw0MjAwMDAwMDAwMDAwMDExfDQ0fDIwMA type: string - name: limit required: false in: query description: >- Maximum number of notification entries per page (1-200, default 50). The first page also carries every comment, status update and system event on top of those, so it can hold more than `limit` entries. schema: minimum: 1 maximum: 200 default: 50 example: 50 type: number responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/ActivityLogResponseDto' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: Get incident activity log tags: - Incidents /incidents/{id}/alerts: get: description: >- Returns alerts that were sent for a specific incident, including recipient information and delivery status. Sorted by date descending, newest first. Values can be paginated with the cursor parameter. operationId: IncidentsController_getAlerts parameters: - name: id required: true in: path description: ID of the incident schema: type: string - name: cursor required: false in: query description: Cursor to paginate through sent alerts schema: pattern: /^[A-Za-z0-9_-]+$/ example: MjAyNi0wOS0xMiAxMDowMjowMXw0MjAwMDAwMDAwMDAwMDExfDQ0fDIwMA type: string - name: limit required: false in: query description: Number of sent alerts to return (1-200, default 50) schema: minimum: 1 maximum: 200 default: 50 example: 50 type: number responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/PublicSentAlertsResponseDto' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: Get incident sent alerts tags: - Incidents /incidents/{id}/comments/{commentId}: patch: description: Updates an existing comment on an incident operationId: IncidentsController_updateComment parameters: - name: id required: true in: path description: The incident ID schema: type: string - name: commentId required: true in: path description: The comment ID schema: type: number requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateIncidentCommentRequestDto' responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/IncidentCommentDto' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: Update an incident comment tags: - Incidents delete: description: Delete a comment from an incident operationId: IncidentsController_deleteComment parameters: - name: id required: true in: path description: ID of the incident schema: type: string - name: commentId required: true in: path description: ID of the comment schema: type: number responses: '204': description: Comment deleted successfully '401': description: Unauthorized - missing or invalid authentication content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' '403': description: Forbidden - no write permission content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' '404': description: Incident or comment not found content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: Delete incident comment tags: - Incidents /monitor-groups: post: description: >- Create a new monitor group with optional initial monitors. Monitors can be assigned by providing their IDs or by specifying existing group IDs whose monitors should be moved. operationId: MonitorGroupsController_create parameters: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateMonitorGroupDto' responses: '201': description: Monitor group created successfully content: application/json: schema: $ref: '#/components/schemas/MonitorGroupDto' '400': description: Validation error (invalid name, monitorIds, or groupIds) content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' '401': description: Unauthorized - invalid or missing authentication content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' '403': description: >- Forbidden - no write permission or monitor-groups feature not available content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' '429': description: Rate limit exceeded content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: Create a monitor group tags: - Monitor Groups get: description: >- List all monitor groups in a user's account. Values can be paginated with the cursor parameter. operationId: MonitorGroupsController_list parameters: - name: limit required: false in: query description: >- Maximum number of monitor groups to return per page. Default: 50, Min: 1, Max: 200. schema: minimum: 1 maximum: 200 example: 50 type: number - name: cursor required: false in: query description: Cursor for pagination (ID of the last item from previous page) schema: type: number responses: '200': description: Monitor groups retrieved successfully content: application/json: schema: $ref: '#/components/schemas/MonitorGroupPaginationDto' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: List monitor groups tags: - Monitor Groups /monitor-groups/{id}: get: description: Get monitor group details by ID operationId: MonitorGroupsController_get parameters: - name: id required: true in: path description: The monitor group ID schema: type: number responses: '200': description: Monitor group retrieved successfully content: application/json: schema: $ref: '#/components/schemas/MonitorGroupDto' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: Get a monitor group by ID tags: - Monitor Groups patch: description: Update (rename) an existing monitor group operationId: MonitorGroupsController_update parameters: - name: id required: true in: path description: The monitor group ID schema: type: number requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateMonitorGroupDto' responses: '200': description: Monitor group updated successfully content: application/json: schema: $ref: '#/components/schemas/MonitorGroupDto' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: Update a monitor group tags: - Monitor Groups delete: description: >- Delete a monitor group. Monitors in the deleted group will be moved to the specified group or to the default group (ID: 0). operationId: MonitorGroupsController_delete parameters: - name: id required: true in: path description: The monitor group ID to delete schema: type: number - name: monitorsNewGroupId required: false in: query description: >- Optional group ID to move monitors to. If not provided, monitors will be moved to default group (ID: 0). schema: minimum: 1 example: 123 type: number responses: '204': description: Monitor group deleted successfully '400': description: Cannot delete default group or invalid new group content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' '401': description: Unauthorized - invalid or missing authentication content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' '403': description: >- Forbidden - no write permission or monitor-groups feature not available content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' '404': description: Monitor group not found content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: Delete a monitor group tags: - Monitor Groups /monitors/storm-protection: get: description: >- Get the account-wide storm protection (alert grouping) settings. Returns defaults when not yet configured. operationId: StormProtectionController_get parameters: [] responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/StormProtectionSettingsResponseDto' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: Get storm protection settings tags: - Storm Protection patch: description: >- Update the account-wide storm protection (alert grouping) settings. Partial update — only provided fields are changed. operationId: StormProtectionController_update parameters: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateStormProtectionDto' responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/StormProtectionSettingsResponseDto' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: Update storm protection settings tags: - Storm Protection /monitors: get: description: >- List all monitors in a user's account. Values can be paginated with the cursor parameter. Optionally filter by tags, URL, name, status, groupId, or limit. All filters use AND logic when combined. operationId: MonitorsController_list parameters: - name: customField required: false in: query description: >- Filter monitors by custom field key:value pairs. Format: customField=key:value. Multiple filters use AND logic. Split on first colon only. schema: example: environment:production type: array items: type: string - name: limit required: false in: query description: >- Maximum number of monitors to return per page. Default: 50, Min: 1, Max: 200. schema: example: 50 type: number - name: groupId required: false in: query description: Filter monitors by monitor group ID. schema: example: 100 type: number - name: status required: false in: query description: >- Comma-separated list of status values to filter monitors. Uses OR logic (matches any specified status). Case-insensitive. Allowed values: PAUSED, STARTED, UP, LOOKS_DOWN, DOWN. schema: example: UP,DOWN type: string - name: name required: false in: query description: >- Filter monitors by name. Case-insensitive partial match on the monitor friendly name. schema: example: Production API type: string - name: url required: false in: query description: >- Filter monitors by URL. Case-insensitive partial match on the monitor URL. schema: example: example.com type: string - name: tags required: false in: query description: >- Comma-separated list of tag names to filter monitors. Uses OR logic (matches any specified tag). Case-sensitive. schema: example: production,staging type: string - name: cursor required: false in: query description: Cursor to paginate through monitors schema: type: number responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/MonitorPaginationDto' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: List monitors tags: - Monitors post: description: >- New monitors of any type can be created using this endpoint. The request body is documented as one schema per monitor type — pick the one matching the `type` you are creating. operationId: MonitorsController_create parameters: [] requestBody: required: true description: >- Monitor to create. The `type` field selects which shape the body must take — each monitor type requires a different set of fields. Type names are matched case-insensitively; the canonical form is upper case. content: application/json: schema: oneOf: - $ref: '#/components/schemas/CreateHttpMonitorDto' - $ref: '#/components/schemas/CreateKeywordMonitorDto' - $ref: '#/components/schemas/CreatePingMonitorDto' - $ref: '#/components/schemas/CreatePortMonitorDto' - $ref: '#/components/schemas/CreateHeartbeatMonitorDto' - $ref: '#/components/schemas/CreateDnsMonitorDto' - $ref: '#/components/schemas/CreateApiMonitorDto' - $ref: '#/components/schemas/CreateUdpMonitorDto' - $ref: '#/components/schemas/CreateVisualComparisonMonitorDto' - $ref: '#/components/schemas/CreateThirdPartyServiceMonitorDto' discriminator: propertyName: type mapping: HTTP: '#/components/schemas/CreateHttpMonitorDto' KEYWORD: '#/components/schemas/CreateKeywordMonitorDto' PING: '#/components/schemas/CreatePingMonitorDto' PORT: '#/components/schemas/CreatePortMonitorDto' HEARTBEAT: '#/components/schemas/CreateHeartbeatMonitorDto' DNS: '#/components/schemas/CreateDnsMonitorDto' API: '#/components/schemas/CreateApiMonitorDto' UDP: '#/components/schemas/CreateUdpMonitorDto' VISUAL_COMPARISON: '#/components/schemas/CreateVisualComparisonMonitorDto' THIRD_PARTY_SERVICE: '#/components/schemas/CreateThirdPartyServiceMonitorDto' examples: HTTP Monitor: value: friendlyName: My HTTP monitor type: HTTP url: https://example.com interval: 60 timeout: 30 HTTP/Keyword Monitor (IP version): value: friendlyName: My HTTP monitor type: HTTP url: https://example.com interval: 60 timeout: 30 config: ipVersion: ipv6Only HTTP/Keyword Monitor (SSL expiration periods): value: friendlyName: My HTTPS monitor type: HTTP url: https://example.com interval: 60 timeout: 30 config: sslExpirationPeriodDays: - 7 - 14 - 30 Keyword Monitor: value: friendlyName: My Keyword monitor type: KEYWORD url: https://example.com interval: 60 timeout: 30 keywordType: ALERT_EXISTS keywordCaseType: CaseSensitive keywordValue: Service Unavailable Ping Monitor: value: friendlyName: My Ping monitor type: PING url: example.com interval: 60 timeout: 30 Port Monitor: value: friendlyName: My Port monitor type: PORT url: example.com port: 443 interval: 60 timeout: 30 Heartbeat Monitor: value: friendlyName: My Heartbeat monitor type: HEARTBEAT interval: 60 gracePeriod: 300 DNS Monitor: value: friendlyName: My DNS monitor type: DNS url: example.com interval: 60 config: dnsRecords: CNAME: - example.com MX: - 1 aspmx.l.google.com. - 5 alt1.aspmx.l.google.com. NS: - ns-cloud-a1.googledomains.com. - ns-cloud-a2.googledomains.com. A: - 192.168.1.1 PTR: - example.com API Monitor: value: friendlyName: My API monitor type: API url: https://api.example.com/health interval: 60 timeout: 30 config: apiAssertions: logic: AND checks: - property: $.data.status comparison: equals target: active - property: $.data.count comparison: greater_than target: 0 ipVersion: ipv4Only sslExpirationPeriodDays: - 7 - 14 - 30 UDP Monitor: value: friendlyName: My UDP monitor type: UDP url: 1.2.3.4 port: 53 interval: 60 timeout: 30 config: udp: payload: ping packetLossThreshold: 50 Visual Comparison Monitor: value: friendlyName: My Visual Comparison monitor type: VISUAL_COMPARISON url: https://example.com interval: 300 config: visualComparison: sensitivityThreshold: 10 viewport: desktop Third Party Service: value: type: THIRD_PARTY_SERVICE config: thirdPartyService: providerId: 4317 responses: '201': description: '' content: application/json: schema: $ref: '#/components/schemas/MonitorDto' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: Create a monitor tags: - Monitors /monitors/uptime-stats: get: description: >- Returns aggregated uptime statistics across all monitors for the specified timeframe, including a logs array of incident entries. operationId: MonitorsController_getUptimeStats parameters: - name: logLimit required: false in: query description: Maximum number of log entries to return (1-500). schema: minimum: 1 maximum: 500 default: 50 example: 50 type: number - name: timeFrame required: true in: query description: >- Timeframe for statistics. Use CUSTOM with start/end for custom range. schema: enum: - DAY - WEEK - MONTH - DAYS_30 - YEAR - ALL - CUSTOM type: string - name: start required: false in: query description: Start timestamp (Unix seconds). Required when timeFrame=CUSTOM. schema: minimum: 1 type: number - name: end required: false in: query description: >- End timestamp (Unix seconds). Required when timeFrame=CUSTOM. Must be > start. schema: minimum: 0 type: number responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/UptimeStatsDto' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: Get aggregated uptime statistics tags: - Monitors /monitors/{id}/stats/uptime: get: description: >- Returns uptime statistics for a specific monitor within a configurable date range. Defaults to the last 24 hours. Maximum range is 90 days. operationId: MonitorsController_getMonitorUptimeStats parameters: - name: id required: true in: path description: The monitor ID schema: type: number - name: from required: false in: query description: >- Start date for statistics (ISO 8601 format). Defaults to 24 hours ago. schema: example: '2025-01-01T00:00:00Z' type: string - name: to required: false in: query description: End date for statistics (ISO 8601 format). Defaults to now. schema: example: '2025-01-07T00:00:00Z' type: string responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/MonitorUptimeStatsDto' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: Get monitor uptime statistics tags: - Monitors /monitors/{id}/stats/response-time/all: get: description: >- Returns response time statistics for a specific monitor grouped by region within a configurable date range. Defaults to the last 24 hours. Maximum range is 90 days. Optionally includes time series data. operationId: MonitorsController_getMonitorResponseTimeStatsByRegion parameters: - name: id required: true in: path description: The monitor ID schema: type: number - name: from required: false in: query description: >- Start date for statistics (ISO 8601 format). Defaults to 24 hours ago. schema: example: '2025-01-01T00:00:00Z' type: string - name: to required: false in: query description: End date for statistics (ISO 8601 format). Defaults to now. schema: example: '2025-01-07T00:00:00Z' type: string - name: includeTimeSeries required: false in: query description: >- Whether to include time series data points in the response. Defaults to false. schema: example: true type: boolean responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/MonitorResponseTimeStatsByRegionDto' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: Get monitor response time statistics by region tags: - Monitors /monitors/{id}/stats/response-time: get: description: >- Returns response time statistics for a specific monitor within a configurable date range. Defaults to the last 24 hours. Maximum range is 90 days. Optionally includes time series data. Optionally filter by region. operationId: MonitorsController_getMonitorResponseTimeStats parameters: - name: id required: true in: path description: The monitor ID schema: type: number - name: from required: false in: query description: >- Start date for statistics (ISO 8601 format). Defaults to 24 hours ago. schema: example: '2025-01-01T00:00:00Z' type: string - name: to required: false in: query description: End date for statistics (ISO 8601 format). Defaults to now. schema: example: '2025-01-07T00:00:00Z' type: string - name: includeTimeSeries required: false in: query description: >- Whether to include time series data points in the response. Defaults to false. schema: example: true type: boolean - name: region required: false in: query description: >- Filter by region code (na, eu, as, oc). When provided, only returns data for the specified region. schema: example: na type: string enum: - na - eu - as - oc - all responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/MonitorResponseTimeStatsDto' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: Get monitor response time statistics tags: - Monitors /monitors/{id}/third-party-service/status: get: description: >- Returns the fine-grained 4-state (operational, minor, major, maintenance) for a third party service monitor. Distinct from the coarse monitor status field, which cannot tell a partial degradation from a full outage. operationId: MonitorsController_getThirdPartyServiceStatus parameters: - name: id required: true in: path schema: type: number responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/MonitorThirdPartyServiceStatusDto' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: Get the current status of a third party service tags: - Monitors /monitors/{id}/third-party-service/incidents: get: description: >- Returns every incident (resolved and unresolved) recorded for the provider a third party service monitor tracks, newest first, with verbatim provider updates. An empty history returns an empty array with a 200, never an error. operationId: MonitorsController_getThirdPartyServiceIncidents parameters: - name: id required: true in: path schema: type: number responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/MonitorThirdPartyServiceIncidentsDto' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: Get the incident history of a third party service tags: - Monitors /monitors/{id}/third-party-service/incidents/{incidentId}: get: description: >- Returns one incident from the incident history of a third party service monitor, resolved or not, with its verbatim provider updates. affectedComponents lists the affected components the monitor tracks, or every affected component when the monitor tracks the whole provider. operationId: MonitorsController_getThirdPartyServiceIncident parameters: - name: id required: true in: path description: The monitor ID schema: minimum: 1 maximum: 2147483647 example: 42 type: number - name: incidentId required: true in: path description: >- The incident ID from the incident history of the third party service. A string, since it can exceed the safe integer range. schema: pattern: /^\d{1,20}$/ example: '355758443503112192' type: string responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/MonitorThirdPartyServiceIncidentDetailDto' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: Get one incident of a third party service tags: - Monitors /monitors/{id}/third-party-service/incidents/{incidentId}/activity-log: get: description: >- Returns the notifications this account sent about one incident of a third party service, with the channel, the alert contact and whether delivery succeeded. channelIdentifier is shown only for email, SMS and voice channels; for every other channel, such as webhooks, Slack or mobile push, whose value can carry a credential, it is the literal string "[REDACTED]". An incident with no notifications returns an empty array with a 200. operationId: MonitorsController_getThirdPartyServiceIncidentActivityLog parameters: - name: id required: true in: path description: The monitor ID schema: minimum: 1 maximum: 2147483647 example: 42 type: number - name: incidentId required: true in: path description: >- The incident ID from the incident history of the third party service. A string, since it can exceed the safe integer range. schema: pattern: /^\d{1,20}$/ example: '355758443503112192' type: string responses: '200': description: '' content: application/json: schema: $ref: >- #/components/schemas/MonitorThirdPartyServiceIncidentActivityLogDto default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: Get the activity log of a third party service incident tags: - Monitors /monitors/{id}: get: description: Get a monitor details by ID operationId: MonitorsController_get parameters: - name: id required: true in: path schema: type: number responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/MonitorDto' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: Get a monitor by ID tags: - Monitors patch: operationId: MonitorsController_update parameters: - name: id required: true in: path schema: type: number requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateMonitorDto' responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/MonitorDto' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: Update a monitor tags: - Monitors delete: operationId: MonitorsController_delete parameters: - name: id required: true in: path schema: type: number responses: '200': description: '' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: Delete a monitor tags: - Monitors /monitors/{id}/reset: post: description: >- Resets stats for a monitor. This includes the stats for incidents and alerts. operationId: MonitorsController_reset parameters: - name: id required: true in: path schema: type: number requestBody: required: false description: >- Optional empty body. Send Content-Type: application/json so the request is accepted. content: application/json: schema: type: object responses: '201': description: '' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: Reset stats for a monitor tags: - Monitors /monitors/{id}/pause: post: description: >- Pauses a single monitor by ID. The monitor will stop being checked until it is resumed. This operation is idempotent - pausing an already paused monitor will return successfully. operationId: MonitorsController_pause parameters: - name: id required: true in: path schema: type: number requestBody: required: false description: >- Optional empty body. Send Content-Type: application/json so the request is accepted. content: application/json: schema: type: object responses: '201': description: '' content: application/json: schema: $ref: '#/components/schemas/MonitorDto' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: Pause a monitor tags: - Monitors /monitors/{id}/start: post: description: >- Starts a paused monitor by ID. The monitor will resume being checked. This operation is idempotent - starting an already active monitor will return successfully. operationId: MonitorsController_start parameters: - name: id required: true in: path schema: type: number requestBody: required: false description: >- Optional empty body. Send Content-Type: application/json so the request is accepted. content: application/json: schema: type: object responses: '201': description: '' content: application/json: schema: $ref: '#/components/schemas/MonitorDto' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: Start a monitor tags: - Monitors /psps: get: description: List Public Status Pages operationId: PspController_list parameters: - name: limit required: false in: query description: >- Maximum number of status pages to return per page. Default: 50, Min: 1, Max: 200. schema: minimum: 1 maximum: 200 example: 50 type: number - name: cursor required: false in: query description: Cursor to paginate through PSPs schema: type: number responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/PspPaginationDto' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: List PSPs tags: - Public Status Pages post: description: >- Create a Public Status Page. Send `application/json` unless you are uploading a logo — it is the only content type that can express nested objects and arrays without ambiguity. Reserve `multipart/form-data` for requests that carry a `logo` file. In multipart, send arrays as a repeated field (`monitorIds=1&monitorIds=2`) or with the bracket suffix (`monitorIds[]=1`), and send `monitorIds[]=` with no value for an empty array. operationId: PspController_create parameters: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreatePsPDto' multipart/form-data: schema: $ref: '#/components/schemas/CreatePsPDto' responses: '201': description: '' content: application/json: schema: $ref: '#/components/schemas/PspDto' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: Create a PSP tags: - Public Status Pages /psps/{id}: get: description: Get a Public Status Page by ID operationId: PspController_get parameters: - name: id required: true in: path schema: type: number responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/PspDto' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: Get a PSP by ID tags: - Public Status Pages patch: description: >- Update a Public Status Page. Send `application/json` unless you are uploading a logo or icon — it is the only content type that can express nested objects and arrays without ambiguity. Reserve `multipart/form-data` for requests that carry a `logo` or `icon` file. In multipart, send arrays as a repeated field (`monitorIds=1&monitorIds=2`) or with the bracket suffix (`monitorIds[]=1`), and send `monitorIds[]=` with no value for an empty array. operationId: PspController_update parameters: - name: id required: true in: path schema: type: number requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdatePspDto' multipart/form-data: schema: $ref: '#/components/schemas/UpdatePspDto' responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/PspDto' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: Update a PSP tags: - Public Status Pages delete: description: Delete a Public Status Page operationId: PspController_delete parameters: - name: id required: true in: path schema: type: number responses: '200': description: '' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: Delete a PSP tags: - Public Status Pages /psps/{pspId}/announcements: get: description: >- List all announcements for a Public Status Page. Results are sorted by creation date (newest first) and can be filtered by status. operationId: PspAnnouncementsController_list parameters: - name: pspId required: true in: path description: ID of the Public Status Page schema: type: number - name: limit required: false in: query description: >- Maximum number of announcements to return per page. Default: 50, Min: 1, Max: 200. schema: minimum: 1 maximum: 200 example: 50 type: number - name: status required: false in: query description: Filter announcements by status schema: enum: - OFFLINE - PENDING - PUBLISHED - ARCHIVED type: string - name: cursor required: false in: query description: Cursor to paginate through announcements schema: type: number responses: '200': description: List of announcements content: application/json: schema: $ref: '#/components/schemas/PspAnnouncementPaginationResponseDto' '400': description: Invalid status value content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' '401': description: Unauthorized - missing or invalid authentication content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' '404': description: PSP not found content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' '429': description: Too Many Requests - rate limit exceeded content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: List announcements tags: - PSP Announcements post: description: Create a new announcement for a Public Status Page operationId: PspAnnouncementsController_create parameters: - name: pspId required: true in: path description: ID of the Public Status Page schema: type: number requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreatePspAnnouncementRequestDto' responses: '201': description: The announcement has been successfully created content: application/json: schema: $ref: '#/components/schemas/PspAnnouncementResponseDto' '400': description: Invalid request body content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' '401': description: Unauthorized - missing or invalid authentication content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' '403': description: Forbidden - no write permission content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' '404': description: PSP not found content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: Create an announcement tags: - PSP Announcements /psps/{pspId}/announcements/{id}: get: description: Retrieve a single announcement for a Public Status Page operationId: PspAnnouncementsController_get parameters: - name: pspId required: true in: path description: ID of the Public Status Page schema: type: number - name: id required: true in: path description: ID of the announcement schema: type: number responses: '200': description: The announcement content: application/json: schema: $ref: '#/components/schemas/PspAnnouncementResponseDto' '401': description: Unauthorized - missing or invalid authentication content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' '404': description: PSP or announcement not found content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' '429': description: Too Many Requests - rate limit exceeded content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: Get an announcement by ID tags: - PSP Announcements patch: description: Update an existing announcement for a Public Status Page operationId: PspAnnouncementsController_update parameters: - name: pspId required: true in: path description: ID of the Public Status Page schema: type: number - name: id required: true in: path description: ID of the announcement to update schema: type: number requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdatePspAnnouncementRequestDto' responses: '200': description: The announcement has been successfully updated content: application/json: schema: $ref: '#/components/schemas/PspAnnouncementResponseDto' '400': description: Invalid request body content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' '401': description: Unauthorized - missing or invalid authentication content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' '403': description: Forbidden - no write permission content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' '404': description: PSP or announcement not found content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: Update an announcement tags: - PSP Announcements delete: description: >- Permanently delete an announcement from a Public Status Page. This cannot be undone. operationId: PspAnnouncementsController_delete parameters: - name: pspId required: true in: path description: ID of the Public Status Page schema: type: number - name: id required: true in: path description: ID of the announcement to delete schema: type: number responses: '200': description: The announcement has been successfully deleted '401': description: Unauthorized - missing or invalid authentication content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' '403': description: Forbidden - no write permission content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' '404': description: PSP or announcement not found content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: Delete an announcement tags: - PSP Announcements /psps/{pspId}/announcements/{id}/pin: post: description: >- Pin an announcement to the Public Status Page. This operation is idempotent. operationId: PspAnnouncementsController_pin parameters: - name: pspId required: true in: path description: ID of the Public Status Page schema: type: number - name: id required: true in: path description: ID of the announcement to pin schema: type: number responses: '200': description: Announcement pinned successfully '401': description: Unauthorized - missing or invalid authentication content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' '403': description: Forbidden - no write permission content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' '404': description: PSP or announcement not found content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: Pin an announcement tags: - PSP Announcements /psps/{pspId}/announcements/{id}/unpin: post: description: >- Unpin an announcement from the Public Status Page. This operation is idempotent. operationId: PspAnnouncementsController_unpin parameters: - name: pspId required: true in: path description: ID of the Public Status Page schema: type: number - name: id required: true in: path description: ID of the announcement to unpin schema: type: number responses: '200': description: Announcement unpinned successfully '401': description: Unauthorized - missing or invalid authentication content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' '403': description: Forbidden - no write permission content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' '404': description: PSP or announcement not found content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: Unpin an announcement tags: - PSP Announcements /maintenance-windows: get: description: List maintenance windows operationId: MaintenanceWindowsController_list parameters: - name: limit required: false in: query description: >- Maximum number of maintenance windows to return per page. Default: 50, Min: 1, Max: 200. schema: minimum: 1 maximum: 200 example: 50 type: number - name: cursor required: false in: query schema: type: string responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/MaintenanceWindowPaginationDto' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: List maintenance windows tags: - Maintenance Windows post: description: Create a maintenance window operationId: MaintenanceWindowsController_create parameters: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateMaintenanceWindowDto' responses: '201': description: '' content: application/json: schema: $ref: '#/components/schemas/MaintenanceWindowDto' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: Create a maintenance window tags: - Maintenance Windows /maintenance-windows/{id}: get: description: Get a maintenance window by ID operationId: MaintenanceWindowsController_get parameters: - name: id required: true in: path description: ID of the maintenance window schema: type: number responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/MaintenanceWindowDto' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: Get a maintenance window by ID tags: - Maintenance Windows patch: description: Update a maintenance window operationId: MaintenanceWindowsController_update parameters: - name: id required: true in: path description: ID of the maintenance window schema: type: number requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateMaintenanceWindowDto' responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/MaintenanceWindowDto' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: Update a maintenance window tags: - Maintenance Windows delete: description: Delete a maintenance window operationId: MaintenanceWindowsController_delete parameters: - name: id required: true in: path schema: type: number responses: '204': description: '' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: Delete a maintenance window tags: - Maintenance Windows /user/me: get: description: Get current user operationId: UserController_getMe parameters: [] responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/UserDto' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: Get current user tags: - User /user/alert-contacts: get: description: Get alert contacts operationId: UserController_getAlertContacts parameters: [] responses: '200': description: '' content: application/json: schema: type: array items: $ref: '#/components/schemas/AlertContactDto' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: Get alert contacts tags: - User /user/all-alert-contacts: get: description: >- Get all alert contacts including personal, notify-only, and organization members alert contacts operationId: UserController_getAllAlertContacts parameters: [] responses: '200': description: '' content: application/json: schema: type: array items: $ref: '#/components/schemas/AllAlertContactDto' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: Get all alert contacts tags: - User /integrations: get: description: List Integrations operationId: IntegrationsController_list parameters: - name: limit required: false in: query description: >- Maximum number of integrations to return per page. Default: 50, Min: 1, Max: 200. schema: minimum: 1 maximum: 200 example: 50 type: number - name: includeOrgMembers required: false in: query description: >- When true and the caller owns an organization, include each active member's personal alert contacts (EmailToSms / Email / ProSms / Voice) in the response. Used by the v2 getAlertContacts proxy to restore the legacy org-roster scope. schema: type: boolean - name: cursor required: false in: query description: Cursor to paginate through the integrations schema: type: number responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/IntegrationPaginationDto' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: List Integrations tags: - Integrations post: description: Create an Integration operationId: IntegrationsController_create parameters: [] requestBody: required: true description: >- Integration to create. The `type` field selects which shape `data` must take — each integration type requires a different set of fields. content: application/json: schema: oneOf: - $ref: '#/components/schemas/CreateSlackIntegrationDto' - $ref: '#/components/schemas/CreateTelegramIntegrationDto' - $ref: '#/components/schemas/CreateMSTeamsIntegrationDto' - $ref: '#/components/schemas/CreateWebhookIntegrationDto' - $ref: '#/components/schemas/CreateZapierIntegrationDto' - $ref: '#/components/schemas/CreatePagerdutyIntegrationDto' - $ref: '#/components/schemas/CreateGoogleChatIntegrationDto' - $ref: '#/components/schemas/CreateDiscordIntegrationDto' - $ref: '#/components/schemas/CreateSplunkIntegrationDto' - $ref: '#/components/schemas/CreatePushBulletIntegrationDto' - $ref: '#/components/schemas/CreatePushoverIntegrationDto' - $ref: '#/components/schemas/CreateMattermostIntegrationDto' discriminator: propertyName: type mapping: Slack: '#/components/schemas/CreateSlackIntegrationDto' Telegram: '#/components/schemas/CreateTelegramIntegrationDto' MSTeams: '#/components/schemas/CreateMSTeamsIntegrationDto' Webhook: '#/components/schemas/CreateWebhookIntegrationDto' Zapier: '#/components/schemas/CreateZapierIntegrationDto' Pagerduty: '#/components/schemas/CreatePagerdutyIntegrationDto' GoogleChat: '#/components/schemas/CreateGoogleChatIntegrationDto' Discord: '#/components/schemas/CreateDiscordIntegrationDto' Splunk: '#/components/schemas/CreateSplunkIntegrationDto' PushBullet: '#/components/schemas/CreatePushBulletIntegrationDto' Pushover: '#/components/schemas/CreatePushoverIntegrationDto' Mattermost: '#/components/schemas/CreateMattermostIntegrationDto' responses: '201': description: '' content: application/json: schema: $ref: '#/components/schemas/IntegrationDto' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: Create an Integration tags: - Integrations /integrations/{id}: get: description: Get an integration details by ID operationId: IntegrationsController_get parameters: - name: id required: true in: path description: ID of the integration schema: type: number responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/IntegrationDto' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: Get an integration by ID tags: - Integrations patch: description: Update an Integration operationId: IntegrationsController_update parameters: - name: id required: true in: path description: ID of the integration schema: type: number requestBody: required: true description: >- Integration fields to update. The `type` field selects which shape `data` must take — each integration type accepts a different set of fields. content: application/json: schema: oneOf: - $ref: '#/components/schemas/UpdateSlackIntegrationDto' - $ref: '#/components/schemas/UpdateTelegramIntegrationDto' - $ref: '#/components/schemas/UpdateMSTeamsIntegrationDto' - $ref: '#/components/schemas/UpdateWebhookIntegrationDto' - $ref: '#/components/schemas/UpdateZapierIntegrationDto' - $ref: '#/components/schemas/UpdatePagerdutyIntegrationDto' - $ref: '#/components/schemas/UpdateGoogleChatIntegrationDto' - $ref: '#/components/schemas/UpdateDiscordIntegrationDto' - $ref: '#/components/schemas/UpdateSplunkIntegrationDto' - $ref: '#/components/schemas/UpdatePushBulletIntegrationDto' - $ref: '#/components/schemas/UpdatePushoverIntegrationDto' - $ref: '#/components/schemas/UpdateMattermostIntegrationDto' discriminator: propertyName: type mapping: Slack: '#/components/schemas/UpdateSlackIntegrationDto' Telegram: '#/components/schemas/UpdateTelegramIntegrationDto' MSTeams: '#/components/schemas/UpdateMSTeamsIntegrationDto' Webhook: '#/components/schemas/UpdateWebhookIntegrationDto' Zapier: '#/components/schemas/UpdateZapierIntegrationDto' Pagerduty: '#/components/schemas/UpdatePagerdutyIntegrationDto' GoogleChat: '#/components/schemas/UpdateGoogleChatIntegrationDto' Discord: '#/components/schemas/UpdateDiscordIntegrationDto' Splunk: '#/components/schemas/UpdateSplunkIntegrationDto' PushBullet: '#/components/schemas/UpdatePushBulletIntegrationDto' Pushover: '#/components/schemas/UpdatePushoverIntegrationDto' Mattermost: '#/components/schemas/UpdateMattermostIntegrationDto' responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/IntegrationDto' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: Update an Integration tags: - Integrations delete: description: Delete an Integration operationId: IntegrationsController_delete parameters: - name: id required: true in: path schema: type: number responses: '200': description: '' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: Delete an Integration tags: - Integrations /alert-contacts: get: description: >- List the personal alert contacts (email, Pro SMS, voice, iOS/Android push) owned by the authenticated user. Integrations are managed separately through /v3/integrations. operationId: AlertContactsController_list parameters: - name: limit required: false in: query description: >- Maximum number of alert contacts to return per page. Default: 50, Min: 1, Max: 200. schema: minimum: 1 maximum: 200 example: 50 type: number - name: cursor required: false in: query description: Cursor to paginate through the personal alert contacts schema: type: number responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/AlertContactPaginationDto' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: List personal alert contacts tags: - Alert Contacts post: description: >- Create a personal alert contact. Email and push (iOS/Android) are supported; Pro SMS and voice require phone verification and are not creatable here. operationId: AlertContactsController_create parameters: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreatePersonalAlertContactDto' responses: '201': description: '' content: application/json: schema: $ref: '#/components/schemas/AlertContactDto' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: Create a personal alert contact tags: - Alert Contacts /alert-contacts/{id}: get: description: Get a personal alert contact details by ID operationId: AlertContactsController_get parameters: - name: id required: true in: path description: ID of the personal alert contact schema: type: number responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/AlertContactDto' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: Get a personal alert contact by ID tags: - Alert Contacts patch: description: Update a personal alert contact operationId: AlertContactsController_update parameters: - name: id required: true in: path description: ID of the personal alert contact schema: type: number requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdatePersonalAlertContactDto' responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/AlertContactDto' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: Update a personal alert contact tags: - Alert Contacts delete: description: Delete a personal alert contact operationId: AlertContactsController_delete parameters: - name: id required: true in: path description: ID of the personal alert contact schema: type: number responses: '200': description: '' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: Delete a personal alert contact tags: - Alert Contacts /tags: get: description: >- Get a paginated list of tags for the authenticated user, sorted by ID in ascending order operationId: TagsController_getTags parameters: - name: limit required: false in: query description: >- Maximum number of tags to return per page. Default: 50, Min: 1, Max: 200. schema: minimum: 1 maximum: 200 example: 50 type: number - name: cursor required: false in: query description: Cursor for pagination schema: type: number responses: '200': description: User tags retrieved successfully content: application/json: schema: $ref: '#/components/schemas/SimpleTagPaginationDto' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: List user tags tags: - Tags /tags/{id}: delete: description: Delete a tag and remove it from all monitors operationId: TagsController_deleteTag parameters: - name: id required: true in: path description: Tag ID to delete schema: type: number responses: '204': description: Tag deleted successfully default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: Delete a tag tags: - Tags /third-party-providers: get: description: >- Search the third-party provider catalog by provider or component name. Each provider is identified by its numeric id, and isTracked tells whether the account already monitors it as a third-party service. Results are cached for a minute, so isTracked can lag by up to a minute after a third-party service is created or deleted. operationId: ThirdPartyProvidersController_search parameters: - name: search required: true in: query description: Free-text term matched against provider names and their components. schema: minLength: 1 maxLength: 100 example: github type: string responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/ThirdPartyProviderSearchDto' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: Search third-party providers tags: - Third-party providers /third-party-providers/{id}: get: description: >- Returns one third-party provider by its numeric id, with its current state and its component tree. Components carry their own id, name and status, and list their children. operationId: ThirdPartyProvidersController_getById parameters: - name: id required: true in: path description: The numeric id of the third-party provider. schema: example: '7' type: string responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/ThirdPartyProviderDetailDto' default: description: >- An error response. `code` is a stable error code; see "Error codes" in the API description. Fall back to the HTTP status for a code you do not know. content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseDto' security: - bearer: [] summary: Get a third-party provider tags: - Third-party providers info: title: UptimeRobot API description: >- ## Error codes Every error response carries a `code`. Branch on `code`, not on the message text. **Error code stability policy.** A listed code never changes meaning and is never removed; it can only be deprecated. Expect that new codes may be added at any time: when you receive a code you do not know, fall back to the HTTP status. | Code | HTTP status | Meaning | | --- | --- | --- | | `000-003` | 403 | The feature this request uses is not included in the plan of the account. The message names the feature. | | `000-004` | 404 | The requested resource does not exist or is not visible to you. | | `000-005` | 401 | The API key is missing, invalid or expired. | | `000-006` | 403 | The API key is valid but is not allowed to access this resource or perform this action. | | `000-009` | 422 | The request is well-formed but cannot be processed in the current state. The message says why. | | `000-012` | 400 | The request is malformed or a field is invalid. The message names what to fix. | | `000-013` | 413, 415, 500 | An unexpected server error (500). Also returned with any other status that has no generic code of its own, such as 413 (request body too large) or 415 (unsupported content type); branch on the HTTP status for those. A 500 may succeed if retried later. | | `000-014` | 429 | Too many requests. Wait for the number of seconds in the Retry-After header before retrying. | | `000-015` | 503 | Incident history is temporarily unavailable. Retry later rather than reading the absence of data as no downtime. | | `000-016` | 409 | The request conflicts with the current state of the resource, for example a duplicate. | | `000-017` | 502 | An upstream service we depend on failed. Retrying later may succeed. | | `000-018` | 503 | The service is temporarily unavailable. Retry later. | | `000-019` | 504 | An upstream service we depend on timed out. Retrying later may succeed. | | `003-001` | 401 | A request that changes data was refused. If the API key is read-only, use the main API key; if the user has no write rights in the account, an account admin has to grant them. | | `003-005` | 401 | The API key is missing or not valid: it was not sent, is mistyped, was regenerated, or belongs to a deleted account. | | `003-008` | 403 | The request needs an active subscription and the account has none. | | `009-001` | 403 | The monitor URL is blocklisted and cannot be monitored. | | `009-002` | 403 | The monitoring interval is shorter than the plan allows. Use a longer interval. | | `009-003` | 403 | The plan has reached its maximum number of monitors. | | `009-005` | 403 | The request uses settings that need a paid plan. | | `009-010` | 400 | The URL is not valid for this monitor type. | | `009-011` | 409 | A monitor like this one already exists on the account. | | `009-012` | 400 | The custom fields are invalid. The message names what to fix. | | `009-013` | 403 | Custom fields are not available on the plan. | | `009-014` | 403 | Monitoring from multiple regions is not available on the plan. | | `009-015` | 400 | A monitor cannot change its type after it is created. | | `009-016` | 400 | A config field is not supported for this monitor type. The message names the field. | | `009-017` | 400 | One or more alert contacts in the request cannot be assigned from this account. | | `009-019` | 400 | The storm protection setting id in the request does not exist. The message names the id. | | `009-020` | 400 | A storm protection threshold is out of range. The message says which one and the allowed range. | | `009-022` | 403 | Visual comparison monitoring is not available on the plan. | | `009-030` | 403 | Choosing the region a monitor runs from is not available on the plan. | | `009-033` | 400 | A config field is reserved for internal use and cannot be set. | | `009-034` | 400 | The API assertions are invalid. The message names what to fix. | | `009-036` | 400 | portAlertCondition can only be set on PORT monitors. | | `013-002` | 403 | The plan of the account allows no more status pages. Delete one or upgrade the plan. | | `013-006` | 400 | Monitors of this type cannot be added to a status page. The message lists the monitors. | | `013-008` | 403 | Manual monitor sorting on status pages is temporarily turned off. Choose another sort order. | | `021-001` | 409 | An integration with the same settings already exists. | | `021-002` | 403 | The integration is missing data it needs, so it cannot be created. Check the required fields for its type. | | `021-003` | 403 | This integration type is not available on the plan of the account. | | `021-005` | 404 | No integration has this ID. The ID may belong to a personal alert contact, which is managed under alert contacts. | | `021-047` | 404 | No personal alert contact has this ID. The ID may belong to an integration, which is managed under integrations. | | `026-006` | 403 | Third party service monitoring is not available on the Free plan. | | `026-008` | 400 | config.thirdPartyService.providerId is required to create a third party service. | | `026-009` | 400 | The third party service config is invalid. | | `026-017` | 400 | Third party services cannot be created through this endpoint. | | `026-018` | 400 | Third party services cannot be paused or started in bulk. The message lists the offending monitors. | | `026-019` | 403 | The plan has used up its allowance of third party services. | version: '3.0' contact: {} tags: - name: Monitors description: '' - name: Public Status Pages description: '' - name: Maintenance Windows description: '' - name: User description: '' - name: Integrations description: '' - name: Storm Protection description: '' servers: - url: https://api.uptimerobot.com/v3 components: securitySchemes: bearer: scheme: bearer bearerFormat: JWT type: http description: >- Enter your API token (without the "Bearer" prefix — it is added automatically). schemas: ApiErrorResponseDto: type: object properties: code: type: string description: >- A stable, machine-readable error code. See "Error codes" in the API description for each code, its meaning and the stability policy. x-extensible-enum: - 000-012 - 000-005 - 000-006 - 000-004 - 000-016 - 000-009 - 000-014 - 000-013 - 000-017 - 000-018 - 000-015 - 000-019 - 000-003 - 003-001 - 003-005 - 003-008 - 009-001 - 009-002 - 009-003 - 009-005 - 009-010 - 009-011 - 009-012 - 009-013 - 009-014 - 009-015 - 009-016 - 009-017 - 009-022 - 009-030 - 009-033 - 009-034 - 009-036 - 013-006 - 013-002 - 013-008 - 009-019 - 009-020 - 021-001 - 021-002 - 021-003 - 021-005 - 021-047 - 026-006 - 026-008 - 026-009 - 026-017 - 026-018 - 026-019 message: description: >- Human-readable error detail. An array of per-field messages for validation failures, a single string otherwise. oneOf: - type: string - type: array items: type: string statusCode: type: number description: The HTTP status code, present on validation failures. error: type: string description: The HTTP status text, present on validation failures. required: - code - message PublicBulkPauseDto: type: object properties: groupId: type: number minimum: 0 description: >- ID of the monitor group to filter by (0 = default group / ungrouped monitors). At least one of groupId or tagId must be provided. example: 1 tagId: type: number minimum: 1 description: >- ID of the tag to filter by. At least one of groupId or tagId must be provided. When both groupId and tagId are specified, only monitors matching both filters are affected. example: 42 BulkOperationResponseDto: type: object properties: results: type: array items: type: object properties: monitorId: type: number monitorName: type: string status: type: string enum: - success - error error: type: string code: type: string required: - monitorId - status totalSuccess: type: number totalError: type: number required: - results - totalSuccess - totalError PublicBulkStartDto: type: object properties: groupId: type: number minimum: 0 description: >- ID of the monitor group to filter by (0 = default group / ungrouped monitors). At least one of groupId or tagId must be provided. example: 1 tagId: type: number minimum: 1 description: >- ID of the tag to filter by. At least one of groupId or tagId must be provided. When both groupId and tagId are specified, only monitors matching both filters are affected. example: 42 RegionalDataDto: type: object properties: REGION: minItems: 1 type: array items: type: string enum: - na - eu - as - oc MANUAL_SELECTED: type: boolean description: >- Whether the customer chose REGION explicitly. On update, false means the region was not customer-chosen, so REGION is ignored and the monitor keeps the region it already runs from. Send true to change the region, or omit this field. THRESHOLD: type: object additionalProperties: false properties: na: type: number eu: type: number as: type: number oc: type: number description: Regional threshold values in milliseconds mapped by region code example: na: 5000 eu: 6000 as: 7000 oc: 8000 required: - REGION PublicBulkUpdateDto: type: object properties: groupId: type: number minimum: 0 description: >- ID of the monitor group to filter by (0 = default group / ungrouped monitors). At least one of groupId or tagId must be provided. example: 1 tagId: type: number minimum: 1 description: >- ID of the tag to filter by. At least one of groupId or tagId must be provided. When both groupId and tagId are specified, only monitors matching both filters are affected. example: 42 interval: type: number minimum: 15 description: Monitoring interval in seconds example: 60 timeout: type: number minimum: 0 maximum: 60 description: Timeout in seconds example: 30 gracePeriod: type: number minimum: 0 maximum: 86400 description: Grace period in seconds example: 300 checkSSLErrors: type: boolean description: Whether to check for SSL errors domainExpirationReminder: type: boolean description: Whether to enable domain expiration reminder sslExpirationReminder: type: boolean description: Whether to enable SSL expiration reminder responseTimeThreshold: type: number minimum: 0 maximum: 60000 description: Response time threshold in milliseconds regionalData: description: Regional data configuration allOf: - $ref: '#/components/schemas/RegionalDataDto' customFields: type: object description: >- Custom key-value metadata to set on all monitors in the group. Max 20 keys. Keys: alphanumeric + underscore + hyphen, max 64 chars. Values: max 255 chars. Paid plans only. example: environment: production team: platform IncidentSummaryPaginationDto: type: object properties: nextLink: type: string nullable: true data: type: array items: type: object properties: id: type: string status: {} type: {} cause: type: number nullable: true reason: type: string monitor: type: object properties: id: type: number friendlyName: type: string nullable: true required: - id - friendlyName commentsCount: type: number startedAt: {} resolvedAt: nullable: true duration: type: number nullable: true includeInReports: type: boolean required: - id - status - type - cause - reason - monitor - commentsCount - startedAt - resolvedAt - duration - includeInReports required: - nextLink - data IncidentDetailDto: type: object properties: id: type: string status: {} cause: type: number reason: type: string duration: type: number minimum: 0 exclusiveMinimum: false nullable: true startedAt: oneOf: - {} - type: string resolvedAt: oneOf: - {} - type: string nullable: true rootCause: type: object properties: url: type: string nullable: true requestHeaders: type: object additionalProperties: {} nullable: true responseHeaders: type: object additionalProperties: {} nullable: true httpResponseCode: type: number nullable: true responseDownloadUrl: type: string nullable: true assertionDiagnostics: type: object properties: version: type: number minimum: 1 maximum: 1 logic: type: string enum: - AND - OR summary: type: object properties: passed: type: boolean total: type: integer minimum: 0 exclusiveMinimum: false passedCount: type: integer minimum: 0 exclusiveMinimum: false failedCount: type: integer minimum: 0 exclusiveMinimum: false required: - passed - total - passedCount - failedCount results: type: array items: type: object properties: index: type: integer minimum: 0 exclusiveMinimum: false property: type: string source: type: string enum: - body_json - header - status_code - body_text selector: type: string comparison: type: string enum: - equals - not_equals - contains - not_contains - greater_than - less_than - is_null - is_not_null - is_string - is_number - is_boolean - is_array - is_object - is_empty - is_not_empty - length_equals - length_not_equals - length_greater_than - length_less_than - exists - not_exists x-enumNames: - EQUALS - NOT_EQUALS - CONTAINS - NOT_CONTAINS - GREATER_THAN - LESS_THAN - IS_NULL - IS_NOT_NULL - IS_STRING - IS_NUMBER - IS_BOOLEAN - IS_ARRAY - IS_OBJECT - IS_EMPTY - IS_NOT_EMPTY - LENGTH_EQUALS - LENGTH_NOT_EQUALS - LENGTH_GREATER_THAN - LENGTH_LESS_THAN - EXISTS - NOT_EXISTS passed: type: boolean actualTypes: type: array items: type: string enum: - missing - 'null' - boolean - number - string - array - object actualSummary: type: string targetType: type: string enum: - missing - 'null' - boolean - number - string - array - object targetSummary: type: string selectedCount: type: integer minimum: 0 exclusiveMinimum: false failedCount: type: integer minimum: 0 exclusiveMinimum: false failingSamples: type: array items: type: object properties: path: type: string actualSummary: type: string required: - path - actualSummary failureReason: type: string enum: - no_match - value_present - response_not_json - type_mismatch - comparison_failed - invalid_jsonpath - too_many_matches - evaluation_limit_exceeded - unsupported_value_type - diagnostic_payload_truncated truncated: type: boolean redacted: type: boolean required: - index - property - source - comparison - passed - truncated - redacted required: - version - logic - summary - results nullable: true required: - url - requestHeaders - responseHeaders - httpResponseCode - responseDownloadUrl nullable: true required: - id - status - cause - reason - duration - startedAt - resolvedAt - rootCause PublicIncidentCommentsPaginationDto: type: object properties: nextLink: type: string nullable: true data: type: array items: type: object properties: id: type: number minimum: 0 exclusiveMinimum: false comment: type: string publishOnStatusPage: type: boolean created: oneOf: - {} - type: string user: type: object properties: id: type: number fullName: type: string required: - id - fullName required: - id - comment - publishOnStatusPage - created - user required: - nextLink - data ActivityLogResponseDto: type: object properties: nextLink: type: string nullable: true data: type: array items: oneOf: - type: object properties: type: type: string enum: - STATUS_UPDATE date: oneOf: - {} - type: string region: type: string enum: - na - eu - as - oc x-enumNames: - NorthAmerica - Europe - Asia - Oceania nullable: true incidentStatus: type: string alertLogType: type: string cause: type: number reason: type: string remoteNode: type: object properties: id: type: number status: type: boolean IP: type: string IPv6: type: string nullable: true city: type: string country: type: string privateIP: type: string nullable: true required: - id - status - IP - IPv6 - city - country - privateIP responseTime: type: number required: - type - date - type: object properties: type: type: string enum: - COMMENT date: oneOf: - {} - type: string region: type: string enum: - na - eu - as - oc x-enumNames: - NorthAmerica - Europe - Asia - Oceania nullable: true commentId: type: number commentFullName: type: string commentEmail: type: string required: - type - date - commentId - type: object properties: type: type: string enum: - NOTIFICATION date: oneOf: - {} - type: string region: type: string enum: - na - eu - as - oc x-enumNames: - NorthAmerica - Europe - Asia - Oceania nullable: true sentToFullName: type: string sentToValue: type: string notificationType: type: string notificationStatus: type: string enum: - NOT_DELIVERED - SUCCESS x-enumNames: - NOT_DELIVERED - SUCCESS required: - type - date required: - nextLink - data PublicSentAlertsResponseDto: type: object properties: nextLink: type: string nullable: true data: type: array items: type: object properties: timestamp: type: string recipientName: type: string recipientValue: type: string channelType: type: string status: type: string enum: - SUCCESS - NOT_DELIVERED required: - timestamp - recipientName - recipientValue - channelType - status required: - nextLink - data UpdateIncidentCommentRequestDto: type: object properties: content: type: string maxLength: 10000 description: Updated content of the comment example: Issue has been identified and fix is in progress... publishOnStatusPage: type: boolean description: Whether the comment is published on the status page example: true default: false required: - content IncidentCommentDto: type: object properties: id: type: number minimum: 0 exclusiveMinimum: false comment: type: string publishOnStatusPage: type: boolean created: oneOf: - {} - type: string user: type: object properties: id: type: number fullName: type: string required: - id - fullName required: - id - comment - publishOnStatusPage - created - user CreateIncidentCommentRequestDto: type: object properties: content: type: string maxLength: 10000 description: Content of the comment example: Investigating the issue... publishOnStatusPage: type: boolean description: Whether the comment is published on the status page example: true default: false required: - content CreateMonitorGroupDto: type: object properties: name: type: string maxLength: 255 description: Name of the monitor group example: Production Monitors monitorIds: description: List of monitor IDs to be assigned to this group example: - 1 - 2 - 3 type: array items: type: number minimum: 1 groupIds: description: List of group IDs whose monitors should be moved to this new group example: - 1 - 2 type: array items: type: number minimum: 0 required: - name MonitorGroupDto: type: object properties: id: type: number minimum: 0 exclusiveMinimum: false name: type: string minLength: 1 maxLength: 255 createdAt: oneOf: - {} - type: string updatedAt: oneOf: - {} - type: string required: - id - name - createdAt - updatedAt MonitorGroupPaginationDto: type: object properties: data: type: array items: type: object properties: id: type: number minimum: 0 exclusiveMinimum: false name: type: string minLength: 1 maxLength: 255 createdAt: oneOf: - {} - type: string updatedAt: oneOf: - {} - type: string required: - id - name - createdAt - updatedAt nextLink: type: string nullable: true required: - data - nextLink UpdateMonitorGroupDto: type: object properties: name: type: string maxLength: 255 description: Name of the monitor group example: Production Monitors StormProtectionSettingsResponseDto: type: object properties: isEnabled: type: boolean thresholdType: type: string enum: - count - percentage x-enumNames: - Count - Percentage thresholdValue: type: integer windowMinutes: type: integer config: type: object properties: groupPooling: type: boolean required: - groupPooling required: - isEnabled - thresholdType - thresholdValue - windowMinutes - config UpdateStormProtectionConfigDto: type: object properties: groupPooling: type: boolean description: >- When enabled, suppressed alerts are pooled into a single grouped notification. UpdateStormProtectionDto: type: object properties: isEnabled: type: boolean description: Enable or disable storm protection (alert grouping). thresholdType: enum: - count - percentage type: string description: How the threshold is measured. thresholdValue: type: number minimum: 1 maximum: 1000000 description: >- Threshold that triggers grouping. Accepts 1-1000000; the stricter rule (>= 2 for "count", <= 100 for "percentage") is enforced server-side by domain validation. windowMinutes: type: number minimum: 1 maximum: 15 description: Rolling time window in minutes (1-15). config: $ref: '#/components/schemas/UpdateStormProtectionConfigDto' MonitorPaginationDto: type: object properties: nextLink: type: string nullable: true data: type: array items: type: object properties: type: {} interval: type: number minimum: 15 exclusiveMinimum: false maximum: 2678400 exclusiveMaximum: false sslBrand: type: string nullable: true sslExpiryDateTime: oneOf: - {} - type: string nullable: true domainExpireDate: oneOf: - {} - type: string nullable: true checkSSLErrors: type: boolean sslExpirationReminder: type: boolean nullable: true domainExpirationReminder: type: boolean nullable: true followRedirections: type: boolean authType: nullable: true httpUsername: type: string httpPassword: type: string customHttpHeaders: type: object additionalProperties: oneOf: - type: string - type: number nullable: true httpMethodType: nullable: true successHttpResponseCodes: type: array items: type: string timeout: type: number minimum: 0 exclusiveMinimum: false maximum: 90 exclusiveMaximum: false nullable: true postValueData: oneOf: - oneOf: - oneOf: - type: string - type: number - type: object additionalProperties: {} - type: array items: {} nullable: true postValueType: type: string enum: - KEY_VALUE - RAW_JSON x-enumNames: - KEY_VALUE - RAW_JSON nullable: true port: type: number minimum: 0 exclusiveMinimum: false maximum: 65535 exclusiveMaximum: false nullable: true portAlertCondition: {} gracePeriod: type: number minimum: 0 exclusiveMinimum: false maximum: 86400 exclusiveMaximum: false nullable: true keywordValue: type: string minLength: 0 maxLength: 500 nullable: true keywordCaseType: oneOf: - type: number minimum: 0 maximum: 0 - type: number minimum: 1 maximum: 1 nullable: true keywordType: nullable: true responseTimeThreshold: type: number config: type: object properties: dnsRecords: type: object properties: CNAME: type: array items: type: string MX: type: array items: type: string NS: type: array items: type: string A: type: array items: type: string AAAA: type: array items: type: string TXT: type: array items: type: string SRV: type: array items: type: string PTR: type: array items: type: string SOA: type: array items: type: string SPF: type: array items: type: string DNSKEY: type: array items: type: string DS: type: array items: type: string NSEC: type: array items: type: string NSEC3: type: array items: type: string apiAssertions: oneOf: - type: object properties: logic: type: string enum: - AND - OR checks: type: array items: type: object properties: property: type: string comparison: type: string enum: - equals - not_equals - contains - not_contains - greater_than - less_than - is_null - is_not_null - is_string - is_number - is_boolean - is_array - is_object - is_empty - is_not_empty - length_equals - length_not_equals - length_greater_than - length_less_than - exists - not_exists x-enumNames: - EQUALS - NOT_EQUALS - CONTAINS - NOT_CONTAINS - GREATER_THAN - LESS_THAN - IS_NULL - IS_NOT_NULL - IS_STRING - IS_NUMBER - IS_BOOLEAN - IS_ARRAY - IS_OBJECT - IS_EMPTY - IS_NOT_EMPTY - LENGTH_EQUALS - LENGTH_NOT_EQUALS - LENGTH_GREATER_THAN - LENGTH_LESS_THAN - EXISTS - NOT_EXISTS target: {} id: oneOf: - type: string maxLength: 128 - type: integer minimum: -9007199254740991 exclusiveMinimum: false maximum: 9007199254740991 exclusiveMaximum: false index: type: integer minimum: 0 exclusiveMinimum: false maximum: 9007199254740991 exclusiveMaximum: false required: - property - comparison required: - logic - checks - type: object properties: {} sslExpirationPeriodDays: type: array maxItems: 10 items: type: integer minimum: 0 exclusiveMinimum: false maximum: 365 exclusiveMaximum: false udp: type: object properties: payload: type: string packetLossThreshold: type: number required: - packetLossThreshold ipVersion: type: string enum: - ipv4Only - ipv6Only applicationErrorRetries: type: integer minimum: 0 exclusiveMinimum: false maximum: 3 exclusiveMaximum: false visualComparison: type: object properties: sensitivityThreshold: type: integer minimum: 0 exclusiveMinimum: false maximum: 100 exclusiveMaximum: false viewport: type: string enum: - desktop - mobile areaCoordinates: type: object properties: percentX: type: number minimum: 0 exclusiveMinimum: false maximum: 100 exclusiveMaximum: false percentY: type: number minimum: 0 exclusiveMinimum: false maximum: 100 exclusiveMaximum: false percentWidth: type: number minimum: 0 exclusiveMinimum: false maximum: 100 exclusiveMaximum: false percentHeight: type: number minimum: 0 exclusiveMinimum: false maximum: 100 exclusiveMaximum: false required: - percentX - percentY - percentWidth - percentHeight refreshBaseline: type: boolean userBaselinePath: type: string lastCheckBaselinePath: type: string required: - sensitivityThreshold - viewport thirdPartyService: type: object properties: trackedComponentIds: type: array items: type: integer nullable: true currentState: type: string enum: - operational - minor - major - maintenance needsReview: type: boolean notify: type: object properties: severity: type: string enum: - all - major - none incrementalUpdates: type: boolean required: - severity - incrementalUpdates maintenanceNotificationsEnabled: type: boolean providerId: type: integer nullable: true required: - currentState - needsReview - notify - providerId nullable: true regionalData: type: object properties: REGION: type: array items: type: string enum: - na - eu - as - oc x-enumNames: - NorthAmerica - Europe - Asia - Oceania MANUAL_SELECTED: type: boolean INFRASTRUCTURE: type: string enum: - Legacy - New x-enumNames: - Legacy - New THRESHOLD: type: object additionalProperties: type: number minimum: 0 exclusiveMinimum: false maximum: 60000 exclusiveMaximum: false required: - REGION heartbeatUrl: description: >- Complete heartbeat ping URL for HEARTBEAT monitors; null for every other type type: string nullable: true maintenanceWindows: type: array items: type: object properties: id: type: number minimum: 0 exclusiveMinimum: false userId: type: number minimum: 0 exclusiveMinimum: false name: type: string minLength: 3 interval: type: string enum: - once - daily - weekly - monthly x-enumNames: - once - daily - weekly - monthly date: type: string nullable: true time: type: string pattern: ^(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d$ duration: type: number minimum: 1 exclusiveMinimum: false autoAddMonitors: type: boolean monitorIds: type: array items: type: number days: type: array items: type: number status: type: string enum: - active - paused x-enumNames: - active - paused created: oneOf: - {} - type: string required: - id - userId - name - interval - date - time - duration - autoAddMonitors - monitorIds - days - status - created psps: type: array items: type: object properties: id: type: integer minimum: 0 exclusiveMinimum: false friendlyName: type: string minLength: 1 customDomain: type: string nullable: true isPasswordSet: type: boolean monitorIds: type: array items: type: number nullable: true tagIds: type: array items: type: number monitorsCount: type: number nullable: true status: {} urlKey: type: string minLength: 1 homepageLink: type: string minLength: 3 nullable: true gaCode: type: string nullable: true shareAnalyticsConsent: type: boolean useSmallCookieConsentModal: type: boolean icon: type: string nullable: true noIndex: type: boolean logo: type: string nullable: true hideUrlLinks: type: boolean subscription: type: boolean showCookieBar: type: boolean pinnedAnnouncementId: type: integer minimum: 0 exclusiveMinimum: false nullable: true customSettings: type: object properties: font: type: object properties: family: type: string nullable: true required: - family nullable: true page: type: object properties: layout: type: string theme: type: string enum: - light - dark density: type: string enum: - normal - compact showMonitorsUnderGroups: type: boolean colors: type: object properties: main: type: string nullable: true text: type: string nullable: true link: type: string nullable: true required: - main - text - link features: type: object properties: showBars: type: string enum: - 'true' - 'false' nullable: true showUptimePercentage: type: string enum: - 'true' - 'false' nullable: true enableFloatingStatus: type: string enum: - 'true' - 'false' nullable: true showOverallUptime: type: string enum: - 'true' - 'false' nullable: true showOutageUpdates: type: string enum: - 'true' - 'false' nullable: true showOutageDetails: type: string enum: - 'true' - 'false' nullable: true enableDetailsPage: type: string enum: - 'true' - 'false' nullable: true showMonitorURL: type: string enum: - 'true' - 'false' nullable: true hidePausedMonitors: type: string enum: - 'true' - 'false' nullable: true required: - showUptimePercentage nullable: true required: - id - friendlyName - customDomain - isPasswordSet - monitorIds - tagIds - monitorsCount - status - urlKey - homepageLink - gaCode - shareAnalyticsConsent - useSmallCookieConsentModal - icon - noIndex - logo - hideUrlLinks - subscription - showCookieBar - pinnedAnnouncementId - customSettings id: type: number minimum: 0 exclusiveMinimum: false friendlyName: type: string minLength: 1 status: {} url: type: string nullable: true currentStateDuration: type: number lastIncidentId: type: string nullable: true userId: type: number minimum: 0 exclusiveMinimum: false tags: type: array items: type: object properties: id: type: number minimum: 0 exclusiveMinimum: false name: type: string minLength: 1 color: type: string minLength: 1 monitors: type: array items: type: object properties: id: type: number minimum: 0 exclusiveMinimum: false friendlyName: type: string minLength: 1 status: {} url: type: string required: - id - friendlyName - status - url required: - id - name - color assignedAlertContacts: type: array items: type: object properties: alertContactId: type: number threshold: type: number minimum: 0 exclusiveMinimum: false recurrence: type: number minimum: 0 exclusiveMinimum: false required: - alertContactId - threshold - recurrence lastIncident: type: object properties: id: type: string status: {} cause: type: number reason: type: string startedAt: oneOf: - {} - type: string duration: type: number nullable: true required: - id - status - cause - reason - startedAt - duration nullable: true lastDayUptimes: type: object properties: bucketSize: type: number totalChanges: type: integer minimum: 0 exclusiveMinimum: false histogram: type: array items: type: object properties: timestamp: type: number uptime: type: number minimum: 0 exclusiveMinimum: false changes: type: integer minimum: 0 exclusiveMinimum: false required: - timestamp - uptime required: - bucketSize - histogram createDateTime: oneOf: - {} - type: string apiKey: type: string nullable: true groupId: type: number nullable: true customFields: type: object additionalProperties: type: string nullable: true required: - type - interval - sslBrand - sslExpiryDateTime - domainExpireDate - checkSSLErrors - sslExpirationReminder - domainExpirationReminder - followRedirections - authType - customHttpHeaders - httpMethodType - successHttpResponseCodes - timeout - postValueData - postValueType - port - gracePeriod - keywordValue - keywordCaseType - keywordType - responseTimeThreshold - config - regionalData - heartbeatUrl - maintenanceWindows - psps - id - friendlyName - status - url - currentStateDuration - lastIncidentId - userId - tags - assignedAlertContacts - lastDayUptimes - createDateTime - apiKey required: - nextLink - data UptimeStatsDto: type: object properties: overallUptime: type: number totalIncidents: type: number totalTimeWithoutIncidents: type: number affectedMonitors: type: number logs: type: array items: type: object properties: type: type: string enum: - DOWNTIME - SLOW_RESPONSE datetime: oneOf: - {} - type: string duration: type: number nullable: true required: - type - datetime - duration mtbf: type: number nullable: true required: - overallUptime - totalIncidents - totalTimeWithoutIncidents - affectedMonitors - mtbf MonitorUptimeStatsDto: type: object properties: uptime: description: Uptime percentage (0-100) type: number total_downtime_seconds: description: Total downtime duration in seconds type: number incident_count: description: Number of incidents in the period type: number mtbf: description: >- Mean Time Between Failures in seconds, or null if no incidents occurred type: number nullable: true from: description: Start of the date range (ISO 8601) type: string to: description: End of the date range (ISO 8601) type: string required: - uptime - total_downtime_seconds - incident_count - mtbf - from - to MonitorResponseTimeStatsByRegionDto: type: object properties: na: description: Response time statistics for North America region type: object properties: summary: description: Summary statistics for the response time data type: object properties: min: description: Minimum response time in milliseconds type: number nullable: true max: description: Maximum response time in milliseconds type: number nullable: true avg: description: Average response time in milliseconds type: number nullable: true required: - min - max - avg data_points: description: Number of data points used to calculate the statistics type: number from: description: Start of the date range (ISO 8601) type: string to: description: End of the date range (ISO 8601) type: string time_series: description: Optional time series data points type: array items: type: object properties: timestamp: description: ISO 8601 timestamp for the data point type: string value: description: Response time value in milliseconds type: number required: - timestamp - value required: - summary - data_points - from - to nullable: true eu: description: Response time statistics for Europe region type: object properties: summary: description: Summary statistics for the response time data type: object properties: min: description: Minimum response time in milliseconds type: number nullable: true max: description: Maximum response time in milliseconds type: number nullable: true avg: description: Average response time in milliseconds type: number nullable: true required: - min - max - avg data_points: description: Number of data points used to calculate the statistics type: number from: description: Start of the date range (ISO 8601) type: string to: description: End of the date range (ISO 8601) type: string time_series: description: Optional time series data points type: array items: type: object properties: timestamp: description: ISO 8601 timestamp for the data point type: string value: description: Response time value in milliseconds type: number required: - timestamp - value required: - summary - data_points - from - to nullable: true as: description: Response time statistics for Asia region type: object properties: summary: description: Summary statistics for the response time data type: object properties: min: description: Minimum response time in milliseconds type: number nullable: true max: description: Maximum response time in milliseconds type: number nullable: true avg: description: Average response time in milliseconds type: number nullable: true required: - min - max - avg data_points: description: Number of data points used to calculate the statistics type: number from: description: Start of the date range (ISO 8601) type: string to: description: End of the date range (ISO 8601) type: string time_series: description: Optional time series data points type: array items: type: object properties: timestamp: description: ISO 8601 timestamp for the data point type: string value: description: Response time value in milliseconds type: number required: - timestamp - value required: - summary - data_points - from - to nullable: true oc: description: Response time statistics for Oceania region type: object properties: summary: description: Summary statistics for the response time data type: object properties: min: description: Minimum response time in milliseconds type: number nullable: true max: description: Maximum response time in milliseconds type: number nullable: true avg: description: Average response time in milliseconds type: number nullable: true required: - min - max - avg data_points: description: Number of data points used to calculate the statistics type: number from: description: Start of the date range (ISO 8601) type: string to: description: End of the date range (ISO 8601) type: string time_series: description: Optional time series data points type: array items: type: object properties: timestamp: description: ISO 8601 timestamp for the data point type: string value: description: Response time value in milliseconds type: number required: - timestamp - value required: - summary - data_points - from - to nullable: true all: description: >- Response time statistics averaged across all regions, combined with legacy data when available type: object properties: summary: description: Summary statistics for the response time data type: object properties: min: description: Minimum response time in milliseconds type: number nullable: true max: description: Maximum response time in milliseconds type: number nullable: true avg: description: Average response time in milliseconds type: number nullable: true required: - min - max - avg data_points: description: Number of data points used to calculate the statistics type: number from: description: Start of the date range (ISO 8601) type: string to: description: End of the date range (ISO 8601) type: string time_series: description: Optional time series data points type: array items: type: object properties: timestamp: description: ISO 8601 timestamp for the data point type: string value: description: Response time value in milliseconds type: number required: - timestamp - value required: - summary - data_points - from - to nullable: true from: description: Start of the date range (ISO 8601) type: string to: description: End of the date range (ISO 8601) type: string required: - na - eu - as - oc - all - from - to MonitorResponseTimeStatsDto: type: object properties: summary: description: Summary statistics for the response time data type: object properties: min: description: Minimum response time in milliseconds type: number nullable: true max: description: Maximum response time in milliseconds type: number nullable: true avg: description: Average response time in milliseconds type: number nullable: true required: - min - max - avg data_points: description: Number of data points used to calculate the statistics type: number from: description: Start of the date range (ISO 8601) type: string to: description: End of the date range (ISO 8601) type: string time_series: description: Optional time series data points type: array items: type: object properties: timestamp: description: ISO 8601 timestamp for the data point type: string value: description: Response time value in milliseconds type: number required: - timestamp - value required: - summary - data_points - from - to MonitorThirdPartyServiceStatusDto: type: object properties: currentState: type: string enum: - operational - minor - major - maintenance required: - currentState MonitorThirdPartyServiceIncidentsDto: type: object properties: data: type: array items: type: object properties: id: type: string title: type: string severity: type: string enum: - minor - major resolved: type: boolean startedAt: type: string resolvedAt: type: string nullable: true updates: type: array items: type: object properties: status: type: string description: type: string createdAt: type: string required: - status - description - createdAt required: - id - title - severity - resolved - startedAt - resolvedAt - updates required: - data MonitorThirdPartyServiceIncidentDetailDto: type: object properties: id: type: string title: type: string severity: type: string enum: - minor - major resolved: type: boolean startedAt: type: string resolvedAt: type: string nullable: true updates: type: array items: type: object properties: status: type: string description: type: string createdAt: type: string required: - status - description - createdAt description: type: string nullable: true affectedComponents: type: array items: type: object properties: id: type: integer name: type: string required: - id - name required: - id - title - severity - resolved - startedAt - resolvedAt - updates - description - affectedComponents MonitorThirdPartyServiceIncidentActivityLogDto: type: object properties: data: type: array items: type: object properties: channel: type: string channelIdentifier: type: string alertContactName: type: string status: type: string enum: - SUCCESS - NOT_DELIVERED timestamp: type: string required: - channel - channelIdentifier - alertContactName - status - timestamp required: - data MonitorDto: type: object properties: type: {} interval: type: number minimum: 15 exclusiveMinimum: false maximum: 2678400 exclusiveMaximum: false sslBrand: type: string nullable: true sslExpiryDateTime: oneOf: - {} - type: string nullable: true domainExpireDate: oneOf: - {} - type: string nullable: true checkSSLErrors: type: boolean sslExpirationReminder: type: boolean nullable: true domainExpirationReminder: type: boolean nullable: true followRedirections: type: boolean authType: nullable: true httpUsername: type: string httpPassword: type: string customHttpHeaders: type: object additionalProperties: oneOf: - type: string - type: number nullable: true httpMethodType: nullable: true successHttpResponseCodes: type: array items: type: string timeout: type: number minimum: 0 exclusiveMinimum: false maximum: 90 exclusiveMaximum: false nullable: true postValueData: oneOf: - oneOf: - oneOf: - type: string - type: number - type: object additionalProperties: {} - type: array items: {} nullable: true postValueType: type: string enum: - KEY_VALUE - RAW_JSON x-enumNames: - KEY_VALUE - RAW_JSON nullable: true port: type: number minimum: 0 exclusiveMinimum: false maximum: 65535 exclusiveMaximum: false nullable: true portAlertCondition: {} gracePeriod: type: number minimum: 0 exclusiveMinimum: false maximum: 86400 exclusiveMaximum: false nullable: true keywordValue: type: string minLength: 0 maxLength: 500 nullable: true keywordCaseType: oneOf: - type: number minimum: 0 maximum: 0 - type: number minimum: 1 maximum: 1 nullable: true keywordType: nullable: true responseTimeThreshold: type: number config: type: object properties: dnsRecords: type: object properties: CNAME: type: array items: type: string MX: type: array items: type: string NS: type: array items: type: string A: type: array items: type: string AAAA: type: array items: type: string TXT: type: array items: type: string SRV: type: array items: type: string PTR: type: array items: type: string SOA: type: array items: type: string SPF: type: array items: type: string DNSKEY: type: array items: type: string DS: type: array items: type: string NSEC: type: array items: type: string NSEC3: type: array items: type: string apiAssertions: oneOf: - type: object properties: logic: type: string enum: - AND - OR checks: type: array items: type: object properties: property: type: string comparison: type: string enum: - equals - not_equals - contains - not_contains - greater_than - less_than - is_null - is_not_null - is_string - is_number - is_boolean - is_array - is_object - is_empty - is_not_empty - length_equals - length_not_equals - length_greater_than - length_less_than - exists - not_exists x-enumNames: - EQUALS - NOT_EQUALS - CONTAINS - NOT_CONTAINS - GREATER_THAN - LESS_THAN - IS_NULL - IS_NOT_NULL - IS_STRING - IS_NUMBER - IS_BOOLEAN - IS_ARRAY - IS_OBJECT - IS_EMPTY - IS_NOT_EMPTY - LENGTH_EQUALS - LENGTH_NOT_EQUALS - LENGTH_GREATER_THAN - LENGTH_LESS_THAN - EXISTS - NOT_EXISTS target: {} id: oneOf: - type: string maxLength: 128 - type: integer minimum: -9007199254740991 exclusiveMinimum: false maximum: 9007199254740991 exclusiveMaximum: false index: type: integer minimum: 0 exclusiveMinimum: false maximum: 9007199254740991 exclusiveMaximum: false required: - property - comparison required: - logic - checks - type: object properties: {} sslExpirationPeriodDays: type: array maxItems: 10 items: type: integer minimum: 0 exclusiveMinimum: false maximum: 365 exclusiveMaximum: false udp: type: object properties: payload: type: string packetLossThreshold: type: number required: - packetLossThreshold ipVersion: type: string enum: - ipv4Only - ipv6Only applicationErrorRetries: type: integer minimum: 0 exclusiveMinimum: false maximum: 3 exclusiveMaximum: false visualComparison: type: object properties: sensitivityThreshold: type: integer minimum: 0 exclusiveMinimum: false maximum: 100 exclusiveMaximum: false viewport: type: string enum: - desktop - mobile areaCoordinates: type: object properties: percentX: type: number minimum: 0 exclusiveMinimum: false maximum: 100 exclusiveMaximum: false percentY: type: number minimum: 0 exclusiveMinimum: false maximum: 100 exclusiveMaximum: false percentWidth: type: number minimum: 0 exclusiveMinimum: false maximum: 100 exclusiveMaximum: false percentHeight: type: number minimum: 0 exclusiveMinimum: false maximum: 100 exclusiveMaximum: false required: - percentX - percentY - percentWidth - percentHeight refreshBaseline: type: boolean userBaselinePath: type: string lastCheckBaselinePath: type: string required: - sensitivityThreshold - viewport thirdPartyService: type: object properties: trackedComponentIds: type: array items: type: integer nullable: true currentState: type: string enum: - operational - minor - major - maintenance needsReview: type: boolean notify: type: object properties: severity: type: string enum: - all - major - none incrementalUpdates: type: boolean required: - severity - incrementalUpdates maintenanceNotificationsEnabled: type: boolean providerId: type: integer nullable: true required: - currentState - needsReview - notify - providerId nullable: true regionalData: type: object properties: REGION: type: array items: type: string enum: - na - eu - as - oc x-enumNames: - NorthAmerica - Europe - Asia - Oceania MANUAL_SELECTED: type: boolean INFRASTRUCTURE: type: string enum: - Legacy - New x-enumNames: - Legacy - New THRESHOLD: type: object additionalProperties: type: number minimum: 0 exclusiveMinimum: false maximum: 60000 exclusiveMaximum: false required: - REGION heartbeatUrl: description: >- Complete heartbeat ping URL for HEARTBEAT monitors; null for every other type type: string nullable: true maintenanceWindows: type: array items: type: object properties: id: type: number minimum: 0 exclusiveMinimum: false userId: type: number minimum: 0 exclusiveMinimum: false name: type: string minLength: 3 interval: type: string enum: - once - daily - weekly - monthly x-enumNames: - once - daily - weekly - monthly date: type: string nullable: true time: type: string pattern: ^(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d$ duration: type: number minimum: 1 exclusiveMinimum: false autoAddMonitors: type: boolean monitorIds: type: array items: type: number days: type: array items: type: number status: type: string enum: - active - paused x-enumNames: - active - paused created: oneOf: - {} - type: string required: - id - userId - name - interval - date - time - duration - autoAddMonitors - monitorIds - days - status - created psps: type: array items: type: object properties: id: type: integer minimum: 0 exclusiveMinimum: false friendlyName: type: string minLength: 1 customDomain: type: string nullable: true isPasswordSet: type: boolean monitorIds: type: array items: type: number nullable: true tagIds: type: array items: type: number monitorsCount: type: number nullable: true status: {} urlKey: type: string minLength: 1 homepageLink: type: string minLength: 3 nullable: true gaCode: type: string nullable: true shareAnalyticsConsent: type: boolean useSmallCookieConsentModal: type: boolean icon: type: string nullable: true noIndex: type: boolean logo: type: string nullable: true hideUrlLinks: type: boolean subscription: type: boolean showCookieBar: type: boolean pinnedAnnouncementId: type: integer minimum: 0 exclusiveMinimum: false nullable: true customSettings: type: object properties: font: type: object properties: family: type: string nullable: true required: - family nullable: true page: type: object properties: layout: type: string theme: type: string enum: - light - dark density: type: string enum: - normal - compact showMonitorsUnderGroups: type: boolean colors: type: object properties: main: type: string nullable: true text: type: string nullable: true link: type: string nullable: true required: - main - text - link features: type: object properties: showBars: type: string enum: - 'true' - 'false' nullable: true showUptimePercentage: type: string enum: - 'true' - 'false' nullable: true enableFloatingStatus: type: string enum: - 'true' - 'false' nullable: true showOverallUptime: type: string enum: - 'true' - 'false' nullable: true showOutageUpdates: type: string enum: - 'true' - 'false' nullable: true showOutageDetails: type: string enum: - 'true' - 'false' nullable: true enableDetailsPage: type: string enum: - 'true' - 'false' nullable: true showMonitorURL: type: string enum: - 'true' - 'false' nullable: true hidePausedMonitors: type: string enum: - 'true' - 'false' nullable: true required: - showUptimePercentage nullable: true required: - id - friendlyName - customDomain - isPasswordSet - monitorIds - tagIds - monitorsCount - status - urlKey - homepageLink - gaCode - shareAnalyticsConsent - useSmallCookieConsentModal - icon - noIndex - logo - hideUrlLinks - subscription - showCookieBar - pinnedAnnouncementId - customSettings id: type: number minimum: 0 exclusiveMinimum: false friendlyName: type: string minLength: 1 status: {} url: type: string nullable: true currentStateDuration: type: number lastIncidentId: type: string nullable: true userId: type: number minimum: 0 exclusiveMinimum: false tags: type: array items: type: object properties: id: type: number minimum: 0 exclusiveMinimum: false name: type: string minLength: 1 color: type: string minLength: 1 monitors: type: array items: type: object properties: id: type: number minimum: 0 exclusiveMinimum: false friendlyName: type: string minLength: 1 status: {} url: type: string required: - id - friendlyName - status - url required: - id - name - color assignedAlertContacts: type: array items: type: object properties: alertContactId: type: number threshold: type: number minimum: 0 exclusiveMinimum: false recurrence: type: number minimum: 0 exclusiveMinimum: false required: - alertContactId - threshold - recurrence lastIncident: type: object properties: id: type: string status: {} cause: type: number reason: type: string startedAt: oneOf: - {} - type: string duration: type: number nullable: true required: - id - status - cause - reason - startedAt - duration nullable: true lastDayUptimes: type: object properties: bucketSize: type: number totalChanges: type: integer minimum: 0 exclusiveMinimum: false histogram: type: array items: type: object properties: timestamp: type: number uptime: type: number minimum: 0 exclusiveMinimum: false changes: type: integer minimum: 0 exclusiveMinimum: false required: - timestamp - uptime required: - bucketSize - histogram createDateTime: oneOf: - {} - type: string apiKey: type: string nullable: true groupId: type: number nullable: true customFields: type: object additionalProperties: type: string nullable: true required: - type - interval - sslBrand - sslExpiryDateTime - domainExpireDate - checkSSLErrors - sslExpirationReminder - domainExpirationReminder - followRedirections - authType - customHttpHeaders - httpMethodType - successHttpResponseCodes - timeout - postValueData - postValueType - port - gracePeriod - keywordValue - keywordCaseType - keywordType - responseTimeThreshold - config - regionalData - heartbeatUrl - maintenanceWindows - psps - id - friendlyName - status - url - currentStateDuration - lastIncidentId - userId - tags - assignedAlertContacts - lastDayUptimes - createDateTime - apiKey AlertContactSettings: type: object properties: alertContactId: type: number description: ID of the alert contact to notify example: 12345 threshold: type: number description: Delay of notification in minutes, after the monitor is down example: 5 recurrence: type: number description: Repeat notifications every X minutes example: 30 required: - alertContactId - threshold - recurrence HttpKeywordMonitorConfigDto: type: object properties: sslExpirationPeriodDays: maxItems: 10 description: SSL expiration period in days (0-365, max 10 items) example: - 7 - 14 - 30 type: array items: type: number maximum: 365 minimum: 0 ipVersion: type: string enum: - ipv4Only - ipv6Only description: >- IP version preference. Omit for default behavior (IPv4 priority, falls back to IPv6) example: ipv4Only applicationErrorRetries: type: number minimum: 0 maximum: 3 description: >- Number of retries on application errors (HTTP 4xx/5xx). 0-3. Connection errors always retry 3 times regardless of this setting. example: 1 CreateHttpMonitorDto: type: object properties: friendlyName: type: string example: My monitor description: Friendly name of the monitor maxLength: 250 interval: type: number example: 60 minimum: 30 description: Interval of check in seconds assignedAlertContacts: description: >- Alert contacts to be assigned to the monitor. Threshold and recurrence are only available in the paid plans, they are always 0 in the Free Plan type: array items: $ref: '#/components/schemas/AlertContactSettings' tagNames: example: - tag1 - tag2 description: Tags to be assigned to the monitor type: array items: type: string maintenanceWindowsIds: example: - 123 - 234 description: Maintenance windows to be assigned to the monitor type: array items: type: number regionData: description: >- Regional data for monitoring. Omit it, or send it without REGION, and the region is assigned automatically (currently NA or EU, one region per organization) and never changed on edit. allOf: - $ref: '#/components/schemas/RegionalDataDto' regionalData: enum: - na - eu - as - oc type: string example: na deprecated: true description: >- Region for monitoring: na (North America), eu (Europe), as (Asia), oc (Oceania). Note: If both regionalData and regionData are provided, regionData takes priority. responseTimeThreshold: type: number minimum: 0 maximum: 60000 description: >- Response time threshold in milliseconds. When provided, the value is applied to all active regions as regionData.THRESHOLD. Always returns 0 — use regionData.THRESHOLD for per-region control. groupId: type: number example: 0 minimum: 0 description: Monitor group ID to assign the monitor to. Default is 0 (no group). customFields: type: object additionalProperties: type: string example: environment: production team: platform description: >- Custom key-value metadata for the monitor. Max 20 keys. Keys: alphanumeric + underscore + hyphen, max 64 chars. Values: max 255 chars. Paid plans only. httpMethodType: type: string enum: - HEAD - GET - POST - PUT - PATCH - DELETE - OPTIONS - QUERY example: HEAD description: >- HTTP method to use for the request. For HTTP and Keyword monitors it defaults to HEAD if omitted authType: type: string enum: - NONE - HTTP_BASIC - DIGEST - BEARER example: NONE description: Authentication method to use for the request httpUsername: type: string example: admin maxLength: 255 description: Username for HTTP Basic authentication httpPassword: type: string example: password maxLength: 255 description: Password for HTTP Basic authentication postValueData: oneOf: - type: string - type: object description: >- Data to be sent in the request. Not applicable for HTTP method type = HEAD. Can be a JSON object or string postValueType: enum: - KEY_VALUE - RAW_JSON type: string example: RAW_JSON description: >- Type of data payload to be sent in the request. Affects what data is accepted by "postValueData" field customHttpHeaders: type: object additionalProperties: type: string example: X-Custom-Header: value description: >- Custom HTTP headers to be sent in the request. Must be sent as JSON object with key-value pairs. The serialized JSON must not exceed 3000 characters successHttpResponseCodes: example: - 2xx - 3xx description: >- Success HTTP response codes. Can contain specific codes or ranges like 2xx. Default is [2xx, 3xx] type: array items: type: string checkSSLErrors: type: boolean description: Whether to check for SSL and domain expiration errors sslExpirationReminder: type: boolean description: >- Whether to send a notification when the SSL certificate is about to expire domainExpirationReminder: type: boolean description: Whether to send a notification when the domain is about to expire followRedirections: type: boolean description: Whether to follow redirections type: type: string enum: - HTTP example: HTTP url: type: string example: https://example.com maxLength: 10000 description: URL of the monitor timeout: type: number example: 30 minimum: 0 maximum: 60 description: Timeout of check in seconds config: description: >- Optional HTTP monitor configuration: ipVersion, sslExpirationPeriodDays, applicationErrorRetries allOf: - $ref: '#/components/schemas/HttpKeywordMonitorConfigDto' required: - friendlyName - interval - type - url - timeout CreateKeywordMonitorDto: type: object properties: friendlyName: type: string example: My monitor description: Friendly name of the monitor maxLength: 250 interval: type: number example: 60 minimum: 30 description: Interval of check in seconds assignedAlertContacts: description: >- Alert contacts to be assigned to the monitor. Threshold and recurrence are only available in the paid plans, they are always 0 in the Free Plan type: array items: $ref: '#/components/schemas/AlertContactSettings' tagNames: example: - tag1 - tag2 description: Tags to be assigned to the monitor type: array items: type: string maintenanceWindowsIds: example: - 123 - 234 description: Maintenance windows to be assigned to the monitor type: array items: type: number regionData: description: >- Regional data for monitoring. Omit it, or send it without REGION, and the region is assigned automatically (currently NA or EU, one region per organization) and never changed on edit. allOf: - $ref: '#/components/schemas/RegionalDataDto' regionalData: enum: - na - eu - as - oc type: string example: na deprecated: true description: >- Region for monitoring: na (North America), eu (Europe), as (Asia), oc (Oceania). Note: If both regionalData and regionData are provided, regionData takes priority. responseTimeThreshold: type: number minimum: 0 maximum: 60000 description: >- Response time threshold in milliseconds. When provided, the value is applied to all active regions as regionData.THRESHOLD. Always returns 0 — use regionData.THRESHOLD for per-region control. groupId: type: number example: 0 minimum: 0 description: Monitor group ID to assign the monitor to. Default is 0 (no group). customFields: type: object additionalProperties: type: string example: environment: production team: platform description: >- Custom key-value metadata for the monitor. Max 20 keys. Keys: alphanumeric + underscore + hyphen, max 64 chars. Values: max 255 chars. Paid plans only. httpMethodType: type: string enum: - HEAD - GET - POST - PUT - PATCH - DELETE - OPTIONS - QUERY example: HEAD description: >- HTTP method to use for the request. For HTTP and Keyword monitors it defaults to HEAD if omitted authType: type: string enum: - NONE - HTTP_BASIC - DIGEST - BEARER example: NONE description: Authentication method to use for the request httpUsername: type: string example: admin maxLength: 255 description: Username for HTTP Basic authentication httpPassword: type: string example: password maxLength: 255 description: Password for HTTP Basic authentication postValueData: oneOf: - type: string - type: object description: >- Data to be sent in the request. Not applicable for HTTP method type = HEAD. Can be a JSON object or string postValueType: enum: - KEY_VALUE - RAW_JSON type: string example: RAW_JSON description: >- Type of data payload to be sent in the request. Affects what data is accepted by "postValueData" field customHttpHeaders: type: object additionalProperties: type: string example: X-Custom-Header: value description: >- Custom HTTP headers to be sent in the request. Must be sent as JSON object with key-value pairs. The serialized JSON must not exceed 3000 characters successHttpResponseCodes: example: - 2xx - 3xx description: >- Success HTTP response codes. Can contain specific codes or ranges like 2xx. Default is [2xx, 3xx] type: array items: type: string checkSSLErrors: type: boolean description: Whether to check for SSL and domain expiration errors sslExpirationReminder: type: boolean description: >- Whether to send a notification when the SSL certificate is about to expire domainExpirationReminder: type: boolean description: Whether to send a notification when the domain is about to expire followRedirections: type: boolean description: Whether to follow redirections type: type: string enum: - KEYWORD example: KEYWORD url: type: string example: https://example.com maxLength: 10000 description: URL of the monitor timeout: type: number example: 30 minimum: 0 maximum: 60 description: Timeout of check in seconds keywordType: type: string enum: - ALERT_EXISTS - ALERT_NOT_EXISTS example: ALERT_EXISTS description: Whether to alert when the keyword exists or when it does not exist keywordCaseType: type: string enum: - CaseSensitive - CaseInsensitive example: CaseSensitive description: Whether the keyword match is case sensitive keywordValue: type: string example: Welcome maxLength: 500 description: >- Keyword to search for in the response body. Surrounding whitespace is trimmed config: description: >- Optional Keyword monitor configuration: ipVersion, sslExpirationPeriodDays, applicationErrorRetries allOf: - $ref: '#/components/schemas/HttpKeywordMonitorConfigDto' required: - friendlyName - interval - type - url - timeout - keywordType - keywordCaseType - keywordValue IpVersionMonitorConfigDto: type: object properties: ipVersion: type: string enum: - ipv4Only - ipv6Only example: ipv4Only description: >- IP version preference. Omit for default behavior (IPv4 priority, falls back to IPv6) CreatePingMonitorDto: type: object properties: friendlyName: type: string example: My monitor description: Friendly name of the monitor maxLength: 250 interval: type: number example: 60 minimum: 30 description: Interval of check in seconds assignedAlertContacts: description: >- Alert contacts to be assigned to the monitor. Threshold and recurrence are only available in the paid plans, they are always 0 in the Free Plan type: array items: $ref: '#/components/schemas/AlertContactSettings' tagNames: example: - tag1 - tag2 description: Tags to be assigned to the monitor type: array items: type: string maintenanceWindowsIds: example: - 123 - 234 description: Maintenance windows to be assigned to the monitor type: array items: type: number regionData: description: >- Regional data for monitoring. Omit it, or send it without REGION, and the region is assigned automatically (currently NA or EU, one region per organization) and never changed on edit. allOf: - $ref: '#/components/schemas/RegionalDataDto' regionalData: enum: - na - eu - as - oc type: string example: na deprecated: true description: >- Region for monitoring: na (North America), eu (Europe), as (Asia), oc (Oceania). Note: If both regionalData and regionData are provided, regionData takes priority. responseTimeThreshold: type: number minimum: 0 maximum: 60000 description: >- Response time threshold in milliseconds. When provided, the value is applied to all active regions as regionData.THRESHOLD. Always returns 0 — use regionData.THRESHOLD for per-region control. groupId: type: number example: 0 minimum: 0 description: Monitor group ID to assign the monitor to. Default is 0 (no group). customFields: type: object additionalProperties: type: string example: environment: production team: platform description: >- Custom key-value metadata for the monitor. Max 20 keys. Keys: alphanumeric + underscore + hyphen, max 64 chars. Values: max 255 chars. Paid plans only. type: type: string enum: - PING example: PING url: type: string example: example.com maxLength: 10000 description: >- Hostname or IP address to ping. A protocol prefix is stripped if provided timeout: type: number example: 30 minimum: 0 maximum: 60 description: Timeout of check in seconds config: description: 'Optional Ping monitor configuration: ipVersion' allOf: - $ref: '#/components/schemas/IpVersionMonitorConfigDto' required: - friendlyName - interval - type - url - timeout CreatePortMonitorDto: type: object properties: friendlyName: type: string example: My monitor description: Friendly name of the monitor maxLength: 250 interval: type: number example: 60 minimum: 30 description: Interval of check in seconds assignedAlertContacts: description: >- Alert contacts to be assigned to the monitor. Threshold and recurrence are only available in the paid plans, they are always 0 in the Free Plan type: array items: $ref: '#/components/schemas/AlertContactSettings' tagNames: example: - tag1 - tag2 description: Tags to be assigned to the monitor type: array items: type: string maintenanceWindowsIds: example: - 123 - 234 description: Maintenance windows to be assigned to the monitor type: array items: type: number regionData: description: >- Regional data for monitoring. Omit it, or send it without REGION, and the region is assigned automatically (currently NA or EU, one region per organization) and never changed on edit. allOf: - $ref: '#/components/schemas/RegionalDataDto' regionalData: enum: - na - eu - as - oc type: string example: na deprecated: true description: >- Region for monitoring: na (North America), eu (Europe), as (Asia), oc (Oceania). Note: If both regionalData and regionData are provided, regionData takes priority. responseTimeThreshold: type: number minimum: 0 maximum: 60000 description: >- Response time threshold in milliseconds. When provided, the value is applied to all active regions as regionData.THRESHOLD. Always returns 0 — use regionData.THRESHOLD for per-region control. groupId: type: number example: 0 minimum: 0 description: Monitor group ID to assign the monitor to. Default is 0 (no group). customFields: type: object additionalProperties: type: string example: environment: production team: platform description: >- Custom key-value metadata for the monitor. Max 20 keys. Keys: alphanumeric + underscore + hyphen, max 64 chars. Values: max 255 chars. Paid plans only. type: type: string enum: - PORT example: PORT url: type: string example: example.com maxLength: 10000 description: >- Hostname or IP address to check. A protocol prefix is stripped if provided port: type: number example: 443 minimum: 1 maximum: 65535 description: Port to check timeout: type: number example: 30 minimum: 0 maximum: 60 description: Timeout of check in seconds config: description: 'Optional Port monitor configuration: ipVersion' allOf: - $ref: '#/components/schemas/IpVersionMonitorConfigDto' required: - friendlyName - interval - type - url - port - timeout CreateHeartbeatMonitorDto: type: object properties: friendlyName: type: string example: My monitor description: Friendly name of the monitor maxLength: 250 interval: type: number example: 60 minimum: 30 description: Interval of check in seconds assignedAlertContacts: description: >- Alert contacts to be assigned to the monitor. Threshold and recurrence are only available in the paid plans, they are always 0 in the Free Plan type: array items: $ref: '#/components/schemas/AlertContactSettings' tagNames: example: - tag1 - tag2 description: Tags to be assigned to the monitor type: array items: type: string maintenanceWindowsIds: example: - 123 - 234 description: Maintenance windows to be assigned to the monitor type: array items: type: number regionData: description: >- Regional data for monitoring. Omit it, or send it without REGION, and the region is assigned automatically (currently NA or EU, one region per organization) and never changed on edit. allOf: - $ref: '#/components/schemas/RegionalDataDto' regionalData: enum: - na - eu - as - oc type: string example: na deprecated: true description: >- Region for monitoring: na (North America), eu (Europe), as (Asia), oc (Oceania). Note: If both regionalData and regionData are provided, regionData takes priority. responseTimeThreshold: type: number minimum: 0 maximum: 60000 description: >- Response time threshold in milliseconds. When provided, the value is applied to all active regions as regionData.THRESHOLD. Always returns 0 — use regionData.THRESHOLD for per-region control. groupId: type: number example: 0 minimum: 0 description: Monitor group ID to assign the monitor to. Default is 0 (no group). customFields: type: object additionalProperties: type: string example: environment: production team: platform description: >- Custom key-value metadata for the monitor. Max 20 keys. Keys: alphanumeric + underscore + hyphen, max 64 chars. Values: max 255 chars. Paid plans only. type: type: string enum: - HEARTBEAT example: HEARTBEAT gracePeriod: type: number example: 300 minimum: 0 maximum: 86400 description: >- Grace period in seconds to wait past the expected heartbeat before alerting required: - friendlyName - interval - type DnsRecordsDto: type: object properties: CNAME: description: CNAME DNS records type: array items: type: string MX: description: MX DNS records type: array items: type: string NS: description: NS DNS records type: array items: type: string A: description: A DNS records type: array items: type: string AAAA: description: AAAA DNS records type: array items: type: string TXT: description: TXT DNS records type: array items: type: string SRV: description: SRV DNS records type: array items: type: string PTR: description: PTR DNS records type: array items: type: string SOA: description: SOA DNS records type: array items: type: string SPF: description: SPF DNS records type: array items: type: string DNSKEY: description: DNSKEY DNS records type: array items: type: string DS: description: DS DNS records type: array items: type: string NSEC: description: NSEC DNS records type: array items: type: string NSEC3: description: NSEC3 DNS records type: array items: type: string DnsMonitorConfigDto: type: object properties: dnsRecords: description: DNS records configuration allOf: - $ref: '#/components/schemas/DnsRecordsDto' CreateDnsMonitorDto: type: object properties: friendlyName: type: string example: My monitor description: Friendly name of the monitor maxLength: 250 interval: type: number example: 60 minimum: 30 description: Interval of check in seconds assignedAlertContacts: description: >- Alert contacts to be assigned to the monitor. Threshold and recurrence are only available in the paid plans, they are always 0 in the Free Plan type: array items: $ref: '#/components/schemas/AlertContactSettings' tagNames: example: - tag1 - tag2 description: Tags to be assigned to the monitor type: array items: type: string maintenanceWindowsIds: example: - 123 - 234 description: Maintenance windows to be assigned to the monitor type: array items: type: number regionData: description: >- Regional data for monitoring. Omit it, or send it without REGION, and the region is assigned automatically (currently NA or EU, one region per organization) and never changed on edit. allOf: - $ref: '#/components/schemas/RegionalDataDto' regionalData: enum: - na - eu - as - oc type: string example: na deprecated: true description: >- Region for monitoring: na (North America), eu (Europe), as (Asia), oc (Oceania). Note: If both regionalData and regionData are provided, regionData takes priority. responseTimeThreshold: type: number minimum: 0 maximum: 60000 description: >- Response time threshold in milliseconds. When provided, the value is applied to all active regions as regionData.THRESHOLD. Always returns 0 — use regionData.THRESHOLD for per-region control. groupId: type: number example: 0 minimum: 0 description: Monitor group ID to assign the monitor to. Default is 0 (no group). customFields: type: object additionalProperties: type: string example: environment: production team: platform description: >- Custom key-value metadata for the monitor. Max 20 keys. Keys: alphanumeric + underscore + hyphen, max 64 chars. Values: max 255 chars. Paid plans only. type: type: string enum: - DNS example: DNS url: type: string example: example.com maxLength: 10000 description: DNS server IP or hostname. A protocol prefix is stripped if provided config: description: DNS monitor configuration — the records to resolve and match allOf: - $ref: '#/components/schemas/DnsMonitorConfigDto' required: - friendlyName - interval - type - url - config PublicApiAssertionCheckDto: type: object properties: property: type: string maxLength: 500 description: >- Assertion source: safe JSONPath, headers., status_code, or body example: $.data.status comparison: enum: - equals - not_equals - contains - not_contains - greater_than - less_than - is_null - is_not_null - is_string - is_number - is_boolean - is_array - is_object - is_empty - is_not_empty - length_equals - length_not_equals - length_greater_than - length_less_than - exists - not_exists type: string description: Comparison operator example: equals target: description: >- Expected native JSON value. Arrays and objects are supported for body-JSON equality and containment; omit target for null, type, existence, and empty comparisons. example: - active - role: primary oneOf: - type: string nullable: true - type: number - type: boolean - type: array items: {} - type: object additionalProperties: true required: - property - comparison PublicApiAssertionsDto: type: object properties: logic: type: string enum: - AND - OR description: Logic for combining assertions example: AND checks: description: Array of assertion checks (1-5) type: array items: $ref: '#/components/schemas/PublicApiAssertionCheckDto' required: - logic - checks ApiMonitorConfigDto: type: object properties: apiAssertions: description: API monitor assertions configuration allOf: - $ref: '#/components/schemas/PublicApiAssertionsDto' sslExpirationPeriodDays: maxItems: 10 description: SSL expiration period in days (0-365, max 10 items) example: - 7 - 14 - 30 type: array items: type: number maximum: 365 minimum: 0 ipVersion: type: string enum: - ipv4Only - ipv6Only description: >- IP version preference. Omit for default behavior (IPv4 priority, falls back to IPv6) example: ipv4Only applicationErrorRetries: type: number minimum: 0 maximum: 3 description: >- Number of retries on application errors (HTTP 4xx/5xx). 0-3. Connection errors always retry 3 times regardless of this setting. example: 1 required: - apiAssertions CreateApiMonitorDto: type: object properties: friendlyName: type: string example: My monitor description: Friendly name of the monitor maxLength: 250 interval: type: number example: 60 minimum: 30 description: Interval of check in seconds assignedAlertContacts: description: >- Alert contacts to be assigned to the monitor. Threshold and recurrence are only available in the paid plans, they are always 0 in the Free Plan type: array items: $ref: '#/components/schemas/AlertContactSettings' tagNames: example: - tag1 - tag2 description: Tags to be assigned to the monitor type: array items: type: string maintenanceWindowsIds: example: - 123 - 234 description: Maintenance windows to be assigned to the monitor type: array items: type: number regionData: description: >- Regional data for monitoring. Omit it, or send it without REGION, and the region is assigned automatically (currently NA or EU, one region per organization) and never changed on edit. allOf: - $ref: '#/components/schemas/RegionalDataDto' regionalData: enum: - na - eu - as - oc type: string example: na deprecated: true description: >- Region for monitoring: na (North America), eu (Europe), as (Asia), oc (Oceania). Note: If both regionalData and regionData are provided, regionData takes priority. responseTimeThreshold: type: number minimum: 0 maximum: 60000 description: >- Response time threshold in milliseconds. When provided, the value is applied to all active regions as regionData.THRESHOLD. Always returns 0 — use regionData.THRESHOLD for per-region control. groupId: type: number example: 0 minimum: 0 description: Monitor group ID to assign the monitor to. Default is 0 (no group). customFields: type: object additionalProperties: type: string example: environment: production team: platform description: >- Custom key-value metadata for the monitor. Max 20 keys. Keys: alphanumeric + underscore + hyphen, max 64 chars. Values: max 255 chars. Paid plans only. httpMethodType: type: string enum: - GET - POST - PUT - PATCH - DELETE - OPTIONS - QUERY example: GET description: >- HTTP method to use for the request. Defaults to GET. HEAD is not allowed for API monitors because assertions need a response body authType: type: string enum: - NONE - HTTP_BASIC - DIGEST - BEARER example: NONE description: Authentication method to use for the request httpUsername: type: string example: admin maxLength: 255 description: Username for HTTP Basic authentication httpPassword: type: string example: password maxLength: 255 description: Password for HTTP Basic authentication postValueData: oneOf: - type: string - type: object description: >- Data to be sent in the request. Not applicable for HTTP method type = HEAD. Can be a JSON object or string postValueType: enum: - KEY_VALUE - RAW_JSON type: string example: RAW_JSON description: >- Type of data payload to be sent in the request. Affects what data is accepted by "postValueData" field customHttpHeaders: type: object additionalProperties: type: string example: X-Custom-Header: value description: >- Custom HTTP headers to be sent in the request. Must be sent as JSON object with key-value pairs. The serialized JSON must not exceed 3000 characters successHttpResponseCodes: example: - 2xx - 3xx description: >- Success HTTP response codes. Can contain specific codes or ranges like 2xx. Default is [2xx, 3xx] type: array items: type: string checkSSLErrors: type: boolean description: Whether to check for SSL and domain expiration errors sslExpirationReminder: type: boolean description: >- Whether to send a notification when the SSL certificate is about to expire domainExpirationReminder: type: boolean description: Whether to send a notification when the domain is about to expire followRedirections: type: boolean description: Whether to follow redirections type: type: string enum: - API example: API url: type: string example: https://api.example.com/health maxLength: 10000 description: URL of the API endpoint to monitor timeout: type: number example: 30 minimum: 0 maximum: 60 description: Timeout of check in seconds config: description: >- API monitor configuration. `apiAssertions` is required — at least one check must be provided allOf: - $ref: '#/components/schemas/ApiMonitorConfigDto' required: - friendlyName - interval - type - url - timeout - config UdpConfigFieldsDto: type: object properties: payload: type: string description: UDP payload to send packetLossThreshold: type: number description: Packet loss threshold percentage required: - packetLossThreshold UdpMonitorConfigDto: type: object properties: udp: description: UDP monitor configuration allOf: - $ref: '#/components/schemas/UdpConfigFieldsDto' ipVersion: type: string enum: - ipv4Only - ipv6Only description: >- IP version preference. Omit for default behavior (IPv4 priority, falls back to IPv6) example: ipv4Only CreateUdpMonitorDto: type: object properties: friendlyName: type: string example: My monitor description: Friendly name of the monitor maxLength: 250 interval: type: number example: 60 minimum: 30 description: Interval of check in seconds assignedAlertContacts: description: >- Alert contacts to be assigned to the monitor. Threshold and recurrence are only available in the paid plans, they are always 0 in the Free Plan type: array items: $ref: '#/components/schemas/AlertContactSettings' tagNames: example: - tag1 - tag2 description: Tags to be assigned to the monitor type: array items: type: string maintenanceWindowsIds: example: - 123 - 234 description: Maintenance windows to be assigned to the monitor type: array items: type: number regionData: description: >- Regional data for monitoring. Omit it, or send it without REGION, and the region is assigned automatically (currently NA or EU, one region per organization) and never changed on edit. allOf: - $ref: '#/components/schemas/RegionalDataDto' regionalData: enum: - na - eu - as - oc type: string example: na deprecated: true description: >- Region for monitoring: na (North America), eu (Europe), as (Asia), oc (Oceania). Note: If both regionalData and regionData are provided, regionData takes priority. responseTimeThreshold: type: number minimum: 0 maximum: 60000 description: >- Response time threshold in milliseconds. When provided, the value is applied to all active regions as regionData.THRESHOLD. Always returns 0 — use regionData.THRESHOLD for per-region control. groupId: type: number example: 0 minimum: 0 description: Monitor group ID to assign the monitor to. Default is 0 (no group). customFields: type: object additionalProperties: type: string example: environment: production team: platform description: >- Custom key-value metadata for the monitor. Max 20 keys. Keys: alphanumeric + underscore + hyphen, max 64 chars. Values: max 255 chars. Paid plans only. type: type: string enum: - UDP example: UDP url: type: string example: 1.2.3.4 maxLength: 10000 description: >- Hostname or IP address to check. A protocol prefix is stripped if provided port: type: number example: 53 minimum: 1 maximum: 65535 description: Port to send the UDP packet to timeout: type: number example: 30 minimum: 0 maximum: 60 description: Timeout of check in seconds config: description: UDP monitor configuration. `udp.packetLossThreshold` is required allOf: - $ref: '#/components/schemas/UdpMonitorConfigDto' required: - friendlyName - interval - type - url - port - timeout - config VisualComparisonAreaCoordinatesDto: type: object properties: percentX: type: number minimum: 0 maximum: 100 description: Left edge (percent) percentY: type: number minimum: 0 maximum: 100 description: Top edge (percent) percentWidth: type: number minimum: 0 maximum: 100 description: Width (percent) percentHeight: type: number minimum: 0 maximum: 100 description: Height (percent) required: - percentX - percentY - percentWidth - percentHeight VisualComparisonFieldsDto: type: object properties: sensitivityThreshold: type: number minimum: 0 maximum: 100 description: Difference sensitivity threshold (0-100) viewport: type: string enum: - desktop - mobile description: Viewport profile for the capture areaCoordinates: description: >- Optional rectangular region (percentage-based) to compare. Omit for full-page comparison. allOf: - $ref: '#/components/schemas/VisualComparisonAreaCoordinatesDto' required: - sensitivityThreshold - viewport VisualComparisonMonitorConfigDto: type: object properties: visualComparison: description: Visual comparison monitor configuration allOf: - $ref: '#/components/schemas/VisualComparisonFieldsDto' required: - visualComparison CreateVisualComparisonMonitorDto: type: object properties: friendlyName: type: string example: My monitor description: Friendly name of the monitor maxLength: 250 interval: type: number example: 60 minimum: 30 description: Interval of check in seconds assignedAlertContacts: description: >- Alert contacts to be assigned to the monitor. Threshold and recurrence are only available in the paid plans, they are always 0 in the Free Plan type: array items: $ref: '#/components/schemas/AlertContactSettings' tagNames: example: - tag1 - tag2 description: Tags to be assigned to the monitor type: array items: type: string maintenanceWindowsIds: example: - 123 - 234 description: Maintenance windows to be assigned to the monitor type: array items: type: number regionData: description: >- Regional data for monitoring. Omit it, or send it without REGION, and the region is assigned automatically (currently NA or EU, one region per organization) and never changed on edit. allOf: - $ref: '#/components/schemas/RegionalDataDto' regionalData: enum: - na - eu - as - oc type: string example: na deprecated: true description: >- Region for monitoring: na (North America), eu (Europe), as (Asia), oc (Oceania). Note: If both regionalData and regionData are provided, regionData takes priority. responseTimeThreshold: type: number minimum: 0 maximum: 60000 description: >- Response time threshold in milliseconds. When provided, the value is applied to all active regions as regionData.THRESHOLD. Always returns 0 — use regionData.THRESHOLD for per-region control. groupId: type: number example: 0 minimum: 0 description: Monitor group ID to assign the monitor to. Default is 0 (no group). customFields: type: object additionalProperties: type: string example: environment: production team: platform description: >- Custom key-value metadata for the monitor. Max 20 keys. Keys: alphanumeric + underscore + hyphen, max 64 chars. Values: max 255 chars. Paid plans only. type: type: string enum: - VISUAL_COMPARISON example: VISUAL_COMPARISON url: type: string example: https://example.com maxLength: 10000 description: URL of the page to capture and compare config: description: >- Visual comparison configuration — sensitivity, viewport and optional area to compare allOf: - $ref: '#/components/schemas/VisualComparisonMonitorConfigDto' required: - friendlyName - interval - type - url - config ThirdPartyServiceNotifyDto: type: object properties: severity: type: string enum: - all - major - none example: major description: >- Which provider incidents notify: every severity (all), only major outages (major), or none. incrementalUpdates: type: boolean example: true description: Also notify on incremental updates of an incident already notified. required: - severity - incrementalUpdates CreateThirdPartyServiceConfigDto: type: object properties: providerId: type: number minimum: 1 maximum: 9007199254740991 example: 4317 description: >- The provider to track: isdown's numeric provider id, as returned by the third-party provider catalog. trackedComponentIds: nullable: true example: - 555 - 556 description: >- Component ids to scope tracking to (isdown components.id, not external_id). Omit to track every component. type: array items: type: number notify: description: Notification tuning. Omit to use the defaults. allOf: - $ref: '#/components/schemas/ThirdPartyServiceNotifyDto' required: - providerId ThirdPartyServiceMonitorConfigDto: type: object properties: thirdPartyService: description: >- Third party service configuration: the isdown provider to track and, optionally, which of its components to scope tracking to. allOf: - $ref: '#/components/schemas/CreateThirdPartyServiceConfigDto' required: - thirdPartyService CreateThirdPartyServiceMonitorDto: type: object properties: type: type: string enum: - THIRD_PARTY_SERVICE example: THIRD_PARTY_SERVICE config: description: >- Third party service configuration. `config.thirdPartyService.providerId` (required) names the isdown provider to track; `trackedComponentIds` optionally scopes tracking to specific components; `notify` tunes notifications. allOf: - $ref: '#/components/schemas/ThirdPartyServiceMonitorConfigDto' assignedAlertContacts: description: >- Alert contacts to be assigned to the monitor. Omit to inherit the account default contact. type: array items: $ref: '#/components/schemas/AlertContactSettings' required: - type - config PermissiveVisualComparisonFieldsDto: type: object properties: sensitivityThreshold: type: number minimum: 0 maximum: 100 viewport: type: string enum: - desktop - mobile areaCoordinates: $ref: '#/components/schemas/VisualComparisonAreaCoordinatesDto' ThirdPartyServiceConfigDto: type: object properties: trackedComponentIds: nullable: true example: - 555 - 556 description: >- Component ids to scope tracking to (isdown components.id, not external_id). Every id must belong to the monitor provider. Omit to leave the scope unchanged, set to null or [] to track every component. type: array items: type: number notify: description: >- Notification tuning. Replaces the stored value as a whole. Omit to leave unchanged. allOf: - $ref: '#/components/schemas/ThirdPartyServiceNotifyDto' maintenanceNotificationsEnabled: type: boolean example: true description: >- Notify when the provider schedules or updates a maintenance. Omit to leave unchanged. PermissiveMonitorConfigDto: type: object properties: dnsRecords: description: DNS records configuration. DNS monitors only. Send null to remove. nullable: true allOf: - $ref: '#/components/schemas/DnsRecordsDto' sslExpirationPeriodDays: maxItems: 10 description: >- Days before certificate expiry to send SSL expiration reminders (0-365, max 10 items). Requires the top-level `sslExpirationReminder` flag to be enabled. HTTP, Keyword and API monitors only. Send null to remove. nullable: true example: - 7 - 14 - 30 type: array items: type: number maximum: 365 minimum: 0 apiAssertions: nullable: true description: >- API monitor assertions configuration. Required for API monitors — the merged config must still contain it. Send null to remove. allOf: - $ref: '#/components/schemas/PublicApiAssertionsDto' udp: description: UDP monitor configuration. UDP monitors only. Send null to remove. nullable: true allOf: - $ref: '#/components/schemas/UdpConfigFieldsDto' ipVersion: type: string enum: - ipv4Only - ipv6Only description: >- IP version preference. Omit for default behavior (IPv4 priority, falls back to IPv6). Not supported by DNS, Heartbeat, Visual Comparison or third-party service monitors. Send null to remove. nullable: true example: ipv4Only applicationErrorRetries: type: number minimum: 0 maximum: 3 description: >- Number of retries on application errors (HTTP 4xx/5xx). 0-3. Connection errors always retry 3 times regardless of this setting. HTTP, Keyword and API monitors only. Send null to remove. nullable: true example: 1 visualComparison: description: >- Visual comparison configuration. Visual Comparison monitors only. Send null to remove. nullable: true allOf: - $ref: '#/components/schemas/PermissiveVisualComparisonFieldsDto' thirdPartyService: description: >- Third party service configuration - the isdown provider to track and, optionally, which of its components to scope tracking to. Third party services only. Send null to remove. nullable: true allOf: - $ref: '#/components/schemas/ThirdPartyServiceConfigDto' UpdateMonitorDto: type: object properties: friendlyName: type: string maxLength: 250 example: My monitor description: Friendly name of the monitor url: type: string maxLength: 10000 example: http://test.com description: >- URL of the monitor. For DNS monitors: DNS server IP or hostname. Not required for Heartbeat monitor type: enum: - HTTP - KEYWORD - PING - PORT - HEARTBEAT - DNS - API - UDP - VISUAL_COMPARISON - THIRD_PARTY_SERVICE type: string example: HTTP port: type: number minimum: 1 maximum: 65535 description: Required for Port and UDP monitors portAlertCondition: enum: - CLOSED - OPEN type: string example: CLOSED description: >- Alerting condition for Port monitors. Only valid when type is Port; defaults to CLOSED when omitted. keywordType: enum: - ALERT_EXISTS - ALERT_NOT_EXISTS type: string example: ALERT_EXISTS description: Required for Keyword monitor keywordCaseType: enum: - 0 - 1 type: number description: Required for Keyword monitor keywordValue: type: string nullable: true maxLength: 500 description: Required for Keyword monitor interval: type: number minimum: 15 example: 60 description: >- Interval of check in seconds. Heartbeat monitors support at most 2678400 seconds (31 days). timeout: type: number minimum: 0 maximum: 60 example: 30 description: >- Timeout of check in seconds. Only for Http, Keyword and Port monitors gracePeriod: type: number minimum: 0 maximum: 86400 example: 300 description: Grace period of check in seconds. Only for Heartbeat monitor httpUsername: type: string maxLength: 255 example: admin description: Username for HTTP Basic authentication httpPassword: type: string maxLength: 255 example: password description: Password for HTTP Basic authentication httpMethodType: nullable: true enum: - HEAD - GET - POST - PUT - PATCH - DELETE - OPTIONS - QUERY type: string example: HEAD description: >- HTTP method to use for the request. For HTTP and Keyword monitors it defaults to HEAD if omitted; API monitors default to GET and do not allow HEAD authType: enum: - NONE - HTTP_BASIC - DIGEST - BEARER type: string example: NONE description: >- Authentication method to use for the request. Only applicable for HTTP and Keyword monitors postValueData: type: object description: >- Data to be sent in the request. Not applicable for HTTP method type = HEAD. Can be JSON string or string postValueType: enum: - KEY_VALUE - RAW_JSON type: string description: >- Type of data payload to be sent in the request. Affects what data is accepted by "postValueData" field assignedAlertContacts: description: >- Alert contacts to be assigned to the monitor. Threshold and recurrence are only available in the paid plans, they are always 0 in the Free Plan type: array items: $ref: '#/components/schemas/AlertContactSettings' customHttpHeaders: type: object description: >- Custom HTTP headers to be sent in the request. Must be sent as JSON object with key-value pairs. The serialized JSON must not exceed 3000 characters successHttpResponseCodes: example: - 2xx - 3xx default: [] description: >- Success HTTP response codes. Can contain specific codes or ranges like 2xx. Default is [2xx, 3xx] type: array items: type: string checkSSLErrors: type: boolean description: Whether to check for SSL and domain expiration errors tagNames: example: - tag1 - tag2 description: Tags to be assigned to the monitor type: array items: type: string maintenanceWindowsIds: example: - 123 - 234 description: Maintenance windows to be assigned to the monitor type: array items: type: number domainExpirationReminder: type: boolean description: Whether to send a notification when the domain is about to expire sslExpirationReminder: type: boolean description: >- Whether to send a notification when the SSL certificate is about to expire followRedirections: type: boolean description: Whether to follow redirections responseTimeThreshold: type: number minimum: 0 maximum: 60000 description: >- Response time threshold in milliseconds. When provided, the value is applied to all active regions as regionData.THRESHOLD. Always returns 0 — use regionData.THRESHOLD for per-region control. regionalData: type: string description: >- Region for monitoring: na (North America), eu (Europe), as (Asia), oc (Oceania). Note: If both regionalData and regionData are provided, regionData takes priority. enum: - na - eu - as - oc example: na deprecated: true regionData: description: >- Regional data for monitoring. Omit it, or send it without REGION, and the region is assigned automatically (currently NA or EU, one region per organization) and never changed on edit. allOf: - $ref: '#/components/schemas/RegionalDataDto' groupId: type: number minimum: 0 description: >- Monitor group ID to assign the monitor to. Use 0 for the default group. example: 10 customFields: type: object description: >- Custom key-value metadata for the monitor. Max 20 keys. Keys: alphanumeric + underscore + hyphen, max 64 chars. Values: max 255 chars. Paid plans only. example: environment: production team: platform config: nullable: true description: >- Monitor configuration patch. Accepted keys depend on the monitor type - HTTP/Keyword: sslExpirationPeriodDays, ipVersion, applicationErrorRetries. API: apiAssertions, sslExpirationPeriodDays, ipVersion, applicationErrorRetries. DNS: dnsRecords. UDP: udp, ipVersion. PING/PORT: ipVersion. Visual Comparison: visualComparison. Third party service: thirdPartyService. Heartbeat: none. Top-level shallow merge with existing config: omit keys to leave unchanged, set a key to null to remove it, or send `config: null` to clear all config. allOf: - $ref: '#/components/schemas/PermissiveMonitorConfigDto' PspPaginationDto: type: object properties: nextLink: type: string nullable: true data: type: array items: type: object properties: id: type: integer minimum: 0 exclusiveMinimum: false friendlyName: type: string minLength: 1 customDomain: type: string nullable: true isPasswordSet: type: boolean monitorIds: type: array items: type: number nullable: true tagIds: type: array items: type: number monitorsCount: type: number nullable: true status: {} urlKey: type: string minLength: 1 homepageLink: type: string minLength: 3 nullable: true gaCode: type: string nullable: true shareAnalyticsConsent: type: boolean useSmallCookieConsentModal: type: boolean icon: type: string nullable: true noIndex: type: boolean logo: type: string nullable: true hideUrlLinks: type: boolean subscription: type: boolean showCookieBar: type: boolean pinnedAnnouncementId: type: integer minimum: 0 exclusiveMinimum: false nullable: true customSettings: type: object properties: font: type: object properties: family: type: string nullable: true required: - family nullable: true page: type: object properties: layout: type: string theme: type: string enum: - light - dark density: type: string enum: - normal - compact showMonitorsUnderGroups: type: boolean colors: type: object properties: main: type: string nullable: true text: type: string nullable: true link: type: string nullable: true required: - main - text - link features: type: object properties: showBars: type: string enum: - 'true' - 'false' nullable: true showUptimePercentage: type: string enum: - 'true' - 'false' nullable: true enableFloatingStatus: type: string enum: - 'true' - 'false' nullable: true showOverallUptime: type: string enum: - 'true' - 'false' nullable: true showOutageUpdates: type: string enum: - 'true' - 'false' nullable: true showOutageDetails: type: string enum: - 'true' - 'false' nullable: true enableDetailsPage: type: string enum: - 'true' - 'false' nullable: true showMonitorURL: type: string enum: - 'true' - 'false' nullable: true hidePausedMonitors: type: string enum: - 'true' - 'false' nullable: true required: - showUptimePercentage nullable: true required: - id - friendlyName - customDomain - isPasswordSet - monitorIds - tagIds - monitorsCount - status - urlKey - homepageLink - gaCode - shareAnalyticsConsent - useSmallCookieConsentModal - icon - noIndex - logo - hideUrlLinks - subscription - showCookieBar - pinnedAnnouncementId - customSettings required: - nextLink - data PspDto: type: object properties: id: type: integer minimum: 0 exclusiveMinimum: false friendlyName: type: string minLength: 1 customDomain: type: string nullable: true isPasswordSet: type: boolean monitorIds: type: array items: type: number nullable: true tagIds: type: array items: type: number monitorsCount: type: number nullable: true status: {} urlKey: type: string minLength: 1 homepageLink: type: string minLength: 3 nullable: true gaCode: type: string nullable: true shareAnalyticsConsent: type: boolean useSmallCookieConsentModal: type: boolean icon: type: string nullable: true noIndex: type: boolean logo: type: string nullable: true hideUrlLinks: type: boolean subscription: type: boolean showCookieBar: type: boolean pinnedAnnouncementId: type: integer minimum: 0 exclusiveMinimum: false nullable: true customSettings: type: object properties: font: type: object properties: family: type: string nullable: true required: - family nullable: true page: type: object properties: layout: type: string theme: type: string enum: - light - dark density: type: string enum: - normal - compact showMonitorsUnderGroups: type: boolean colors: type: object properties: main: type: string nullable: true text: type: string nullable: true link: type: string nullable: true required: - main - text - link features: type: object properties: showBars: type: string enum: - 'true' - 'false' nullable: true showUptimePercentage: type: string enum: - 'true' - 'false' nullable: true enableFloatingStatus: type: string enum: - 'true' - 'false' nullable: true showOverallUptime: type: string enum: - 'true' - 'false' nullable: true showOutageUpdates: type: string enum: - 'true' - 'false' nullable: true showOutageDetails: type: string enum: - 'true' - 'false' nullable: true enableDetailsPage: type: string enum: - 'true' - 'false' nullable: true showMonitorURL: type: string enum: - 'true' - 'false' nullable: true hidePausedMonitors: type: string enum: - 'true' - 'false' nullable: true required: - showUptimePercentage nullable: true required: - id - friendlyName - customDomain - isPasswordSet - monitorIds - tagIds - monitorsCount - status - urlKey - homepageLink - gaCode - shareAnalyticsConsent - useSmallCookieConsentModal - icon - noIndex - logo - hideUrlLinks - subscription - showCookieBar - pinnedAnnouncementId - customSettings FontCustomSettingsDto: type: object properties: family: type: string example: Roboto title: Font family description: The font family to use for the PSP. Google fonts are supported. PageCustomSettingsDto: type: object properties: layout: enum: - LogoOnLeft - LogoOnCenter type: string example: logo_on_center title: Logo alignment description: The alignment of the logo on the page theme: enum: - Light - Dark type: string example: light title: Theme description: The theme of the page density: enum: - Normal - Compact type: string example: normal title: Density description: The density of the page showMonitorsUnderGroups: type: boolean example: false title: Show monitors under their groups description: >- Group the monitors on the status page home screen under their monitor groups instead of listing them flat. Omit it to keep the current value. ColorsCustomSettingsDto: type: object properties: main: type: string pattern: ^#?([0-9A-F]{3}|[0-9A-F]{4}|[0-9A-F]{6}|[0-9A-F]{8})$ example: '#131a26' description: The main color of the page in hex format text: type: string pattern: ^#?([0-9A-F]{3}|[0-9A-F]{4}|[0-9A-F]{6}|[0-9A-F]{8})$ example: '#ffffff' description: The text color of the page in hex format link: type: string pattern: ^#?([0-9A-F]{3}|[0-9A-F]{4}|[0-9A-F]{6}|[0-9A-F]{8})$ example: '#3bd671' description: The link color of the page in hex format FeaturesCustomSettingsDto: type: object properties: showBars: type: boolean example: false title: Show bar charts description: >- Show or hide the bar charts for uptime of a monitor on a status page home screen showUptimePercentage: type: boolean example: false title: Show uptime percentage description: >- Show or hide the uptime percentage of a monitor near the monitor name on a status page home screen enableFloatingStatus: type: boolean example: false title: Enable floating status bar description: >- Enable or disable the floating bar sticked to the bottom with the overall count of up and down monitors showOverallUptime: type: boolean example: false title: Show overall percentage description: >- Show or hide the overall uptime (last 24 h, last 7 and 30 days) section below monitors list on a status page home screen showOutageUpdates: type: boolean example: false title: Show outage details description: >- Show outage reason details (like status code) to give more explanation for your status page users showOutageDetails: type: boolean example: false title: Show outage updates and the latest downtime description: >- Show or hide downtimes grouped by day for a specific monitor in the Announcement feed. The latest downtime will be visible in header. This won't hide the events on a details page enableDetailsPage: type: boolean example: false title: Enable Details Page description: >- Details page contains uptime, response times and up/down event history showMonitorURL: type: boolean example: false title: Show the monitor URL description: >- Show monitor URL and type to give your users more details on your Status page hidePausedMonitors: type: boolean example: false title: Hide paused monitors description: Don't display paused monitors on your Status page CustomSettingsDto: type: object properties: font: nullable: true allOf: - $ref: '#/components/schemas/FontCustomSettingsDto' page: nullable: true allOf: - $ref: '#/components/schemas/PageCustomSettingsDto' colors: nullable: true description: The colors of the page allOf: - $ref: '#/components/schemas/ColorsCustomSettingsDto' features: nullable: true allOf: - $ref: '#/components/schemas/FeaturesCustomSettingsDto' CreatePsPDto: type: object properties: monitorIds: description: >- List of monitor IDs to be assigned to the PSP. `[0]` on its own is the sentinel for "every monitor in the account"; an empty array detaches all of them. In multipart/form-data, repeat the field (`monitorIds=1&monitorIds=2`) or use the bracket suffix (`monitorIds[]=1`); `monitorIds[]=` with no value is the empty array. type: array items: type: number maximum: 2147483647 minimum: 0 tagIds: description: >- List of tag IDs to be assigned to the PSP. Uses the same multipart encoding as `monitorIds`. type: array items: type: number maximum: 2147483647 minimum: 1 autoAddMonitors: type: boolean description: >- If enabled all monitors (old and new) will be added to PSP automatically. An explicit "monitorIds" wins over this flag when both are sent — including an empty "monitorIds", which detaches every monitor. friendlyName: type: string maxLength: 255 example: My Status Page description: Friendly name of the Public Status Page logo: type: string format: binary description: >- Logo image file. Accepted formats: JPG, JPEG, PNG. Max file size: 150 KB. Dimensions: width 20-400px, height 10-200px. icon: type: string format: binary description: >- Icon image file. Accepted formats: JPG, JPEG, PNG. Max file size: 150 KB. Dimensions: width 20-400px, height 10-200px. password: type: string maxLength: 255 description: Password protection for the Public Status Page customDomain: type: string maxLength: 255 description: >- Provide when you want to use custom domain for the Public Status Page example: status.your-domain.com hideUrlLinks: type: boolean description: This will hide "Powered by UptimeRobot" link in footer example: false noIndex: type: boolean description: >- Set HTML meta tag to allow or disallow search engines to index your status page example: false gaCode: type: string pattern: /G-[A-Z0-9]{10}/ example: G-xxxxxxxxxx title: Google Analytics code description: Available only for a Custom Domain status page sort: type: string enum: - FriendlyNameAsc - FriendlyNameDesc - StatusUpDownPaused - StatusDownUpPaused example: FriendlyNameAsc description: >- Sort monitors by friendly name or their statuses. Manual is read-only — a manual order can only be arranged in the dashboard. status: enum: - PAUSED - ENABLED type: string example: ENABLED title: Status of the Public Status Page description: Send "ENABLED" to publish the status page, "PAUSED" to un-publish it subscription: type: boolean title: Enable subscribe feature description: Subscribers can subscribe to receive announcements via an e-mail. shareAnalyticsConsent: type: boolean default: false description: >- Help us improve the Status Pages by sharing the analytics data with us. homepageLink: type: string maxLength: 255 default: https://uptimerobot.com title: Homepage URL description: >- The link target for the logo (or main title) on status page. Usually leads to your homepage. showCookieBar: type: boolean default: false title: Show cookie consent bar on status page description: Available only for a Custom domain status page useSmallCookieConsentModal: type: boolean title: Smaller version of cookie consent description: >- Allowing visitor to interact with the page - should not be used on public pages customSettings: $ref: '#/components/schemas/CustomSettingsDto' required: - friendlyName UpdatePspDto: type: object properties: monitorIds: description: >- List of monitor IDs to be assigned to the PSP. `[0]` on its own is the sentinel for "every monitor in the account"; an empty array detaches all of them. In multipart/form-data, repeat the field (`monitorIds=1&monitorIds=2`) or use the bracket suffix (`monitorIds[]=1`); `monitorIds[]=` with no value is the empty array. type: array items: type: number maximum: 2147483647 minimum: 0 tagIds: description: >- List of tag IDs to be assigned to the PSP. Uses the same multipart encoding as `monitorIds`. type: array items: type: number maximum: 2147483647 minimum: 1 autoAddMonitors: type: boolean description: >- If enabled all monitors (old and new) will be added to PSP automatically. An explicit "monitorIds" wins over this flag when both are sent — including an empty "monitorIds", which detaches every monitor. friendlyName: type: string maxLength: 255 example: My Status Page description: Friendly name of the Public Status Page logo: type: string format: binary description: >- Logo image file. Accepted formats: JPG, JPEG, PNG. Max file size: 150 KB. Dimensions: width 20-400px, height 10-200px. icon: type: string format: binary description: >- Icon image file. Accepted formats: JPG, JPEG, PNG. Max file size: 150 KB. Dimensions: width 20-400px, height 10-200px. password: type: string maxLength: 255 description: Password protection for the Public Status Page customDomain: type: string maxLength: 255 description: >- Provide when you want to use custom domain for the Public Status Page example: status.your-domain.com hideUrlLinks: type: boolean description: This will hide "Powered by UptimeRobot" link in footer example: false noIndex: type: boolean description: >- Set HTML meta tag to allow or disallow search engines to index your status page example: false gaCode: type: string pattern: /G-[A-Z0-9]{10}/ example: G-xxxxxxxxxx title: Google Analytics code description: Available only for a Custom Domain status page sort: type: string enum: - FriendlyNameAsc - FriendlyNameDesc - StatusUpDownPaused - StatusDownUpPaused example: FriendlyNameAsc description: >- Sort monitors by friendly name or their statuses. Manual is read-only — a manual order can only be arranged in the dashboard. status: enum: - PAUSED - ENABLED type: string example: ENABLED title: Status of the Public Status Page description: Send "ENABLED" to publish the status page, "PAUSED" to un-publish it subscription: type: boolean title: Enable subscribe feature description: Subscribers can subscribe to receive announcements via an e-mail. shareAnalyticsConsent: type: boolean default: false description: >- Help us improve the Status Pages by sharing the analytics data with us. homepageLink: type: string maxLength: 255 default: https://uptimerobot.com title: Homepage URL description: >- The link target for the logo (or main title) on status page. Usually leads to your homepage. showCookieBar: type: boolean default: false title: Show cookie consent bar on status page description: Available only for a Custom domain status page useSmallCookieConsentModal: type: boolean title: Smaller version of cookie consent description: >- Allowing visitor to interact with the page - should not be used on public pages pinnedAnnouncementId: type: number customSettings: $ref: '#/components/schemas/CustomSettingsDto' PspAnnouncementPaginationResponseDto: type: object properties: nextLink: type: string nullable: true data: type: array items: type: object properties: id: type: integer minimum: 0 exclusiveMinimum: false pspId: type: integer minimum: 0 exclusiveMinimum: false nullable: true userId: type: integer minimum: 0 exclusiveMinimum: false nullable: true title: type: string maxLength: 255 nullable: true content: type: string maxLength: 2000 nullable: true status: description: >- Status of the announcement. Possible values: Offline (draft, not visible on status page), Pending (scheduled for publication), Published (currently visible on status page), Archived (historical record, no longer visible) nullable: true type: description: >- Type of the announcement. Possible values: Info (general information), Maintenance (scheduled maintenance notification), Issue (incident or issue notification) nullable: true deliveryStatus: description: >- Delivery status of the announcement to subscribers. Possible values: CantSend (cannot be sent to subscribers), InQueue (queued for delivery), Sent (successfully delivered) nullable: true startDate: nullable: true endDate: nullable: true creationDate: nullable: true submitDate: nullable: true sentCount: type: integer minimum: 0 exclusiveMinimum: false nullable: true required: - id - pspId - userId - title - content - status - type - deliveryStatus - startDate - endDate - creationDate - submitDate - sentCount required: - nextLink - data PspAnnouncementResponseDto: type: object properties: id: type: integer minimum: 0 exclusiveMinimum: false pspId: type: integer minimum: 0 exclusiveMinimum: false nullable: true userId: type: integer minimum: 0 exclusiveMinimum: false nullable: true title: type: string maxLength: 255 nullable: true content: type: string maxLength: 2000 nullable: true status: description: >- Status of the announcement. Possible values: Offline (draft, not visible on status page), Pending (scheduled for publication), Published (currently visible on status page), Archived (historical record, no longer visible) nullable: true type: description: >- Type of the announcement. Possible values: Info (general information), Maintenance (scheduled maintenance notification), Issue (incident or issue notification) nullable: true deliveryStatus: description: >- Delivery status of the announcement to subscribers. Possible values: CantSend (cannot be sent to subscribers), InQueue (queued for delivery), Sent (successfully delivered) nullable: true startDate: nullable: true endDate: nullable: true creationDate: nullable: true submitDate: nullable: true sentCount: type: integer minimum: 0 exclusiveMinimum: false nullable: true required: - id - pspId - userId - title - content - status - type - deliveryStatus - startDate - endDate - creationDate - submitDate - sentCount CreatePspAnnouncementRequestDto: type: object properties: title: type: string maxLength: 255 description: Title of the announcement example: Scheduled Maintenance content: type: string maxLength: 2000 description: Content of the announcement example: We will be performing scheduled maintenance on our servers. status: enum: - Offline - Pending - Published - Archived type: string description: >- Status of the announcement. Possible values: Offline (draft, not visible on status page), Pending (scheduled for publication), Published (currently visible on status page), Archived (historical record, no longer visible) example: Pending type: enum: - Info - Maintenance - Issue type: string description: >- Type of the announcement. Possible values: Info (general information), Maintenance (scheduled maintenance notification), Issue (incident or issue notification) example: Maintenance startDate: format: date-time type: string description: Start date of the announcement (ISO 8601 format) example: '2024-01-15T10:00:00.000Z' endDate: format: date-time type: string nullable: true description: End date of the announcement (ISO 8601 format) example: '2024-01-15T14:00:00.000Z' UpdatePspAnnouncementRequestDto: type: object properties: title: type: string maxLength: 255 description: Title of the announcement example: Scheduled Maintenance content: type: string maxLength: 2000 description: Content of the announcement example: We will be performing scheduled maintenance on our servers. status: enum: - Offline - Pending - Published - Archived type: string description: >- Status of the announcement. Possible values: Offline (draft, not visible on status page), Pending (scheduled for publication), Published (currently visible on status page), Archived (historical record, no longer visible) example: Pending type: enum: - Info - Maintenance - Issue type: string description: >- Type of the announcement. Possible values: Info (general information), Maintenance (scheduled maintenance notification), Issue (incident or issue notification) example: Maintenance startDate: format: date-time type: string description: Start date of the announcement (ISO 8601 format) example: '2024-01-15T10:00:00.000Z' endDate: format: date-time type: string nullable: true description: End date of the announcement (ISO 8601 format) example: '2024-01-15T14:00:00.000Z' MaintenanceWindowPaginationDto: type: object properties: nextLink: type: string nullable: true data: type: array items: type: object properties: id: type: number minimum: 0 exclusiveMinimum: false userId: type: number minimum: 0 exclusiveMinimum: false name: type: string minLength: 3 interval: type: string enum: - once - daily - weekly - monthly x-enumNames: - once - daily - weekly - monthly date: type: string nullable: true time: type: string pattern: ^(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d$ duration: type: number minimum: 1 exclusiveMinimum: false autoAddMonitors: type: boolean monitorIds: type: array items: type: number days: type: array items: type: number status: type: string enum: - active - paused x-enumNames: - active - paused created: oneOf: - {} - type: string required: - id - userId - name - interval - date - time - duration - autoAddMonitors - monitorIds - days - status - created required: - nextLink - data MaintenanceWindowDto: type: object properties: id: type: number minimum: 0 exclusiveMinimum: false userId: type: number minimum: 0 exclusiveMinimum: false name: type: string minLength: 3 interval: type: string enum: - once - daily - weekly - monthly x-enumNames: - once - daily - weekly - monthly date: type: string nullable: true time: type: string pattern: ^(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d$ duration: type: number minimum: 1 exclusiveMinimum: false autoAddMonitors: type: boolean monitorIds: type: array items: type: number days: type: array items: type: number status: type: string enum: - active - paused x-enumNames: - active - paused created: oneOf: - {} - type: string required: - id - userId - name - interval - date - time - duration - autoAddMonitors - monitorIds - days - status - created CreateMaintenanceWindowDto: type: object properties: name: type: string maxLength: 255 description: Friendly name of the maintenance window example: Friday Maintenance window autoAddMonitors: type: boolean description: >- If true, all monitors are automatically added to this maintenance window example: false interval: enum: - once - daily - weekly - monthly type: string date: type: string example: '2024-06-20' description: >- Start date of the maintenance window in YYYY-MM-DD format (years 19xx or 20xx only) time: type: string pattern: /^(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d$/ example: '14:30:00' description: Start time of the maintenance window in HH:mm:ss format duration: type: number minimum: 1 example: 30 description: >- Duration of the maintenance window in minutes. Maintenance window will be active for this duration days: description: >- (only needed for weekly and monthly maintenance windows). E.g. [2, 4, 5] for Tuesday, Thursday and Friday or [10, 17, 26] for the days of the month. -1 for last day of the month) example: - 2 - 4 - 5 type: array items: type: number monitorIds: description: List of monitor IDs to be assigned to the maintenance window example: - 1 - 2 - 3 type: array items: type: number required: - name - interval - date - time - duration UpdateMaintenanceWindowDto: type: object properties: name: type: string maxLength: 255 example: Weekend Maintenance Window description: Name of the maintenance window interval: enum: - once - daily - weekly - monthly type: string date: type: string example: '2024-06-20' description: >- Start date of the maintenance window in YYYY-MM-DD format (years 19xx or 20xx only) time: type: string pattern: /^(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d$/ example: '12:00:00' description: Time format in HH:mm:ss duration: type: number minimum: 1 example: 10 description: Duration in minutes days: description: >- (only needed for weekly and monthly maintenance windows). E.g. [2, 4, 5] for Tuesday, Thursday and Friday or [10, 17, 26] for the days of the month. -1 for last day of the month) example: - 2 - 4 - 5 type: array items: type: number monitorIds: description: Array of monitor IDs to associate with this maintenance window example: - 1 - 2 - 3 type: array items: type: number status: enum: - active - paused type: string description: >- Pause or resume the maintenance window. `paused` stops it from suppressing alerts; `active` re-enables it. Omit to leave the current status unchanged. example: active UserDto: description: UserPublic type: object properties: email: type: string fullName: type: string monitorsCount: description: >- Monitors this account is using. Third party services are counted separately, in dependencyMonitorsCount, because they spend their own allowance rather than a monitor slot. type: number monitorLimit: type: number dependencyMonitorsCount: description: Third party services this account is tracking. type: number dependencyMonitorLimit: description: >- Third party services this account may track. Independent of monitorLimit — spending one does not reduce the other. type: number smsCredits: type: number activeSubscription: type: object properties: plan: description: >- Display label for the active plan (e.g. "Free", "Solo", "Team", "Scale"). This is a human-readable label, NOT a stable identifier — it can change (e.g. "Enterprise" → "Scale"). Consumers needing stability should branch on a stable field, not on this string. type: string monitorLimit: type: number expirationDate: type: string status: type: string required: - plan - monitorLimit required: - email - fullName - monitorsCount - monitorLimit - dependencyMonitorsCount - dependencyMonitorLimit - smsCredits - activeSubscription AlertContactDto: description: AlertContactPublic type: object properties: id: type: number friendlyName: type: string nullable: true type: description: >- Alert-contact type. Mobile push responses retain MobileAppOld (iOS) and MobileApp (Android) through October 10, 2026; consumers should also accept MobileAppIOS and MobileAppAndroid before responses switch to those canonical names after the deadline. value: type: string nullable: true customValue: type: string nullable: true enableNotificationsFor: {} sslExpirationReminder: type: boolean nullable: true httpUsername: type: string nullable: true httpPassword: type: string nullable: true authType: type: boolean nullable: true customHeaders: type: object additionalProperties: type: string nullable: true mobileProviderId: type: number nullable: true status: {} orgAlertContactId: type: number nullable: true config: type: object properties: android_push_up_channel: type: string android_push_down_channel: type: string nullable: true required: - id - friendlyName - type - value - customValue - enableNotificationsFor - sslExpirationReminder - httpUsername - httpPassword - authType - mobileProviderId - status - orgAlertContactId AllAlertContactDto: description: AllAlertContact type: object properties: notifyOnly: type: boolean orgAlertContactId: type: number nullable: true user: description: AllAlertContactUser type: object properties: id: type: number name: type: string required: - id - name alertContacts: type: array items: description: AllAlertContactItem type: object properties: id: type: number name: type: string value: type: string type: description: >- Alert-contact type. Mobile push responses retain MobileAppOld (iOS) and MobileApp (Android) through October 10, 2026; consumers should also accept MobileAppIOS and MobileAppAndroid before responses switch to those canonical names after the deadline. status: {} threshold: type: number recurrence: type: number required: - id - name - value - type - status - threshold - recurrence required: - notifyOnly - orgAlertContactId - user - alertContacts IntegrationPaginationDto: type: object properties: nextLink: type: string nullable: true data: type: array items: type: object properties: id: type: number minimum: 0 exclusiveMinimum: false friendlyName: type: string nullable: true enableNotificationsFor: {} type: description: >- Alert-contact type. Mobile push responses retain MobileAppOld (iOS) and MobileApp (Android) through October 10, 2026; consumers should also accept MobileAppIOS and MobileAppAndroid before responses switch to those canonical names after the deadline. status: {} sslExpirationReminder: type: boolean nullable: true value: type: string nullable: true customValue: type: string nullable: true customValue2: type: string nullable: true customValue3: type: string nullable: true customValue4: type: string nullable: true customHeaders: type: object additionalProperties: type: string nullable: true required: - id - friendlyName - enableNotificationsFor - type - status - sslExpirationReminder - value - customValue - customValue2 - customValue3 - customValue4 required: - nextLink - data IntegrationDto: type: object properties: id: type: number minimum: 0 exclusiveMinimum: false friendlyName: type: string nullable: true enableNotificationsFor: {} type: description: >- Alert-contact type. Mobile push responses retain MobileAppOld (iOS) and MobileApp (Android) through October 10, 2026; consumers should also accept MobileAppIOS and MobileAppAndroid before responses switch to those canonical names after the deadline. status: {} sslExpirationReminder: type: boolean nullable: true value: type: string nullable: true customValue: type: string nullable: true customValue2: type: string nullable: true customValue3: type: string nullable: true customValue4: type: string nullable: true customHeaders: type: object additionalProperties: type: string nullable: true required: - id - friendlyName - enableNotificationsFor - type - status - sslExpirationReminder - value - customValue - customValue2 - customValue3 - customValue4 SlackBaseIntegrationDto: type: object properties: friendlyName: type: string maxLength: 60 description: The friendly name of the integration example: My Integration from API enableNotificationsFor: enum: - UpAndDown - Down - Up - None type: string sslExpirationReminder: type: boolean description: Send a notification about SSL & Domain expiry example: true webhookURL: type: string maxLength: 1500 customValue: type: string maxLength: 5000 required: - webhookURL - customValue CreateSlackIntegrationDto: type: object properties: type: type: string enum: - Slack data: $ref: '#/components/schemas/SlackBaseIntegrationDto' required: - type - data TelegramBaseIntegrationDto: type: object properties: friendlyName: type: string maxLength: 60 description: The friendly name of the integration example: My Integration from API enableNotificationsFor: enum: - UpAndDown - Down - Up - None type: string sslExpirationReminder: type: boolean description: Send a notification about SSL & Domain expiry example: true CreateTelegramIntegrationDto: type: object properties: type: type: string enum: - Telegram data: $ref: '#/components/schemas/TelegramBaseIntegrationDto' required: - type - data MsTeamsBaseIntegrationDto: type: object properties: friendlyName: type: string maxLength: 60 description: The friendly name of the integration example: My Integration from API enableNotificationsFor: enum: - UpAndDown - Down - Up - None type: string sslExpirationReminder: type: boolean description: Send a notification about SSL & Domain expiry example: true webhookURL: type: string maxLength: 1500 description: The Microsoft Teams Webhook URL example: https:// required: - webhookURL CreateMSTeamsIntegrationDto: type: object properties: type: type: string enum: - MSTeams data: $ref: '#/components/schemas/MsTeamsBaseIntegrationDto' required: - type - data WebhookBaseIntegrationDto: type: object properties: friendlyName: type: string maxLength: 60 description: The friendly name of the integration example: My Integration from API enableNotificationsFor: enum: - UpAndDown - Down - Up - None type: string sslExpirationReminder: type: boolean description: Send a notification about SSL & Domain expiry example: true urlToNotify: type: string maxLength: 1500 sendAsQueryString: type: boolean postValue: type: string sendAsJSON: type: boolean sendAsPostParameters: type: boolean customHeaders: type: object nullable: true required: - urlToNotify - postValue CreateWebhookIntegrationDto: type: object properties: type: type: string enum: - Webhook data: $ref: '#/components/schemas/WebhookBaseIntegrationDto' required: - type - data ZapierBaseIntegrationDto: type: object properties: friendlyName: type: string maxLength: 60 description: The friendly name of the integration example: My Integration from API enableNotificationsFor: enum: - UpAndDown - Down - Up - None type: string sslExpirationReminder: type: boolean description: Send a notification about SSL & Domain expiry example: true hookURL: type: string maxLength: 1500 required: - hookURL CreateZapierIntegrationDto: type: object properties: type: type: string enum: - Zapier data: $ref: '#/components/schemas/ZapierBaseIntegrationDto' required: - type - data CreatePagerdutyBaseIntegrationDto: type: object properties: friendlyName: type: string maxLength: 60 description: The friendly name of the integration example: My Integration from API enableNotificationsFor: enum: - UpAndDown - Down - Up - None type: string sslExpirationReminder: type: boolean description: Send a notification about SSL & Domain expiry example: true integrationKey: type: string minLength: 32 description: The PagerDuty Integration Key example: 32 digits key location: enum: - us - eu type: string description: The PagerDuty Service region autoResolve: type: boolean description: Auto-resolve incidents after up event example: true required: - integrationKey CreatePagerdutyIntegrationDto: type: object properties: type: type: string enum: - Pagerduty data: $ref: '#/components/schemas/CreatePagerdutyBaseIntegrationDto' required: - type - data GoogleChatBaseIntegrationDto: type: object properties: friendlyName: type: string maxLength: 60 description: The friendly name of the integration example: My Integration from API enableNotificationsFor: enum: - UpAndDown - Down - Up - None type: string sslExpirationReminder: type: boolean description: Send a notification about SSL & Domain expiry example: true roomURL: type: string maxLength: 1500 description: The Google Chat Room URL example: https://chat.googleapis.com/v1/spaces/ABCD1234/... customMessage: type: string maxLength: 5000 description: Optional. Text that will be added to body of each notification. example: This is a custom value required: - roomURL - customMessage CreateGoogleChatIntegrationDto: type: object properties: type: type: string enum: - GoogleChat data: $ref: '#/components/schemas/GoogleChatBaseIntegrationDto' required: - type - data DiscordBaseIntegrationDto: type: object properties: enableNotificationsFor: enum: - UpAndDown - Down - Up - None type: string webhookURL: type: string maxLength: 1500 description: The Discord Webhook URL to send the alert to example: https://discord.com/api/webhooks/1234567890/abcdefg customValue: type: string maxLength: 5000 description: Optional. Text that will be added to body of each notification. example: This is a custom value friendlyName: type: string maxLength: 60 sslExpirationReminder: type: boolean required: - webhookURL - customValue CreateDiscordIntegrationDto: type: object properties: type: type: string enum: - Discord data: $ref: '#/components/schemas/DiscordBaseIntegrationDto' required: - type - data SplunkBaseIntegrationDto: type: object properties: friendlyName: type: string maxLength: 60 description: The friendly name of the integration example: My Integration from API enableNotificationsFor: enum: - UpAndDown - Down - Up - None type: string sslExpirationReminder: type: boolean description: Send a notification about SSL & Domain expiry example: true urlToNotify: type: string maxLength: 1500 required: - urlToNotify CreateSplunkIntegrationDto: type: object properties: type: type: string enum: - Splunk data: $ref: '#/components/schemas/SplunkBaseIntegrationDto' required: - type - data PushbulletBaseIntegrationDto: type: object properties: friendlyName: type: string maxLength: 60 description: The friendly name of the integration example: My Integration from API enableNotificationsFor: enum: - UpAndDown - Down - Up - None type: string sslExpirationReminder: type: boolean description: Send a notification about SSL & Domain expiry example: true accessToken: type: string maxLength: 1500 description: The Pushbullet Access Token example: '1234567890' required: - accessToken CreatePushBulletIntegrationDto: type: object properties: type: type: string enum: - PushBullet data: $ref: '#/components/schemas/PushbulletBaseIntegrationDto' required: - type - data CreatePushoverBaseIntegrationDto: type: object properties: friendlyName: type: string maxLength: 60 description: The friendly name of the integration example: My Integration from API enableNotificationsFor: enum: - UpAndDown - Down - Up - None type: string sslExpirationReminder: type: boolean description: Send a notification about SSL & Domain expiry example: true userKey: type: string maxLength: 1500 description: The Pushover User Key example: abcdefxyz priority: enum: - Lowest - Low - Normal - High - Emergency type: string required: - userKey CreatePushoverIntegrationDto: type: object properties: type: type: string enum: - Pushover data: $ref: '#/components/schemas/CreatePushoverBaseIntegrationDto' required: - type - data MattermostBaseIntegrationDto: type: object properties: enableNotificationsFor: enum: - UpAndDown - Down - Up - None type: string webhookURL: type: string maxLength: 1500 description: The Mattermost Webhook URL example: https://your-mattermost-instance.com/hooks/ customValue: type: string maxLength: 5000 description: Optional. Text that will be added to body of each notification. example: This is a custom value friendlyName: type: string maxLength: 60 sslExpirationReminder: type: boolean required: - webhookURL - customValue CreateMattermostIntegrationDto: type: object properties: type: type: string enum: - Mattermost data: $ref: '#/components/schemas/MattermostBaseIntegrationDto' required: - type - data UpdateSlackIntegrationDataDto: type: object properties: friendlyName: type: string maxLength: 60 description: The friendly name of the integration example: My Integration from API enableNotificationsFor: enum: - UpAndDown - Down - Up - None type: string sslExpirationReminder: type: boolean description: Send a notification about SSL & Domain expiry example: true webhookURL: type: string maxLength: 1500 customValue: type: string maxLength: 5000 UpdateSlackIntegrationDto: type: object properties: type: type: string enum: - Slack data: $ref: '#/components/schemas/UpdateSlackIntegrationDataDto' required: - type - data UpdateTelegramIntegrationDataDto: type: object properties: friendlyName: type: string maxLength: 60 description: The friendly name of the integration example: My Integration from API enableNotificationsFor: enum: - UpAndDown - Down - Up - None type: string sslExpirationReminder: type: boolean description: Send a notification about SSL & Domain expiry example: true UpdateTelegramIntegrationDto: type: object properties: type: type: string enum: - Telegram data: $ref: '#/components/schemas/UpdateTelegramIntegrationDataDto' required: - type - data UpdateMsTeamsIntegrationDataDto: type: object properties: friendlyName: type: string maxLength: 60 description: The friendly name of the integration example: My Integration from API enableNotificationsFor: enum: - UpAndDown - Down - Up - None type: string sslExpirationReminder: type: boolean description: Send a notification about SSL & Domain expiry example: true webhookURL: type: string maxLength: 1500 description: The Microsoft Teams Webhook URL example: https:// UpdateMSTeamsIntegrationDto: type: object properties: type: type: string enum: - MSTeams data: $ref: '#/components/schemas/UpdateMsTeamsIntegrationDataDto' required: - type - data UpdateWebhookIntegrationDataDto: type: object properties: friendlyName: type: string maxLength: 60 description: The friendly name of the integration example: My Integration from API enableNotificationsFor: enum: - UpAndDown - Down - Up - None type: string sslExpirationReminder: type: boolean description: Send a notification about SSL & Domain expiry example: true urlToNotify: type: string maxLength: 1500 sendAsQueryString: type: boolean postValue: type: string sendAsJSON: type: boolean sendAsPostParameters: type: boolean customHeaders: type: object nullable: true UpdateWebhookIntegrationDto: type: object properties: type: type: string enum: - Webhook data: $ref: '#/components/schemas/UpdateWebhookIntegrationDataDto' required: - type - data UpdateZapierIntegrationDataDto: type: object properties: friendlyName: type: string maxLength: 60 description: The friendly name of the integration example: My Integration from API enableNotificationsFor: enum: - UpAndDown - Down - Up - None type: string sslExpirationReminder: type: boolean description: Send a notification about SSL & Domain expiry example: true hookURL: type: string maxLength: 1500 UpdateZapierIntegrationDto: type: object properties: type: type: string enum: - Zapier data: $ref: '#/components/schemas/UpdateZapierIntegrationDataDto' required: - type - data UpdatePagerdutyIntegrationDataDto: type: object properties: friendlyName: type: string maxLength: 60 description: The friendly name of the integration example: My Integration from API enableNotificationsFor: enum: - UpAndDown - Down - Up - None type: string sslExpirationReminder: type: boolean description: Send a notification about SSL & Domain expiry example: true integrationKey: type: string minLength: 32 description: The PagerDuty Integration Key example: 32 digits key location: enum: - us - eu type: string description: The PagerDuty Service region autoResolve: type: boolean description: Auto-resolve incidents after up event example: true UpdatePagerdutyIntegrationDto: type: object properties: type: type: string enum: - Pagerduty data: $ref: '#/components/schemas/UpdatePagerdutyIntegrationDataDto' required: - type - data UpdateGoogleChatIntegrationDataDto: type: object properties: friendlyName: type: string maxLength: 60 description: The friendly name of the integration example: My Integration from API enableNotificationsFor: enum: - UpAndDown - Down - Up - None type: string sslExpirationReminder: type: boolean description: Send a notification about SSL & Domain expiry example: true roomURL: type: string maxLength: 1500 description: The Google Chat Room URL example: https://chat.googleapis.com/v1/spaces/ABCD1234/... customMessage: type: string maxLength: 5000 description: Optional. Text that will be added to body of each notification. example: This is a custom value UpdateGoogleChatIntegrationDto: type: object properties: type: type: string enum: - GoogleChat data: $ref: '#/components/schemas/UpdateGoogleChatIntegrationDataDto' required: - type - data UpdateDiscordIntegrationDataDto: type: object properties: enableNotificationsFor: enum: - UpAndDown - Down - Up - None type: string webhookURL: type: string maxLength: 1500 description: The Discord Webhook URL to send the alert to example: https://discord.com/api/webhooks/1234567890/abcdefg customValue: type: string maxLength: 5000 description: Optional. Text that will be added to body of each notification. example: This is a custom value friendlyName: type: string maxLength: 60 sslExpirationReminder: type: boolean UpdateDiscordIntegrationDto: type: object properties: type: type: string enum: - Discord data: $ref: '#/components/schemas/UpdateDiscordIntegrationDataDto' required: - type - data UpdateSplunkIntegrationDataDto: type: object properties: friendlyName: type: string maxLength: 60 description: The friendly name of the integration example: My Integration from API enableNotificationsFor: enum: - UpAndDown - Down - Up - None type: string sslExpirationReminder: type: boolean description: Send a notification about SSL & Domain expiry example: true urlToNotify: type: string maxLength: 1500 UpdateSplunkIntegrationDto: type: object properties: type: type: string enum: - Splunk data: $ref: '#/components/schemas/UpdateSplunkIntegrationDataDto' required: - type - data UpdatePushbulletIntegrationDataDto: type: object properties: friendlyName: type: string maxLength: 60 description: The friendly name of the integration example: My Integration from API enableNotificationsFor: enum: - UpAndDown - Down - Up - None type: string sslExpirationReminder: type: boolean description: Send a notification about SSL & Domain expiry example: true accessToken: type: string maxLength: 1500 description: The Pushbullet Access Token example: '1234567890' UpdatePushBulletIntegrationDto: type: object properties: type: type: string enum: - PushBullet data: $ref: '#/components/schemas/UpdatePushbulletIntegrationDataDto' required: - type - data UpdatePushoverIntegrationDataDto: type: object properties: friendlyName: type: string maxLength: 60 description: The friendly name of the integration example: My Integration from API enableNotificationsFor: enum: - UpAndDown - Down - Up - None type: string sslExpirationReminder: type: boolean description: Send a notification about SSL & Domain expiry example: true userKey: type: string maxLength: 1500 description: The Pushover User Key example: abcdefxyz priority: enum: - Lowest - Low - Normal - High - Emergency type: string UpdatePushoverIntegrationDto: type: object properties: type: type: string enum: - Pushover data: $ref: '#/components/schemas/UpdatePushoverIntegrationDataDto' required: - type - data UpdateMattermostIntegrationDataDto: type: object properties: enableNotificationsFor: enum: - UpAndDown - Down - Up - None type: string webhookURL: type: string maxLength: 1500 description: The Mattermost Webhook URL example: https://your-mattermost-instance.com/hooks/ customValue: type: string maxLength: 5000 description: Optional. Text that will be added to body of each notification. example: This is a custom value friendlyName: type: string maxLength: 60 sslExpirationReminder: type: boolean UpdateMattermostIntegrationDto: type: object properties: type: type: string enum: - Mattermost data: $ref: '#/components/schemas/UpdateMattermostIntegrationDataDto' required: - type - data AlertContactPaginationDto: type: object properties: nextLink: type: string nullable: true data: type: array items: description: AlertContactPublic type: object properties: id: type: number friendlyName: type: string nullable: true type: description: >- Alert-contact type. Mobile push responses retain MobileAppOld (iOS) and MobileApp (Android) through October 10, 2026; consumers should also accept MobileAppIOS and MobileAppAndroid before responses switch to those canonical names after the deadline. value: type: string nullable: true customValue: type: string nullable: true enableNotificationsFor: {} sslExpirationReminder: type: boolean nullable: true httpUsername: type: string nullable: true httpPassword: type: string nullable: true authType: type: boolean nullable: true customHeaders: type: object additionalProperties: type: string nullable: true mobileProviderId: type: number nullable: true status: {} orgAlertContactId: type: number nullable: true config: type: object properties: android_push_up_channel: type: string android_push_down_channel: type: string nullable: true required: - id - friendlyName - type - value - customValue - enableNotificationsFor - sslExpirationReminder - httpUsername - httpPassword - authType - mobileProviderId - status - orgAlertContactId required: - nextLink - data AlertContactConfigDto: type: object properties: android_push_up_channel: type: string android_push_down_channel: type: string CreatePersonalAlertContactDto: type: object properties: type: enum: - Email - ProSms - Voice - MobileAppIOS - MobileAppAndroid - MobileAppOld - MobileApp type: string description: >- Personal alert-contact type. Email and mobile push for iOS or Android are creatable here; Pro SMS and voice require phone verification. Use MobileAppIOS or MobileAppAndroid for mobile push. DEPRECATED: MobileAppOld (use MobileAppIOS) and MobileApp (use MobileAppAndroid) are accepted through October 10, 2026 and will be rejected after that date. friendlyName: type: string description: Display name of the alert contact enableNotificationsFor: enum: - 0 - 1 - 2 - 3 type: number value: type: string description: Email address (required for Email contacts) deviceName: type: string description: Device name (push) oneSignalSubscriptionId: type: string description: OneSignal subscription ID (push) oneSignalUserId: type: string description: OneSignal user ID (push) deviceFingerprint: type: string description: Device fingerprint (push) pushToken: type: string description: Push notification token (push) platform: type: string enum: - ios - android description: Device platform (push) config: $ref: '#/components/schemas/AlertContactConfigDto' required: - type UpdatePersonalAlertContactDto: type: object properties: friendlyName: type: string description: Display name of the personal alert contact example: My work email enableNotificationsFor: enum: - 0 - 1 - 2 - 3 type: number description: Which monitor events this contact is notified for sslExpirationReminder: type: boolean description: Whether to send SSL certificate expiration reminders isActive: type: boolean description: Activate (true) or pause (false) the alert contact SimpleTagPaginationDto: type: object properties: data: type: array items: type: object properties: id: type: number minimum: 0 exclusiveMinimum: false name: type: string minLength: 1 required: - id - name nextCursorId: type: number nullable: true required: - data - nextCursorId ThirdPartyProviderSearchDto: type: object properties: data: type: array items: type: object properties: id: type: integer name: type: string logoUrl: type: string nullable: true statusPageUrl: type: string state: type: string enum: - operational - minor - major - maintenance matchedComponent: type: object properties: id: type: integer name: type: string required: - id - name nullable: true isTracked: type: boolean required: - id - name - logoUrl - statusPageUrl - state - matchedComponent - isTracked required: - data ThirdPartyProviderDetailDto: type: object properties: id: type: integer name: type: string logoUrl: type: string nullable: true statusPageUrl: type: string state: type: string enum: - operational - minor - major - maintenance components: type: array items: type: object properties: id: type: integer name: type: string status: type: string enum: - operational - minor - major - maintenance - unknown children: type: array items: type: object properties: id: type: integer name: type: string status: type: string enum: - operational - minor - major - maintenance - unknown required: - id - name - status required: - id - name - status - children required: - id - name - logoUrl - statusPageUrl - state - components