StatusPage.io - Create Scheduled Maintenance Incident
Octopus.Script exported 02/17/2025 by Sam-Kudo belongs to 'StatusPage' category.
Creates or updates a scheduled maintenance incident on StatusPage.io
Parameters
When steps based on the template are included in a project's deployment process, the parameters below can be set.
Scheduled Maintenance Name
The name of the scheduled maintenance incident.
Status
The status of the incident, one of scheduled|in_progress|verifying|completed
Message
Optional message to add to scheduled maintenance incident.
ComponentId
Optional component id to reference for the scheduled maintenance incident. Talk to your StatusPage.io administrator for details.
StatusPage.io Page Id
StatusPage.io Organization or "Page ID". Visit the API authentication docs for details.
StatusPage.io API Key
StatusPage.io API key for the organization. Visit the API Authentication docs for details.
Script body
## --------------------------------------------------------------------------------------
## Input
## --------------------------------------------------------------------------------------
$pageId = $OctopusParameters['PageId']
$apiKey = $OctopusParameters['ApiKey']
$incidentName = $OctopusParameters['IncidentName']
$incidentStatus = $OctopusParameters['IncidentStatus']
$incidentMessage = $OctopusParameters['IncidentMessage']
$componentId = $OctopusParameters['ComponentId']
function Validate-Parameter($parameterValue, $parameterName) {
if(!$parameterName -contains "Key") {
Write-Host "${parameterName}: ${parameterValue}"
}
if (! $parameterValue) {
throw "$parameterName cannot be empty, please specify a value"
}
}
function New-ScheduledIncident
{
[CmdletBinding()]
Param(
[Parameter(Mandatory=$true)]
[string]$PageId,
[Parameter(Mandatory=$true)]
[string]$ApiKey,
[Parameter(Mandatory=$true)]
[string]$Name,
[Parameter(Mandatory=$true)]
[ValidateSet("scheduled", "in_progress", "verifying", "completed")]
[string]$Status,
[Parameter(Mandatory=$false)]
[string]$Message,
[Parameter(Mandatory=$false)]
[string]$Componentid
)
$date = [System.DateTime]::Now.ToString("o")
$dateTomorrow = [System.DateTime]::Now.AddDays(1).ToString("o")
$url = "https://api.statuspage.io/v1/pages/$PageId/incidents.json"
$headers = @{"Authorization"="OAuth $ApiKey"}
$body = "incident[name]=$Name&incident[status]=$Status&incident[scheduled_for]=$date&incident[scheduled_until]=$dateTomorrow"
if($Message)
{
$body += "&incident[message]=$Message"
}
if($Componentid)
{
$body += "&incident[component_ids][]=$Componentid"
}
$response = iwr -UseBasicParsing -Uri $url -Headers $headers -Method POST -Body $body
$content = ConvertFrom-Json $response
$content.id
}
Validate-Parameter $pageId -parameterName 'PageId'
Validate-Parameter $apiKey = -parameterName 'ApiKey'
Validate-Parameter $incidentName = -parameterName 'IncidentName'
Validate-Parameter $incidentStatus -parameterName 'IncidentStatus'
Write-Output "Creating new scheduled maintenance incident `"$incidentName`" ..."
New-ScheduledIncident -PageId $pageId -ApiKey $apiKey -Name $incidentName -Status $incidentStatus -Message $incidentMessage -ComponentId $componentId
To use this template in Octopus Deploy, copy the JSON below and paste it into the Library → Step templates → Import dialog.
Show JSON{
"Id": "5f8dbdd9-e309-4aa7-b1d3-b090876a959a",
"Name": "StatusPage.io - Create Scheduled Maintenance Incident",
"Description": "Creates or updates a scheduled maintenance incident on StatusPage.io",
"Version": 6,
"ExportedAt": "2025-02-17T14:35:00.000+00:00",
"ActionType": "Octopus.Script",
"Author": "Sam-Kudo",
"Parameters": [
{
"Id": "587dd594-5141-4c84-b204-0803935e2a5e",
"Name": "IncidentName",
"Label": "Scheduled Maintenance Name",
"HelpText": "The name of the scheduled maintenance incident.",
"DefaultValue": null,
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
},
{
"Id": "a6de9c6a-4777-413e-a679-75af62846a95",
"Name": "IncidentStatus",
"Label": "Status",
"HelpText": "The status of the incident, one of scheduled|in_progress|verifying|completed",
"DefaultValue": null,
"DisplaySettings": {
"Octopus.ControlType": "Select",
"Octopus.SelectOptions": "scheduled|Scheduled\nin_progress|In Progress\nverifying|Verifying\ncompleted|Completed"
}
},
{
"Id": "49c1d937-7632-46f3-afc5-376d893deff9",
"Name": "IncidentMessage",
"Label": "Message",
"HelpText": "Optional message to add to scheduled maintenance incident.",
"DefaultValue": null,
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
},
{
"Id": "b9a01157-aa89-4ae1-95ee-5b05b53b042a",
"Name": "ComponentId",
"Label": "ComponentId",
"HelpText": "Optional component id to reference for the scheduled maintenance incident. Talk to your StatusPage.io administrator for details.",
"DefaultValue": null,
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
},
{
"Id": "29694b56-739a-4623-9040-0b2865fb15a4",
"Name": "PageId",
"Label": "StatusPage.io Page Id",
"HelpText": "StatusPage.io Organization or \"Page ID\". Visit the [API authentication docs](http://doers.statuspage.io/api/authentication/) for details.",
"DefaultValue": null,
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
},
{
"Id": "c7d00d1c-e963-4be5-b088-83a945ed4540",
"Name": "ApiKey",
"Label": "StatusPage.io API Key",
"HelpText": "StatusPage.io API key for the organization. Visit the [API Authentication docs](http://doers.statuspage.io/api/authentication/) for details.",
"DefaultValue": null,
"DisplaySettings": {
"Octopus.ControlType": "Sensitive"
}
}
],
"Properties": {
"Octopus.Action.Script.Syntax": "PowerShell",
"Octopus.Action.Script.ScriptSource": "Inline",
"Octopus.Action.RunOnServer": "false",
"Octopus.Action.Script.ScriptBody": "## --------------------------------------------------------------------------------------\n## Input\n## --------------------------------------------------------------------------------------\n$pageId = $OctopusParameters['PageId']\n$apiKey = $OctopusParameters['ApiKey']\n$incidentName = $OctopusParameters['IncidentName']\n$incidentStatus = $OctopusParameters['IncidentStatus']\n$incidentMessage = $OctopusParameters['IncidentMessage']\n$componentId = $OctopusParameters['ComponentId']\n\nfunction Validate-Parameter($parameterValue, $parameterName) {\n if(!$parameterName -contains \"Key\") {\n Write-Host \"${parameterName}: ${parameterValue}\"\n }\n\n if (! $parameterValue) {\n throw \"$parameterName cannot be empty, please specify a value\"\n }\n}\n\nfunction New-ScheduledIncident\n{\n [CmdletBinding()]\n Param(\n [Parameter(Mandatory=$true)]\n [string]$PageId,\n\n [Parameter(Mandatory=$true)]\n [string]$ApiKey,\n\n [Parameter(Mandatory=$true)]\n [string]$Name,\n\n [Parameter(Mandatory=$true)]\n [ValidateSet(\"scheduled\", \"in_progress\", \"verifying\", \"completed\")]\n [string]$Status,\n \n [Parameter(Mandatory=$false)]\n [string]$Message,\n\n [Parameter(Mandatory=$false)]\n [string]$Componentid\n )\n\n $date = [System.DateTime]::Now.ToString(\"o\")\n $dateTomorrow = [System.DateTime]::Now.AddDays(1).ToString(\"o\")\n $url = \"https://api.statuspage.io/v1/pages/$PageId/incidents.json\"\n $headers = @{\"Authorization\"=\"OAuth $ApiKey\"}\n $body = \"incident[name]=$Name&incident[status]=$Status&incident[scheduled_for]=$date&incident[scheduled_until]=$dateTomorrow\"\n\n if($Message)\n {\n $body += \"&incident[message]=$Message\"\n }\n\n if($Componentid)\n {\n $body += \"&incident[component_ids][]=$Componentid\"\n }\n\n $response = iwr -UseBasicParsing -Uri $url -Headers $headers -Method POST -Body $body\n $content = ConvertFrom-Json $response\n $content.id\n}\n\nValidate-Parameter $pageId -parameterName 'PageId'\nValidate-Parameter $apiKey = -parameterName 'ApiKey'\nValidate-Parameter $incidentName = -parameterName 'IncidentName'\nValidate-Parameter $incidentStatus -parameterName 'IncidentStatus'\n\nWrite-Output \"Creating new scheduled maintenance incident `\"$incidentName`\" ...\"\nNew-ScheduledIncident -PageId $pageId -ApiKey $apiKey -Name $incidentName -Status $incidentStatus -Message $incidentMessage -ComponentId $componentId\n",
"Octopus.Action.Script.ScriptFileName": null,
"Octopus.Action.Package.FeedId": null,
"Octopus.Action.Package.PackageId": null
},
"Category": "StatusPage",
"HistoryUrl": "https://github.com/OctopusDeploy/Library/commits/master/step-templates/statuspageio-create-scheduled-maintenance-incident.json",
"Website": "/step-templates/5f8dbdd9-e309-4aa7-b1d3-b090876a959a",
"Logo": "iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAMAAACahl6sAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADNQTFRF////gb1B9/vzicFNsNaJ3+7P0Oa3wN6goc5xkcVZ7/fn5/PbyOKs1+rDqdJ9mclluNqUjbDtNQAABKhJREFUeNrsXdt23DAItCxZF1u29/+/tsnZpE2bjXUFZMq85SlnFoHQgGGaBAKBQCAQCAQCgUAgEAjuiGV3znuv1Qf02x/O7cuNKMy780H9iODdPo9PwpoLDl/YGDswmS2eqgBn3EZkscagihHiOhgN61UlvB3IGE6rBmg3hllWo5phVhY0BqDSiwYxlbnNN777CtHVsgfVGWGnMMehAHCgG2XXCgR6Z2AOfKNsQQEioKVgUQEj4hwro8BhEI7XfCoEnOBMNq1QoDcePKCZWDQeb0wAHypWocIy4aEeTHiY2/u58Mi6B7nwOHnwmAwTHnX5rvbG2eUD0RmvqXlsFVnfY3+hiqz74yTkMZe+ow57Ie2s9iDiMZW9a0NMpuDzleANx2Mv0qQzS1KLR+dRcoP4gsraaypwPAoO1llYIFxOTB7ZB0tXSAZRo/HIjlh1ctTfAhkgj8nBmeObUSB5rHme3qKp/Vb7IHlk5li+SbyZPTyPFSc1MtA88gxievwfWB4rWqoKXKM2lCk3skHuwCPnDvF34DGl75CQjrvb84FI2QuUFuQSQvMWjy8Jjn9QtWml+2Su8pLtEV49HecRXf24sKYfp4MmqZzoueChQdjgEGoPVrJ2jVtLT0pA50/myEiYzTzQyVpaHjAnnqecdVdhrraqsboC5jqD5GvEWExslUFKtG4kJqbGII8yjXseIPiGZknyIu5hukisFyoQyrYFP+5clZvlhnC8p8hRlSxnnlDMzNc2SJI4zQ2Zvr5WS5L/Ri5oIuXhprI7ENgkS3G0qe3vCKRB60UaXt12ulEGrbU8NSO6S1yph9Z3DgXC6OvbssV0BMQiYrrFLPC4dU3EdXQRYCfRhb/h0kDE092HS0dfB/b2UiKugYgSIv8TEfcC+2cL2YsSQWciCxlzITIakc7hl45I5wsxkr0qO6coji4V6Js0GjoifdN4T0ek78NKFybfQzjJCxdJlGFBiXQVH8qljwHOViivTgALxh0FupMuyewqma60wnc/EdsSNyR1KysclEGrY6EnFcnh2yY6ld5SnQoIJdQ+xdBA6+s5F0BWeTr1IsBpouzQMOAr4hwpkx94JJ9oWH1FrU01vsqv6G74n9qckgaJaETaGs+SXylijq1raAWMVakAoFEqmzPTH9jFCRl17bLp1xnBMLGKBub0p81ErfiFLeUZMwwoRyFmN/lnPGj0dAdkvALcHXjkpAQrEx7Aie+GxQPYILbP53vkBrGq0weVxAZ5SiddPnElNcinBNTlo+PEHbIi8Oj0GTjZHfKXJNfjw/yr/H1G4tFnVAKJLPddIu0wvKKk9RtS6m0fJ1IigYFK1s0DXpAP1oX03jpyB/VgJUoIbUOQECNWRimkZSwVmgSUW9J5HxQWawaFISknyPMaDRMeYANzkXloLjw24TESDzBBjgsPNoOL+YyS5jPcm8+4dT4D8PmsJJjYLImY+Kzt4LNIZWKz2mbis2zoXdHhsf5p4rOQa2KzIq0nFSb798wgGxF5LHZ8PlRYrNp8moXH8tNnCsZiHe3H1cJiQfAnGQ4rm78kMPdfoi0QCAQCgUAgEAgEAoFA8Ae/BBgAaZFFuhLr9ZYAAAAASUVORK5CYII=",
"$Meta": {
"Type": "ActionTemplate"
}
}Provided under the Apache License version 2.0.