public/Update-SwSdTask.ps1
function Update-SwSdTask { <# .SYNOPSIS Updates the specified task record with the provided assignee and/or status. .DESCRIPTION Updates the specified task record with the provided assignee and/or status. You can specify either the assignee or status, or both. Assignee must be a valid SWSD user account. .PARAMETER TaskURL The URL of the task. .PARAMETER Assignee The email address of the assignee. .PARAMETER DueDate The due date for the task. .PARAMETER Completed Mark the task as completed. .EXAMPLE Update-SwSdTask -TaskURL "https://api.samanage.com/incidents/123456789/tasks/98765432.json" -Completed Updates the task record for the specified Task URL and marks it as completed. .EXAMPLE Update-SwSdTask -TaskURL "https://api.samanage.com/incidents/123456789/tasks/98765432.json" -Assignee "jsmith@contoso.com" Updates the task record for the specified Task URL and assigns it to the specified user. .EXAMPLE Update-SwSdTask -TaskURL "https://api.samanage.com/incidents/123456789/tasks/98765432.json" -DueDate (Get-Date).AddDays(7) Updates the task record for the specified Task URL and sets the due date to 7 days from now. .NOTES The Assignee must be a valid SWSD user account. Reference: https://apidoc.samanage.com/#tag/Task .LINK https://github.com/Skatterbrainz/SolarWinds.ServiceDesk/blob/main/docs/Update-SwSdTask.md #> [CmdletBinding()] param ( [parameter(Mandatory = $True)][string][ValidateNotNullOrWhiteSpace()]$TaskURL, [parameter(Mandatory = $False)][string][Alias('Email')]$Assignee, [parameter(Mandatory = $False)][datetime]$DueDate, [parameter(Mandatory = $False)][switch]$Completed ) $Session = Connect-SwSD $task = Invoke-RestMethod -Method GET -Uri $TaskURL -Headers $Session.headers if ($task) { $body = @{task = @{}} if (![string]::IsNullOrEmpty($Assignee)) { $body.task.assignee = @{email = $Assignee} } if ($Completed.IsPresent) { $body.task.is_complete = $true } if (![string]::IsNullOrEmpty($DueDate)) { $body.task.due_at = $DueDate.ToString("MMM dd, yyyy") } $json = $body | ConvertTo-Json $response = Invoke-RestMethod -Method PUT -Uri $TaskURL -ContentType "application/json" -Headers $Session.headers -Body $json $response } else { Write-Error "Task not found with URL: $TaskURL" } } |