Public/Complete-ChangeEmailAgentRequest.ps1

function Complete-ChangeEmailAgentRequest {
    [CmdletBinding()]

    Param(
        [Parameter(Mandatory = $true, ValueFromPipeline = $true)]
        $Request,

        [Parameter(Mandatory = $false)]
        [ValidateSet("Success", "Failed")]
        $Status = "Success",

        [Parameter(Mandatory = $false)]
        [string] $ErrorMessage
    )

    Process {
        if (!$Script:Hostname) {
            Write-Error -Message "Hostname is not set. Please run Connect-ChangeEmailAgent first."
            return
        }

        Write-EventLog -LogName "Application" -Source "ChangeEmailAgent" -EventId 1105 -EntryType Information -Message "Confirming request with ID $($Request.id)" -ErrorAction Continue
        Write-Verbose "Confirming request with ID $($Request.id)"

        try {
            $body = @{
                status = $Status
                errorMessage = $ErrorMessage
            } | ConvertTo-Json
            Invoke-RestMethod -Uri "https://$($Script:Hostname)/changeemail/changerequests/$($Request.id)/complete" -Method Post -Headers (Get-EntraIDAccessTokenHeader) -ContentType "application/json" -Body $body -Verbose:$false
        }
        catch {
            Write-EventLog -LogName "Application" -Source "ChangeEmailAgent" -EventId 1205 -EntryType Error -Message "Failed to confirm request: $_" -ErrorAction Continue
            Write-Error -Message "Failed to confirm request: $_"
        }
    }
}