Public/Dependencies.ps1
|
<# .SYNOPSIS Add ClickUp dependency. .DESCRIPTION Add ClickUp dependency. .EXAMPLE PS C:\> Add-ClickUpDependency -TaskID 9hv -DependsOn 9hz Add ClickUp task with ID "9hz" as a dependency of ClickUp task with ID "9hv". .EXAMPLE PS C:\> Add-ClickUpDependency -TaskID 9hv -DependencyOf 9hz Add ClickUp task with ID "9hv" as a dependency of ClickUp task with ID "9hz". .EXAMPLE PS C:\> Add-ClickUpDependency -TaskID "CustomTaskID 1" -DependsOn "CustomTaskID 2" -CustomTaskID $true -TeamID 123 Add ClickUp task with ID "CustomTaskID 2" as a dependency of ClickUp task with ID "CustomTaskID 1". .EXAMPLE PS C:\> Add-ClickUpDependency -TaskID "CustomTaskID 1" -DependencyOf "CustomTaskID 2" -CustomTaskID $true -TeamID 123 Add ClickUp task with ID "CustomTaskID 1" as a dependency of ClickUp task with ID "CustomTaskID 2". .INPUTS None. This cmdlet does not accept any input. .OUTPUTS None. This cmdlet does not return any output. .NOTES See the link for information. To create a waiting on dependency, pass the property depends_on in the body. To create a blocking dependency, pass the property dependency_of. Both can not be passed in the same request. .LINK https://developer.clickup.com/reference/adddependency #> function Add-ClickUpDependency { [CmdletBinding(DefaultParameterSetName = 'DependsOnTaskID')] param ( [Parameter(Mandatory = $true, ParameterSetName = 'DependsOnTaskID')] [Parameter(Mandatory = $true, ParameterSetName = 'DependsOnCustomTaskID')] [Parameter(Mandatory = $true, ParameterSetName = 'DependendencyOfTaskID')] [Parameter(Mandatory = $true, ParameterSetName = 'DependendencyOfCustomTaskID')] [string]$TaskID, [Parameter(Mandatory = $true, ParameterSetName = 'DependsOnTaskID')] [Parameter(Mandatory = $true, ParameterSetName = 'DependsOnCustomTaskID')] [string]$DependsOn, [Parameter(Mandatory = $true, ParameterSetName = 'DependendencyOfTaskID')] [Parameter(Mandatory = $true, ParameterSetName = 'DependendencyOfCustomTaskID')] [string]$DependendencyOf, [Parameter(Mandatory = $true, ParameterSetName = 'DependsOnCustomTaskID')] [Parameter(Mandatory = $true, ParameterSetName = 'DependendencyOfCustomTaskID')] [bool]$CustomTaskID, [Parameter(Mandatory = $true, ParameterSetName = 'DependsOnCustomTaskID')] [Parameter(Mandatory = $true, ParameterSetName = 'DependendencyOfCustomTaskID')] [ulong]$TeamID ) Write-Verbose "Entering Add-ClickUpDependency with TaskID: $TaskID" if ($PSBoundParameters.ContainsKey('CustomTaskIDs')) { $QueryString = @{ custom_task_ids = $CustomTaskIDs team_id = $TeamID } } else { $QueryString = @{} } if ($PSBoundParameters.ContainsKey('DependsOn')) { $Body = @{ depends_on = $DependsOn } } elseif ($PSBoundParameters.ContainsKey('DependendencyOf')) { $Body = @{ dependency_of = $DependendencyOf } } try { $Null = Invoke-ClickUpAPIPost -Arguments $QueryString -Endpoint "task/$TaskID/dependency" -Body $Body } catch { Write-Error "Failed to add dependency for TaskID: $TaskID. Error: $_" throw $_ } } <# .SYNOPSIS Remove ClickUp dependency. .DESCRIPTION Remove ClickUp dependency. .EXAMPLE PS C:\> Remove-ClickUpDependency -TaskID 9hv -DependsOn 9hz Remove ClickUp task with ID "9hz" as a dependency of ClickUp task with ID "9hv". .EXAMPLE PS C:\> Remove-ClickUpDependency -TaskID 9hv -DependencyOf 9hz Remove ClickUp task with ID "9hv" as a dependency of ClickUp task with ID "9hz". .INPUTS None. This cmdlet does not accept any input. .OUTPUTS None. This cmdlet does not return any output. .NOTES See the link for information. One and only one of depends_on or dependency_of must be passed in the query params. .LINK https://developer.clickup.com/reference/deletedependency #> function Remove-ClickUpDependency { [CmdletBinding(SupportsShouldProcess, ConfirmImpact = 'High', DefaultParameterSetName = 'DependsOnTaskID')] param ( [Parameter(Mandatory = $true, ParameterSetName = 'DependsOnTaskID')] [Parameter(Mandatory = $true, ParameterSetName = 'DependsOnCustomTaskID')] [Parameter(Mandatory = $true, ParameterSetName = 'DependendencyOfTaskID')] [Parameter(Mandatory = $true, ParameterSetName = 'DependendencyOfCustomTaskID')] [string]$TaskID, [Parameter(Mandatory = $true, ParameterSetName = 'DependsOnTaskID')] [Parameter(Mandatory = $true, ParameterSetName = 'DependsOnCustomTaskID')] [string]$DependsOn, [Parameter(Mandatory = $true, ParameterSetName = 'DependendencyOfTaskID')] [Parameter(Mandatory = $true, ParameterSetName = 'DependendencyOfCustomTaskID')] [string]$DependendencyOf, [Parameter(Mandatory = $true, ParameterSetName = 'DependsOnCustomTaskID')] [Parameter(Mandatory = $true, ParameterSetName = 'DependendencyOfCustomTaskID')] [bool]$CustomTaskID, [Parameter(Mandatory = $true, ParameterSetName = 'DependsOnCustomTaskID')] [Parameter(Mandatory = $true, ParameterSetName = 'DependendencyOfCustomTaskID')] [ulong]$TeamID ) Write-Verbose "Entering Remove-ClickUpDependency with TaskID: $TaskID" $QueryString = @{} if ($PSBoundParameters.ContainsKey('CustomTaskIDs')) { $QueryString = @{ custom_task_ids = $CustomTaskIDs team_id = $TeamID } } if ($PSBoundParameters.ContainsKey('DependsOn')) { $QueryString.Add('depends_on', $DependsOn) } elseif ($PSBoundParameters.ContainsKey('DependendencyOf')) { $QueryString.Add('dependency_of', $DependendencyOf) } if ($PSCmdlet.ShouldProcess($TaskID)) { try { $Null = Invoke-ClickUpAPIDelete -Arguments $QueryString -Endpoint "task/$TaskID/dependency" } catch { Write-Error "Failed to remove dependency for TaskID: $TaskID. Error: $_" throw $_ } } } <# .SYNOPSIS Add ClickUp task link. .DESCRIPTION Add ClickUp task link. .EXAMPLE PS C:\> Add-ClickUpTaskLink -TaskID 9hv -LinksTo 9hz Add ClickUp task with ID "9hz" as a link to ClickUp task with ID "9hv". .EXAMPLE PS C:\> Add-ClickUpTaskLink -TaskID "CustomTaskID 1" -LinksTo "CustomTaskID 2" -CustomTaskID $true -TeamID 123 Add ClickUp task with ID "CustomTaskID 2" as a link to ClickUp task with ID "CustomTaskID 1". .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/addtasklink #> function Add-ClickUpTaskLink { [CmdletBinding(DefaultParameterSetName = 'TaskID')] [OutputType([System.Management.Automation.PSCustomObject])] param ( [Parameter(Mandatory = $true, ParameterSetName = 'TaskID')] [Parameter(Mandatory = $true, ParameterSetName = 'CustomTaskID')] [string]$TaskID, [Parameter(Mandatory = $true, ParameterSetName = 'TaskID')] [Parameter(Mandatory = $true, ParameterSetName = 'CustomTaskID')] [string]$LinksTo, [Parameter(Mandatory = $true, ParameterSetName = 'CustomTaskID')] [bool]$CustomTaskID, [Parameter(Mandatory = $true, ParameterSetName = 'CustomTaskID')] [ulong]$TeamID ) Write-Verbose "Entering Add-ClickUpTaskLink with TaskID: $TaskID, LinksTo: $LinksTo" if ($PSBoundParameters.ContainsKey('CustomTaskIDs')) { $QueryString = @{ custom_task_ids = $CustomTaskIDs team_id = $TeamID } } else { $QueryString = @{} } try { $Null = Invoke-ClickUpAPIPost -Arguments $QueryString -Endpoint "task/$TaskID/link/$LinksTo/" } catch { Write-Error "Failed to add task link between $TaskID and $LinksTo. Error: $_" throw $_ } } <# .SYNOPSIS Remove ClickUp task link. .DESCRIPTION Remove ClickUp task link. .EXAMPLE PS C:\> Remove-ClickUpTaskLink -TaskID 9hv -LinksTo 9hz Remove ClickUp task with ID "9hz" as a link to ClickUp task with ID "9hv". .EXAMPLE PS C:\> Remove-ClickUpTaskLink -TaskID "CustomTaskID1" -LinksTo "CustomTaskID2" -CustomTaskID $true -TeamID 123456 Remove ClickUp task with ID "CustomTaskID2" as a link to ClickUp task with ID "CustomTaskID1" using custom task IDs. .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/deletetasklink #> function Remove-ClickUpTaskLink { [CmdletBinding(SupportsShouldProcess, ConfirmImpact = 'High', DefaultParameterSetName = 'TaskID')] param ( [Parameter(Mandatory = $true, ParameterSetName = 'TaskID')] [Parameter(Mandatory = $true, ParameterSetName = 'CustomTaskID')] [string]$TaskID, [Parameter(Mandatory = $true, ParameterSetName = 'TaskID')] [Parameter(Mandatory = $true, ParameterSetName = 'CustomTaskID')] [string]$LinksTo, [Parameter(Mandatory = $true, ParameterSetName = 'CustomTaskID')] [bool]$CustomTaskID, [Parameter(Mandatory = $true, ParameterSetName = 'CustomTaskID')] [ulong]$TeamID ) Write-Verbose "Entering Remove-ClickUpTaskLink with TaskID: $TaskID, LinksTo: $LinksTo" $QueryString = @{} if ($PSBoundParameters.ContainsKey('CustomTaskIDs')) { $QueryString = @{ custom_task_ids = $CustomTaskIDs team_id = $TeamID } } if ($PSBoundParameters.ContainsKey('CustomTaskIDs')) { $QueryString = @{ custom_task_ids = $CustomTaskIDs team_id = $TeamID } } else { $QueryString = @{} } if ($PSCmdlet.ShouldProcess($TaskID)) { try { $Null = Invoke-ClickUpAPIDelete -Arguments $QueryString -Endpoint "task/$TaskID/link/$LinksTo/" } catch { Write-Error "Failed to remove task link between $TaskID and $LinksTo. Error: $_" throw $_ } } } |