Как получить идентификатор пакета с указанием имени пакета через AzureDevOps REST API

#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