Public/Users.ps1
|
<# .SYNOPSIS Get ClickUp user. .DESCRIPTION View information about a user in a Workspace. .EXAMPLE PS C:\> Get-ClickUpUser -TeamID 123 -UserID 456 Get ClickUp user for team with ID "123" and user with ID "456". .INPUTS None. This cmdlet does not accept any input. .OUTPUTS System.Object .NOTES This endpoint is only available to Workspaces on our Enterprise Plan. See the link for information. .LINK https://developer.clickup.com/reference/getuser #> function Get-ClickUpUser { [CmdletBinding()] [OutputType([System.Object])] param ( [Parameter(Mandatory = $true)] [ulong]$TeamID, [Parameter(Mandatory = $true)] [ulong]$UserID, [Parameter()] [bool]$IncludeShared = $true ) $QueryString = @{ include_shared = $IncludeShared } Write-Verbose 'Entering Get-ClickUpUser' try { Write-Verbose "Getting user with ID: $UserID for team ID: $TeamID" $User = Invoke-ClickUpAPIGet -Endpoint "team/$TeamID/user/$UserID" -Arguments $QueryString Write-Verbose 'Successfully retrieved user' return $User.member } catch { Write-Error "Error in Get-ClickUpUser: $($_.Exception.Message)" throw $_ } } <# .SYNOPSIS Invite user to ClickUp workspace. .DESCRIPTION Invite someone to join your Workspace as a member. To invite someone as a guest, use the Invite Guest endpoint. .EXAMPLE PS C:\> New-ClickUpUser -TeamID 123 -Email "user@example.com" -Admin $false Invite user to ClickUp workspace with ID "123". .EXAMPLE PS C:\> New-ClickUpUser -TeamID 123 -Email "user@example.com" -Admin $true -CustomRoleID 456 Invite user to ClickUp workspace with ID "123". .INPUTS None. This cmdlet does not accept any input. .OUTPUTS System.Object .NOTES This endpoint is only available to Workspaces on our Enterprise Plan. See the link for information. .LINK https://developer.clickup.com/reference/inviteusertoworkspace #> function New-ClickUpUser { [CmdletBinding()] [OutputType([System.Object])] param ( [Parameter(Mandatory = $true)] [ulong]$TeamID, [Parameter(Mandatory = $true)] [string]$Email, [Parameter(Mandatory = $true)] [bool]$Admin, [Parameter()] [ulong]$CustomRoleID ) $Body = @{ email = $Email admin = $Admin } if ($PSBoundParameters.ContainsKey('CustomRoleID')) { $Body.Add('custom_role_id', $CustomRoleID) } Write-Verbose 'Entering New-ClickUpUser' try { Write-Verbose "Inviting user '$Email' to team ID: $TeamID" #https://api.clickup.com/api/v2/team/{team_id}/user $User = Invoke-ClickUpAPIPost -Endpoint "team/$TeamID/user" -Body $Body Write-Verbose 'Successfully invited user' return $User } catch { Write-Error "Error in New-ClickUpUser: $($_.Exception.Message)" throw $_ } } <# .SYNOPSIS Edit user in ClickUp workspace. .DESCRIPTION Edit a user in a Workspace. .EXAMPLE PS C:\> Set-ClickUpUser -TeamID 123 -UserID 456 -Admin $true Edit user in ClickUp workspace with ID "123" and user with ID "456". .INPUTS None. This cmdlet does not accept any input. .OUTPUTS System.Object .NOTES This endpoint is only available to Workspaces on our Enterprise Plan. See the link for information. .LINK https://developer.clickup.com/reference/edituseronworkspace #> function Set-ClickUpUser { [CmdletBinding()] [OutputType([System.Object])] param ( [Parameter(Mandatory = $true)] [ulong]$TeamID, [Parameter(Mandatory = $true)] [ulong]$UserID, [Parameter(Mandatory = $true)] [string]$Username, [Parameter(Mandatory = $true)] [bool]$Admin, [Parameter()] [ulong]$CustomRoleID ) $Body = @{ username = $Username admin = $Admin } if ($PSBoundParameters.ContainsKey('CustomRoleID')) { $Body.Add('custom_role_id', $CustomRoleID) } Write-Verbose 'Entering Set-ClickUpUser' try { Write-Verbose "Updating user with ID: $UserID for team ID: $TeamID" $User = Invoke-ClickUpAPIPut -Endpoint "team/$TeamID/user/$UserID" -Body $Body Write-Verbose 'Successfully updated user' return $User.member } catch { Write-Error "Error in Set-ClickUpUser: $($_.Exception.Message)" throw $_ } } <# .SYNOPSIS Remove user from ClickUp workspace. .DESCRIPTION Remove a user from a Workspace. .EXAMPLE PS C:\> Remove-ClickUpUser -TeamID 123 -UserID 456 Remove user from ClickUp workspace with ID "123" and user with ID "456". .INPUTS None. This cmdlet does not accept any input. .OUTPUTS System.Object .NOTES This endpoint is only available to Workspaces on our Enterprise Plan. See the link for information. .LINK https://developer.clickup.com/reference/removeuserfromworkspace #> function Remove-ClickUpUser { [CmdletBinding(SupportsShouldProcess, ConfirmImpact = 'High')] [OutputType([System.Object])] param ( [Parameter(Mandatory = $true)] [ulong]$TeamID, [Parameter(Mandatory = $true)] [ulong]$UserID ) Write-Verbose 'Entering Remove-ClickUpUser' if ($PSCmdlet.ShouldProcess($UserID)) { try { Write-Verbose "Removing user with ID: $UserID from team ID: $TeamID" $User = Invoke-ClickUpAPIDelete -Endpoint "team/$TeamID/user/$UserID" Write-Verbose 'Successfully removed user' return $User.team } catch { Write-Error "Error in Remove-ClickUpUser: $($_.Exception.Message)" throw $_ } } } |