Private/get-apiversion.ps1
<#
.SYNOPSIS This function retrieves the API versions from the Azure OpenAI GitHub repository. .DESCRIPTION The Get-APIVersion function sends a GET request to the Azure OpenAI GitHub repository and retrieves the API versions from the 'preview' and 'stable' folders. It then sorts the API versions by date, ignoring the '-preview' suffix, and returns the sorted array of API versions. .PARAMETER Stable This switch parameter indicates whether to retrieve the API versions from the 'stable' folder. .PARAMETER Preview This switch parameter indicates whether to retrieve the API versions from the 'preview' folder. .EXAMPLE PS> Get-APIVersion -Stable -Preview This command retrieves the API versions from both the 'stable' and 'preview' folders. .EXAMPLE PS> Get-APIVersion -Stable This example retrieves all stable API versions without including preview ones. .INPUTS None. You cannot pipe objects to this function. .OUTPUTS System.Array. An array of strings containing sorted list of version names based on their release dates in descending order is returned by this command. .NOTES Author: Voytas75 Date: 04.2024 GitHub Repository URL: https://github.com/voytas75/AzureOpenAI-PowerShell/ #> function Get-APIVersion { param ( [Parameter(Mandatory=$false)] [switch]$Stable, [Parameter(Mandatory=$false)] [switch]$Preview ) # Define the URLs of the Azure OpenAI GitHub repository for 'preview' and 'stable' folders $urlPreview = "https://api.github.com/repos/Azure/azure-rest-api-specs/contents/specification/cognitiveservices/data-plane/AzureOpenAI/inference/preview" $urlStable = "https://api.github.com/repos/Azure/azure-rest-api-specs/contents/specification/cognitiveservices/data-plane/AzureOpenAI/inference/stable" # Initialize an empty array to store the API versions $apiVersions = @() # If neither Stable nor Preview is specified, default to retrieving from both folders if (-not $Stable -and -not $Preview) { $Stable = $true $Preview = $true } try { # If Preview is specified, send a GET request to the 'preview' URL and add the API versions to the array if ($Preview) { $responsePreview = Invoke-RestMethod -Uri $urlPreview -Method Get foreach ($file in $responsePreview) { # If the file is a directory (i.e., an API version) if ($file.type -eq "dir") { # Add the name of the directory (i.e., the API version) to the array $apiVersions += $file.Name } } } # If Stable is specified, send a GET request to the 'stable' URL and add the API versions to the array if ($Stable) { $responseStable = Invoke-RestMethod -Uri $urlStable -Method Get foreach ($file in $responseStable) { # If the file is a directory (i.e., an API version) if ($file.type -eq "dir") { # Add the name of the directory (i.e., the API version) to the array $apiVersions += $file.Name } } } } catch { Write-Error "Failed to retrieve API versions: $_" return } # Sort the API versions by date, ignoring the '-preview' suffix $sortedApiVersions = $apiVersions | Sort-Object { [DateTime]($_ -replace '-preview', '') } -Descending # Return the sorted array of API versions return $sortedApiVersions } |