SingleScripts/Edit-Cluster.ps1

[CmdletBinding()]
Param(
  [Parameter(Mandatory=$true,Position=1)] [string] $DBAPIRootUrl,
  [Parameter(Mandatory=$True,Position=2)] [string] $DBAPIKey,
  [Parameter(Mandatory=$True,Position=3)] [string] $ClusterID,
  [Parameter(Mandatory=$True,Position=4)] [object] $ClusterDefinition
)
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12

$ClustersAPIEditUrl = $DBAPIRootUrl.Trim('/') + "/api/2.0/clusters/edit"

$headers = @{
  Authorization = "Bearer $DBAPIKey"
  "Content-Type" = "application/json"
}


if($ClusterDefinition.cluster_id -eq $null)
{
  $ClusterDefinition | Add-Member -Type NoteProperty -Name "cluster_id" -Value $ClusterID 
}
else
{
  $ClusterDefinition.cluster_id = $ClusterID 
}

$bodyJson = $ClusterDefinition | ConvertTo-Json

$result = Invoke-RestMethod -Uri $ClustersAPIEditUrl -Method POST -Headers $headers -Body $bodyJson

# Edit-API does not return any result so we return the ClusterDefinition instead
$isEmptyResult = [string]::IsNullOrEmpty($result)
if($isEmptyResult) { 
  $result = $ClusterDefinition
}

$result