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",
"monitors": [
1,
2,
3
],
"id": 1,
"project_id": 1,
"state": "scheduled",
"description": "Planned database upgrade and maintenance",
"status_pages": [
1,
2
],
"tags": [
"environment:production"
],
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}{
"message": "Unauthenticated."
}{
"message": "The platform:write permission is required to perform this action."
}{
"message": "Record not found."
}Complete a maintenance window
Complete a maintenance window by ID. Only in-progress maintenance windows can be completed, and ends_at is set to the current time if it is in the future.
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",
"monitors": [
1,
2,
3
],
"id": 1,
"project_id": 1,
"state": "scheduled",
"description": "Planned database upgrade and maintenance",
"status_pages": [
1,
2
],
"tags": [
"environment:production"
],
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}{
"message": "Unauthenticated."
}{
"message": "The platform:write permission is required to perform this action."
}{
"message": "Record not found."
}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
Monitoring mode during maintenance
pause, mute, normal Maintenance window title
1 - 250"Database upgrade"
Date and time when the maintenance window starts, with minute precision (seconds must be 00). Must be within the next year.
Date and time when the maintenance window ends, with minute precision (seconds must be 00). Must be after starts_at and within the next year.
List of monitor IDs linked to the maintenance window
1 - 100 elements[1, 2, 3]
Maintenance window ID
1
Parent project ID
1
Maintenance window state
scheduled, in_progress, completed, cancelled Description of the maintenance window
1 - 2000"Planned database upgrade and maintenance"
List of status page IDs linked to the maintenance window
100[1, 2]
Resource tags, made of lowercase letters, numbers, ., _, : and -. An organization can have up to 200 tags.
201 - 100Date of creation for the entity
Date of last update for the entity
Was this page helpful?