Scripts/Create-AzApiManagementApiOperation.ps1

param(
    [Parameter(Mandatory = $true)][string] $ResourceGroupName = $(throw "Resource group is required"),
    [Parameter(Mandatory = $true)][string] $ServiceName = $(throw "API management service name is required"),
    [Parameter(Mandatory = $true)][string] $ApiId = $(throw "API ID is required"),
    [Parameter(Mandatory = $true)][string] $OperationId = $(throw "Operation ID is required"),
    [Parameter(Mandatory = $true)][string] $Method = $(throw "Method is required"),
    [Parameter(Mandatory = $true)][string] $UrlTemplate = $(throw "URL template is required"),
    [Parameter(Mandatory = $false)][string] $OperationName = $OperationId,
    [Parameter(Mandatory = $false)][string] $Description = "",
    [Parameter(Mandatory = $false)][string] $PolicyFilePath = ""
)

$apim = Get-AzApiManagement -ResourceGroupName $ResourceGroupName -Name $ServiceName
if ($apim -eq $null) {
    throw "Unable to find the Azure API Management instance '$ServiceName' in resource group '$ResourceGroupName'"
}
$apimContext = New-AzApiManagementContext -ResourceGroupName $ResourceGroupName -ServiceName $ServiceName

New-AzApiManagementOperation -Context $apimContext -ApiId $ApiId -OperationId $OperationId -Name $OperationName -Method $Method -UrlTemplate $UrlTemplate -Description $Description
Write-Host "New API operation '$OperationName' was added on Azure API Management instance '$ServiceName' in resource group '$ResourceGroupName'"

if ($OperationId -eq "" -or $PolicyFilePath -eq "") {
    Write-Warning "No policy has been defined for Azure API Management instance '$ServiceName' in resource group '$ResourceGroupName'"
} else {
    Write-Verbose "Updating policy of the operation '$OperationId' in API '$ApiId' of the Azure API Management instance '$ServiceName' in resource group '$ResourceGroupName'..."
    Set-AzApiManagementPolicy -Context $apimContext -ApiId $ApiId -OperationId $OperationId -PolicyFilePath $PolicyFilePath
    Write-Host "Updated policy of the operation '$OperationId' in API '$ApiId' of the Azure API Management instance '$ServiceName' in resource group '$ResourceGroupName'" -ForegroundColor Green
}