Public/Assets/Role/Set-AtlassianCloudAssetsRole.ps1

function Set-AtlassianCloudAssetsRole{
    [CmdletBinding()]
    [Alias('Get-AtlassianCloudAssetsSchema')]
    param(
        [Parameter(Mandatory, Position=0)]
        [string]$RoleId,
        
        [Parameter(Mandatory = $false, Position=1)]
        [string[]]$AccountIds,

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

        [Parameter(Mandatory, Position=3)]
        [ValidateNotNullOrEmpty()]
        [string]$WorkspaceId,

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

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

    $headers = @{
        Authorization = "Basic $($Pat)"
    }

    $uri = "https://$($AtlassianOrgName).atlassian.net/gateway/api/jsm/assets/workspace/$($WorkspaceId)/v1/config/role/$($RoleId)"

    $data = @{
        id = $RoleId
        categorisedActors = @{
            'atlassian-user-role-actor' = @(
                $(foreach ($accountId in $AccountIds) {
                    $accountId
                })
            )
            'atlassian-group-role-actor' = @(
                $(foreach ($groupName in $GroupNames) {
                    $groupName
                })
            )
        }
    }

    $body = $data | ConvertTo-Json -Depth 10

    Write-Verbose "[PUT] $uri"
    Write-Verbose "[BODY] $body"
    Invoke-RestMethod -Method Put -Body $body -Uri $uri -ContentType application/json -Headers $headers -Verbose:($Verbose.IsPresent)
}