Public/UserGroups.ps1
|
<# .SYNOPSIS Get all user groups in a Workspace. .DESCRIPTION View the user groups created via the API for a Workspace. .EXAMPLE PS C:\> Get-ClickupUserGroups -TeamID 123 Get all user groups for team with ID "123". .INPUTS None. This cmdlet does not accept any input. .OUTPUTS System.Object .OUTPUTS System.Array .NOTES See the link for information. .LINK https://developer.clickup.com/reference/getusergroups #> function Get-ClickupUserGroups { [CmdletBinding()] [OutputType([System.Object], [System.Array])] param ( [Parameter(Mandatory = $true)] [ulong]$TeamID, [Parameter()] [string[]]$GroupIDs ) $Arguments = @{ team_id = $TeamID } if ($PSBoundParameters.ContainsKey('GroupIDs')) { $Arguments.Add('group_ids', $GroupIDs) } Write-Verbose 'Entering Get-ClickupUserGroups' try { Write-Verbose "Getting user groups for team ID: $TeamID" $Groups = Invoke-ClickUpAPIGet -Endpoint 'group' -Arguments $Arguments Write-Verbose 'Successfully retrieved user groups' return $Groups.groups } catch { Write-Error "Error in Get-ClickupUserGroups: $($_.Exception.Message)" throw $_ } } <# .SYNOPSIS Create a new user group. .DESCRIPTION Create a new user group in a Workspace. .EXAMPLE PS C:\> New-ClickUpUserGroup -TeamID 123 -Name "New Group" -Members 456, 789 Create a new user group with name "New Group" and members with IDs "456" and "789" in team with ID "123". .EXAMPLE PS C:\> New-ClickUpUserGroup -TeamID 123 -Name "New Group" -Members 456, 789 -Handle "new-group" Create a new user group with name "New Group" and members with IDs "456" and "789" in team with ID "123". .INPUTS None. This cmdlet does not accept any input. .OUTPUTS System.Object .NOTES See the link for information. .LINK https://developer.clickup.com/reference/createusergroup #> function New-ClickUpUserGroup { [CmdletBinding()] [OutputType([System.Object])] param ( [Parameter(Mandatory = $true)] [ulong]$TeamID, [Parameter(Mandatory = $true)] [string]$Name, [Parameter(Mandatory = $true)] [ulong[]]$Members, [Parameter()] [string]$Handle ) $Body = @{ name = $Name members = $Members } if ($PSBoundParameters.ContainsKey('Handle')) { $Body.Add('handle', $Handle) } Write-Verbose 'Entering New-ClickUpUserGroup' try { Write-Verbose "Creating user group '$Name' for team ID: $TeamID" $Group = Invoke-ClickUpAPIPost -Endpoint "team/$TeamID/group" -Body $Body Write-Verbose 'Successfully created user group' return $Group } catch { Write-Error "Error in New-ClickUpUserGroup: $($_.Exception.Message)" throw $_ } } <# .SYNOPSIS Update a user group. .DESCRIPTION Update a user group in a Workspace. .EXAMPLE PS C:\> Set-ClickUpUserGroup -GroupID "123-456" -Name "Updated Group" -Handle "updated-handle" Update user group with ID "123-456" to have name "Updated Group" and handle "updated-handle". .INPUTS None. This cmdlet does not accept any input. .OUTPUTS System.Object .NOTES See the link for information. .LINK https://developer.clickup.com/reference/updategroup #> function Set-ClickUpUserGroup { [CmdletBinding()] [OutputType([System.Object])] param ( [Parameter(Mandatory = $true)] [string]$GroupID, [Parameter()] [string]$Name, [Parameter()] [string]$Handle, [Parameter()] [ulong[]]$AddMembers = @(), [Parameter()] [ulong[]]$RemoveMembers = @() ) $Body = @{} if ($PSBoundParameters.ContainsKey('Name')) { $Body.Add('name', $Name) } if ($PSBoundParameters.ContainsKey('Handle')) { $Body.Add('handle', $Handle) } if ($PSBoundParameters.ContainsKey('AddMembers') -or $PSBoundParameters.ContainsKey('RemoveMembers')) { $Body.Add('members', @{ add = $AddMembers remove = $RemoveMembers }) } Write-Verbose 'Entering Set-ClickUpUserGroup' try { Write-Verbose "Updating user group with ID: $GroupID" $Group = Invoke-ClickUpAPIPut -Endpoint "group/$GroupID" -Body $Body Write-Verbose 'Successfully updated user group' return $Group } catch { Write-Error "Error in Set-ClickUpUserGroup: $($_.Exception.Message)" throw $_ } } <# .SYNOPSIS Delete a user group. .DESCRIPTION Delete a user group in a Workspace. .EXAMPLE PS C:\> Remove-ClickUpUserGroup -GroupID "123-456" Delete user group with ID "123-456". .INPUTS None. This cmdlet does not accept any input. .OUTPUTS None. This cmdlet does not return any output. .NOTES See the link for information. .LINK https://developer.clickup.com/reference/deletegroup #> function Remove-ClickUpUserGroup { [CmdletBinding(SupportsShouldProcess, ConfirmImpact = 'High')] param ( [Parameter(Mandatory = $true)] [string]$GroupID ) Write-Verbose 'Entering Remove-ClickUpUserGroup' if ($PSCmdlet.ShouldProcess($GroupID)) { try { Write-Verbose "Removing user group with ID: $GroupID" $null = Invoke-ClickUpAPIDelete -Endpoint "group/$GroupID" Write-Verbose 'Successfully removed user group' } catch { Write-Error "Error in Remove-ClickUpUserGroup: $($_.Exception.Message)" throw $_ } } } |