Public/Jira/Dashboards/Add-AtlassianCloudJiraGadgetToDashboard.ps1

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

        [Parameter(Mandatory, Position=1)]
        [ValidateNotNullOrEmpty()]
        [string]$Title,

        [Parameter(Mandatory, Position=2)]
        [ValidateNotNullOrEmpty()]
        [int]$ColumnPosition,

        [Parameter(Mandatory, Position=3)]
        [ValidateNotNullOrEmpty()]
        [int]$RowPosition,

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

        [Parameter(Mandatory = $false, Position=5)]
        [string]$Uri,

        [Parameter(Mandatory = $false, Position=6)]
        [string]$ModuleKey,

        [Parameter(Mandatory = $false, Position=7)]
        [bool]$IgnoreUriAndModuleKeyValidation = $false,

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

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

    $data = @{
        title = $Title
        coclour = $Clolour
        position = @{
            column = $ColumnPosition
            row = $RowPosition
        }
        ignoreUriAndModuleKeyValidation = $IgnoreUriAndModuleKeyValidation
    }

    if ($ModuleKey -and $Uri) {
        Write-Error "Cannot provide both ModuleKey and Uri"
    } else {
        if (!$ModuleKey -and !$Uri) {
            Write-Error "Must provide either ModuleKey or Uri"
        } else {
            if ($ModuleKey) {
                $data += @{
                    moduleKey = $ModuleKey
                }
            } else {
                $data += @{
                    uri = $Uri
                }
            }

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

}