Modules/AzureDevOpsDsc.Common/Api/Functions/Private/Api/Extension/New-DevOpsExtension.ps1

Function New-DevOpsExtension
{
    [CmdletBinding()]
    param(
        [Parameter(Mandatory)][string]$ApiUri,
        [Parameter(Mandatory)][string]$PublisherId,
        [Parameter(Mandatory)][string]$ExtensionId,
        [Parameter()][string]$Version,
        [Parameter()][string]$ApiVersion = '7.1-preview.1'
    )
    $uri = '{0}/_apis/extensionmanagement/installedextensionsbyname/{1}/{2}' -f $ApiUri.TrimEnd('/'), $PublisherId, $ExtensionId
    if ($Version) { $uri += '/{0}' -f $Version }
    $uri += '?api-version={0}' -f $ApiVersion
    # Uses vssps endpoint — caller should pass vssps URI if needed
    $params = @{
        Uri         = $uri
        Method      = 'POST'
        ContentType = 'application/json'
    }
    try   { return Invoke-AzDevOpsApiRestMethod @params }
    catch { Throw "[New-DevOpsExtension] Failed to install extension '$PublisherId.$ExtensionId': $_" }
}