Connection.psm1
<# .SYNOPSIS Connects to HelloId .DESCRIPTION Connect-HelloId connects you to HelloId and saves the connection info for use with other PSHelloId cmdlets, enabling you to run those without specifying companyname, apikey and apisecret for every cmdlet .PARAMETER CompanyName The companyname that's used in the helloId URL. Required to know which HelloID tenant to talk to .PARAMETER ApiKey The Apikey to use for the api call .PARAMETER ApiSecret The Apisecret belonging to the apikey, has to be a securestring .EXAMPLE Connect-HelloId -CompanyName "MyCompany" -ApiKey "myapikey" -ApiSecret (ConvertTo-SecureString -AsPlainText -String "password" -Force) Connects you with the specified keys to the company environment .OUTPUTS An object that represents your company environment and the api key #> function Connect-HelloId { [CmdletBinding()] param ( # Company name used in the URL [Parameter(Mandatory = $true)] [ValidateNotNullOrEmpty()] [string]$CompanyName, # Api key [Parameter(Mandatory = $true)] [ValidateNotNullOrEmpty()] [string]$ApiKey, # Api secret [Parameter(Mandatory = $true)] [ValidateNotNullOrEmpty()] [securestring]$ApiSecret, # For preview tenants [Parameter(Mandatory = $false)] [switch]$IsPreviewTenant ) #Create credential object for authentication $Cred = New-Object System.Management.Automation.PSCredential ($ApiKey, $ApiSecret) #Headers $headers = @{ "Content-Type" = "application/json" } if ($IsPreviewTenant){ $BaseUrl = "https://$CompanyName.preview-helloid.com" } else { $BaseUrl = "https://$CompanyName.helloid.com" } $URI = "$BaseUrl/api/v1/automation/variables" $output = Invoke-RestMethod -Uri $URI -Method "GET" -Headers $headers -Credential $Cred -UseBasicParsing if ($output.count -ge 2) { $Global:HelloIdConnection = "" | Select-Object -Property CompanyName,BaseUrl,ApiKey,ApiCredentials $Global:HelloIdConnection.CompanyName = $CompanyName $Global:HelloIdConnection.BaseUrl = $BaseUrl $Global:HelloIdConnection.ApiKey = $ApiKey $Global:HelloIdConnection.ApiCredentials = $Cred Set-Variable -Name HelloIdConnection -Option ReadOnly Write-Output $Global:HelloIdConnection | Select-Object -Property CompanyName,BaseUrl,ApiKey } else { throw "Failed to connect to HelloId" } } |