Public/Set-JuribaAutomationAction.ps1
function Set-JuribaAutomationAction { [alias("Set-DwAutomationAction")] <# .SYNOPSIS Updates an automation action. .DESCRIPTION Updates an automation action using Dashworks API v1. .PARAMETER Instance Optional. Dashworks instance to be provided if not authenticating using Connect-Juriba. For example, https://myinstance.dashworks.app:8443 .PARAMETER APIKey Optional. API key to be provided if not authenticating using Connect-Juriba. .PARAMETER ActionId ActionId for the action. .PARAMETER Name Name of the automation action. .PARAMETER AutomationId AutomationId for the action. .PARAMETER TypeId TypeId for the action .PARAMETER ProjectId ProjectId for the action. .PARAMETER IsEvergreen IsEvergreen flag for the action. .PARAMETER Parameter Gets the object of the type from the set structure .OUTPUTS ActionId. .EXAMPLE PS> Set-JuribaAutomationAction -Instance "https://myinstance.dashworks.app:8443" -APIKey "xxxxx" -ActionId 10 -Name "Update Custom Field Value" -AutomationId 1 -TypeId 1 -ProjectId 1 -IsEvergreen $false -Parameter 'parameters=@(@{property="TaskId";value=11;meta="task"};@{property="Value";value=2;meta="Radiobutton"};@{property="ValueActionType";value=1;meta="Radiobutton"};)' #> [CmdletBinding(SupportsShouldProcess)] param( [Parameter(Mandatory = $false)] [string]$Instance, [Parameter(Mandatory = $false)] [string]$APIKey, [Parameter(Mandatory = $true)] [int]$ActionId, [Parameter(Mandatory = $true)] [string]$Name, [Parameter(Mandatory = $true)] [int]$AutomationId, [Parameter(Mandatory = $true)] [int]$TypeId, [Parameter(Mandatory = $true)] [int]$ProjectId, [Parameter(Mandatory = $false)] [bool]$IsEvergreen = $false, [Parameter(Mandatory = $true)] [Object]$Parameters ) if ((Get-Variable 'dwConnection' -Scope 'Global' -ErrorAction 'Ignore') -and !$APIKey -and !$Instance) { $APIKey = ConvertFrom-SecureString -SecureString $dwConnection.secureAPIKey -AsPlainText $Instance = $dwConnection.instance } if ($APIKey -and $Instance) { $payload = @{} $payload.Add("id", $ActionId) $payload.Add("name", $Name) $payload.Add("typeId", $TypeId) $payload.Add("projectId", $ProjectId) $payload.Add("isEvergreen", $IsEvergreen) if($Parameters) { $list = New-Object System.Collections.ArrayList $list = $Parameters $payload.Add("parameters", [Array]$list) } $jsonbody = $payload | ConvertTo-Json -Depth 6 $uri = "{0}/apiv1/admin/automations/{1}/actions/{2}" -f $Instance, $AutomationId, $ActionId $headers = @{'x-api-key' = $APIKey } try { if ($PSCmdlet.ShouldProcess($Name)) { $result = Invoke-WebRequest -Uri $uri -Method PUT -Headers $headers -Body ([System.Text.Encoding]::UTF8.GetBytes($jsonbody)) -ContentType 'application/json' if ($result.StatusCode -eq 200) { $id = ($result.content | ConvertFrom-Json).id return $id } else { throw "Error updating automation action." } } } catch { Write-Error $_ } } else { Write-Error "No connection found. Please ensure `$APIKey and `$Instance is provided or connect using Connect-Juriba before proceeding." } } |