Public/Requesters/New-FreshServiceRequester.ps1
<#
.SYNOPSIS Returns a Freshservice ticket. .DESCRIPTION Returns a Freshservice ticket via REST API. https://api.freshservice.com/#create_a_requester .PARAMETER external_id External Id of the requester. .PARAMETER first_name First name of the requester. .PARAMETER last_name Last name of the requester. .PARAMETER job_title Job title of the requester. .PARAMETER primary_email Primary email address of the requester. .PARAMETER secondary_emails Additional/secondary emails associated with the requester. .PARAMETER work_phone_number Work phone number of the requester. .PARAMETER mobile_phone_number Mobile phone number of the requester. .PARAMETER department_ids Unique IDs of the departments associated with the requester. .PARAMETER can_see_all_tickets_from_associated_departments Set to true if the requester must be allowed to view tickets filed by other members of the department, and false otherwise. .PARAMETER can_see_all_changes_from_associated_departments Set to true if the requester must be allowed to view changes filed by other members of the department, and false otherwise. .PARAMETER reporting_manager_id User ID of the requester's reporting manager. .PARAMETER address Address of the requester. .PARAMETER time_zone Time zone of the requester. .PARAMETER time_format Time format for the requester.Possible values:12h (12 hour format)24h (24 hour format) .PARAMETER language Language used by the requester. The default language is "en" (English). .PARAMETER location_id Unique ID of the location associated with the requester. .PARAMETER background_information Background information of the requester. .PARAMETER custom_fields Key-value pair containing the names and values of the (custom) requester fields. .EXAMPLE New-FreshServicerequester -first_name 'John' -last_name 'Smith' -job_title 'QA Tester' -primary_email 'jsmith@company.com' active : True address : background_information : can_see_all_tickets_from_associated_departments : False created_at : 3/31/2022 1:23:36 AM custom_fields : @{ad_location1=; ad_location2=} department_ids : {} external_id : first_name : John has_logged_in : False id : 18012783346 is_agent : False job_title : QA Tester language : en last_name : Smith location_id : mobile_phone_number : primary_email : jsmith@company.com reporting_manager_id : secondary_emails : {} time_format : 12h time_zone : Eastern Time (US & Canada) updated_at : 3/31/2022 1:23:36 AM vip_user : False work_phone_number : Creates a a new Freshservice Requester. .NOTES This module was developed and tested with Freshservice REST API v2. #> function New-FreshServiceRequester { [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium')] param ( [Parameter( Mandatory = $false, HelpMessage = 'External Id of the requester.', ValueFromPipelineByPropertyName = $true )] [Alias('ExternalId')] [string]$external_id, [Parameter( Mandatory = $true, HelpMessage = 'First name of the requester.', ValueFromPipelineByPropertyName = $true )] [Alias('FirstName')] [string]$first_name, [Parameter( Mandatory = $false, HelpMessage = 'Last name of the requester.', ValueFromPipelineByPropertyName = $true )] [Alias('LastName')] [string]$last_name, [Parameter( Mandatory = $false, HelpMessage = 'Job title of the requester.', ValueFromPipelineByPropertyName = $true )] [Alias('JobTitle')] [string]$job_title, [Parameter( Mandatory = $false, HelpMessage = 'Primary email address of the requester.', ValueFromPipelineByPropertyName = $true )] [Alias('Email','PrimaryEmail')] [string]$primary_email, [Parameter( Mandatory = $false, HelpMessage = 'Additional/secondary emails associated with the requester.', ValueFromPipelineByPropertyName = $true )] [string[]]$secondary_emails, [Parameter( Mandatory = $false, HelpMessage = 'Work phone number of the requester.', ValueFromPipelineByPropertyName = $true )] [Alias('WorkNumber','WorkPhone','WorkPhoneNumber')] [string]$work_phone_number, [Parameter( Mandatory = $false, HelpMessage = 'Mobile phone number of the requester.', ValueFromPipelineByPropertyName = $true )] [Alias('MobileNumber','MobilePhone','MobilePhoneNumber')] [string]$mobile_phone_number, [Parameter( Mandatory = $false, HelpMessage = 'Unique IDs of the departments associated with the requester', ValueFromPipelineByPropertyName = $true )] [Alias('DepartmentId')] [long[]]$department_ids, [Parameter( Mandatory = $false, HelpMessage = 'Set to true if the requester must be allowed to view changes filed by other members of the department, and false otherwise', ValueFromPipelineByPropertyName = $true )] [boolean]$can_see_all_changes_from_associated_departments, [Parameter( Mandatory = $false, HelpMessage = 'Set to true if the requester must be allowed to view tickets filed by other members of the department, and false otherwise', ValueFromPipelineByPropertyName = $true )] [boolean]$can_see_all_tickets_from_associated_departments, [Parameter( Mandatory = $false, HelpMessage = 'User ID of the requesters reporting manager.', ValueFromPipelineByPropertyName = $true )] [Alias('ManagerId')] [long]$reporting_manager_id, [Parameter( Mandatory = $false, HelpMessage = 'Address of the requester.', ValueFromPipelineByPropertyName = $true )] [string]$address, [Parameter( Mandatory = $false, HelpMessage = 'Time zone of the requester.', ValueFromPipelineByPropertyName = $true )] [Alias('TimeZone')] [string]$time_zone, [Parameter( Mandatory = $false, HelpMessage = 'Time format for the requester.Possible values:12h (12 hour format)24h (24 hour format)', ValueFromPipelineByPropertyName = $true )] [Alias('TimeFormat')] [string]$time_format, [Parameter( Mandatory = $false, HelpMessage = 'Language used by the requester. The default language is "en" (English).', ValueFromPipelineByPropertyName = $true )] [string]$language, [Parameter( Mandatory = $false, HelpMessage = 'Unique ID of the location associated with the requester.', ValueFromPipelineByPropertyName = $true )] [Alias('LocationId')] [long]$location_id, [Parameter( Mandatory = $false, HelpMessage = 'Background information of the requester.', ValueFromPipelineByPropertyName = $true )] [Alias('Background')] [string]$background_information, [Parameter( Mandatory = $false, HelpMessage = 'Key-value pair containing the names and values of the (custom) requester fields.', ValueFromPipelineByPropertyName = $true )] # [Alias('cf')] [hashtable]$custom_fields ) begin { $PrivateData = $MyInvocation.MyCommand.Module.PrivateData if (!$PrivateData.FreshserviceBaseUri) { throw "No connection found! Setup a new Freshservice connection with New-FreshServiceConnection and then Connect-FreshService. Set a default connection with New-FreshServiceConnection or Set-FreshConnection to automatically connect when importing the module." } $uri = [System.UriBuilder]('{0}/requesters' -f $PrivateData['FreshserviceBaseUri']) } process { $jsonBody = @{} $PSBoundParameters.keys.where{ $PSItem -notin $PrivateData.FreshserviceBodyExclusions }.foreach{ #if ($PSBoundParameters[$PSItem] -is [boolean]) { # $jsonBody[$PSItem.ToLower()] = [int]$PSBoundParameters[$PSItem] #} #else { $jsonBody[$PSItem.ToLower()] = $PSBoundParameters[$PSItem] #} } try { if ($PSCmdlet.ShouldProcess($uri.Uri.AbsoluteUri)) { $params = @{ Uri = $uri.Uri.AbsoluteUri Method = 'POST' Body = $jsonBody | ConvertTo-Json ErrorAction = 'Stop' } $result = Invoke-FreshworksRestMethod @params if ($result.Content) { $content = $result.Content | ConvertFrom-Json #API returns singluar or plural property based on the number of records, parse to get property returned. $objProperty = $content[0].PSObject.Properties.Name Write-Verbose -Message ("Returning {0} property with count {1}" -f $objProperty, $content."$($objProperty)".Count) $content."$($objProperty)" } } } catch { Throw $_ } } end {} } |