Updating Escalation Chains via REST
I am attempting to adjust an escalation chain via PowerShell and REST. I am currently getting back a 1007 and can't seem to figure out what is wrong. Below is what I am using, I have tried different forms of $data. Our main goal is to change CC.
We have tried these two and then the 1 in the script below. Just not sure what is coming up wrong.
<span class="pun"><#</span><span class="pln"> </span><span>Use</span><span class="pln"> TLS </span><span class="lit">1.2</span><span class="pln"> </span><span class="com">#></span><span class="pln">
</span><span class="pun">[</span><span>Net</span><span class="pun">.</span><span>ServicePointManager</span><span class="pun">]::</span><span>SecurityProtocol</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">[</span><span>Net</span><span class="pun">.</span><span>SecurityProtocolType</span><span class="pun">]::</span><span>Tls12</span><span class="pln">
</span><span class="pun"><#</span><span class="pln"> account info </span><span class="com">#></span><span class="pln">
$accessId </span><span class="pun">=</span><span class="pln"> </span><span class="str">''</span><span class="pln">
$accessKey </span><span class="pun">=</span><span class="pln"> </span><span class="str">''</span><span class="pln">
$company </span><span class="pun">=</span><span class="pln"> </span><span class="str">''</span><span class="pln">
</span><span class="pun"><#</span><span class="pln"> request details </span><span class="com">#></span><span class="pln">
$httpVerb </span><span class="pun">=</span><span class="pln"> </span><span class="str">'PUT'</span><span class="pln">
$resourcePath </span><span class="pun">=</span><span class="pln"> </span><span class="str">'/setting/alert/chains/4'</span><span class="pln">
$data </span><span class="pun">=</span><span class="pln"> </span><span class="str">'"name":"Chain 1","ccDestinations":[{"type":"arbitrary","method":"email","addr":"fakeemail@email.com"}],"destinations":[{"type":"single","stages":[[{"type":"arbitrary","method":"email","addr":"anotherfakeemail@email.com"}]]}]'</span><span class="pln">
</span><span class="pun"><#</span><span class="pln"> </span><span>Construct</span><span class="pln"> URL </span><span class="com">#></span><span class="pln">
$url </span><span class="pun">=</span><span class="pln"> </span><span class="str">'https://'</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> $company </span><span class="pun">+</span><span class="pln"> </span><span class="str">'.logicmonitor.com/santaba/rest'</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> $resourcePath
</span><span class="pun"><#</span><span class="pln"> </span><span>Get</span><span class="pln"> current time in milliseconds </span><span class="com">#></span><span class="pln">
$epoch </span><span class="pun">=</span><span class="pln"> </span><span class="pun">[</span><span>Math</span><span class="pun">]::</span><span>Round</span><span class="pun">((</span><span>New</span><span class="pun">-</span><span>TimeSpan</span><span class="pln"> </span><span class="pun">-</span><span class="pln">start </span><span class="pun">(</span><span>Get</span><span class="pun">-</span><span>Date</span><span class="pln"> </span><span class="pun">-</span><span>Date</span><span class="pln"> </span><span class="str">"1/1/1970"</span><span class="pun">)</span><span class="pln"> </span><span class="pun">-</span><span class="pln">end </span><span class="pun">(</span><span>Get</span><span class="pun">-</span><span>Date</span><span class="pun">).</span><span>ToUniversalTime</span><span class="pun">()).</span><span>TotalMilliseconds</span><span class="pun">)</span><span class="pln">
</span><span class="pun"><#</span><span class="pln"> </span><span>Concatenate</span><span class="pln"> </span><span>Request</span><span class="pln"> </span><span>Details</span><span class="pln"> </span><span class="com">#></span><span class="pln">
$requestVars </span><span class="pun">=</span><span class="pln"> $httpVerb </span><span class="pun">+</span><span class="pln"> $epoch </span><span class="pun">+</span><span class="pln"> $data </span><span class="pun">+</span><span class="pln"> $resourcePath
</span><span class="pun"><#</span><span class="pln"> </span><span>Construct</span><span class="pln"> </span><span>Signature</span><span class="pln"> </span><span class="com">#></span><span class="pln">
$hmac </span><span class="pun">=</span><span class="pln"> </span><span>New</span><span class="pun">-</span><span>Object</span><span class="pln"> </span><span>System</span><span class="pun">.</span><span>Security</span><span class="pun">.</span><span>Cryptography</span><span class="pun">.</span><span class="pln">HMACSHA256
$hmac</span><span class="pun">.</span><span>Key</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">[</span><span>Text</span><span class="pun">.</span><span>Encoding</span><span class="pun">]::</span><span class="pln">UTF8</span><span class="pun">.</span><span>GetBytes</span><span class="pun">(</span><span class="pln">$accessKey</span><span class="pun">)</span><span class="pln">
$signatureBytes </span><span class="pun">=</span><span class="pln"> $hmac</span><span class="pun">.</span><span>ComputeHash</span><span class="pun">([</span><span>Text</span><span class="pun">.</span><span>Encoding</span><span class="pun">]::</span><span class="pln">UTF8</span><span class="pun">.</span><span>GetBytes</span><span class="pun">(</span><span class="pln">$requestVars</span><span class="pun">))</span><span class="pln">
$signatureHex </span><span class="pun">=</span><span class="pln"> </span><span class="pun">[</span><span>System</span><span class="pun">.</span><span>BitConverter</span><span class="pun">]::</span><span>ToString</span><span class="pun">(</span><span class="pln">$signatureBytes</span><span class="pun">)</span><span class="pln"> </span><span class="pun">-</span><span class="pln">replace </span><span class="str">'-'</span><span class="pln">
$signature </span><span class="pun">=</span><span class="pln"> </span><span class="pun">[</span><span>System</span><span class="pun">.</span><span>Convert</span><span class="pun">]::</span><span>ToBase64String</span><span class="pun">([</span><span>System</span><span class="pun">.</span><span>Text</span><span class="pun">.</span><span>Encoding</span><span class="pun">]::</span><span class="pln">UTF8</span><span class="pun">.</span><span>GetBytes</span><span class="pun">(</span><span class="pln">$signatureHex</span><span class="pun">.</span><span>ToLower</span><span class="pun">()))</span><span class="pln">
</span><span class="pun"><#</span><span class="pln"> </span><span>Construct</span><span class="pln"> </span><span>Headers</span><span class="pln"> </span><span class="com">#></span><span class="pln">
$auth </span><span class="pun">=</span><span class="pln"> </span><span class="str">'LMv1 '</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> $accessId </span><span class="pun">+</span><span class="pln"> </span><span class="str">':'</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> $signature </span><span class="pun">+</span><span class="pln"> </span><span class="str">':'</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> $epoch
$headers </span><span class="pun">=</span><span class="pln"> </span><span>New</span><span class="pun">-</span><span>Object</span><span class="pln"> </span><span class="str">"System.Collections.Generic.Dictionary[[String],[String]]"</span><span class="pln">
$headers</span><span class="pun">.</span><span>Add</span><span class="pun">(</span><span class="str">"Authorization"</span><span class="pun">,</span><span class="pln">$auth</span><span class="pun">)</span><span class="pln">
$headers</span><span class="pun">.</span><span>Add</span><span class="pun">(</span><span class="str">"Content-Type"</span><span class="pun">,</span><span class="str">'application/json'</span><span class="pun">)</span><span class="pln">
</span><span class="pun"><#</span><span class="pln"> </span><span>Make</span><span class="pln"> </span><span>Request</span><span class="pln"> </span><span class="com">#></span><span class="pln">
$response </span><span class="pun">=</span><span class="pln"> </span><span>Invoke</span><span class="pun">-</span><span>RestMethod</span><span class="pln"> </span><span class="pun">-</span><span>Uri</span><span class="pln"> $url </span><span class="pun">-</span><span>Method</span><span class="pln"> $httpVerb </span><span class="pun">-</span><span>Body</span><span class="pln"> $data </span><span class="pun">-</span><span>Header</span><span class="pln"> $headers
</span><span class="pun"><#</span><span class="pln"> </span><span>Print</span><span class="pln"> status and body of response </span><span class="com">#></span><span class="pln">
$status </span><span class="pun">=</span><span class="pln"> $response</span><span class="pun">.</span><span class="pln">status
$status
$body </span><span class="pun">=</span><span class="pln"> $response</span><span class="pun">.</span><span class="pln">data </span><span class="pun">|</span><span class="pln"> </span><span>ConvertTo</span><span class="pun">-</span><span>Json</span><span class="pln"> </span><span class="pun">-</span><span>Depth</span><span class="pln"> </span><span class="lit">5</span><span class="pln">
$body</span>
Joe Williams
Posted 8 years ago·Last reply 8 years ago
1 comment
Joe Williams
OP8 years agoI figured it out.
You do need to have the name and destination fields. And I missed I didn't have everything inside of {}.