Public/Jira/Dashboards/Set-AtlassianCloudJiraDashboardGadget.ps1

function Set-AtlassianCloudJiraDashboardGadget{
    [CmdletBinding()]
    param(
        [Parameter(Mandatory, Position=0)]
        [ValidateNotNullOrEmpty()]
        [int]$DashboardId,

        [Parameter(Mandatory, Position=1)]
        [ValidateNotNullOrEmpty()]
        [int]$GadgetId,

        [Parameter(Mandatory = $false, Position=2)]
        [string]$Title,

        [Parameter(Mandatory = $false, Position=3)]
        [int]$ColumnPosition,

        [Parameter(Mandatory = $false, Position=4)]
        [int]$RowPosition,

        [Parameter(Mandatory = $false, Position=5)]
        [ValidateSet('blue','red','yellow','green','cyan','purple','gray','white')]
        [string]$Colour,

        [Parameter(Mandatory, Position=6)]
        [ValidateNotNullOrEmpty()]
        [string]$AtlassianOrgName,

        [Parameter(Mandatory, Position=7)]
        [ValidateNotNullOrEmpty()]
        [string]$Pat
    )

    if (($ColumnPosition -and !$RowPosition) -or (!$ColumnPosition -and $RowPosition)) {
        Write-Error "ColumnPosition and RowPosition must be provided together"
    } else {

        $data = @{}

        if ($Title) {
            $data += @{
                title = $Title
            }
        }

        if ($ColumnPosition -and $RowPosition) {
            $data += @{
                position = @{
                    column = $ColumnPosition
                    row = $RowPosition
                }
            }
        }

        if ($Colour) {
            $data += @{
                color = $Colour
            }
        }

        return Invoke-AtlassianCloudJiraMethod -Method Put -Data $data -AtlassianOrgName $AtlassianOrgName -Endpoint "dashboard/$DashboardId/gadget/$GadgetId" -Experimental -Pat $Pat -Verbose:($Verbose.IsPresent)
    }
}