Public/New-FreshServiceAgentRoleConfig.ps1
<#
.SYNOPSIS Helper function for agent roles for New-FreshServiceAgent. .DESCRIPTION Helper function for agent roles that generates a PSObject to be passed to -roles parameter for New-FreshServiceAgent. Each individual role is a hash in the roles array that contains the attributes. * role_id: Unique ID of the role assigned. * assignment_scope: The scope in which the agent can use the permissions granted by this role. Possible values include entire_helpdesk (all plans), member_groups (all plans; in the Pro and Enterprise plans, this also includes groups that the agent is an observer of), specified_groups (Pro and Enterprise only), and assigned_items (all plans). * groups: Unique IDs of Groups in which the permissions granted by the role applies. Mandatory only when the assignment_scope is specified_groups, and should be ignored otherwise. To get role_id, see Get-FreshServiceAgentRole To get group_id, see Get-FreshServiceAgentGroup .PARAMETER role_id Unique ID of the role assigned .PARAMETER assignment_scope The scope in which the agent can use the permissions granted by this role. Possible values include entire_helpdesk (all plans), member_groups (all plans; in the Pro and Enterprise plans, this also includes groups that the agent is an observer of), specified_groups (Pro and Enterprise only), and assigned_items (all plans). .PARAMETER groups Unique IDs of Groups in which the permissions granted by the role applies. Mandatory only when the assignment_scope is specified_groups, and should be ignored otherwise. .EXAMPLE $newFreshServiceAgentRoleConfigSplat1 = @{ role_id = 21000150301 #IT Ops Agent - Get-FreshServiceAgentRole assignment_scope = 'specified_groups' groups = 21000188388,21000188389 #Incident Team and Major Incident Team- Get-FreshServiceAgentGroup } $newFreshServiceAgentRoleConfigSplat2 = @{ role_id = 21000150294 #SD Supervisor - Get-FreshServiceAgentRole assignment_scope = 'specified_groups' groups = 21000188403 #Helpdesk Monitoring Team - Get-FreshServiceAgentGroup } $agentRoles = foreach ($splat in @($newFreshServiceAgentRoleConfigSplat1, $newFreshServiceAgentRoleConfigSplat2)) { New-FreshServiceAgentRoleConfig @splat } $agentRoles role_id assignment_scope groups ------- ---------------- ------ 21000150301 specified_groups {21000188388, 21000188389} 21000150294 specified_groups {21000188403} Add multiple roles to an agent. First, add a role as IT Ops Agent for the Incident Team and Major Incident team as a specified group. Second add a role as SD Supervisor for the Helpdesk Monitoring Team. .NOTES This module was developed and tested with Freshservice REST API v2. #> function New-FreshServiceAgentRoleConfig { [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Medium')] param ( [Parameter( Mandatory = $true, HelpMessage = 'The role id' )] [long]$role_id, [Parameter( Mandatory = $true, HelpMessage = 'The scope in which the agent can use the permissions granted by this role. Possible values include entire_helpdesk (all plans), member_groups (all plans; in the Pro and Enterprise plans, this also includes groups that the agent is an observer of), specified_groups (Pro and Enterprise only), and assigned_items (all plans)' )] [ValidateSet('entire_helpdesk','member_groups','specified_groups','assigned_items')] [string]$assignment_scope, [Parameter( Mandatory = $false, HelpMessage = 'Unique IDs of Groups in which the permissions granted by the role applies. Mandatory only when the assignment_scope is specified_groups, and should be ignored otherwise.' )] [long[]]$groups ) begin { } process { if ($PSCmdlet.ShouldProcess($role_id)) { $jsonBody = @{} $PSBoundParameters.keys.where{ $PSItem -notin $PrivateData.FreshserviceBodyExclusions }.foreach{ $jsonBody[$PSItem.ToLower()] = $PSBoundParameters[$PSItem] } [pscustomobject[]]$jsonBody } } end { } } |