#azure-devops-rest-api #azure-artifacts
#azure-devops-rest-api #azure-артефакты
Вопрос:
Если у меня есть только имя пакета, возможно ли получить идентификатор пакета с помощью одного вызова API. Похоже, идентификатор пакета требуется для любых дальнейших вызовов API — для получения версий пакета и т. Д.,
Или это единственный способ получить все пакеты из ленты, сопоставить с именем, а затем получить идентификатор из этого?
Ссылочный API: https://learn.microsoft.com/en-us/rest/api/azure/devops/artifacts/artifact details/get package?view=azure-devops-rest-6.0
Ответ №1:
Вы можете указать packageNameQuery
параметр запроса в Get Packages rest api для получения информации о пакете с заданным именем.
GET https://feeds.dev.azure.com/{organization}/{project}/_apis/packaging/Feeds/{feedId}/packages?protocolType={protocolType}amp;packageNameQuery={packageNameQuery}amp;normalizedPackageName={normalizedPackageName}amp;includeUrls={includeUrls}amp;includeAllVersions={includeAllVersions}amp;isListed={isListed}amp;getTopPackageVersions={getTopPackageVersions}amp;isRelease={isRelease}amp;includeDescription={includeDescription}amp;$top={$top}amp;$skip={$skip}amp;includeDeleted={includeDeleted}amp;isCached={isCached}amp;directUpstreamId={directUpstreamId}amp;api-version=6.0-preview.1
Для каналов с областью действия организации:
$url= "https://feeds.dev.azure.com/{organization}/_apis/packaging/Feeds/{feedid or feedName}/packages?packageNameQuery={package Name}amp;api-version=6.0-preview.1"
Для каналов с областью действия проекта:
$url= "https://feeds.dev.azure.com/{organization}/{project}/_apis/packaging/Feeds/{feedid or feedName}/packages?packageNameQuery={package Name}amp;api-version=6.0-preview.1"
Смотрите пример ниже:
#Organization scoped feed
$url= "https://feeds.dev.azure.com/{organization}/_apis/packaging/Feeds/{feedid or feedName}/packages?packageNameQuery={package Name}amp;api-version=6.0-preview.1"
$PAT="Personal Access Token"
$base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($PAT)"))
$ArtInfo = Invoke-RestMethod -Uri $url -Headers @{Authorization = ("Basic {0}" -f $base64AuthInfo)} -Method get