> For the complete documentation index, see [llms.txt](https://docs.ilert.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ilert.com/developer-docs/rest-api/api-reference/maintenance-windows.md).

# Maintenance Windows

## GET /maintenance-windows

> List maintenance windows.

```json
{"openapi":"3.0.1","info":{"title":"ilert REST API","version":"v2.2026.9-r.4"},"tags":[{"name":"Maintenance Windows"}],"servers":[{"url":"/api"}],"security":[{"apiKey":[]}],"components":{"securitySchemes":{"apiKey":{"type":"apiKey","description":"The Bearer API key of your user <a href='/api-docs/#section/Authentication'>more info</a>.","name":"Authorization","in":"header"}},"schemas":{"MaintenanceWindow":{"type":"object","properties":{"id":{"type":"integer","format":"int64","readOnly":true},"timezone":{"$ref":"#/components/schemas/TimeZone"},"start":{"type":"string","format":"date-time"},"end":{"type":"string","format":"date-time"},"summary":{"type":"string"},"description":{"type":"string"},"alertSources":{"maxItems":50,"type":"array","items":{"$ref":"#/components/schemas/AlertSource"}},"services":{"maxItems":50,"type":"array","items":{"$ref":"#/components/schemas/ServiceNoIncludes"}},"createdBy":{"type":"string","readOnly":true},"notifications":{"type":"object","properties":{"atCreation":{"type":"boolean"},"dayBeforeStart":{"type":"boolean"},"hourBeforeStart":{"type":"boolean"},"atStart":{"type":"boolean"},"atEnd":{"type":"boolean"}}}}},"TimeZone":{"type":"string","enum":["Europe/Berlin","America/New_York","America/Los_Angeles","Asia/Istanbul"]},"AlertSource":{"required":["escalationPolicy","integrationType","name"],"type":"object","properties":{"id":{"type":"integer","format":"int64"},"teams":{"type":"array","items":{"$ref":"#/components/schemas/TeamRel"}},"name":{"type":"string"},"iconUrl":{"type":"string"},"lightIconUrl":{"type":"string"},"darkIconUrl":{"type":"string"},"escalationPolicy":{"$ref":"#/components/schemas/EscalationPolicy"},"integrationType":{"$ref":"#/components/schemas/IntegrationType"},"integrationKey":{"type":"string"},"integrationUrl":{"type":"string","readOnly":true},"autoResolutionTimeout":{"type":"string","format":"ISO-8601"},"alertGroupingWindow":{"type":"string","format":"ISO-8601"},"alertCreation":{"type":"string","default":"ONE_OPEN_ALERT_ALLOWED","enum":["ONE_ALERT_PER_EMAIL","ONE_ALERT_PER_EMAIL_SUBJECT","ONE_PENDING_ALERT_ALLOWED","ONE_OPEN_ALERT_ALLOWED","OPEN_RESOLVE_ON_EXTRACTION","ONE_ALERT_GROUPED_PER_WINDOW","INTELLIGENT_GROUPING"]},"status":{"type":"string","readOnly":true,"enum":["PENDING","ALL_ACCEPTED","ALL_RESOLVED","IN_MAINTENANCE","DISABLED"]},"active":{"type":"boolean","default":true},"alertPriorityRule":{"$ref":"#/components/schemas/AlertPriorityRule"},"supportHours":{"$ref":"#/components/schemas/SupportHour"},"bidirectional":{"type":"boolean","readOnly":true},"summaryTemplate":{"$ref":"#/components/schemas/AlertSourceTemplate"},"detailsTemplate":{"$ref":"#/components/schemas/AlertSourceTemplate"},"routingTemplate":{"$ref":"#/components/schemas/AlertSourceTemplate"},"linkTemplates":{"type":"array","items":{"$ref":"#/components/schemas/AlertSourceLinkTemplate"}},"priorityTemplate":{"$ref":"#/components/schemas/AlertSourcePriorityTemplate"},"severityTemplate":{"$ref":"#/components/schemas/AlertSourceSeverityTemplate"},"eventFilter":{"type":"string","description":"Defines an optional event filter condition in ICL language. This is a code based implementation, more info on syntax: https://docs.ilert.com/rest-api/icl-ilert-condition-language. For block based configuration please use the web UI. It has no effect on manually created alerts. Note: this field is an ?include, it will not appear in lists."},"alertKeyTemplate":{"$ref":"#/components/schemas/AlertSourceTemplate"},"servicesTemplate":{"type":"array","description":"Optional list of templates that extract service identifiers from the inbound event payload. Each rendered value is comma-split, and each resulting token is resolved against the tenant's services by alias or name (case-insensitive). Unmatched tokens are silently dropped. Capped at 10 templates and at the alert's per-event services limit. Note: this field is an ?include, it will not appear in lists.","items":{"$ref":"#/components/schemas/AlertSourceTemplate"}},"eventTypeFilterCreate":{"type":"string","description":"Defines an optional create alert rule in ICL language. This is a code based implementation, more info on syntax: https://docs.ilert.com/rest-api/icl-ilert-condition-language. For block based configuration please use the web UI. It has no effect on manually created alerts. Note: this field is an ?include, it will not appear in lists."},"eventTypeFilterAccept":{"type":"string","description":"Defines an optional accept alert rule in ICL language This is a code based implementation, more info on syntax: https://docs.ilert.com/rest-api/icl-ilert-condition-language. For block based configuration please use the web UI. It has no effect on manually created alerts. Note: this field is an ?include, it will not appear in lists."},"eventTypeFilterResolve":{"type":"string","description":"Defines an optional resolve alert rule in ICL language This is a code based implementation, more info on syntax: https://docs.ilert.com/rest-api/icl-ilert-condition-language. For block based configuration please use the web UI. It has no effect on manually created alerts. Note: this field is an ?include, it will not appear in lists."},"autoRaiseAlerts":{"type":"boolean","description":"Only effective when a support hour is linked to this alert source."},"scoreThreshold":{"type":"number","format":"double","description":"Only used when alertCreation is set to INTELLIGENT_GROUPING."},"severity":{"type":"integer"},"services":{"type":"array","items":{"$ref":"#/components/schemas/Service"}},"setupStatus":{"type":"string","enum":["CREATED","CREATED_ADVANCED","CREATED_BIDIRECTIONAL","FINISHED"]},"autoCreateServices":{"type":"boolean","default":false},"createdAt":{"type":"string","readOnly":true},"updatedAt":{"type":"string","readOnly":true},"managedBy":{"$ref":"#/components/schemas/ManagedBy"}}},"TeamRel":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"}}},"EscalationPolicy":{"required":["escalationRules","name"],"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"escalationRules":{"type":"array","items":{"$ref":"#/components/schemas/EscalationRule"}},"teams":{"type":"array","items":{"$ref":"#/components/schemas/TeamRel"}},"repeating":{"type":"boolean","default":false},"frequency":{"maximum":9,"minimum":1,"type":"integer","format":"int32","default":1},"delayMin":{"maximum":15,"minimum":0,"type":"integer","format":"int32","default":0},"routingKey":{"type":"string","description":"optional"},"managedBy":{"$ref":"#/components/schemas/ManagedBy"}}},"EscalationRule":{"required":["escalationTimeout"],"type":"object","properties":{"escalationTimeout":{"type":"integer"},"user":{"type":"object","properties":{"id":{"type":"number"}},"description":"This field (type: User) is deprecated, please use 'users' instead"},"schedule":{"type":"object","properties":{"id":{"type":"number"}},"description":"This field (type: Schedule) is deprecated, please use 'schedules' instead"},"team":{"type":"object","properties":{"id":{"type":"number"}},"description":"This field (type: Team) is deprecated, please use 'teams' instead"},"users":{"type":"array","items":{"$ref":"#/components/schemas/UserRel"}},"schedules":{"type":"array","items":{"$ref":"#/components/schemas/ScheduleRel"}},"teams":{"type":"array","items":{"$ref":"#/components/schemas/TeamRel"}}}},"UserRel":{"required":["id"],"type":"object","properties":{"id":{"type":"integer","format":"int64"},"firstName":{"type":"string"},"lastName":{"type":"string"}}},"ScheduleRel":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"type":{"type":"string","enum":["STATIC","RECURRING"]}}},"ManagedBy":{"type":"object","readOnly":true,"description":"Present when this entity is managed outside of the ilert web app, for example through Terraform, Pulumi or the API. Read-only.","properties":{"type":{"type":"string","enum":["API","TERRAFORM","PULUMI","ILERT"]},"source":{"type":"string","description":"Identifier of the system managing this entity."}}},"IntegrationType":{"type":"string","enum":["NAGIOS","ICINGA","EMAIL2","SMS","API","HEARTBEAT2","PRTG","PINGDOM","CLOUDWATCH","AWSPHD","STACKDRIVER","INSTANA","ZABBIX","SOLARWINDS","PROMETHEUS","NEWRELIC","GRAFANA","GITHUB","DATADOG","UPTIMEROBOT","APPDYNAMICS","DYNATRACE","TOPDESK","STATUSCAKE","TOOL","CHECKMK","AUTOTASK","AWSBUDGET","SYSDIG","SERVERDENSITY","ZAPIER","KENTIXAM","JIRA","CONSUL","ZAMMAD","SPLUNK","SERVICENOW","SEARCHGUARD","KUBERNETES","SIGNALFX","AZUREALERTS","TERRAFORMCLOUD","SENTRY","SEMATEXT","SUMOLOGIC","RAYGUN","MXTOOLBOX","ESWATCHER","AMAZONSNS","KAPACITOR","CORTEXXSOAR","ZENDESK","AUVIK","SENSU","NCENTRAL","JUMPCLOUD","SALESFORCE","GUARDDUTY","STATUSHUB","IXON","APIFORTRESS","FRESHSERVICE","APPSIGNAL","LIGHTSTEP","IBMCLOUDFUNCTIONS","CROWDSTRIKE","HUMIO","OHDEAR","MONGODBATLAS","GITLAB","HYPERPING","PAPRISMACLOUD","SAMSARA","PANDORAFMS","MSSCOM","TWILIO","CISCOMERAKI","CHECKLY","POSTHOG","GOOGLESCC","SLACK","MSTEAMS","UPTIMEKUMA","TWILIOERRORS","PARTICLE","CLOUDFLARE","TULIP","GRAYLOG","CATCHPOINT","LOKI","CORTEX","MIMIR","HALOPSA","INFLUXDB","CALLFLOW","HALOITSM","KIBANA","VICTORIAMETRICS","HONEYCOMB","FOURME","KEEP","UBIDOTS","HETRIXTOOLS","POSTMAN","CLUSTERCONTROL","NETDATA","AWX","KAFKA","MQTT","RAPIDSPIKE","HONEYBADGER","HEALTHCHECKSIO","MEZMO","SERVERGUARD24","CISCOTHOUSANDEYES","SITE24X7","ITCONDUCTOR","SAPFRUN","APICA","DASH0","ROLLBAR","GATUS","LIBRENMS","PANTHER","TEAMCITY","ALIBABACLOUD","FLEETDM","CONNECTWISEPSA","DEADMANSSNITCH","FORTISOAR","OPMANAGER","CRONITOR","DOMOTZ","LIVEWATCH","AZUREDEVOPS","LEVELIO","EKARA","SYSAID","PHAREIO","OPSGENIE","WHATAP","SIGNOZ","GOOGLECHAT","DOTCOMMONITOR","UPTIME","HELPSCOUT","SCIENCELOGIC","PULSETIC","WAZUH","SEKOIA","ZOHODESK","ORACLEENTERPRISEMANAGER","OPENOBSERVE","OPENSEARCH","OPENITCOCKPIT","ODOO","OPENNMS","DBMARLIN","TIDEWAYS","SOPHOS","BLEEMEO","UPTRENDS"]},"AlertPriorityRule":{"type":"string","enum":["HIGH","LOW","HIGH_DURING_SUPPORT_HOURS","LOW_DURING_SUPPORT_HOURS"]},"SupportHour":{"required":["name","timezone"],"type":"object","description":"Weekly support hour coverage. Every write of the coverage itself -- a support hour of its own, or an alert source's inline support hours, which carry no id -- must send supportDays or supportWindows: a body with neither is rejected with 400 rather than read as a request to clear the coverage. An alert source that references an existing support hour sends its id alone and needs neither field.","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"teams":{"type":"array","items":{"$ref":"#/components/schemas/TeamRel"}},"timezone":{"$ref":"#/components/schemas/TimeZone"},"supportDays":{"type":"object","description":"A single window per day, kept for existing clients. Lossy once coverage is not representable per day (several windows a day, or an arc across midnight): each day then reports the earliest part of its coverage, and an end at midnight is reported as 23:59. Use supportWindows for the complete picture. On input, sending it back exactly as it was read leaves the coverage unchanged, so a client that only knows supportDays can still rename a support hour or move it to another timezone. A supportDays that differs is applied when the current coverage fits one window per day, and rejected with 400 when it does not, because rebuilding the week from a lossy view would silently drop the coverage it cannot express -- change such coverage with supportWindows instead.","properties":{"MONDAY":{"$ref":"#/components/schemas/SupportDay"},"TUESDAY":{"$ref":"#/components/schemas/SupportDay"},"WEDNESDAY":{"$ref":"#/components/schemas/SupportDay"},"THURSDAY":{"$ref":"#/components/schemas/SupportDay"},"FRIDAY":{"$ref":"#/components/schemas/SupportDay"},"SATURDAY":{"$ref":"#/components/schemas/SupportDay"},"SUNDAY":{"$ref":"#/components/schemas/SupportDay"}}},"supportWindows":{"type":"array","nullable":true,"maxItems":84,"description":"The complete weekly coverage as arcs, each covering [from, to). An arc whose 'to' is at or before its 'from' wraps past Sunday midnight, so FRIDAY 17:00 to MONDAY 09:00 is one arc; 'from' equal to 'to' is the whole week. Responses list the arcs merged and in ascending order, and return null when supportDays already describes the coverage exactly. On input, when present, it is the coverage of the whole support hour: an empty array clears the weekly coverage, and overlapping or touching arcs are merged. supportDays may be sent alongside it only when it is the per-day view of these arcs; one describing different coverage is rejected with 400. Times are whole minutes (HH:mm); a seconds part is accepted only when it is zero. Only a support hour of its own accepts arcs: an alert source's inline supportHours is one window per day, and sending supportWindows there is rejected.","items":{"$ref":"#/components/schemas/SupportWindow"}},"exceptions":{"type":"array","items":{"$ref":"#/components/schemas/SupportHourException"}},"managedBy":{"$ref":"#/components/schemas/ManagedBy"},"currentStatus":{"type":"string","description":"Whether the support hour covers this moment. An include field: request it with include=currentStatus.","enum":["DURING","OUTSIDE"],"readOnly":true},"currentStatusUntil":{"type":"string","description":"When currentStatus next changes, as a local date-time in this support hour's timezone, e.g. 2026-09-18T17:00. Null when no change is in sight: coverage that never ends, no coverage at all, or a covered holiday reaching beyond the three weeks looked ahead. Returned together with currentStatus.","readOnly":true}}},"SupportDay":{"required":["end","start"],"type":"object","properties":{"start":{"type":"string","format":"time"},"end":{"type":"string","format":"time"}}},"SupportWindow":{"required":["from","to"],"type":"object","properties":{"from":{"$ref":"#/components/schemas/TimeOfWeek"},"to":{"$ref":"#/components/schemas/TimeOfWeek"}}},"TimeOfWeek":{"required":["dayOfWeek","time"],"type":"object","properties":{"dayOfWeek":{"type":"string","enum":["MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY","SUNDAY"]},"time":{"type":"string","format":"15:00"}}},"SupportHourException":{"type":"object","required":["name","start","end","supportStatus"],"properties":{"name":{"type":"string"},"start":{"type":"string","format":"date"},"end":{"type":"string","format":"date"},"supportStatus":{"type":"string","enum":["DURING","OUTSIDE"]}}},"AlertSourceTemplate":{"type":"object","properties":{"textTemplate":{"type":"string","description":"For more information on alert source templating, please visit: https://docs.ilert.com/alerting/alert-sources#alert-template.\n\n Example: <br />`Hi {{ users[0].name }} there!` \n\nYou can use the text template instead of elements by adding the include `textTemplate` to your request. Any version can be used for POST or PUT requests."},"elements":{"type":"array","items":{"$ref":"#/components/schemas/AlertSourceTemplateElement"}}}},"AlertSourceTemplateElement":{"type":"object","properties":{"type":{"type":"string","enum":["TEXT","VAR","RAW"]},"val":{"type":"string"},"func":{"type":"string"},"args":{"type":"array","items":{"$ref":"#/components/schemas/AlertSourceTemplateElementArg"}}}},"AlertSourceTemplateElementArg":{"type":"object","properties":{"S":{"type":"string"},"N":{"type":"integer"}}},"AlertSourceLinkTemplate":{"required":["hrefTemplate","text"],"type":"object","properties":{"text":{"type":"string"},"hrefTemplate":{"$ref":"#/components/schemas/AlertSourceTemplate"}}},"AlertSourcePriorityTemplate":{"required":["mappings","valueTemplate"],"type":"object","properties":{"valueTemplate":{"$ref":"#/components/schemas/AlertSourceTemplate"},"mappings":{"type":"array","items":{"$ref":"#/components/schemas/AlertSourcePriorityTemplateMapping"}}}},"AlertSourcePriorityTemplateMapping":{"required":["priority","value"],"type":"object","properties":{"value":{"type":"string"},"priority":{"type":"string","enum":["LOW","HIGH"]}}},"AlertSourceSeverityTemplate":{"required":["mappings","valueTemplate"],"type":"object","properties":{"valueTemplate":{"$ref":"#/components/schemas/AlertSourceTemplate"},"mappings":{"type":"array","items":{"$ref":"#/components/schemas/AlertSourceSeverityTemplateMapping"}}}},"AlertSourceSeverityTemplateMapping":{"required":["severity","value"],"type":"object","properties":{"value":{"type":"string"},"severity":{"type":"integer","format":"int32"}}},"Service":{"type":"object","properties":{"id":{"type":"number"},"name":{"type":"string"},"alias":{"type":"string"},"status":{"$ref":"#/components/schemas/ServiceStatus"},"description":{"type":"string"},"oneOpenIncidentOnly":{"type":"boolean"},"showUptimeHistory":{"type":"boolean"},"teams":{"type":"array","items":{"$ref":"#/components/schemas/TeamRel"}},"subscribed":{"type":"boolean","readOnly":true},"uptime":{"$ref":"#/components/schemas/ServiceUptime"},"managedBy":{"$ref":"#/components/schemas/ManagedBy"},"publicStatus":{"$ref":"#/components/schemas/ServiceStatus"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"Free-form key-value labels assigned to this service."},"iconUrl":{"type":"string"},"links":{"type":"array","items":{"$ref":"#/components/schemas/ServiceLink"}},"createdBy":{"$ref":"#/components/schemas/ManagedBy"},"dependencies":{"type":"array","items":{"$ref":"#/components/schemas/ServiceDependency"},"description":"This is an include field, it is not available in the list resource"}}},"ServiceStatus":{"type":"string","description":"the service status","enum":["OPERATIONAL","UNDER_MAINTENANCE","DEGRADED","PARTIAL_OUTAGE","MAJOR_OUTAGE"]},"ServiceUptime":{"type":"object","properties":{"rangeStart":{"type":"string","format":"date-time"},"rangeEnd":{"type":"string","format":"date-time"},"outages":{"type":"array","items":{"$ref":"#/components/schemas/ServiceOutage"}},"uptimePercentage":{"$ref":"#/components/schemas/ServiceUptimePercentage"}}},"ServiceOutage":{"type":"object","properties":{"status":{"$ref":"#/components/schemas/ServiceStatus"},"from":{"type":"string","format":"date-time"},"until":{"type":"string","format":"date-time"}}},"ServiceUptimePercentage":{"type":"object","properties":{"uptimePercentage":{"type":"object","properties":{"p90":{"maximum":100,"minimum":0,"type":"number","format":"float","readOnly":true},"p60":{"maximum":100,"minimum":0,"type":"number","format":"float","readOnly":true},"p30":{"maximum":100,"minimum":0,"type":"number","format":"float","readOnly":true}}}}},"ServiceLink":{"type":"object","properties":{"href":{"type":"string","format":"uri"},"text":{"type":"string"}}},"ServiceDependency":{"type":"object","required":["targetServiceId"],"properties":{"id":{"type":"integer","format":"int64","readOnly":true},"sourceServiceId":{"type":"integer","format":"int64","description":"The service that depends on the target service."},"targetServiceId":{"type":"integer","format":"int64","description":"The service that is being depended upon."},"notes":{"type":"string"},"invalidAfter":{"type":"string","format":"date-time","description":"Point in time after which this dependency is no longer considered valid."},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true},"createdBy":{"$ref":"#/components/schemas/ManagedBy"},"managedBy":{"$ref":"#/components/schemas/ManagedBy"}}},"ServiceNoIncludes":{"type":"object","properties":{"id":{"type":"number"},"name":{"type":"string"},"alias":{"type":"string"},"status":{"$ref":"#/components/schemas/ServiceStatus"},"description":{"type":"string"},"oneOpenIncidentOnly":{"type":"boolean"},"showUptimeHistory":{"type":"boolean"},"teams":{"type":"array","items":{"$ref":"#/components/schemas/TeamRel"}},"managedBy":{"$ref":"#/components/schemas/ManagedBy"},"publicStatus":{"$ref":"#/components/schemas/ServiceStatus"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"Free-form key-value labels assigned to this service."},"iconUrl":{"type":"string"},"links":{"type":"array","items":{"$ref":"#/components/schemas/ServiceLink"}},"createdBy":{"$ref":"#/components/schemas/ManagedBy"}}}}},"paths":{"/maintenance-windows":{"get":{"tags":["Maintenance Windows"],"summary":"List maintenance windows.","parameters":[{"name":"state","in":"query","description":"Filter maintenance windows by state. `OPEN` includes upcoming and ongoing windows, `CLOSED` includes past windows.","schema":{"type":"string","enum":["OPEN","CLOSED"]}},{"name":"services","in":"query","description":"filter by service IDs","schema":{"type":"array","items":{"type":"integer","format":"int64"}}},{"name":"sources","in":"query","description":"filter by alert source IDs","schema":{"type":"array","items":{"type":"integer","format":"int64"}}},{"name":"from","in":"query","description":"from date, ISO-UTC e.g. 2021-05-25T21:24:56.771Z","schema":{"type":"string","format":"date-time"}},{"name":"until","in":"query","description":"until date, ISO-UTC e.g. 2021-05-26T21:24:56.771Z","schema":{"type":"string","format":"date-time"}},{"name":"start-index","in":"query","description":"an integer specifying the starting point (beginning with 0) when paging through a list of entities","schema":{"type":"integer","format":"int32","default":0}},{"name":"max-results","in":"query","description":"the maximum number of results when paging through a list of entities.","schema":{"maximum":100,"type":"integer","format":"int32","default":50}}],"responses":{"200":{"description":"the maintenance window object","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MaintenanceWindow"}}}}}}}}}}
```

## POST /maintenance-windows

> Create a new maintenance window.

```json
{"openapi":"3.0.1","info":{"title":"ilert REST API","version":"v2.2026.9-r.4"},"tags":[{"name":"Maintenance Windows"}],"servers":[{"url":"/api"}],"security":[{"apiKey":[]}],"components":{"securitySchemes":{"apiKey":{"type":"apiKey","description":"The Bearer API key of your user <a href='/api-docs/#section/Authentication'>more info</a>.","name":"Authorization","in":"header"}},"schemas":{"MaintenanceWindow":{"type":"object","properties":{"id":{"type":"integer","format":"int64","readOnly":true},"timezone":{"$ref":"#/components/schemas/TimeZone"},"start":{"type":"string","format":"date-time"},"end":{"type":"string","format":"date-time"},"summary":{"type":"string"},"description":{"type":"string"},"alertSources":{"maxItems":50,"type":"array","items":{"$ref":"#/components/schemas/AlertSource"}},"services":{"maxItems":50,"type":"array","items":{"$ref":"#/components/schemas/ServiceNoIncludes"}},"createdBy":{"type":"string","readOnly":true},"notifications":{"type":"object","properties":{"atCreation":{"type":"boolean"},"dayBeforeStart":{"type":"boolean"},"hourBeforeStart":{"type":"boolean"},"atStart":{"type":"boolean"},"atEnd":{"type":"boolean"}}}}},"TimeZone":{"type":"string","enum":["Europe/Berlin","America/New_York","America/Los_Angeles","Asia/Istanbul"]},"AlertSource":{"required":["escalationPolicy","integrationType","name"],"type":"object","properties":{"id":{"type":"integer","format":"int64"},"teams":{"type":"array","items":{"$ref":"#/components/schemas/TeamRel"}},"name":{"type":"string"},"iconUrl":{"type":"string"},"lightIconUrl":{"type":"string"},"darkIconUrl":{"type":"string"},"escalationPolicy":{"$ref":"#/components/schemas/EscalationPolicy"},"integrationType":{"$ref":"#/components/schemas/IntegrationType"},"integrationKey":{"type":"string"},"integrationUrl":{"type":"string","readOnly":true},"autoResolutionTimeout":{"type":"string","format":"ISO-8601"},"alertGroupingWindow":{"type":"string","format":"ISO-8601"},"alertCreation":{"type":"string","default":"ONE_OPEN_ALERT_ALLOWED","enum":["ONE_ALERT_PER_EMAIL","ONE_ALERT_PER_EMAIL_SUBJECT","ONE_PENDING_ALERT_ALLOWED","ONE_OPEN_ALERT_ALLOWED","OPEN_RESOLVE_ON_EXTRACTION","ONE_ALERT_GROUPED_PER_WINDOW","INTELLIGENT_GROUPING"]},"status":{"type":"string","readOnly":true,"enum":["PENDING","ALL_ACCEPTED","ALL_RESOLVED","IN_MAINTENANCE","DISABLED"]},"active":{"type":"boolean","default":true},"alertPriorityRule":{"$ref":"#/components/schemas/AlertPriorityRule"},"supportHours":{"$ref":"#/components/schemas/SupportHour"},"bidirectional":{"type":"boolean","readOnly":true},"summaryTemplate":{"$ref":"#/components/schemas/AlertSourceTemplate"},"detailsTemplate":{"$ref":"#/components/schemas/AlertSourceTemplate"},"routingTemplate":{"$ref":"#/components/schemas/AlertSourceTemplate"},"linkTemplates":{"type":"array","items":{"$ref":"#/components/schemas/AlertSourceLinkTemplate"}},"priorityTemplate":{"$ref":"#/components/schemas/AlertSourcePriorityTemplate"},"severityTemplate":{"$ref":"#/components/schemas/AlertSourceSeverityTemplate"},"eventFilter":{"type":"string","description":"Defines an optional event filter condition in ICL language. This is a code based implementation, more info on syntax: https://docs.ilert.com/rest-api/icl-ilert-condition-language. For block based configuration please use the web UI. It has no effect on manually created alerts. Note: this field is an ?include, it will not appear in lists."},"alertKeyTemplate":{"$ref":"#/components/schemas/AlertSourceTemplate"},"servicesTemplate":{"type":"array","description":"Optional list of templates that extract service identifiers from the inbound event payload. Each rendered value is comma-split, and each resulting token is resolved against the tenant's services by alias or name (case-insensitive). Unmatched tokens are silently dropped. Capped at 10 templates and at the alert's per-event services limit. Note: this field is an ?include, it will not appear in lists.","items":{"$ref":"#/components/schemas/AlertSourceTemplate"}},"eventTypeFilterCreate":{"type":"string","description":"Defines an optional create alert rule in ICL language. This is a code based implementation, more info on syntax: https://docs.ilert.com/rest-api/icl-ilert-condition-language. For block based configuration please use the web UI. It has no effect on manually created alerts. Note: this field is an ?include, it will not appear in lists."},"eventTypeFilterAccept":{"type":"string","description":"Defines an optional accept alert rule in ICL language This is a code based implementation, more info on syntax: https://docs.ilert.com/rest-api/icl-ilert-condition-language. For block based configuration please use the web UI. It has no effect on manually created alerts. Note: this field is an ?include, it will not appear in lists."},"eventTypeFilterResolve":{"type":"string","description":"Defines an optional resolve alert rule in ICL language This is a code based implementation, more info on syntax: https://docs.ilert.com/rest-api/icl-ilert-condition-language. For block based configuration please use the web UI. It has no effect on manually created alerts. Note: this field is an ?include, it will not appear in lists."},"autoRaiseAlerts":{"type":"boolean","description":"Only effective when a support hour is linked to this alert source."},"scoreThreshold":{"type":"number","format":"double","description":"Only used when alertCreation is set to INTELLIGENT_GROUPING."},"severity":{"type":"integer"},"services":{"type":"array","items":{"$ref":"#/components/schemas/Service"}},"setupStatus":{"type":"string","enum":["CREATED","CREATED_ADVANCED","CREATED_BIDIRECTIONAL","FINISHED"]},"autoCreateServices":{"type":"boolean","default":false},"createdAt":{"type":"string","readOnly":true},"updatedAt":{"type":"string","readOnly":true},"managedBy":{"$ref":"#/components/schemas/ManagedBy"}}},"TeamRel":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"}}},"EscalationPolicy":{"required":["escalationRules","name"],"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"escalationRules":{"type":"array","items":{"$ref":"#/components/schemas/EscalationRule"}},"teams":{"type":"array","items":{"$ref":"#/components/schemas/TeamRel"}},"repeating":{"type":"boolean","default":false},"frequency":{"maximum":9,"minimum":1,"type":"integer","format":"int32","default":1},"delayMin":{"maximum":15,"minimum":0,"type":"integer","format":"int32","default":0},"routingKey":{"type":"string","description":"optional"},"managedBy":{"$ref":"#/components/schemas/ManagedBy"}}},"EscalationRule":{"required":["escalationTimeout"],"type":"object","properties":{"escalationTimeout":{"type":"integer"},"user":{"type":"object","properties":{"id":{"type":"number"}},"description":"This field (type: User) is deprecated, please use 'users' instead"},"schedule":{"type":"object","properties":{"id":{"type":"number"}},"description":"This field (type: Schedule) is deprecated, please use 'schedules' instead"},"team":{"type":"object","properties":{"id":{"type":"number"}},"description":"This field (type: Team) is deprecated, please use 'teams' instead"},"users":{"type":"array","items":{"$ref":"#/components/schemas/UserRel"}},"schedules":{"type":"array","items":{"$ref":"#/components/schemas/ScheduleRel"}},"teams":{"type":"array","items":{"$ref":"#/components/schemas/TeamRel"}}}},"UserRel":{"required":["id"],"type":"object","properties":{"id":{"type":"integer","format":"int64"},"firstName":{"type":"string"},"lastName":{"type":"string"}}},"ScheduleRel":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"type":{"type":"string","enum":["STATIC","RECURRING"]}}},"ManagedBy":{"type":"object","readOnly":true,"description":"Present when this entity is managed outside of the ilert web app, for example through Terraform, Pulumi or the API. Read-only.","properties":{"type":{"type":"string","enum":["API","TERRAFORM","PULUMI","ILERT"]},"source":{"type":"string","description":"Identifier of the system managing this entity."}}},"IntegrationType":{"type":"string","enum":["NAGIOS","ICINGA","EMAIL2","SMS","API","HEARTBEAT2","PRTG","PINGDOM","CLOUDWATCH","AWSPHD","STACKDRIVER","INSTANA","ZABBIX","SOLARWINDS","PROMETHEUS","NEWRELIC","GRAFANA","GITHUB","DATADOG","UPTIMEROBOT","APPDYNAMICS","DYNATRACE","TOPDESK","STATUSCAKE","TOOL","CHECKMK","AUTOTASK","AWSBUDGET","SYSDIG","SERVERDENSITY","ZAPIER","KENTIXAM","JIRA","CONSUL","ZAMMAD","SPLUNK","SERVICENOW","SEARCHGUARD","KUBERNETES","SIGNALFX","AZUREALERTS","TERRAFORMCLOUD","SENTRY","SEMATEXT","SUMOLOGIC","RAYGUN","MXTOOLBOX","ESWATCHER","AMAZONSNS","KAPACITOR","CORTEXXSOAR","ZENDESK","AUVIK","SENSU","NCENTRAL","JUMPCLOUD","SALESFORCE","GUARDDUTY","STATUSHUB","IXON","APIFORTRESS","FRESHSERVICE","APPSIGNAL","LIGHTSTEP","IBMCLOUDFUNCTIONS","CROWDSTRIKE","HUMIO","OHDEAR","MONGODBATLAS","GITLAB","HYPERPING","PAPRISMACLOUD","SAMSARA","PANDORAFMS","MSSCOM","TWILIO","CISCOMERAKI","CHECKLY","POSTHOG","GOOGLESCC","SLACK","MSTEAMS","UPTIMEKUMA","TWILIOERRORS","PARTICLE","CLOUDFLARE","TULIP","GRAYLOG","CATCHPOINT","LOKI","CORTEX","MIMIR","HALOPSA","INFLUXDB","CALLFLOW","HALOITSM","KIBANA","VICTORIAMETRICS","HONEYCOMB","FOURME","KEEP","UBIDOTS","HETRIXTOOLS","POSTMAN","CLUSTERCONTROL","NETDATA","AWX","KAFKA","MQTT","RAPIDSPIKE","HONEYBADGER","HEALTHCHECKSIO","MEZMO","SERVERGUARD24","CISCOTHOUSANDEYES","SITE24X7","ITCONDUCTOR","SAPFRUN","APICA","DASH0","ROLLBAR","GATUS","LIBRENMS","PANTHER","TEAMCITY","ALIBABACLOUD","FLEETDM","CONNECTWISEPSA","DEADMANSSNITCH","FORTISOAR","OPMANAGER","CRONITOR","DOMOTZ","LIVEWATCH","AZUREDEVOPS","LEVELIO","EKARA","SYSAID","PHAREIO","OPSGENIE","WHATAP","SIGNOZ","GOOGLECHAT","DOTCOMMONITOR","UPTIME","HELPSCOUT","SCIENCELOGIC","PULSETIC","WAZUH","SEKOIA","ZOHODESK","ORACLEENTERPRISEMANAGER","OPENOBSERVE","OPENSEARCH","OPENITCOCKPIT","ODOO","OPENNMS","DBMARLIN","TIDEWAYS","SOPHOS","BLEEMEO","UPTRENDS"]},"AlertPriorityRule":{"type":"string","enum":["HIGH","LOW","HIGH_DURING_SUPPORT_HOURS","LOW_DURING_SUPPORT_HOURS"]},"SupportHour":{"required":["name","timezone"],"type":"object","description":"Weekly support hour coverage. Every write of the coverage itself -- a support hour of its own, or an alert source's inline support hours, which carry no id -- must send supportDays or supportWindows: a body with neither is rejected with 400 rather than read as a request to clear the coverage. An alert source that references an existing support hour sends its id alone and needs neither field.","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"teams":{"type":"array","items":{"$ref":"#/components/schemas/TeamRel"}},"timezone":{"$ref":"#/components/schemas/TimeZone"},"supportDays":{"type":"object","description":"A single window per day, kept for existing clients. Lossy once coverage is not representable per day (several windows a day, or an arc across midnight): each day then reports the earliest part of its coverage, and an end at midnight is reported as 23:59. Use supportWindows for the complete picture. On input, sending it back exactly as it was read leaves the coverage unchanged, so a client that only knows supportDays can still rename a support hour or move it to another timezone. A supportDays that differs is applied when the current coverage fits one window per day, and rejected with 400 when it does not, because rebuilding the week from a lossy view would silently drop the coverage it cannot express -- change such coverage with supportWindows instead.","properties":{"MONDAY":{"$ref":"#/components/schemas/SupportDay"},"TUESDAY":{"$ref":"#/components/schemas/SupportDay"},"WEDNESDAY":{"$ref":"#/components/schemas/SupportDay"},"THURSDAY":{"$ref":"#/components/schemas/SupportDay"},"FRIDAY":{"$ref":"#/components/schemas/SupportDay"},"SATURDAY":{"$ref":"#/components/schemas/SupportDay"},"SUNDAY":{"$ref":"#/components/schemas/SupportDay"}}},"supportWindows":{"type":"array","nullable":true,"maxItems":84,"description":"The complete weekly coverage as arcs, each covering [from, to). An arc whose 'to' is at or before its 'from' wraps past Sunday midnight, so FRIDAY 17:00 to MONDAY 09:00 is one arc; 'from' equal to 'to' is the whole week. Responses list the arcs merged and in ascending order, and return null when supportDays already describes the coverage exactly. On input, when present, it is the coverage of the whole support hour: an empty array clears the weekly coverage, and overlapping or touching arcs are merged. supportDays may be sent alongside it only when it is the per-day view of these arcs; one describing different coverage is rejected with 400. Times are whole minutes (HH:mm); a seconds part is accepted only when it is zero. Only a support hour of its own accepts arcs: an alert source's inline supportHours is one window per day, and sending supportWindows there is rejected.","items":{"$ref":"#/components/schemas/SupportWindow"}},"exceptions":{"type":"array","items":{"$ref":"#/components/schemas/SupportHourException"}},"managedBy":{"$ref":"#/components/schemas/ManagedBy"},"currentStatus":{"type":"string","description":"Whether the support hour covers this moment. An include field: request it with include=currentStatus.","enum":["DURING","OUTSIDE"],"readOnly":true},"currentStatusUntil":{"type":"string","description":"When currentStatus next changes, as a local date-time in this support hour's timezone, e.g. 2026-09-18T17:00. Null when no change is in sight: coverage that never ends, no coverage at all, or a covered holiday reaching beyond the three weeks looked ahead. Returned together with currentStatus.","readOnly":true}}},"SupportDay":{"required":["end","start"],"type":"object","properties":{"start":{"type":"string","format":"time"},"end":{"type":"string","format":"time"}}},"SupportWindow":{"required":["from","to"],"type":"object","properties":{"from":{"$ref":"#/components/schemas/TimeOfWeek"},"to":{"$ref":"#/components/schemas/TimeOfWeek"}}},"TimeOfWeek":{"required":["dayOfWeek","time"],"type":"object","properties":{"dayOfWeek":{"type":"string","enum":["MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY","SUNDAY"]},"time":{"type":"string","format":"15:00"}}},"SupportHourException":{"type":"object","required":["name","start","end","supportStatus"],"properties":{"name":{"type":"string"},"start":{"type":"string","format":"date"},"end":{"type":"string","format":"date"},"supportStatus":{"type":"string","enum":["DURING","OUTSIDE"]}}},"AlertSourceTemplate":{"type":"object","properties":{"textTemplate":{"type":"string","description":"For more information on alert source templating, please visit: https://docs.ilert.com/alerting/alert-sources#alert-template.\n\n Example: <br />`Hi {{ users[0].name }} there!` \n\nYou can use the text template instead of elements by adding the include `textTemplate` to your request. Any version can be used for POST or PUT requests."},"elements":{"type":"array","items":{"$ref":"#/components/schemas/AlertSourceTemplateElement"}}}},"AlertSourceTemplateElement":{"type":"object","properties":{"type":{"type":"string","enum":["TEXT","VAR","RAW"]},"val":{"type":"string"},"func":{"type":"string"},"args":{"type":"array","items":{"$ref":"#/components/schemas/AlertSourceTemplateElementArg"}}}},"AlertSourceTemplateElementArg":{"type":"object","properties":{"S":{"type":"string"},"N":{"type":"integer"}}},"AlertSourceLinkTemplate":{"required":["hrefTemplate","text"],"type":"object","properties":{"text":{"type":"string"},"hrefTemplate":{"$ref":"#/components/schemas/AlertSourceTemplate"}}},"AlertSourcePriorityTemplate":{"required":["mappings","valueTemplate"],"type":"object","properties":{"valueTemplate":{"$ref":"#/components/schemas/AlertSourceTemplate"},"mappings":{"type":"array","items":{"$ref":"#/components/schemas/AlertSourcePriorityTemplateMapping"}}}},"AlertSourcePriorityTemplateMapping":{"required":["priority","value"],"type":"object","properties":{"value":{"type":"string"},"priority":{"type":"string","enum":["LOW","HIGH"]}}},"AlertSourceSeverityTemplate":{"required":["mappings","valueTemplate"],"type":"object","properties":{"valueTemplate":{"$ref":"#/components/schemas/AlertSourceTemplate"},"mappings":{"type":"array","items":{"$ref":"#/components/schemas/AlertSourceSeverityTemplateMapping"}}}},"AlertSourceSeverityTemplateMapping":{"required":["severity","value"],"type":"object","properties":{"value":{"type":"string"},"severity":{"type":"integer","format":"int32"}}},"Service":{"type":"object","properties":{"id":{"type":"number"},"name":{"type":"string"},"alias":{"type":"string"},"status":{"$ref":"#/components/schemas/ServiceStatus"},"description":{"type":"string"},"oneOpenIncidentOnly":{"type":"boolean"},"showUptimeHistory":{"type":"boolean"},"teams":{"type":"array","items":{"$ref":"#/components/schemas/TeamRel"}},"subscribed":{"type":"boolean","readOnly":true},"uptime":{"$ref":"#/components/schemas/ServiceUptime"},"managedBy":{"$ref":"#/components/schemas/ManagedBy"},"publicStatus":{"$ref":"#/components/schemas/ServiceStatus"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"Free-form key-value labels assigned to this service."},"iconUrl":{"type":"string"},"links":{"type":"array","items":{"$ref":"#/components/schemas/ServiceLink"}},"createdBy":{"$ref":"#/components/schemas/ManagedBy"},"dependencies":{"type":"array","items":{"$ref":"#/components/schemas/ServiceDependency"},"description":"This is an include field, it is not available in the list resource"}}},"ServiceStatus":{"type":"string","description":"the service status","enum":["OPERATIONAL","UNDER_MAINTENANCE","DEGRADED","PARTIAL_OUTAGE","MAJOR_OUTAGE"]},"ServiceUptime":{"type":"object","properties":{"rangeStart":{"type":"string","format":"date-time"},"rangeEnd":{"type":"string","format":"date-time"},"outages":{"type":"array","items":{"$ref":"#/components/schemas/ServiceOutage"}},"uptimePercentage":{"$ref":"#/components/schemas/ServiceUptimePercentage"}}},"ServiceOutage":{"type":"object","properties":{"status":{"$ref":"#/components/schemas/ServiceStatus"},"from":{"type":"string","format":"date-time"},"until":{"type":"string","format":"date-time"}}},"ServiceUptimePercentage":{"type":"object","properties":{"uptimePercentage":{"type":"object","properties":{"p90":{"maximum":100,"minimum":0,"type":"number","format":"float","readOnly":true},"p60":{"maximum":100,"minimum":0,"type":"number","format":"float","readOnly":true},"p30":{"maximum":100,"minimum":0,"type":"number","format":"float","readOnly":true}}}}},"ServiceLink":{"type":"object","properties":{"href":{"type":"string","format":"uri"},"text":{"type":"string"}}},"ServiceDependency":{"type":"object","required":["targetServiceId"],"properties":{"id":{"type":"integer","format":"int64","readOnly":true},"sourceServiceId":{"type":"integer","format":"int64","description":"The service that depends on the target service."},"targetServiceId":{"type":"integer","format":"int64","description":"The service that is being depended upon."},"notes":{"type":"string"},"invalidAfter":{"type":"string","format":"date-time","description":"Point in time after which this dependency is no longer considered valid."},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true},"createdBy":{"$ref":"#/components/schemas/ManagedBy"},"managedBy":{"$ref":"#/components/schemas/ManagedBy"}}},"ServiceNoIncludes":{"type":"object","properties":{"id":{"type":"number"},"name":{"type":"string"},"alias":{"type":"string"},"status":{"$ref":"#/components/schemas/ServiceStatus"},"description":{"type":"string"},"oneOpenIncidentOnly":{"type":"boolean"},"showUptimeHistory":{"type":"boolean"},"teams":{"type":"array","items":{"$ref":"#/components/schemas/TeamRel"}},"managedBy":{"$ref":"#/components/schemas/ManagedBy"},"publicStatus":{"$ref":"#/components/schemas/ServiceStatus"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"Free-form key-value labels assigned to this service."},"iconUrl":{"type":"string"},"links":{"type":"array","items":{"$ref":"#/components/schemas/ServiceLink"}},"createdBy":{"$ref":"#/components/schemas/ManagedBy"}}}}},"paths":{"/maintenance-windows":{"post":{"tags":["Maintenance Windows"],"summary":"Create a new maintenance window.","requestBody":{"description":"the maintenance window","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MaintenanceWindow"}}},"required":true},"responses":{"200":{"description":"The URI of the maintenance window will be included in the location header and the maintenance window will be included in the body.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MaintenanceWindow"}}}}}}}}}
```

## GET /maintenance-windows/{id}

> Get the maintenance window with specified id.

```json
{"openapi":"3.0.1","info":{"title":"ilert REST API","version":"v2.2026.9-r.4"},"tags":[{"name":"Maintenance Windows"}],"servers":[{"url":"/api"}],"security":[{"apiKey":[]}],"components":{"securitySchemes":{"apiKey":{"type":"apiKey","description":"The Bearer API key of your user <a href='/api-docs/#section/Authentication'>more info</a>.","name":"Authorization","in":"header"}},"schemas":{"MaintenanceWindow":{"type":"object","properties":{"id":{"type":"integer","format":"int64","readOnly":true},"timezone":{"$ref":"#/components/schemas/TimeZone"},"start":{"type":"string","format":"date-time"},"end":{"type":"string","format":"date-time"},"summary":{"type":"string"},"description":{"type":"string"},"alertSources":{"maxItems":50,"type":"array","items":{"$ref":"#/components/schemas/AlertSource"}},"services":{"maxItems":50,"type":"array","items":{"$ref":"#/components/schemas/ServiceNoIncludes"}},"createdBy":{"type":"string","readOnly":true},"notifications":{"type":"object","properties":{"atCreation":{"type":"boolean"},"dayBeforeStart":{"type":"boolean"},"hourBeforeStart":{"type":"boolean"},"atStart":{"type":"boolean"},"atEnd":{"type":"boolean"}}}}},"TimeZone":{"type":"string","enum":["Europe/Berlin","America/New_York","America/Los_Angeles","Asia/Istanbul"]},"AlertSource":{"required":["escalationPolicy","integrationType","name"],"type":"object","properties":{"id":{"type":"integer","format":"int64"},"teams":{"type":"array","items":{"$ref":"#/components/schemas/TeamRel"}},"name":{"type":"string"},"iconUrl":{"type":"string"},"lightIconUrl":{"type":"string"},"darkIconUrl":{"type":"string"},"escalationPolicy":{"$ref":"#/components/schemas/EscalationPolicy"},"integrationType":{"$ref":"#/components/schemas/IntegrationType"},"integrationKey":{"type":"string"},"integrationUrl":{"type":"string","readOnly":true},"autoResolutionTimeout":{"type":"string","format":"ISO-8601"},"alertGroupingWindow":{"type":"string","format":"ISO-8601"},"alertCreation":{"type":"string","default":"ONE_OPEN_ALERT_ALLOWED","enum":["ONE_ALERT_PER_EMAIL","ONE_ALERT_PER_EMAIL_SUBJECT","ONE_PENDING_ALERT_ALLOWED","ONE_OPEN_ALERT_ALLOWED","OPEN_RESOLVE_ON_EXTRACTION","ONE_ALERT_GROUPED_PER_WINDOW","INTELLIGENT_GROUPING"]},"status":{"type":"string","readOnly":true,"enum":["PENDING","ALL_ACCEPTED","ALL_RESOLVED","IN_MAINTENANCE","DISABLED"]},"active":{"type":"boolean","default":true},"alertPriorityRule":{"$ref":"#/components/schemas/AlertPriorityRule"},"supportHours":{"$ref":"#/components/schemas/SupportHour"},"bidirectional":{"type":"boolean","readOnly":true},"summaryTemplate":{"$ref":"#/components/schemas/AlertSourceTemplate"},"detailsTemplate":{"$ref":"#/components/schemas/AlertSourceTemplate"},"routingTemplate":{"$ref":"#/components/schemas/AlertSourceTemplate"},"linkTemplates":{"type":"array","items":{"$ref":"#/components/schemas/AlertSourceLinkTemplate"}},"priorityTemplate":{"$ref":"#/components/schemas/AlertSourcePriorityTemplate"},"severityTemplate":{"$ref":"#/components/schemas/AlertSourceSeverityTemplate"},"eventFilter":{"type":"string","description":"Defines an optional event filter condition in ICL language. This is a code based implementation, more info on syntax: https://docs.ilert.com/rest-api/icl-ilert-condition-language. For block based configuration please use the web UI. It has no effect on manually created alerts. Note: this field is an ?include, it will not appear in lists."},"alertKeyTemplate":{"$ref":"#/components/schemas/AlertSourceTemplate"},"servicesTemplate":{"type":"array","description":"Optional list of templates that extract service identifiers from the inbound event payload. Each rendered value is comma-split, and each resulting token is resolved against the tenant's services by alias or name (case-insensitive). Unmatched tokens are silently dropped. Capped at 10 templates and at the alert's per-event services limit. Note: this field is an ?include, it will not appear in lists.","items":{"$ref":"#/components/schemas/AlertSourceTemplate"}},"eventTypeFilterCreate":{"type":"string","description":"Defines an optional create alert rule in ICL language. This is a code based implementation, more info on syntax: https://docs.ilert.com/rest-api/icl-ilert-condition-language. For block based configuration please use the web UI. It has no effect on manually created alerts. Note: this field is an ?include, it will not appear in lists."},"eventTypeFilterAccept":{"type":"string","description":"Defines an optional accept alert rule in ICL language This is a code based implementation, more info on syntax: https://docs.ilert.com/rest-api/icl-ilert-condition-language. For block based configuration please use the web UI. It has no effect on manually created alerts. Note: this field is an ?include, it will not appear in lists."},"eventTypeFilterResolve":{"type":"string","description":"Defines an optional resolve alert rule in ICL language This is a code based implementation, more info on syntax: https://docs.ilert.com/rest-api/icl-ilert-condition-language. For block based configuration please use the web UI. It has no effect on manually created alerts. Note: this field is an ?include, it will not appear in lists."},"autoRaiseAlerts":{"type":"boolean","description":"Only effective when a support hour is linked to this alert source."},"scoreThreshold":{"type":"number","format":"double","description":"Only used when alertCreation is set to INTELLIGENT_GROUPING."},"severity":{"type":"integer"},"services":{"type":"array","items":{"$ref":"#/components/schemas/Service"}},"setupStatus":{"type":"string","enum":["CREATED","CREATED_ADVANCED","CREATED_BIDIRECTIONAL","FINISHED"]},"autoCreateServices":{"type":"boolean","default":false},"createdAt":{"type":"string","readOnly":true},"updatedAt":{"type":"string","readOnly":true},"managedBy":{"$ref":"#/components/schemas/ManagedBy"}}},"TeamRel":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"}}},"EscalationPolicy":{"required":["escalationRules","name"],"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"escalationRules":{"type":"array","items":{"$ref":"#/components/schemas/EscalationRule"}},"teams":{"type":"array","items":{"$ref":"#/components/schemas/TeamRel"}},"repeating":{"type":"boolean","default":false},"frequency":{"maximum":9,"minimum":1,"type":"integer","format":"int32","default":1},"delayMin":{"maximum":15,"minimum":0,"type":"integer","format":"int32","default":0},"routingKey":{"type":"string","description":"optional"},"managedBy":{"$ref":"#/components/schemas/ManagedBy"}}},"EscalationRule":{"required":["escalationTimeout"],"type":"object","properties":{"escalationTimeout":{"type":"integer"},"user":{"type":"object","properties":{"id":{"type":"number"}},"description":"This field (type: User) is deprecated, please use 'users' instead"},"schedule":{"type":"object","properties":{"id":{"type":"number"}},"description":"This field (type: Schedule) is deprecated, please use 'schedules' instead"},"team":{"type":"object","properties":{"id":{"type":"number"}},"description":"This field (type: Team) is deprecated, please use 'teams' instead"},"users":{"type":"array","items":{"$ref":"#/components/schemas/UserRel"}},"schedules":{"type":"array","items":{"$ref":"#/components/schemas/ScheduleRel"}},"teams":{"type":"array","items":{"$ref":"#/components/schemas/TeamRel"}}}},"UserRel":{"required":["id"],"type":"object","properties":{"id":{"type":"integer","format":"int64"},"firstName":{"type":"string"},"lastName":{"type":"string"}}},"ScheduleRel":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"type":{"type":"string","enum":["STATIC","RECURRING"]}}},"ManagedBy":{"type":"object","readOnly":true,"description":"Present when this entity is managed outside of the ilert web app, for example through Terraform, Pulumi or the API. Read-only.","properties":{"type":{"type":"string","enum":["API","TERRAFORM","PULUMI","ILERT"]},"source":{"type":"string","description":"Identifier of the system managing this entity."}}},"IntegrationType":{"type":"string","enum":["NAGIOS","ICINGA","EMAIL2","SMS","API","HEARTBEAT2","PRTG","PINGDOM","CLOUDWATCH","AWSPHD","STACKDRIVER","INSTANA","ZABBIX","SOLARWINDS","PROMETHEUS","NEWRELIC","GRAFANA","GITHUB","DATADOG","UPTIMEROBOT","APPDYNAMICS","DYNATRACE","TOPDESK","STATUSCAKE","TOOL","CHECKMK","AUTOTASK","AWSBUDGET","SYSDIG","SERVERDENSITY","ZAPIER","KENTIXAM","JIRA","CONSUL","ZAMMAD","SPLUNK","SERVICENOW","SEARCHGUARD","KUBERNETES","SIGNALFX","AZUREALERTS","TERRAFORMCLOUD","SENTRY","SEMATEXT","SUMOLOGIC","RAYGUN","MXTOOLBOX","ESWATCHER","AMAZONSNS","KAPACITOR","CORTEXXSOAR","ZENDESK","AUVIK","SENSU","NCENTRAL","JUMPCLOUD","SALESFORCE","GUARDDUTY","STATUSHUB","IXON","APIFORTRESS","FRESHSERVICE","APPSIGNAL","LIGHTSTEP","IBMCLOUDFUNCTIONS","CROWDSTRIKE","HUMIO","OHDEAR","MONGODBATLAS","GITLAB","HYPERPING","PAPRISMACLOUD","SAMSARA","PANDORAFMS","MSSCOM","TWILIO","CISCOMERAKI","CHECKLY","POSTHOG","GOOGLESCC","SLACK","MSTEAMS","UPTIMEKUMA","TWILIOERRORS","PARTICLE","CLOUDFLARE","TULIP","GRAYLOG","CATCHPOINT","LOKI","CORTEX","MIMIR","HALOPSA","INFLUXDB","CALLFLOW","HALOITSM","KIBANA","VICTORIAMETRICS","HONEYCOMB","FOURME","KEEP","UBIDOTS","HETRIXTOOLS","POSTMAN","CLUSTERCONTROL","NETDATA","AWX","KAFKA","MQTT","RAPIDSPIKE","HONEYBADGER","HEALTHCHECKSIO","MEZMO","SERVERGUARD24","CISCOTHOUSANDEYES","SITE24X7","ITCONDUCTOR","SAPFRUN","APICA","DASH0","ROLLBAR","GATUS","LIBRENMS","PANTHER","TEAMCITY","ALIBABACLOUD","FLEETDM","CONNECTWISEPSA","DEADMANSSNITCH","FORTISOAR","OPMANAGER","CRONITOR","DOMOTZ","LIVEWATCH","AZUREDEVOPS","LEVELIO","EKARA","SYSAID","PHAREIO","OPSGENIE","WHATAP","SIGNOZ","GOOGLECHAT","DOTCOMMONITOR","UPTIME","HELPSCOUT","SCIENCELOGIC","PULSETIC","WAZUH","SEKOIA","ZOHODESK","ORACLEENTERPRISEMANAGER","OPENOBSERVE","OPENSEARCH","OPENITCOCKPIT","ODOO","OPENNMS","DBMARLIN","TIDEWAYS","SOPHOS","BLEEMEO","UPTRENDS"]},"AlertPriorityRule":{"type":"string","enum":["HIGH","LOW","HIGH_DURING_SUPPORT_HOURS","LOW_DURING_SUPPORT_HOURS"]},"SupportHour":{"required":["name","timezone"],"type":"object","description":"Weekly support hour coverage. Every write of the coverage itself -- a support hour of its own, or an alert source's inline support hours, which carry no id -- must send supportDays or supportWindows: a body with neither is rejected with 400 rather than read as a request to clear the coverage. An alert source that references an existing support hour sends its id alone and needs neither field.","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"teams":{"type":"array","items":{"$ref":"#/components/schemas/TeamRel"}},"timezone":{"$ref":"#/components/schemas/TimeZone"},"supportDays":{"type":"object","description":"A single window per day, kept for existing clients. Lossy once coverage is not representable per day (several windows a day, or an arc across midnight): each day then reports the earliest part of its coverage, and an end at midnight is reported as 23:59. Use supportWindows for the complete picture. On input, sending it back exactly as it was read leaves the coverage unchanged, so a client that only knows supportDays can still rename a support hour or move it to another timezone. A supportDays that differs is applied when the current coverage fits one window per day, and rejected with 400 when it does not, because rebuilding the week from a lossy view would silently drop the coverage it cannot express -- change such coverage with supportWindows instead.","properties":{"MONDAY":{"$ref":"#/components/schemas/SupportDay"},"TUESDAY":{"$ref":"#/components/schemas/SupportDay"},"WEDNESDAY":{"$ref":"#/components/schemas/SupportDay"},"THURSDAY":{"$ref":"#/components/schemas/SupportDay"},"FRIDAY":{"$ref":"#/components/schemas/SupportDay"},"SATURDAY":{"$ref":"#/components/schemas/SupportDay"},"SUNDAY":{"$ref":"#/components/schemas/SupportDay"}}},"supportWindows":{"type":"array","nullable":true,"maxItems":84,"description":"The complete weekly coverage as arcs, each covering [from, to). An arc whose 'to' is at or before its 'from' wraps past Sunday midnight, so FRIDAY 17:00 to MONDAY 09:00 is one arc; 'from' equal to 'to' is the whole week. Responses list the arcs merged and in ascending order, and return null when supportDays already describes the coverage exactly. On input, when present, it is the coverage of the whole support hour: an empty array clears the weekly coverage, and overlapping or touching arcs are merged. supportDays may be sent alongside it only when it is the per-day view of these arcs; one describing different coverage is rejected with 400. Times are whole minutes (HH:mm); a seconds part is accepted only when it is zero. Only a support hour of its own accepts arcs: an alert source's inline supportHours is one window per day, and sending supportWindows there is rejected.","items":{"$ref":"#/components/schemas/SupportWindow"}},"exceptions":{"type":"array","items":{"$ref":"#/components/schemas/SupportHourException"}},"managedBy":{"$ref":"#/components/schemas/ManagedBy"},"currentStatus":{"type":"string","description":"Whether the support hour covers this moment. An include field: request it with include=currentStatus.","enum":["DURING","OUTSIDE"],"readOnly":true},"currentStatusUntil":{"type":"string","description":"When currentStatus next changes, as a local date-time in this support hour's timezone, e.g. 2026-09-18T17:00. Null when no change is in sight: coverage that never ends, no coverage at all, or a covered holiday reaching beyond the three weeks looked ahead. Returned together with currentStatus.","readOnly":true}}},"SupportDay":{"required":["end","start"],"type":"object","properties":{"start":{"type":"string","format":"time"},"end":{"type":"string","format":"time"}}},"SupportWindow":{"required":["from","to"],"type":"object","properties":{"from":{"$ref":"#/components/schemas/TimeOfWeek"},"to":{"$ref":"#/components/schemas/TimeOfWeek"}}},"TimeOfWeek":{"required":["dayOfWeek","time"],"type":"object","properties":{"dayOfWeek":{"type":"string","enum":["MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY","SUNDAY"]},"time":{"type":"string","format":"15:00"}}},"SupportHourException":{"type":"object","required":["name","start","end","supportStatus"],"properties":{"name":{"type":"string"},"start":{"type":"string","format":"date"},"end":{"type":"string","format":"date"},"supportStatus":{"type":"string","enum":["DURING","OUTSIDE"]}}},"AlertSourceTemplate":{"type":"object","properties":{"textTemplate":{"type":"string","description":"For more information on alert source templating, please visit: https://docs.ilert.com/alerting/alert-sources#alert-template.\n\n Example: <br />`Hi {{ users[0].name }} there!` \n\nYou can use the text template instead of elements by adding the include `textTemplate` to your request. Any version can be used for POST or PUT requests."},"elements":{"type":"array","items":{"$ref":"#/components/schemas/AlertSourceTemplateElement"}}}},"AlertSourceTemplateElement":{"type":"object","properties":{"type":{"type":"string","enum":["TEXT","VAR","RAW"]},"val":{"type":"string"},"func":{"type":"string"},"args":{"type":"array","items":{"$ref":"#/components/schemas/AlertSourceTemplateElementArg"}}}},"AlertSourceTemplateElementArg":{"type":"object","properties":{"S":{"type":"string"},"N":{"type":"integer"}}},"AlertSourceLinkTemplate":{"required":["hrefTemplate","text"],"type":"object","properties":{"text":{"type":"string"},"hrefTemplate":{"$ref":"#/components/schemas/AlertSourceTemplate"}}},"AlertSourcePriorityTemplate":{"required":["mappings","valueTemplate"],"type":"object","properties":{"valueTemplate":{"$ref":"#/components/schemas/AlertSourceTemplate"},"mappings":{"type":"array","items":{"$ref":"#/components/schemas/AlertSourcePriorityTemplateMapping"}}}},"AlertSourcePriorityTemplateMapping":{"required":["priority","value"],"type":"object","properties":{"value":{"type":"string"},"priority":{"type":"string","enum":["LOW","HIGH"]}}},"AlertSourceSeverityTemplate":{"required":["mappings","valueTemplate"],"type":"object","properties":{"valueTemplate":{"$ref":"#/components/schemas/AlertSourceTemplate"},"mappings":{"type":"array","items":{"$ref":"#/components/schemas/AlertSourceSeverityTemplateMapping"}}}},"AlertSourceSeverityTemplateMapping":{"required":["severity","value"],"type":"object","properties":{"value":{"type":"string"},"severity":{"type":"integer","format":"int32"}}},"Service":{"type":"object","properties":{"id":{"type":"number"},"name":{"type":"string"},"alias":{"type":"string"},"status":{"$ref":"#/components/schemas/ServiceStatus"},"description":{"type":"string"},"oneOpenIncidentOnly":{"type":"boolean"},"showUptimeHistory":{"type":"boolean"},"teams":{"type":"array","items":{"$ref":"#/components/schemas/TeamRel"}},"subscribed":{"type":"boolean","readOnly":true},"uptime":{"$ref":"#/components/schemas/ServiceUptime"},"managedBy":{"$ref":"#/components/schemas/ManagedBy"},"publicStatus":{"$ref":"#/components/schemas/ServiceStatus"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"Free-form key-value labels assigned to this service."},"iconUrl":{"type":"string"},"links":{"type":"array","items":{"$ref":"#/components/schemas/ServiceLink"}},"createdBy":{"$ref":"#/components/schemas/ManagedBy"},"dependencies":{"type":"array","items":{"$ref":"#/components/schemas/ServiceDependency"},"description":"This is an include field, it is not available in the list resource"}}},"ServiceStatus":{"type":"string","description":"the service status","enum":["OPERATIONAL","UNDER_MAINTENANCE","DEGRADED","PARTIAL_OUTAGE","MAJOR_OUTAGE"]},"ServiceUptime":{"type":"object","properties":{"rangeStart":{"type":"string","format":"date-time"},"rangeEnd":{"type":"string","format":"date-time"},"outages":{"type":"array","items":{"$ref":"#/components/schemas/ServiceOutage"}},"uptimePercentage":{"$ref":"#/components/schemas/ServiceUptimePercentage"}}},"ServiceOutage":{"type":"object","properties":{"status":{"$ref":"#/components/schemas/ServiceStatus"},"from":{"type":"string","format":"date-time"},"until":{"type":"string","format":"date-time"}}},"ServiceUptimePercentage":{"type":"object","properties":{"uptimePercentage":{"type":"object","properties":{"p90":{"maximum":100,"minimum":0,"type":"number","format":"float","readOnly":true},"p60":{"maximum":100,"minimum":0,"type":"number","format":"float","readOnly":true},"p30":{"maximum":100,"minimum":0,"type":"number","format":"float","readOnly":true}}}}},"ServiceLink":{"type":"object","properties":{"href":{"type":"string","format":"uri"},"text":{"type":"string"}}},"ServiceDependency":{"type":"object","required":["targetServiceId"],"properties":{"id":{"type":"integer","format":"int64","readOnly":true},"sourceServiceId":{"type":"integer","format":"int64","description":"The service that depends on the target service."},"targetServiceId":{"type":"integer","format":"int64","description":"The service that is being depended upon."},"notes":{"type":"string"},"invalidAfter":{"type":"string","format":"date-time","description":"Point in time after which this dependency is no longer considered valid."},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true},"createdBy":{"$ref":"#/components/schemas/ManagedBy"},"managedBy":{"$ref":"#/components/schemas/ManagedBy"}}},"ServiceNoIncludes":{"type":"object","properties":{"id":{"type":"number"},"name":{"type":"string"},"alias":{"type":"string"},"status":{"$ref":"#/components/schemas/ServiceStatus"},"description":{"type":"string"},"oneOpenIncidentOnly":{"type":"boolean"},"showUptimeHistory":{"type":"boolean"},"teams":{"type":"array","items":{"$ref":"#/components/schemas/TeamRel"}},"managedBy":{"$ref":"#/components/schemas/ManagedBy"},"publicStatus":{"$ref":"#/components/schemas/ServiceStatus"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"Free-form key-value labels assigned to this service."},"iconUrl":{"type":"string"},"links":{"type":"array","items":{"$ref":"#/components/schemas/ServiceLink"}},"createdBy":{"$ref":"#/components/schemas/ManagedBy"}}}}},"paths":{"/maintenance-windows/{id}":{"get":{"tags":["Maintenance Windows"],"summary":"Get the maintenance window with specified id.","parameters":[{"name":"id","in":"path","description":"entity ID","required":true,"schema":{"type":"number"}}],"responses":{"200":{"description":"the maintenance window object","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MaintenanceWindow"}}}}}}}}}
```

## PUT /maintenance-windows/{id}

> Update an existing maintenance window.

```json
{"openapi":"3.0.1","info":{"title":"ilert REST API","version":"v2.2026.9-r.4"},"tags":[{"name":"Maintenance Windows"}],"servers":[{"url":"/api"}],"security":[{"apiKey":[]}],"components":{"securitySchemes":{"apiKey":{"type":"apiKey","description":"The Bearer API key of your user <a href='/api-docs/#section/Authentication'>more info</a>.","name":"Authorization","in":"header"}},"schemas":{"MaintenanceWindow":{"type":"object","properties":{"id":{"type":"integer","format":"int64","readOnly":true},"timezone":{"$ref":"#/components/schemas/TimeZone"},"start":{"type":"string","format":"date-time"},"end":{"type":"string","format":"date-time"},"summary":{"type":"string"},"description":{"type":"string"},"alertSources":{"maxItems":50,"type":"array","items":{"$ref":"#/components/schemas/AlertSource"}},"services":{"maxItems":50,"type":"array","items":{"$ref":"#/components/schemas/ServiceNoIncludes"}},"createdBy":{"type":"string","readOnly":true},"notifications":{"type":"object","properties":{"atCreation":{"type":"boolean"},"dayBeforeStart":{"type":"boolean"},"hourBeforeStart":{"type":"boolean"},"atStart":{"type":"boolean"},"atEnd":{"type":"boolean"}}}}},"TimeZone":{"type":"string","enum":["Europe/Berlin","America/New_York","America/Los_Angeles","Asia/Istanbul"]},"AlertSource":{"required":["escalationPolicy","integrationType","name"],"type":"object","properties":{"id":{"type":"integer","format":"int64"},"teams":{"type":"array","items":{"$ref":"#/components/schemas/TeamRel"}},"name":{"type":"string"},"iconUrl":{"type":"string"},"lightIconUrl":{"type":"string"},"darkIconUrl":{"type":"string"},"escalationPolicy":{"$ref":"#/components/schemas/EscalationPolicy"},"integrationType":{"$ref":"#/components/schemas/IntegrationType"},"integrationKey":{"type":"string"},"integrationUrl":{"type":"string","readOnly":true},"autoResolutionTimeout":{"type":"string","format":"ISO-8601"},"alertGroupingWindow":{"type":"string","format":"ISO-8601"},"alertCreation":{"type":"string","default":"ONE_OPEN_ALERT_ALLOWED","enum":["ONE_ALERT_PER_EMAIL","ONE_ALERT_PER_EMAIL_SUBJECT","ONE_PENDING_ALERT_ALLOWED","ONE_OPEN_ALERT_ALLOWED","OPEN_RESOLVE_ON_EXTRACTION","ONE_ALERT_GROUPED_PER_WINDOW","INTELLIGENT_GROUPING"]},"status":{"type":"string","readOnly":true,"enum":["PENDING","ALL_ACCEPTED","ALL_RESOLVED","IN_MAINTENANCE","DISABLED"]},"active":{"type":"boolean","default":true},"alertPriorityRule":{"$ref":"#/components/schemas/AlertPriorityRule"},"supportHours":{"$ref":"#/components/schemas/SupportHour"},"bidirectional":{"type":"boolean","readOnly":true},"summaryTemplate":{"$ref":"#/components/schemas/AlertSourceTemplate"},"detailsTemplate":{"$ref":"#/components/schemas/AlertSourceTemplate"},"routingTemplate":{"$ref":"#/components/schemas/AlertSourceTemplate"},"linkTemplates":{"type":"array","items":{"$ref":"#/components/schemas/AlertSourceLinkTemplate"}},"priorityTemplate":{"$ref":"#/components/schemas/AlertSourcePriorityTemplate"},"severityTemplate":{"$ref":"#/components/schemas/AlertSourceSeverityTemplate"},"eventFilter":{"type":"string","description":"Defines an optional event filter condition in ICL language. This is a code based implementation, more info on syntax: https://docs.ilert.com/rest-api/icl-ilert-condition-language. For block based configuration please use the web UI. It has no effect on manually created alerts. Note: this field is an ?include, it will not appear in lists."},"alertKeyTemplate":{"$ref":"#/components/schemas/AlertSourceTemplate"},"servicesTemplate":{"type":"array","description":"Optional list of templates that extract service identifiers from the inbound event payload. Each rendered value is comma-split, and each resulting token is resolved against the tenant's services by alias or name (case-insensitive). Unmatched tokens are silently dropped. Capped at 10 templates and at the alert's per-event services limit. Note: this field is an ?include, it will not appear in lists.","items":{"$ref":"#/components/schemas/AlertSourceTemplate"}},"eventTypeFilterCreate":{"type":"string","description":"Defines an optional create alert rule in ICL language. This is a code based implementation, more info on syntax: https://docs.ilert.com/rest-api/icl-ilert-condition-language. For block based configuration please use the web UI. It has no effect on manually created alerts. Note: this field is an ?include, it will not appear in lists."},"eventTypeFilterAccept":{"type":"string","description":"Defines an optional accept alert rule in ICL language This is a code based implementation, more info on syntax: https://docs.ilert.com/rest-api/icl-ilert-condition-language. For block based configuration please use the web UI. It has no effect on manually created alerts. Note: this field is an ?include, it will not appear in lists."},"eventTypeFilterResolve":{"type":"string","description":"Defines an optional resolve alert rule in ICL language This is a code based implementation, more info on syntax: https://docs.ilert.com/rest-api/icl-ilert-condition-language. For block based configuration please use the web UI. It has no effect on manually created alerts. Note: this field is an ?include, it will not appear in lists."},"autoRaiseAlerts":{"type":"boolean","description":"Only effective when a support hour is linked to this alert source."},"scoreThreshold":{"type":"number","format":"double","description":"Only used when alertCreation is set to INTELLIGENT_GROUPING."},"severity":{"type":"integer"},"services":{"type":"array","items":{"$ref":"#/components/schemas/Service"}},"setupStatus":{"type":"string","enum":["CREATED","CREATED_ADVANCED","CREATED_BIDIRECTIONAL","FINISHED"]},"autoCreateServices":{"type":"boolean","default":false},"createdAt":{"type":"string","readOnly":true},"updatedAt":{"type":"string","readOnly":true},"managedBy":{"$ref":"#/components/schemas/ManagedBy"}}},"TeamRel":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"}}},"EscalationPolicy":{"required":["escalationRules","name"],"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"escalationRules":{"type":"array","items":{"$ref":"#/components/schemas/EscalationRule"}},"teams":{"type":"array","items":{"$ref":"#/components/schemas/TeamRel"}},"repeating":{"type":"boolean","default":false},"frequency":{"maximum":9,"minimum":1,"type":"integer","format":"int32","default":1},"delayMin":{"maximum":15,"minimum":0,"type":"integer","format":"int32","default":0},"routingKey":{"type":"string","description":"optional"},"managedBy":{"$ref":"#/components/schemas/ManagedBy"}}},"EscalationRule":{"required":["escalationTimeout"],"type":"object","properties":{"escalationTimeout":{"type":"integer"},"user":{"type":"object","properties":{"id":{"type":"number"}},"description":"This field (type: User) is deprecated, please use 'users' instead"},"schedule":{"type":"object","properties":{"id":{"type":"number"}},"description":"This field (type: Schedule) is deprecated, please use 'schedules' instead"},"team":{"type":"object","properties":{"id":{"type":"number"}},"description":"This field (type: Team) is deprecated, please use 'teams' instead"},"users":{"type":"array","items":{"$ref":"#/components/schemas/UserRel"}},"schedules":{"type":"array","items":{"$ref":"#/components/schemas/ScheduleRel"}},"teams":{"type":"array","items":{"$ref":"#/components/schemas/TeamRel"}}}},"UserRel":{"required":["id"],"type":"object","properties":{"id":{"type":"integer","format":"int64"},"firstName":{"type":"string"},"lastName":{"type":"string"}}},"ScheduleRel":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"type":{"type":"string","enum":["STATIC","RECURRING"]}}},"ManagedBy":{"type":"object","readOnly":true,"description":"Present when this entity is managed outside of the ilert web app, for example through Terraform, Pulumi or the API. Read-only.","properties":{"type":{"type":"string","enum":["API","TERRAFORM","PULUMI","ILERT"]},"source":{"type":"string","description":"Identifier of the system managing this entity."}}},"IntegrationType":{"type":"string","enum":["NAGIOS","ICINGA","EMAIL2","SMS","API","HEARTBEAT2","PRTG","PINGDOM","CLOUDWATCH","AWSPHD","STACKDRIVER","INSTANA","ZABBIX","SOLARWINDS","PROMETHEUS","NEWRELIC","GRAFANA","GITHUB","DATADOG","UPTIMEROBOT","APPDYNAMICS","DYNATRACE","TOPDESK","STATUSCAKE","TOOL","CHECKMK","AUTOTASK","AWSBUDGET","SYSDIG","SERVERDENSITY","ZAPIER","KENTIXAM","JIRA","CONSUL","ZAMMAD","SPLUNK","SERVICENOW","SEARCHGUARD","KUBERNETES","SIGNALFX","AZUREALERTS","TERRAFORMCLOUD","SENTRY","SEMATEXT","SUMOLOGIC","RAYGUN","MXTOOLBOX","ESWATCHER","AMAZONSNS","KAPACITOR","CORTEXXSOAR","ZENDESK","AUVIK","SENSU","NCENTRAL","JUMPCLOUD","SALESFORCE","GUARDDUTY","STATUSHUB","IXON","APIFORTRESS","FRESHSERVICE","APPSIGNAL","LIGHTSTEP","IBMCLOUDFUNCTIONS","CROWDSTRIKE","HUMIO","OHDEAR","MONGODBATLAS","GITLAB","HYPERPING","PAPRISMACLOUD","SAMSARA","PANDORAFMS","MSSCOM","TWILIO","CISCOMERAKI","CHECKLY","POSTHOG","GOOGLESCC","SLACK","MSTEAMS","UPTIMEKUMA","TWILIOERRORS","PARTICLE","CLOUDFLARE","TULIP","GRAYLOG","CATCHPOINT","LOKI","CORTEX","MIMIR","HALOPSA","INFLUXDB","CALLFLOW","HALOITSM","KIBANA","VICTORIAMETRICS","HONEYCOMB","FOURME","KEEP","UBIDOTS","HETRIXTOOLS","POSTMAN","CLUSTERCONTROL","NETDATA","AWX","KAFKA","MQTT","RAPIDSPIKE","HONEYBADGER","HEALTHCHECKSIO","MEZMO","SERVERGUARD24","CISCOTHOUSANDEYES","SITE24X7","ITCONDUCTOR","SAPFRUN","APICA","DASH0","ROLLBAR","GATUS","LIBRENMS","PANTHER","TEAMCITY","ALIBABACLOUD","FLEETDM","CONNECTWISEPSA","DEADMANSSNITCH","FORTISOAR","OPMANAGER","CRONITOR","DOMOTZ","LIVEWATCH","AZUREDEVOPS","LEVELIO","EKARA","SYSAID","PHAREIO","OPSGENIE","WHATAP","SIGNOZ","GOOGLECHAT","DOTCOMMONITOR","UPTIME","HELPSCOUT","SCIENCELOGIC","PULSETIC","WAZUH","SEKOIA","ZOHODESK","ORACLEENTERPRISEMANAGER","OPENOBSERVE","OPENSEARCH","OPENITCOCKPIT","ODOO","OPENNMS","DBMARLIN","TIDEWAYS","SOPHOS","BLEEMEO","UPTRENDS"]},"AlertPriorityRule":{"type":"string","enum":["HIGH","LOW","HIGH_DURING_SUPPORT_HOURS","LOW_DURING_SUPPORT_HOURS"]},"SupportHour":{"required":["name","timezone"],"type":"object","description":"Weekly support hour coverage. Every write of the coverage itself -- a support hour of its own, or an alert source's inline support hours, which carry no id -- must send supportDays or supportWindows: a body with neither is rejected with 400 rather than read as a request to clear the coverage. An alert source that references an existing support hour sends its id alone and needs neither field.","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"teams":{"type":"array","items":{"$ref":"#/components/schemas/TeamRel"}},"timezone":{"$ref":"#/components/schemas/TimeZone"},"supportDays":{"type":"object","description":"A single window per day, kept for existing clients. Lossy once coverage is not representable per day (several windows a day, or an arc across midnight): each day then reports the earliest part of its coverage, and an end at midnight is reported as 23:59. Use supportWindows for the complete picture. On input, sending it back exactly as it was read leaves the coverage unchanged, so a client that only knows supportDays can still rename a support hour or move it to another timezone. A supportDays that differs is applied when the current coverage fits one window per day, and rejected with 400 when it does not, because rebuilding the week from a lossy view would silently drop the coverage it cannot express -- change such coverage with supportWindows instead.","properties":{"MONDAY":{"$ref":"#/components/schemas/SupportDay"},"TUESDAY":{"$ref":"#/components/schemas/SupportDay"},"WEDNESDAY":{"$ref":"#/components/schemas/SupportDay"},"THURSDAY":{"$ref":"#/components/schemas/SupportDay"},"FRIDAY":{"$ref":"#/components/schemas/SupportDay"},"SATURDAY":{"$ref":"#/components/schemas/SupportDay"},"SUNDAY":{"$ref":"#/components/schemas/SupportDay"}}},"supportWindows":{"type":"array","nullable":true,"maxItems":84,"description":"The complete weekly coverage as arcs, each covering [from, to). An arc whose 'to' is at or before its 'from' wraps past Sunday midnight, so FRIDAY 17:00 to MONDAY 09:00 is one arc; 'from' equal to 'to' is the whole week. Responses list the arcs merged and in ascending order, and return null when supportDays already describes the coverage exactly. On input, when present, it is the coverage of the whole support hour: an empty array clears the weekly coverage, and overlapping or touching arcs are merged. supportDays may be sent alongside it only when it is the per-day view of these arcs; one describing different coverage is rejected with 400. Times are whole minutes (HH:mm); a seconds part is accepted only when it is zero. Only a support hour of its own accepts arcs: an alert source's inline supportHours is one window per day, and sending supportWindows there is rejected.","items":{"$ref":"#/components/schemas/SupportWindow"}},"exceptions":{"type":"array","items":{"$ref":"#/components/schemas/SupportHourException"}},"managedBy":{"$ref":"#/components/schemas/ManagedBy"},"currentStatus":{"type":"string","description":"Whether the support hour covers this moment. An include field: request it with include=currentStatus.","enum":["DURING","OUTSIDE"],"readOnly":true},"currentStatusUntil":{"type":"string","description":"When currentStatus next changes, as a local date-time in this support hour's timezone, e.g. 2026-09-18T17:00. Null when no change is in sight: coverage that never ends, no coverage at all, or a covered holiday reaching beyond the three weeks looked ahead. Returned together with currentStatus.","readOnly":true}}},"SupportDay":{"required":["end","start"],"type":"object","properties":{"start":{"type":"string","format":"time"},"end":{"type":"string","format":"time"}}},"SupportWindow":{"required":["from","to"],"type":"object","properties":{"from":{"$ref":"#/components/schemas/TimeOfWeek"},"to":{"$ref":"#/components/schemas/TimeOfWeek"}}},"TimeOfWeek":{"required":["dayOfWeek","time"],"type":"object","properties":{"dayOfWeek":{"type":"string","enum":["MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY","SUNDAY"]},"time":{"type":"string","format":"15:00"}}},"SupportHourException":{"type":"object","required":["name","start","end","supportStatus"],"properties":{"name":{"type":"string"},"start":{"type":"string","format":"date"},"end":{"type":"string","format":"date"},"supportStatus":{"type":"string","enum":["DURING","OUTSIDE"]}}},"AlertSourceTemplate":{"type":"object","properties":{"textTemplate":{"type":"string","description":"For more information on alert source templating, please visit: https://docs.ilert.com/alerting/alert-sources#alert-template.\n\n Example: <br />`Hi {{ users[0].name }} there!` \n\nYou can use the text template instead of elements by adding the include `textTemplate` to your request. Any version can be used for POST or PUT requests."},"elements":{"type":"array","items":{"$ref":"#/components/schemas/AlertSourceTemplateElement"}}}},"AlertSourceTemplateElement":{"type":"object","properties":{"type":{"type":"string","enum":["TEXT","VAR","RAW"]},"val":{"type":"string"},"func":{"type":"string"},"args":{"type":"array","items":{"$ref":"#/components/schemas/AlertSourceTemplateElementArg"}}}},"AlertSourceTemplateElementArg":{"type":"object","properties":{"S":{"type":"string"},"N":{"type":"integer"}}},"AlertSourceLinkTemplate":{"required":["hrefTemplate","text"],"type":"object","properties":{"text":{"type":"string"},"hrefTemplate":{"$ref":"#/components/schemas/AlertSourceTemplate"}}},"AlertSourcePriorityTemplate":{"required":["mappings","valueTemplate"],"type":"object","properties":{"valueTemplate":{"$ref":"#/components/schemas/AlertSourceTemplate"},"mappings":{"type":"array","items":{"$ref":"#/components/schemas/AlertSourcePriorityTemplateMapping"}}}},"AlertSourcePriorityTemplateMapping":{"required":["priority","value"],"type":"object","properties":{"value":{"type":"string"},"priority":{"type":"string","enum":["LOW","HIGH"]}}},"AlertSourceSeverityTemplate":{"required":["mappings","valueTemplate"],"type":"object","properties":{"valueTemplate":{"$ref":"#/components/schemas/AlertSourceTemplate"},"mappings":{"type":"array","items":{"$ref":"#/components/schemas/AlertSourceSeverityTemplateMapping"}}}},"AlertSourceSeverityTemplateMapping":{"required":["severity","value"],"type":"object","properties":{"value":{"type":"string"},"severity":{"type":"integer","format":"int32"}}},"Service":{"type":"object","properties":{"id":{"type":"number"},"name":{"type":"string"},"alias":{"type":"string"},"status":{"$ref":"#/components/schemas/ServiceStatus"},"description":{"type":"string"},"oneOpenIncidentOnly":{"type":"boolean"},"showUptimeHistory":{"type":"boolean"},"teams":{"type":"array","items":{"$ref":"#/components/schemas/TeamRel"}},"subscribed":{"type":"boolean","readOnly":true},"uptime":{"$ref":"#/components/schemas/ServiceUptime"},"managedBy":{"$ref":"#/components/schemas/ManagedBy"},"publicStatus":{"$ref":"#/components/schemas/ServiceStatus"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"Free-form key-value labels assigned to this service."},"iconUrl":{"type":"string"},"links":{"type":"array","items":{"$ref":"#/components/schemas/ServiceLink"}},"createdBy":{"$ref":"#/components/schemas/ManagedBy"},"dependencies":{"type":"array","items":{"$ref":"#/components/schemas/ServiceDependency"},"description":"This is an include field, it is not available in the list resource"}}},"ServiceStatus":{"type":"string","description":"the service status","enum":["OPERATIONAL","UNDER_MAINTENANCE","DEGRADED","PARTIAL_OUTAGE","MAJOR_OUTAGE"]},"ServiceUptime":{"type":"object","properties":{"rangeStart":{"type":"string","format":"date-time"},"rangeEnd":{"type":"string","format":"date-time"},"outages":{"type":"array","items":{"$ref":"#/components/schemas/ServiceOutage"}},"uptimePercentage":{"$ref":"#/components/schemas/ServiceUptimePercentage"}}},"ServiceOutage":{"type":"object","properties":{"status":{"$ref":"#/components/schemas/ServiceStatus"},"from":{"type":"string","format":"date-time"},"until":{"type":"string","format":"date-time"}}},"ServiceUptimePercentage":{"type":"object","properties":{"uptimePercentage":{"type":"object","properties":{"p90":{"maximum":100,"minimum":0,"type":"number","format":"float","readOnly":true},"p60":{"maximum":100,"minimum":0,"type":"number","format":"float","readOnly":true},"p30":{"maximum":100,"minimum":0,"type":"number","format":"float","readOnly":true}}}}},"ServiceLink":{"type":"object","properties":{"href":{"type":"string","format":"uri"},"text":{"type":"string"}}},"ServiceDependency":{"type":"object","required":["targetServiceId"],"properties":{"id":{"type":"integer","format":"int64","readOnly":true},"sourceServiceId":{"type":"integer","format":"int64","description":"The service that depends on the target service."},"targetServiceId":{"type":"integer","format":"int64","description":"The service that is being depended upon."},"notes":{"type":"string"},"invalidAfter":{"type":"string","format":"date-time","description":"Point in time after which this dependency is no longer considered valid."},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true},"createdBy":{"$ref":"#/components/schemas/ManagedBy"},"managedBy":{"$ref":"#/components/schemas/ManagedBy"}}},"ServiceNoIncludes":{"type":"object","properties":{"id":{"type":"number"},"name":{"type":"string"},"alias":{"type":"string"},"status":{"$ref":"#/components/schemas/ServiceStatus"},"description":{"type":"string"},"oneOpenIncidentOnly":{"type":"boolean"},"showUptimeHistory":{"type":"boolean"},"teams":{"type":"array","items":{"$ref":"#/components/schemas/TeamRel"}},"managedBy":{"$ref":"#/components/schemas/ManagedBy"},"publicStatus":{"$ref":"#/components/schemas/ServiceStatus"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"Free-form key-value labels assigned to this service."},"iconUrl":{"type":"string"},"links":{"type":"array","items":{"$ref":"#/components/schemas/ServiceLink"}},"createdBy":{"$ref":"#/components/schemas/ManagedBy"}}}}},"paths":{"/maintenance-windows/{id}":{"put":{"tags":["Maintenance Windows"],"summary":"Update an existing maintenance window.","parameters":[{"name":"id","in":"path","description":"entity ID","required":true,"schema":{"type":"number"}}],"requestBody":{"description":"the maintenance window","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MaintenanceWindow"}}},"required":true},"responses":{"200":{"description":"the updated maintenance window object","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MaintenanceWindow"}}}}}}}}}
```

## DELETE /maintenance-windows/{id}

> Delete the specified maintenance window.

```json
{"openapi":"3.0.1","info":{"title":"ilert REST API","version":"v2.2026.9-r.4"},"tags":[{"name":"Maintenance Windows"}],"servers":[{"url":"/api"}],"security":[{"apiKey":[]}],"components":{"securitySchemes":{"apiKey":{"type":"apiKey","description":"The Bearer API key of your user <a href='/api-docs/#section/Authentication'>more info</a>.","name":"Authorization","in":"header"}}},"paths":{"/maintenance-windows/{id}":{"delete":{"tags":["Maintenance Windows"],"summary":"Delete the specified maintenance window.","parameters":[{"name":"id","in":"path","description":"entity ID","required":true,"schema":{"type":"number"}}],"responses":{"204":{"description":"if deletion was successful","content":{}}}}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.ilert.com/developer-docs/rest-api/api-reference/maintenance-windows.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
