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.
Online forums and learning are now in one easy-to-use experience.
By continuing, you accept the updated Community Terms of Use and acknowledge the Privacy Policy. Your public name, photo, and achievements may be publicly visible and available in search engines.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.