Public/Jira/Avatars/New-AtlassianCloudJiraAvatar.ps1

function New-AtlassianCloudJiraAvatar{
    [CmdletBinding()]
    param(
        [Parameter(Mandatory, Position=0)]
        [ValidateNotNullOrEmpty()]
        [string]$Type,
 
        [Parameter(Mandatory, Position=1)]
        [ValidateNotNullOrEmpty()]
        [string]$Path,
 
        [Parameter(Mandatory, Position=2)]
        [ValidateNotNullOrEmpty()]
        [int]$Size,
 
        [Parameter(Mandatory = $false, Position=3)]
        [int]$X,
 
        [Parameter(Mandatory = $false, Position=4)]
        [int]$Y,
 
        [Parameter(Mandatory, Position=5)]
        [ValidateNotNullOrEmpty()]
        [string]$AtlassianOrgName,

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

    $headers = @{
        Authorization = "Basic $($Pat)"
        'X-Atlassian-Token' = 'no-check'
    }

    $jiraRoot = "https://$AtlassianOrgName.atlassian.net/rest/api/3/"

    $uri = $jiraRoot + "universal_avatar/type/$Type/owner/$EntityId?size=$Size"

    if ($X) {
        $uri += "&X=$X"
    }
   
    if ($Y) {
        $uri += "&Y=$Y"
    }
    
    Write-Verbose "[POST] $uri"

    $file = Get-Item -Path $Path -ErrorAction Stop

    $contentType = "image/$($file.Extension.ToUpper())"
    if ($contentType -like '*JPG') {
        $contentType = $contentType -replace 'JPG','JPEG'
    }

    return Invoke-RestMethod -Method Post -InFile $Path -Uri $uri -ContentType $contentType -Headers $headers -Verbose:($Verbose.IsPresent)
}