API Examples
PowerShell
Below is an example of how to authenticate and work with the CMS Api.
########################################################################
# Variables
########################################################################
# Modify for your endpoint
$BaseUrl = 'https://api.cloudaxis.cloud/api/v1/'
# This user is permitted to do CMS Auth
$EmailAddress = 'sample@api.connection'
$Password = 'D!dYouRe@llyTh1nkItW0uldB3Th4t3@sy'
########################################################################
# Functions
########################################################################
# Get a Token
function Get-CmsBearerToken
{
[CmdletBinding(DefaultParameterSetName="Initial")]
param([Parameter(Mandatory=$true, ParameterSetName="Initial")]
[string]$EmailAddress,
[Parameter(Mandatory=$true, ParameterSetName="Initial")]
[string]$Password,
[Parameter(Mandatory=$true, ParameterSetName="Refresh")]
[string]$RefreshToken,
[Parameter(Mandatory=$true)]
[string]$BaseUrl)
end
{
New-CmsLogMessage -T Info "Retrieving $($PSCmdlet.ParameterSetName) CMS bearer token."
switch ($PSCmdlet.ParameterSetName)
{
'Initial' {
$Url = "$($BaseUrl.Trim('/'))/auth/token"
$Body = @{
EmailAddress = $EmailAddress
Password = $Password
} | ConvertTo-Json
}
'Refresh' {
$Url = "$($BaseUrl.Trim('/'))/auth/token-refresh"
$Body = @{
RefreshToken = $RefreshToken
} | ConvertTo-Json
}
}
$Headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$Headers.Add("Content-Type", "application/json")
try {
$Response = Invoke-RestMethod $Url -Method 'POST' -Headers $Headers -Body $Body
} catch {
New-CmsLogMessage -T Error "Token request failed. $($_.Exception.Message)"
throw
}
return [CMS.Domain.Models.AuthResponse]$Response
}
}
########################################################################
function New-CmsApiCall
{
param([Parameter(Mandatory=$true)]
[string]$BearerToken,
[Parameter(Mandatory=$true)]
[string]$BaseUrl,
[Parameter(Mandatory=$true)]
[string]$Uri,
[psobject]$Body,
[Parameter(Mandatory=$true)]
[ValidateSet("GET", "POST", "PUT", "DELETE")]
[string]$Method,
[bool]$ExpectNotFound=$false)
end
{
$Url = ("$($BaseUrl.Trim('/'))/$($Uri.TrimStart('/'))").ToLower()
New-CmsLogMessage -T Info "Processing Api call - $($Method) $($Url)."
switch ($Method)
{
'PUT' {
if ($null -eq $Body) {
New-CmsLogMessage -T Error "Api call using $($Method) cannot have an empty Body parameter."
} else {
$Body = $Body | ConvertTo-Json
}
}
'POST' {
if ($null -eq $Body) {
New-CmsLogMessage -T Error "Api call using $($Method) cannot have an empty Body parameter."
} else {
$Body = $Body | ConvertTo-Json
}
}
}
$Headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$Headers.Add("Authorization", "Bearer $($BearerToken)")
$Headers.Add("Content-Type", "application/json")
try {
$Response = Invoke-RestMethod $Url -Method $Method -Headers $Headers -Body $Body
return $Response
} catch {
if (!$ExpectNotFound) {
New-CmsLogMessage -T Error "Api call failed. $($_.Exception.Message)"
return $Response
}
}
}
}
########################################################################
# Make Calls
########################################################################
# Get Token for the Api
$Token = Get-CmsBearerToken -EmailAddress $EmailAddress -Password $Password -BaseUrl $ApiEndpoint
if (!$Token) {
Write-Host "No token could be retrieved.";
exit 1
}
# Get Subscriptions
$ApiResponse = New-CmsApiCall -BearerToken $Token.Token -BaseUrl $ApiEndpoint -Uri "/subscriptions/" -Method GET
if ($ApiResponse.Code -ne 200) {
Write-Host "NoError APIretrieving subscriptionsubscriptions matched for ($($SubscriptionId))ApiResponse.Errors).";
exit 1
} else {
Write-Verbose "Loaded Subscripions."
$Subscriptions = $ApiResponse.Data
}