curl --request POST \
--url https://api.phare.io/uptime/maintenance-windows/{maintenanceWindowId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"title": "Database upgrade",
"description": "Planned database upgrade and maintenance",
"starts_at": "2023-11-07T05:31:56Z",
"ends_at": "2023-11-07T05:31:56Z",
"monitors": [
1,
2,
3
],
"status_pages": [
1,
2
],
"tags": [
"environment:production"
]
}
'import requests
url = "https://api.phare.io/uptime/maintenance-windows/{maintenanceWindowId}"
payload = {
"title": "Database upgrade",
"description": "Planned database upgrade and maintenance",
"starts_at": "2023-11-07T05:31:56Z",
"ends_at": "2023-11-07T05:31:56Z",
"monitors": [1, 2, 3],
"status_pages": [1, 2],
"tags": ["environment:production"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
title: 'Database upgrade',
description: 'Planned database upgrade and maintenance',
starts_at: '2023-11-07T05:31:56Z',
ends_at: '2023-11-07T05:31:56Z',
monitors: [1, 2, 3],
status_pages: [1, 2],
tags: ['environment:production']
})
};
fetch('https://api.phare.io/uptime/maintenance-windows/{maintenanceWindowId}', 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}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'title' => 'Database upgrade',
'description' => 'Planned database upgrade and maintenance',
'starts_at' => '2023-11-07T05:31:56Z',
'ends_at' => '2023-11-07T05:31:56Z',
'monitors' => [
1,
2,
3
],
'status_pages' => [
1,
2
],
'tags' => [
'environment:production'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.phare.io/uptime/maintenance-windows/{maintenanceWindowId}"
payload := strings.NewReader("{\n \"title\": \"Database upgrade\",\n \"description\": \"Planned database upgrade and maintenance\",\n \"starts_at\": \"2023-11-07T05:31:56Z\",\n \"ends_at\": \"2023-11-07T05:31:56Z\",\n \"monitors\": [\n 1,\n 2,\n 3\n ],\n \"status_pages\": [\n 1,\n 2\n ],\n \"tags\": [\n \"environment:production\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
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}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"title\": \"Database upgrade\",\n \"description\": \"Planned database upgrade and maintenance\",\n \"starts_at\": \"2023-11-07T05:31:56Z\",\n \"ends_at\": \"2023-11-07T05:31:56Z\",\n \"monitors\": [\n 1,\n 2,\n 3\n ],\n \"status_pages\": [\n 1,\n 2\n ],\n \"tags\": [\n \"environment:production\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.phare.io/uptime/maintenance-windows/{maintenanceWindowId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"title\": \"Database upgrade\",\n \"description\": \"Planned database upgrade and maintenance\",\n \"starts_at\": \"2023-11-07T05:31:56Z\",\n \"ends_at\": \"2023-11-07T05:31:56Z\",\n \"monitors\": [\n 1,\n 2,\n 3\n ],\n \"status_pages\": [\n 1,\n 2\n ],\n \"tags\": [\n \"environment:production\"\n ]\n}"
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."
}{
"message": "<string>",
"errors": {
"key": [
"The key field is required"
]
}
}Update a maintenance window
Update a maintenance window by ID. The monitoring_mode, starts_at, ends_at, monitors and status_pages fields can only be modified while the maintenance window is scheduled, except for ends_at which can be extended while the maintenance window is in progress.
curl --request POST \
--url https://api.phare.io/uptime/maintenance-windows/{maintenanceWindowId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"title": "Database upgrade",
"description": "Planned database upgrade and maintenance",
"starts_at": "2023-11-07T05:31:56Z",
"ends_at": "2023-11-07T05:31:56Z",
"monitors": [
1,
2,
3
],
"status_pages": [
1,
2
],
"tags": [
"environment:production"
]
}
'import requests
url = "https://api.phare.io/uptime/maintenance-windows/{maintenanceWindowId}"
payload = {
"title": "Database upgrade",
"description": "Planned database upgrade and maintenance",
"starts_at": "2023-11-07T05:31:56Z",
"ends_at": "2023-11-07T05:31:56Z",
"monitors": [1, 2, 3],
"status_pages": [1, 2],
"tags": ["environment:production"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
title: 'Database upgrade',
description: 'Planned database upgrade and maintenance',
starts_at: '2023-11-07T05:31:56Z',
ends_at: '2023-11-07T05:31:56Z',
monitors: [1, 2, 3],
status_pages: [1, 2],
tags: ['environment:production']
})
};
fetch('https://api.phare.io/uptime/maintenance-windows/{maintenanceWindowId}', 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}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'title' => 'Database upgrade',
'description' => 'Planned database upgrade and maintenance',
'starts_at' => '2023-11-07T05:31:56Z',
'ends_at' => '2023-11-07T05:31:56Z',
'monitors' => [
1,
2,
3
],
'status_pages' => [
1,
2
],
'tags' => [
'environment:production'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.phare.io/uptime/maintenance-windows/{maintenanceWindowId}"
payload := strings.NewReader("{\n \"title\": \"Database upgrade\",\n \"description\": \"Planned database upgrade and maintenance\",\n \"starts_at\": \"2023-11-07T05:31:56Z\",\n \"ends_at\": \"2023-11-07T05:31:56Z\",\n \"monitors\": [\n 1,\n 2,\n 3\n ],\n \"status_pages\": [\n 1,\n 2\n ],\n \"tags\": [\n \"environment:production\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
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}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"title\": \"Database upgrade\",\n \"description\": \"Planned database upgrade and maintenance\",\n \"starts_at\": \"2023-11-07T05:31:56Z\",\n \"ends_at\": \"2023-11-07T05:31:56Z\",\n \"monitors\": [\n 1,\n 2,\n 3\n ],\n \"status_pages\": [\n 1,\n 2\n ],\n \"tags\": [\n \"environment:production\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.phare.io/uptime/maintenance-windows/{maintenanceWindowId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"title\": \"Database upgrade\",\n \"description\": \"Planned database upgrade and maintenance\",\n \"starts_at\": \"2023-11-07T05:31:56Z\",\n \"ends_at\": \"2023-11-07T05:31:56Z\",\n \"monitors\": [\n 1,\n 2,\n 3\n ],\n \"status_pages\": [\n 1,\n 2\n ],\n \"tags\": [\n \"environment:production\"\n ]\n}"
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."
}{
"message": "<string>",
"errors": {
"key": [
"The key field is required"
]
}
}State-specific mutability rules
Depending on the current state of the maintenance window, certain fields cannot be modified:scheduled: All fields can be updated.in_progress: You can updatetitle,description, and extendends_at(must be greater than or equal to the currentends_at). Thestarts_atdate,monitoring_mode,monitors, andstatus_pagescannot be changed while maintenance is ongoing.completed/cancelled: Onlytitleanddescriptioncan be modified (for example, to add post-maintenance notes). Timings, monitoring mode, and attached monitors/status pages cannot be changed.
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 update
Body
Maintenance window request
Maintenance window title
1 - 250"Database upgrade"
Description of the maintenance window
1 - 2000"Planned database upgrade and maintenance"
Monitoring mode during maintenance
pause, mute, normal 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]
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 - 100Response
Success, maintenance window updated
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?