Public/Dependencies.ps1
|
<# .SYNOPSIS Add ClickUp dependency. .DESCRIPTION Add ClickUp dependency. Supports pipeline input from task objects for TaskID parameter. .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". .EXAMPLE PS C:\> Get-ClickUpTask -TaskID 9hv | Add-ClickUpDependency -DependsOn 9hz Add a dependency by piping a task object. .INPUTS System.String. You can pipe a task ID to this cmdlet. .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', ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)] [Parameter(Mandatory = $true, ParameterSetName = 'DependsOnCustomTaskID', ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)] [Parameter(Mandatory = $true, ParameterSetName = 'DependendencyOfTaskID', ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)] [Parameter(Mandatory = $true, ParameterSetName = 'DependendencyOfCustomTaskID', ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)] [Alias('task_id','id')] [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')] [uint64]$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. Supports pipeline input from task objects for TaskID parameter. .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". .EXAMPLE PS C:\> Get-ClickUpTask -TaskID 9hv | Remove-ClickUpDependency -DependsOn 9hz Remove a dependency by piping a task object. .INPUTS System.String. You can pipe a task ID to this cmdlet. .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', ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)] [Parameter(Mandatory = $true, ParameterSetName = 'DependsOnCustomTaskID', ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)] [Parameter(Mandatory = $true, ParameterSetName = 'DependendencyOfTaskID', ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)] [Parameter(Mandatory = $true, ParameterSetName = 'DependendencyOfCustomTaskID', ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)] [Alias('task_id','id')] [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')] [uint64]$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. Supports pipeline input from task objects for TaskID parameter. .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". .EXAMPLE PS C:\> Get-ClickUpTask -TaskID 9hv | Add-ClickUpTaskLink -LinksTo 9hz Add a task link by piping a task object. .INPUTS System.String. You can pipe a task ID to this cmdlet. .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', ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)] [Parameter(Mandatory = $true, ParameterSetName = 'CustomTaskID', ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)] [Alias('task_id','id')] [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')] [uint64]$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. Supports pipeline input from task objects for TaskID parameter. .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. .EXAMPLE PS C:\> Get-ClickUpTask -TaskID 9hv | Remove-ClickUpTaskLink -LinksTo 9hz Remove a task link by piping a task object. .INPUTS System.String. You can pipe a task ID to this cmdlet. .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', ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)] [Parameter(Mandatory = $true, ParameterSetName = 'CustomTaskID', ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)] [Alias('task_id','id')] [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')] [uint64]$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 $_ } } } |