Public/Requests/Approve-SCAAccessRequest.ps1

function Approve-SCAAccessRequest {
    <#
    .SYNOPSIS
        Approves a pending access request.
    .DESCRIPTION
        Calls POST /workflows/requests/{requestId}/finalize on the Access Requests API with an
        approval decision. The caller must hold the "Access request approver" role for the
        request to be visible and approvable.
    .PARAMETER RequestId
        The access request to approve.
    .PARAMETER Reason
        An optional approval comment.
    .PARAMETER Session
        A psSCA.Session object or session name. Defaults to the current default session.
    .EXAMPLE
        Get-SCAAccessRequest -Status Pending | Approve-SCAAccessRequest -Reason 'Approved per change 4471'

        Approves every pending access request assigned to the caller.
    .INPUTS
        System.String. RequestId can be piped in by value or by property name.
    .OUTPUTS
        psSCA.AccessRequest
    .LINK
        https://api-docs.cyberark.com/access-request-api/docs/access-request-api
    #>

    [CmdletBinding(SupportsShouldProcess, ConfirmImpact = 'Medium')]
    [OutputType('psSCA.AccessRequest')]
    param(
        [Parameter(Mandatory, ValueFromPipeline, ValueFromPipelineByPropertyName)]
        [Alias('id')]
        [string]$RequestId,

        [Parameter()]
        [string]$Reason,

        [Parameter()]
        [object]$Session
    )

    process {
        if ($PSCmdlet.ShouldProcess($RequestId, 'Approve Secure Cloud Access request')) {
            $body = @{ decision = 'Approve'; reason = $Reason }
            Invoke-SCARequest -Session $Session -Service 'UAR' -Method POST -Path '/workflows/requests/{requestId}/finalize' `
                -PathParameters @{ requestId = $RequestId } -Body $body -Operation 'Approve-SCAAccessRequest' -TypeName 'psSCA.AccessRequest'
        }
    }
}