I can get an alert successfully created with this PS scriptlet:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$body = @{
"priority"="P1";
"message"="TESTING JIMMY example alert message";
"alias"="testingjimmy";
"description"="TESTING JIMMY Every alert needs a description"
}
$url="https://api.opsgenie.com/v2/alerts?apiKey=xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" I
nvoke-RestMethod -Method Post -ContentType "application/json" -Uri $url -Body (ConvertTo-Json $body)
But, I get "422 Unprocessable Entity" with every single option I chose (id, tiny, alias) in the below with proper modifications:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$header = @{
"Authorization"="GenieKey "+[System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx"))
}
$url="https://api.opsgenie.com/v2/alerts/testingjimmy/close?identifierType=alias"
Invoke-RestMethod -Method Post -ContentType "application/json" -Header $header -Uri $url
I've tried RequestIDs and the Tiny#s (alert#) too, with zero luck. The API service that this is tied to in the back end has the proper settings to close the alert as well.
Any ideas? I assume
I used several references, this is the one I used the most:
https://docs.opsgenie.com/docs/alert-api
I think I finally got it. Although the API documentation clearly state that the BODY is not mandatory, it is. I also needed to convert how I was passing the Authorization variable, I don't need to convert it before passing it. Here is what finally worked:
To Create:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12$body = @{ "priority"="P1"; "message"="TESTING JIMMY example alert message"; "alias"="testingjimmy"; "description"="TESTING JIMMY Every alert needs a description" }$url="https://api.opsgenie.com/v2/alerts?apiKey=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"Invoke-RestMethod -Method Post -ContentType "application/json" -Uri $url -Body (ConvertTo-Json $body)
To Close:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12$header = @{ "Authorization"="GenieKey xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"; }$url="https://api.opsgenie.com/v2/alerts/testingjimmy/close?identifierType=alias"$body = @{ "user"="Jimmy"; "source"="TESTING JIMMY example alert message"; "note"="closed by script"; }Invoke-RestMethod -Method Post -ContentType "application/json" -Header $header -Uri $url -Body (ConvertTo-Json $body)
Hi Andrew - It looks like you are passing the URL, and the Headers in the Close request. Could you try including a body in that request too, like you're doing in the Create request? Something similar to this:
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
I tried, still same 422 Unprocessable Entity. I also looked at the variable list for the body in closing the alerts, but they do not match what is required for the alert creation:
user, source and note are the body options for close.
Here is an additional error when I try to navigate to the destination through a browser:
{"code":406,"message":"Could not find acceptable representation","took":0.0,"requestId":"618268d4-efd3-4c34-8722-168a56e936d6"}
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.