openapi: 3.0.3
info:
title: 'Statuswerk API Reference'
description: ''
version: 1.0.0
servers:
-
url: 'https://statuswerk.eu'
tags:
-
name: Endpoints
description: ''
components:
securitySchemes:
default:
type: http
scheme: bearer
description: 'You can generate an API token in your dashboard under API Tokens. Pass it as `Authorization: Bearer YOUR_TOKEN` and set the `X-Tenant-Id` header to scope requests to a workspace.'
security:
-
default: []
paths:
/api/v1/statuspage:
get:
summary: 'Get the current statuspage details.'
operationId: getTheCurrentStatuspageDetails
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Endpoints
patch:
summary: 'Update the statuspage settings.'
operationId: updateTheStatuspageSettings
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: 'value darf nicht mehr als 255 Zeichen haben.'
example: b
timezone:
type: string
description: 'Must be a valid time zone, such as Africa/Accra.'
example: Asia/Ulaanbaatar
language:
type: string
description: 'value darf nicht mehr als 10 Zeichen haben.'
example: gzmiyv
is_public:
type: boolean
description: ''
example: false
allow_subscriptions:
type: boolean
description: ''
example: true
show_uptime:
type: boolean
description: ''
example: false
uptime_days_to_show:
type: integer
description: 'value muss mindestens 1 sein. value darf nicht größer als 365 sein.'
example: 1
allow_email_subscribers:
type: boolean
description: ''
example: false
allow_sms_subscribers:
type: boolean
description: ''
example: false
allow_webhook_subscribers:
type: boolean
description: ''
example: true
allow_rss_subscribers:
type: boolean
description: ''
example: true
meta_title:
type: string
description: 'value darf nicht mehr als 255 Zeichen haben.'
example: l
nullable: true
meta_description:
type: string
description: 'value darf nicht mehr als 500 Zeichen haben.'
example: j
nullable: true
/api/v1/statuspage/status:
get:
summary: 'Get overall status summary (useful for CI/CD checks).'
operationId: getOverallStatusSummaryusefulForCICDChecks
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Endpoints
/api/v1/components:
get:
summary: 'List all components.'
operationId: listAllComponents
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Endpoints
post:
summary: 'Create a new component.'
operationId: createANewComponent
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: 'value darf nicht mehr als 255 Zeichen haben.'
example: b
description:
type: string
description: 'value darf nicht mehr als 1000 Zeichen haben.'
example: 'Et animi quos velit et fugiat.'
nullable: true
group_id:
type: string
description: 'value muss eine gültige UUID sein.'
example: 5707ca55-f609-3528-be8b-1baeaee1567e
nullable: true
status:
type: string
description: ''
example: partial_outage
enum:
- operational
- degraded_performance
- partial_outage
- major_outage
- maintenance
nullable: true
position:
type: integer
description: 'value muss mindestens 0 sein.'
example: 9
nullable: true
show_uptime:
type: boolean
description: ''
example: false
nullable: true
uptime_start_date:
type: string
description: 'value muss ein gültiges Datum sein.'
example: '2026-09-10T11:02:16'
nullable: true
visible:
type: boolean
description: ''
example: true
nullable: true
required:
- name
'/api/v1/components/{id}':
get:
summary: 'Get a specific component.'
operationId: getASpecificComponent
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Endpoints
put:
summary: 'Update a component.'
operationId: updateAComponent
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: 'value darf nicht mehr als 255 Zeichen haben.'
example: b
description:
type: string
description: 'value darf nicht mehr als 1000 Zeichen haben.'
example: 'Et animi quos velit et fugiat.'
nullable: true
group_id:
type: string
description: 'value muss eine gültige UUID sein.'
example: 5707ca55-f609-3528-be8b-1baeaee1567e
nullable: true
status:
type: string
description: ''
example: partial_outage
enum:
- operational
- degraded_performance
- partial_outage
- major_outage
- maintenance
position:
type: integer
description: 'value muss mindestens 0 sein.'
example: 9
nullable: true
show_uptime:
type: boolean
description: ''
example: false
nullable: true
uptime_start_date:
type: string
description: 'value muss ein gültiges Datum sein.'
example: '2026-09-10T11:02:16'
nullable: true
visible:
type: boolean
description: ''
example: true
nullable: true
delete:
summary: 'Delete a component.'
operationId: deleteAComponent
description: ''
parameters: []
responses: { }
tags:
- Endpoints
parameters:
-
in: path
name: id
description: 'The ID of the component.'
example: architecto
required: true
schema:
type: string
'/api/v1/components/{component}/status':
post:
summary: 'Update component status (CI/CD-friendly endpoint).'
operationId: updateComponentStatusCICDFriendlyEndpoint
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
status:
type: string
description: ''
example: major_outage
enum:
- operational
- degraded_performance
- partial_outage
- major_outage
- maintenance
required:
- status
parameters:
-
in: path
name: component
description: 'The component.'
example: architecto
required: true
schema:
type: string
/api/v1/components/reorder:
post:
summary: 'Reorder components.'
operationId: reorderComponents
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
components:
type: array
description: ''
example:
- []
items:
type: object
properties:
id:
type: string
description: 'value muss eine gültige UUID sein.'
example: 6ff8f7f6-1eb3-3525-be4a-3932c805afed
position:
type: integer
description: 'value muss mindestens 0 sein.'
example: 84
required:
- id
- position
required:
- components
/api/v1/component-groups:
get:
summary: 'List all component groups.'
operationId: listAllComponentGroups
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Endpoints
post:
summary: 'Create a new component group.'
operationId: createANewComponentGroup
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: 'value darf nicht mehr als 255 Zeichen haben.'
example: b
description:
type: string
description: 'value darf nicht mehr als 1000 Zeichen haben.'
example: 'Et animi quos velit et fugiat.'
nullable: true
position:
type: integer
description: 'value muss mindestens 0 sein.'
example: 42
nullable: true
collapsed_by_default:
type: boolean
description: ''
example: true
nullable: true
visible:
type: boolean
description: ''
example: true
nullable: true
required:
- name
'/api/v1/component-groups/{id}':
get:
summary: 'Get a specific component group.'
operationId: getASpecificComponentGroup
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Endpoints
put:
summary: 'Update a component group.'
operationId: updateAComponentGroup
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: 'value darf nicht mehr als 255 Zeichen haben.'
example: b
description:
type: string
description: 'value darf nicht mehr als 1000 Zeichen haben.'
example: 'Et animi quos velit et fugiat.'
nullable: true
position:
type: integer
description: 'value muss mindestens 0 sein.'
example: 42
nullable: true
collapsed_by_default:
type: boolean
description: ''
example: false
nullable: true
visible:
type: boolean
description: ''
example: true
nullable: true
delete:
summary: 'Delete a component group.'
operationId: deleteAComponentGroup
description: ''
parameters: []
responses: { }
tags:
- Endpoints
parameters:
-
in: path
name: id
description: 'The ID of the component group.'
example: architecto
required: true
schema:
type: string
/api/v1/incidents:
get:
summary: 'List all incidents.'
operationId: listAllIncidents
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Endpoints
post:
summary: 'Create a new incident.'
operationId: createANewIncident
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
title:
type: string
description: 'value darf nicht mehr als 255 Zeichen haben.'
example: b
message:
type: string
description: 'value darf nicht mehr als 10000 Zeichen haben.'
example: 'n'
status:
type: string
description: ''
example: resolved
enum:
- investigating
- identified
- monitoring
- resolved
nullable: true
severity:
type: string
description: ''
example: major
enum:
- minor
- major
- critical
nullable: true
impact:
type: string
description: 'value darf nicht mehr als 255 Zeichen haben.'
example: g
nullable: true
visible:
type: boolean
description: ''
example: true
nullable: true
stickied:
type: boolean
description: ''
example: true
nullable: true
notify_subscribers:
type: boolean
description: ''
example: false
nullable: true
occurred_at:
type: string
description: 'value muss ein gültiges Datum sein.'
example: '2026-09-10T11:02:16'
nullable: true
components:
type: array
description: ''
example: null
items:
type: object
nullable: true
properties:
id:
type: string
description: 'value muss eine gültige UUID sein.'
example: c90237e9-ced5-3af6-88ea-84aeaa148878
status:
type: string
description: ''
example: degraded_performance
enum:
- operational
- degraded_performance
- partial_outage
- major_outage
- maintenance
nullable: true
required:
- id
required:
- title
- message
'/api/v1/incidents/{id}':
get:
summary: 'Get a specific incident.'
operationId: getASpecificIncident
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Endpoints
put:
summary: 'Update an incident.'
operationId: updateAnIncident
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
title:
type: string
description: 'value darf nicht mehr als 255 Zeichen haben.'
example: b
message:
type: string
description: 'value darf nicht mehr als 10000 Zeichen haben.'
example: 'n'
status:
type: string
description: ''
example: investigating
enum:
- investigating
- identified
- monitoring
- resolved
severity:
type: string
description: ''
example: major
enum:
- minor
- major
- critical
nullable: true
impact:
type: string
description: 'value darf nicht mehr als 255 Zeichen haben.'
example: g
nullable: true
visible:
type: boolean
description: ''
example: true
nullable: true
stickied:
type: boolean
description: ''
example: false
nullable: true
notify_subscribers:
type: boolean
description: ''
example: true
nullable: true
components:
type: array
description: ''
example: null
items:
type: object
nullable: true
properties:
id:
type: string
description: 'value muss eine gültige UUID sein.'
example: c90237e9-ced5-3af6-88ea-84aeaa148878
status:
type: string
description: ''
example: operational
enum:
- operational
- degraded_performance
- partial_outage
- major_outage
- maintenance
nullable: true
required:
- id
delete:
summary: 'Delete an incident.'
operationId: deleteAnIncident
description: ''
parameters: []
responses: { }
tags:
- Endpoints
parameters:
-
in: path
name: id
description: 'The ID of the incident.'
example: architecto
required: true
schema:
type: string
'/api/v1/incidents/{incident_id}/updates':
get:
summary: 'List all updates for an incident.'
operationId: listAllUpdatesForAnIncident
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Endpoints
post:
summary: 'Create a new incident update.'
operationId: createANewIncidentUpdate
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
status:
type: string
description: ''
example: identified
enum:
- investigating
- identified
- monitoring
- resolved
message:
type: string
description: 'value darf nicht mehr als 10000 Zeichen haben.'
example: b
notify_subscribers:
type: boolean
description: ''
example: true
nullable: true
required:
- status
- message
parameters:
-
in: path
name: incident_id
description: 'The ID of the incident.'
example: architecto
required: true
schema:
type: string
'/api/v1/incidents/{incident}/resolve':
patch:
summary: 'Resolve an incident (CI/CD-friendly endpoint).'
operationId: resolveAnIncidentCICDFriendlyEndpoint
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
message:
type: string
description: 'value darf nicht mehr als 10000 Zeichen haben.'
example: b
nullable: true
notify_subscribers:
type: boolean
description: ''
example: false
nullable: true
parameters:
-
in: path
name: incident
description: 'The incident.'
example: architecto
required: true
schema:
type: string
/api/v1/incident-templates:
get:
summary: 'List all incident templates.'
operationId: listAllIncidentTemplates
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Endpoints
post:
summary: 'Create a new incident template.'
operationId: createANewIncidentTemplate
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: 'value darf nicht mehr als 255 Zeichen haben.'
example: b
title_template:
type: string
description: 'value darf nicht mehr als 255 Zeichen haben.'
example: 'n'
message_template:
type: string
description: 'value darf nicht mehr als 10000 Zeichen haben.'
example: g
default_status:
type: string
description: ''
example: monitoring
enum:
- investigating
- identified
- monitoring
- resolved
nullable: true
default_severity:
type: string
description: ''
example: minor
enum:
- minor
- major
- critical
nullable: true
visible:
type: boolean
description: ''
example: false
nullable: true
stickied:
type: boolean
description: ''
example: false
nullable: true
notify_subscribers:
type: boolean
description: ''
example: false
nullable: true
default_component_ids:
type: array
description: 'value muss eine gültige UUID sein.'
example:
- c90237e9-ced5-3af6-88ea-84aeaa148878
items:
type: string
required:
- name
- title_template
- message_template
'/api/v1/incident-templates/{id}':
get:
summary: 'Get a specific incident template.'
operationId: getASpecificIncidentTemplate
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Endpoints
put:
summary: 'Update an incident template.'
operationId: updateAnIncidentTemplate
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: 'value darf nicht mehr als 255 Zeichen haben.'
example: b
title_template:
type: string
description: 'value darf nicht mehr als 255 Zeichen haben.'
example: 'n'
message_template:
type: string
description: 'value darf nicht mehr als 10000 Zeichen haben.'
example: g
default_status:
type: string
description: ''
example: identified
enum:
- investigating
- identified
- monitoring
- resolved
nullable: true
default_severity:
type: string
description: ''
example: minor
enum:
- minor
- major
- critical
nullable: true
visible:
type: boolean
description: ''
example: false
nullable: true
stickied:
type: boolean
description: ''
example: true
nullable: true
notify_subscribers:
type: boolean
description: ''
example: true
nullable: true
default_component_ids:
type: array
description: 'value muss eine gültige UUID sein.'
example:
- c90237e9-ced5-3af6-88ea-84aeaa148878
items:
type: string
delete:
summary: 'Delete an incident template.'
operationId: deleteAnIncidentTemplate
description: ''
parameters: []
responses: { }
tags:
- Endpoints
parameters:
-
in: path
name: id
description: 'The ID of the incident template.'
example: architecto
required: true
schema:
type: string
'/api/v1/incident-templates/{incident_template}/apply':
post:
summary: 'Open an incident from this template.'
operationId: openAnIncidentFromThisTemplate
description: "The endpoint CI/CD and alerting hooks use: name the template, optionally pass\nvariables for the placeholders, and every other field comes from the template."
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
occurred_at:
type: string
description: 'value muss ein gültiges Datum sein.'
example: '2026-09-10T11:02:16'
nullable: true
variables:
type: array
description: 'value darf nicht mehr als 255 Zeichen haben.'
example:
- b
items:
type: string
nullable: true
parameters:
-
in: path
name: incident_template
description: ''
example: architecto
required: true
schema:
type: string
/api/v1/maintenances:
get:
summary: 'List all scheduled maintenances.'
operationId: listAllScheduledMaintenances
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Endpoints
post:
summary: 'Create a new scheduled maintenance.'
operationId: createANewScheduledMaintenance
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
title:
type: string
description: 'value darf nicht mehr als 255 Zeichen haben.'
example: b
message:
type: string
description: 'value darf nicht mehr als 10000 Zeichen haben.'
example: 'n'
scheduled_start_at:
type: string
description: 'value muss ein gültiges Datum sein. value muss ein Datum nach now sein.'
example: '2052-10-03'
scheduled_end_at:
type: string
description: 'value muss ein gültiges Datum sein. value muss ein Datum nach scheduled_start_at sein.'
example: '2052-10-03'
auto_start:
type: boolean
description: ''
example: true
nullable: true
auto_complete:
type: boolean
description: ''
example: true
nullable: true
notify_subscribers:
type: boolean
description: ''
example: true
nullable: true
notify_at_scheduled:
type: boolean
description: ''
example: false
nullable: true
send_reminder_1h:
type: boolean
description: ''
example: false
nullable: true
notify_at_start:
type: boolean
description: ''
example: true
nullable: true
notify_at_end:
type: boolean
description: ''
example: false
nullable: true
update_component_status:
type: boolean
description: ''
example: false
nullable: true
component_ids:
type: array
description: 'value muss eine gültige UUID sein.'
example:
- a4855dc5-0acb-33c3-b921-f4291f719ca0
items:
type: string
required:
- title
- message
- scheduled_start_at
- scheduled_end_at
'/api/v1/maintenances/{id}':
get:
summary: 'Get a specific maintenance.'
operationId: getASpecificMaintenance
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Endpoints
put:
summary: 'Update a maintenance.'
operationId: updateAMaintenance
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
title:
type: string
description: 'value darf nicht mehr als 255 Zeichen haben.'
example: b
message:
type: string
description: 'value darf nicht mehr als 10000 Zeichen haben.'
example: 'n'
scheduled_start_at:
type: string
description: 'value muss ein gültiges Datum sein.'
example: '2026-09-10T11:02:16'
scheduled_end_at:
type: string
description: 'value muss ein gültiges Datum sein. value muss ein Datum nach scheduled_start_at sein.'
example: '2052-10-03'
auto_start:
type: boolean
description: ''
example: true
nullable: true
auto_complete:
type: boolean
description: ''
example: true
nullable: true
notify_subscribers:
type: boolean
description: ''
example: false
nullable: true
notify_at_scheduled:
type: boolean
description: ''
example: false
nullable: true
send_reminder_1h:
type: boolean
description: ''
example: false
nullable: true
notify_at_start:
type: boolean
description: ''
example: false
nullable: true
notify_at_end:
type: boolean
description: ''
example: false
nullable: true
update_component_status:
type: boolean
description: ''
example: false
nullable: true
component_ids:
type: array
description: 'value muss eine gültige UUID sein.'
example:
- a4855dc5-0acb-33c3-b921-f4291f719ca0
items:
type: string
delete:
summary: 'Delete a maintenance.'
operationId: deleteAMaintenance
description: ''
parameters: []
responses: { }
tags:
- Endpoints
parameters:
-
in: path
name: id
description: 'The ID of the maintenance.'
example: architecto
required: true
schema:
type: string
'/api/v1/maintenances/{maintenance}/start':
post:
summary: 'Start a maintenance (CI/CD-friendly endpoint).'
operationId: startAMaintenanceCICDFriendlyEndpoint
description: ''
parameters: []
responses: { }
tags:
- Endpoints
parameters:
-
in: path
name: maintenance
description: 'The maintenance.'
example: architecto
required: true
schema:
type: string
'/api/v1/maintenances/{maintenance}/complete':
post:
summary: 'Complete a maintenance (CI/CD-friendly endpoint).'
operationId: completeAMaintenanceCICDFriendlyEndpoint
description: ''
parameters: []
responses: { }
tags:
- Endpoints
parameters:
-
in: path
name: maintenance
description: 'The maintenance.'
example: architecto
required: true
schema:
type: string
/api/v1/maintenance-templates:
get:
summary: 'List all maintenance templates.'
operationId: listAllMaintenanceTemplates
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Endpoints
post:
summary: 'Create a new maintenance template.'
operationId: createANewMaintenanceTemplate
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: 'value darf nicht mehr als 255 Zeichen haben.'
example: b
title_template:
type: string
description: 'value darf nicht mehr als 255 Zeichen haben.'
example: 'n'
message_template:
type: string
description: 'value darf nicht mehr als 10000 Zeichen haben.'
example: g
default_duration_minutes:
type: integer
description: 'value muss mindestens 1 sein. value darf nicht größer als 43200 sein.'
example: 16
nullable: true
notify_subscribers:
type: boolean
description: ''
example: true
nullable: true
send_reminder_1h:
type: boolean
description: ''
example: true
nullable: true
auto_start:
type: boolean
description: ''
example: false
nullable: true
notify_at_start:
type: boolean
description: ''
example: false
nullable: true
auto_complete:
type: boolean
description: ''
example: false
nullable: true
notify_at_end:
type: boolean
description: ''
example: false
nullable: true
update_component_status:
type: boolean
description: ''
example: false
nullable: true
default_component_ids:
type: array
description: 'value muss eine gültige UUID sein.'
example:
- 977e5426-8d13-3824-86aa-b092f8ae52c5
items:
type: string
required:
- name
- title_template
- message_template
'/api/v1/maintenance-templates/{id}':
get:
summary: 'Get a specific maintenance template.'
operationId: getASpecificMaintenanceTemplate
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Endpoints
put:
summary: 'Update a maintenance template.'
operationId: updateAMaintenanceTemplate
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: 'value darf nicht mehr als 255 Zeichen haben.'
example: b
title_template:
type: string
description: 'value darf nicht mehr als 255 Zeichen haben.'
example: 'n'
message_template:
type: string
description: 'value darf nicht mehr als 10000 Zeichen haben.'
example: g
default_duration_minutes:
type: integer
description: 'value muss mindestens 1 sein. value darf nicht größer als 43200 sein.'
example: 16
nullable: true
notify_subscribers:
type: boolean
description: ''
example: false
nullable: true
send_reminder_1h:
type: boolean
description: ''
example: false
nullable: true
auto_start:
type: boolean
description: ''
example: true
nullable: true
notify_at_start:
type: boolean
description: ''
example: false
nullable: true
auto_complete:
type: boolean
description: ''
example: true
nullable: true
notify_at_end:
type: boolean
description: ''
example: true
nullable: true
update_component_status:
type: boolean
description: ''
example: true
nullable: true
default_component_ids:
type: array
description: 'value muss eine gültige UUID sein.'
example:
- 977e5426-8d13-3824-86aa-b092f8ae52c5
items:
type: string
delete:
summary: 'Delete a maintenance template.'
operationId: deleteAMaintenanceTemplate
description: ''
parameters: []
responses: { }
tags:
- Endpoints
parameters:
-
in: path
name: id
description: 'The ID of the maintenance template.'
example: architecto
required: true
schema:
type: string
'/api/v1/maintenance-templates/{maintenance_template}/apply':
post:
summary: 'Create a scheduled maintenance from this template.'
operationId: createAScheduledMaintenanceFromThisTemplate
description: "This is the endpoint CI/CD and schedulers use: pick the template, give it a start\ntime, and every other field comes from the template."
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
scheduled_start_at:
type: string
description: 'value muss ein gültiges Datum sein.'
example: '2026-09-10T11:02:16'
scheduled_end_at:
type: string
description: 'value muss ein gültiges Datum sein. value muss ein Datum nach scheduled_start_at sein.'
example: '2052-10-03'
nullable: true
variables:
type: array
description: 'value darf nicht mehr als 255 Zeichen haben.'
example:
- 'n'
items:
type: string
nullable: true
required:
- scheduled_start_at
parameters:
-
in: path
name: maintenance_template
description: ''
example: architecto
required: true
schema:
type: string
/api/v1/metrics:
get:
summary: ''
operationId: getApiV1Metrics
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Endpoints
post:
summary: ''
operationId: postApiV1Metrics
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
key:
type: string
description: 'Must match the regex /^[a-z0-9][a-z0-9_.-]*$/. value darf nicht mehr als 64 Zeichen haben.'
example: b
name:
type: string
description: 'value darf nicht mehr als 255 Zeichen haben.'
example: 'n'
suffix:
type: string
description: 'value darf nicht mehr als 16 Zeichen haben.'
example: gzmiyvdljnikhway
nullable: true
decimals:
type: integer
description: 'value muss mindestens 0 sein. value darf nicht größer als 6 sein.'
example: 1
nullable: true
aggregation:
type: string
description: ''
example: avg
enum:
- avg
- sum
- min
- max
- last
nullable: true
description:
type: string
description: 'value darf nicht mehr als 2000 Zeichen haben.'
example: 'Omnis nostrum aut adipisci quidem nostrum qui commodi.'
nullable: true
visible:
type: boolean
description: ''
example: false
nullable: true
position:
type: integer
description: 'value muss mindestens 0 sein.'
example: 3
nullable: true
y_axis_min:
type: number
description: ''
example: 4326.41688
nullable: true
y_axis_max:
type: number
description: ''
example: 4326.41688
nullable: true
required:
- key
- name
'/api/v1/metrics/{metricKey}':
get:
summary: ''
operationId: getApiV1MetricsMetricKey
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Endpoints
put:
summary: ''
operationId: putApiV1MetricsMetricKey
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
key:
type: string
description: 'Must match the regex /^[a-z0-9][a-z0-9_.-]*$/. value darf nicht mehr als 64 Zeichen haben.'
example: b
name:
type: string
description: 'value darf nicht mehr als 255 Zeichen haben.'
example: 'n'
suffix:
type: string
description: 'value darf nicht mehr als 16 Zeichen haben.'
example: gzmiyvdljnikhway
nullable: true
decimals:
type: integer
description: 'value muss mindestens 0 sein. value darf nicht größer als 6 sein.'
example: 1
nullable: true
aggregation:
type: string
description: ''
example: min
enum:
- avg
- sum
- min
- max
- last
nullable: true
description:
type: string
description: 'value darf nicht mehr als 2000 Zeichen haben.'
example: 'Omnis nostrum aut adipisci quidem nostrum qui commodi.'
nullable: true
visible:
type: boolean
description: ''
example: false
nullable: true
position:
type: integer
description: 'value muss mindestens 0 sein.'
example: 3
nullable: true
y_axis_min:
type: number
description: ''
example: 4326.41688
nullable: true
y_axis_max:
type: number
description: ''
example: 4326.41688
nullable: true
delete:
summary: ''
operationId: deleteApiV1MetricsMetricKey
description: ''
parameters: []
responses: { }
tags:
- Endpoints
parameters:
-
in: path
name: metricKey
description: ''
example: architecto
required: true
schema:
type: string
'/api/v1/metrics/{metricKey}/points':
post:
summary: 'Push one point or a batch.'
operationId: pushOnePointOrABatch
description: "Idempotent: points are bucketed on write, so a client retrying a failed request\noverwrites rather than duplicates."
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
points:
type: array
description: 'value muss mindestens 1 Elemente haben. value darf nicht mehr als 5000 Elemente haben.'
example:
- []
items:
type: object
properties:
value:
type: number
description: ''
example: 4326.41688
timestamp:
type: string
description: 'value muss ein gültiges Datum sein.'
example: '2026-09-10T11:02:16'
nullable: true
required:
- value
required:
- points
get:
summary: "Read points back, for the customer's own dashboards or to verify an import."
operationId: readPointsBackForTheCustomersOwnDashboardsOrToVerifyAnImport
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Endpoints
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
from:
type: string
description: 'value muss ein gültiges Datum sein.'
example: '2026-09-10T11:02:16'
nullable: true
to:
type: string
description: 'value muss ein gültiges Datum sein.'
example: '2026-09-10T11:02:16'
nullable: true
resolution:
type: integer
description: ''
example: 16
nullable: true
parameters:
-
in: path
name: metricKey
description: ''
example: architecto
required: true
schema:
type: string
/api/v1/subscribers:
get:
summary: 'List all subscribers.'
operationId: listAllSubscribers
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Endpoints
post:
summary: 'Create a new subscriber.'
operationId: createANewSubscriber
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
email:
type: string
description: 'This field is required when none of phone and webhook_url are present. value muss eine gültige E-Mail-Adresse sein. value darf nicht mehr als 255 Zeichen haben.'
example: gbailey@example.net
nullable: true
phone:
type: string
description: 'This field is required when none of email and webhook_url are present. value darf nicht mehr als 50 Zeichen haben.'
example: m
nullable: true
webhook_url:
type: string
description: 'This field is required when none of email and phone are present. Must be a valid URL. value darf nicht mehr als 2000 Zeichen haben.'
example: 'https://www.gulgowski.com/nihil-accusantium-harum-mollitia-modi-deserunt'
nullable: true
webhook_type:
type: string
description: 'This field is required when webhook_url is present.'
example: generic
enum:
- generic
- slack
- microsoft_teams
- discord
- google_chat
nullable: true
webhook_secret:
type: string
description: 'value darf nicht mehr als 64 Zeichen haben.'
example: w
nullable: true
channels:
type: array
description: ''
example:
- sms
items:
type: string
enum:
- email
- sms
- webhook
component_ids:
type: array
description: 'value muss eine gültige UUID sein.'
example:
- 3c85cf54-98c1-36ed-b65a-abaafdecdfa9
items:
type: string
locale:
type: string
description: 'value darf nicht mehr als 10 Zeichen haben.'
example: es_MX
nullable: true
skip_verification:
type: boolean
description: ''
example: true
nullable: true
'/api/v1/subscribers/{id}':
get:
summary: 'Get a specific subscriber.'
operationId: getASpecificSubscriber
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Endpoints
delete:
summary: 'Delete a subscriber.'
operationId: deleteASubscriber
description: ''
parameters: []
responses: { }
tags:
- Endpoints
parameters:
-
in: path
name: id
description: 'The ID of the subscriber.'
example: architecto
required: true
schema:
type: string
'/api/v1/subscribers/{subscriber}/resend-verification':
post:
summary: 'Resend verification email.'
operationId: resendVerificationEmail
description: ''
parameters: []
responses: { }
tags:
- Endpoints
parameters:
-
in: path
name: subscriber
description: 'The subscriber.'
example: architecto
required: true
schema:
type: string
/api/v1/integrations:
get:
summary: 'List all integrations for the current statuspage.'
operationId: listAllIntegrationsForTheCurrentStatuspage
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Endpoints
post:
summary: 'Create a new integration.'
operationId: createANewIntegration
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
type:
type: string
description: ''
example: discord
enum:
- generic
- slack
- microsoft_teams
- discord
- google_chat
name:
type: string
description: 'value darf nicht mehr als 255 Zeichen haben.'
example: b
url:
type: string
description: 'Must be a valid URL. value darf nicht mehr als 2000 Zeichen haben.'
example: 'http://bailey.com/'
is_enabled:
type: boolean
description: ''
example: true
nullable: true
events:
type: array
description: ''
example:
- incident.resolved
items:
type: string
enum:
- incident.created
- incident.updated
- incident.resolved
- maintenance.scheduled
- maintenance.started
- maintenance.completed
required:
- type
- name
- url
'/api/v1/integrations/{id}':
get:
summary: 'Get a specific integration.'
operationId: getASpecificIntegration
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Endpoints
put:
summary: 'Update an integration.'
operationId: updateAnIntegration
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
type:
type: string
description: ''
example: slack
enum:
- generic
- slack
- microsoft_teams
- discord
- google_chat
name:
type: string
description: 'value darf nicht mehr als 255 Zeichen haben.'
example: b
url:
type: string
description: 'Must be a valid URL. value darf nicht mehr als 2000 Zeichen haben.'
example: 'http://bailey.com/'
is_enabled:
type: boolean
description: ''
example: true
events:
type: array
description: ''
example:
- incident.created
items:
type: string
enum:
- incident.created
- incident.updated
- incident.resolved
- maintenance.scheduled
- maintenance.started
- maintenance.completed
delete:
summary: 'Delete an integration.'
operationId: deleteAnIntegration
description: ''
parameters: []
responses: { }
tags:
- Endpoints
parameters:
-
in: path
name: id
description: 'The ID of the integration.'
example: architecto
required: true
schema:
type: string
'/api/v1/integrations/{integration}/test':
post:
summary: 'Send a test webhook to an integration.'
operationId: sendATestWebhookToAnIntegration
description: ''
parameters: []
responses: { }
tags:
- Endpoints
parameters:
-
in: path
name: integration
description: 'The integration.'
example: architecto
required: true
schema:
type: string
/api/v1/statuspages:
get:
summary: ''
operationId: getApiV1Statuspages
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Endpoints
post:
summary: ''
operationId: postApiV1Statuspages
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: 'value darf nicht mehr als 255 Zeichen haben.'
example: b
subdomain:
type: string
description: 'Must match the regex /^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$/. value darf nicht mehr als 63 Zeichen haben.'
example: 'n'
nullable: true
timezone:
type: string
description: 'Must be a valid time zone, such as Africa/Accra.'
example: Antarctica/Rothera
language:
type: string
description: 'value darf nicht mehr als 10 Zeichen haben.'
example: zmiyvd
required:
- name
'/api/v1/statuspages/{id}':
get:
summary: ''
operationId: getApiV1StatuspagesId
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Endpoints
delete:
summary: ''
operationId: deleteApiV1StatuspagesId
description: ''
parameters: []
responses: { }
tags:
- Endpoints
parameters:
-
in: path
name: id
description: 'The ID of the statuspage.'
example: architecto
required: true
schema:
type: string
'/api/v1/statuspages/{statuspage_id}/custom-domain':
get:
summary: ''
operationId: getApiV1StatuspagesStatuspage_idCustomDomain
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Endpoints
put:
summary: ''
operationId: putApiV1StatuspagesStatuspage_idCustomDomain
description: ''
parameters: []
responses: { }
tags:
- Endpoints
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
domain:
type: string
description: 'Must match the regex /^(?!-)[A-Za-z0-9-]{1,63}(?:\.[A-Za-z0-9-]{1,63})+$/. value darf nicht mehr als 255 Zeichen haben.'
example: b
required:
- domain
delete:
summary: ''
operationId: deleteApiV1StatuspagesStatuspage_idCustomDomain
description: ''
parameters: []
responses: { }
tags:
- Endpoints
parameters:
-
in: path
name: statuspage_id
description: 'The ID of the statuspage.'
example: architecto
required: true
schema:
type: string
'/api/v1/statuspages/{statuspage}/custom-domain/verify':
post:
summary: ''
operationId: postApiV1StatuspagesStatuspageCustomDomainVerify
description: ''
parameters: []
responses: { }
tags:
- Endpoints
parameters:
-
in: path
name: statuspage
description: 'The statuspage.'
example: architecto
required: true
schema:
type: string