Modules/businessdev.ALbuild.Marketplace/Public/Invoke-BcMarketplacePromotion.ps1

function Invoke-BcMarketplacePromotion {
    <#
    .SYNOPSIS
        Promotes a validated Marketplace submission to live.
 
    .PARAMETER AuthContext
        Auth context (Partner Center scope).
 
    .PARAMETER ProductId
        The product id.
 
    .PARAMETER SubmissionId
        The submission id to promote.
 
    .OUTPUTS
        The updated submission status object.
    #>

    [CmdletBinding(SupportsShouldProcess)]
    param(
        [Parameter(Mandatory)] [PSCustomObject] $AuthContext,
        [Parameter(Mandatory)] [string] $ProductId,
        [Parameter(Mandatory)] [string] $SubmissionId
    )

    $cleanProductId = $ProductId -replace '^product/', ''
    $headers = @{ Authorization = "Bearer $($AuthContext.AccessToken)"; 'Content-Type' = 'application/json' }
    $baseUrl = "https://api.partner.microsoft.com/v1.0/ingestion/products/$cleanProductId"

    if (-not $PSCmdlet.ShouldProcess($SubmissionId, 'Promote Marketplace submission to live')) { return }

    Invoke-RestMethod -Uri "$baseUrl/submissions/$SubmissionId/promote" -Method Post -Headers $headers -Body '{}' -ErrorAction Stop | Out-Null
    Write-ALbuildLog -Level Success "Promoted submission $SubmissionId to live."
    return (Invoke-RestMethod -Uri "$baseUrl/submissions/$SubmissionId" -Method Get -Headers $headers -ErrorAction Stop)
}