public/New-ZendeskOrganization.ps1
function New-ZendeskOrganization { [cmdletbinding()] param ( [Parameter(Mandatory=$true)] [string]$userName, [Parameter(Mandatory=$true)] [string]$apiToken, [Parameter(Mandatory=$true)] [string]$organizationName, # BUG: can only accept one at the moment...need to iterate through and do a put after creating first one or something along those lines. [Parameter(Mandatory=$true)] [string]$organizationDomainNames, [Parameter(Mandatory=$true)] [string]$customerSupportEmail, [Parameter()] [ValidateSet("azure_gold","azure_silver","azure_none")] [string]$AzureEntitlement, [Parameter()] [ValidateSet("o365_gold","o365_none")] [string]$O365Entitlement, [Parameter()] [int]$MBRdayofMonth ) Process { $ZendeskAPI_Username = $userName $ZendeskAPI_Token = $apiToken # build http-basic auth header $headers = @{Authorization = 'Basic ' + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("$($ZendeskAPI_Username):$($ZendeskAPI_Token)"));} # build body out as hash-table (remember...you can't use vars in [json] string litterals). $body = @{organization = @{ name = $organizationName domain_names = $organizationDomainNames organization_fields = @{ customer_support_email = $customerSupportEmail entitlement_azure = $AzureEntitlement entitlement_o365 = $O365Entitlement mbr_day_of_month = 15 } } } Try { $jsonbody = ConvertTo-Json $body -Compress -ErrorAction Stop -Verbose } Catch { $error[0].Exception break } Try { $response = Invoke-RestMethod -Uri 'https://attunix.zendesk.com/api/v2/organizations.json' -Body $jsonbody -Method Post -Headers $headers -ContentType 'application/json' -ErrorAction Stop -Verbose } Catch { $error[0].Exception break } return $response } # end process block } |