Functions/Add-LSTicket.ps1
|
function Add-LSTicket { Param ( [Parameter(Mandatory=$true)][String]$Url, [Parameter(Mandatory=$true)][String]$Subject, [Parameter(Mandatory=$true)][String]$Description, # Mandatory to use one [Parameter(Mandatory = $true, ParameterSetName = 'Username')] [String]$Username, [Parameter(Mandatory = $true, ParameterSetName = 'Email')] [String]$Email, # Non-mandatory fields [String]$Type, [String]$Priority, [String]$Team, [String]$Displayname, [String]$AgentUsername, [String]$AgentEmail, [DateTime]$Date, [Bool]$AgentInitiated, [Bool]$Personal, [String]$CustomFields, # Example: {"customFields":[{"name":"customField","value":"Text value here"}]} [String]$Files ) # Base parameters for url $params = @{ action = 'AddTicket' Subject = $Subject Description = $Description } # Username or Email for user $User = if($PSCmdlet.ParameterSetName -eq 'Username') { $params.Username = $Username } else { $params.Email = $Email } # Add optional parameters if used if($Type) {$params.Type = $Type} if($Priority) {$params.Priority = $Priority} if($Team) {$params.Team = $Team} if($Displayname) {$params.Displayname = $Displayname} if($AgentUsername) {$params.AgentUsername = $AgentUsername} if($AgentEmail) {$params.AgentEmail = $AgentEmail} if($Date) {$params.Date = $Date} if($AgentInitiated) {$params.AgentInitiated = $AgentInitiated} if($Personal) {$params.Personal = $Personal} if($CustomFields) {$params.CustomFields = $CustomFields} if($Files) {$params.Files = $Files} # Building query string $queryString = ($params.GetEnumerator() | ForEach-Object { '{0}={1}' -f [uri]::EscapeDataString($_.Key), [uri]::EscapeDataString([string]$_.Value) }) -join '&' $fullUrl = '{0}{1}' -f $Url, $queryString # Creating ticket using the api $Request = Invoke-WebRequest -Uri $fullUrl -UseBasicParsing # Checking response if($Request.StatusCode -ne 200) { throw ("{0} {1}" -f $Request.StatusCode, $Request.StatusDescription) } if(($Request.Content | ConvertFrom-Json).Success) { Write-Host "Ticket has been created successfully!" -ForegroundColor "Green" } else { Write-Host "Something went wrong when creating ticket." -ForegroundColor "Red" Write-Error $Request.Content } return ($Request.Content | ConvertFrom-Json) } |