curl --request POST \
--url https://api.phare.io/uptime/maintenance-windows/{maintenanceWindowId}/complete \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.phare.io/uptime/maintenance-windows/{maintenanceWindowId}/complete"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.phare.io/uptime/maintenance-windows/{maintenanceWindowId}/complete', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.phare.io/uptime/maintenance-windows/{maintenanceWindowId}/complete",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.phare.io/uptime/maintenance-windows/{maintenanceWindowId}/complete"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.phare.io/uptime/maintenance-windows/{maintenanceWindowId}/complete")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.phare.io/uptime/maintenance-windows/{maintenanceWindowId}/complete")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"monitoring_mode": "pause",
"title": "Database upgrade",
"starts_at": "2023-11-07T05:31:56Z",
"ends_at": "2023-11-07T05:31:56Z",
"id": 1,
"project_id": 1,
"state": "scheduled",
"description": "Planned database upgrade and maintenance",
"monitors": [
1,
2,
3
],
"status_pages": [
1,
2
],
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}{
"message": "Unauthorized"
}{
"message": "The platform:write permission is required to perform this action."
}{
"message": "<string>",
"errors": {
"key": [
"The key field is required"
]
}
}Complete a maintenance window
Complete a maintenance window by ID
curl --request POST \
--url https://api.phare.io/uptime/maintenance-windows/{maintenanceWindowId}/complete \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.phare.io/uptime/maintenance-windows/{maintenanceWindowId}/complete"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.phare.io/uptime/maintenance-windows/{maintenanceWindowId}/complete', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.phare.io/uptime/maintenance-windows/{maintenanceWindowId}/complete",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.phare.io/uptime/maintenance-windows/{maintenanceWindowId}/complete"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.phare.io/uptime/maintenance-windows/{maintenanceWindowId}/complete")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.phare.io/uptime/maintenance-windows/{maintenanceWindowId}/complete")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"monitoring_mode": "pause",
"title": "Database upgrade",
"starts_at": "2023-11-07T05:31:56Z",
"ends_at": "2023-11-07T05:31:56Z",
"id": 1,
"project_id": 1,
"state": "scheduled",
"description": "Planned database upgrade and maintenance",
"monitors": [
1,
2,
3
],
"status_pages": [
1,
2
],
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}{
"message": "Unauthorized"
}{
"message": "The platform:write permission is required to perform this action."
}{
"message": "<string>",
"errors": {
"key": [
"The key field is required"
]
}
}Lifecycle & State Requirements
Only maintenance windows in thein_progress state can be marked as completed. Trying to complete a maintenance window in a different state will return a 403 Forbidden response.
What happens on completion?
When a maintenance window is marked as completed:- The window state changes to
completed. - Any monitors attached to the window that were paused (when using the
pausemonitoring mode) are automatically resumed. Unless they were already paused before the start of the maintenance window, or an overlapping maintenance window withpausemonitoring mode is still ongoing. - Connected status pages are updated immediately to remove upcoming or active maintenance announcements.
- The
uptime.maintenance_window.completedalert event is dispatched to any configured alert rules.
Authorizations
Use a user token to access authenticated routes. The token must be specified in the Authorization HTTP header with the following format 'Authorization: Bearer '.
Headers
A project header is required when using an organization-scoped API key.
1
A project header is required when using an organization-scoped API key.
"luminous-guiding-tower"
Path Parameters
ID of the maintenance window to complete
Response
Success, maintenance window completed
pause, mute, normal Maintenance window title
"Database upgrade"
Date and time when the maintenance window starts
Date and time when the maintenance window ends
Maintenance window ID
1
Parent project ID
1
scheduled, in_progress, completed, cancelled Description of the maintenance window
"Planned database upgrade and maintenance"
List of monitor IDs linked to the maintenance window
[1, 2, 3]
List of status page IDs linked to the maintenance window
[1, 2]
Date of creation for the entity
Date of last update for the entity
Was this page helpful?