Pesquisa

É possível pesquisar pacotes disponíveis numa fonte de pacote usando a API V3. O recurso utilizado para pesquisa é o SearchQueryService recurso encontrado no índice de serviço.

Versioning

São utilizados os seguintes @type valores:

@type valor Notas
SearchQueryService O lançamento inicial
SearchQueryService/3.0.0-beta Pseudónimo de SearchQueryService
SearchQueryService/3.0.0-rc Pseudónimo de SearchQueryService
SearchQueryService/3.5.0 Inclui suporte para packageType parâmetro de consulta

SearchQueryService/3.5.0

Esta versão introduz suporte para o packageType parâmetro de consulta e a packageTypes propriedade de resposta, permitindo filtragem por tipos de pacotes definidos pelo autor. É totalmente retrocompatível com consultas para SearchQueryService.

URL base

A URL base para a API seguinte é o valor da @id propriedade associada a um dos valores de recurso @type mencionados. No documento seguinte, será utilizada a URL {@id} base do marcador de substituição. O URL base pode mudar com base na implementação ou nas alterações de infraestrutura dentro do código-fonte do pacote, pelo que deve ser recolhido dinamicamente a partir do índice de serviço pelo software cliente.

Métodos HTTP

Todas as URLs encontradas no recurso de registo suportam os métodos GET HTTP e HEAD.

Pesquisa por pacotes

A API de pesquisa permite a um cliente consultar uma página de pacotes que correspondam a uma consulta de pesquisa especificada. A interpretação da consulta de pesquisa (por exemplo, a tokenização dos termos de pesquisa) é determinada pela implementação do servidor, mas a expectativa geral é que a consulta de pesquisa seja usada para corresponder IDs de pacotes, títulos, descrições e etiquetas. Outros campos de metadados de pacotes também podem ser considerados.

Um pacote não listado nunca deve aparecer nos resultados de pesquisa.

GET {@id}?q={QUERY}&skip={SKIP}&take={TAKE}&prerelease={PRERELEASE}&semVerLevel={SEMVERLEVEL}&packageType={PACKAGETYPE}

Parâmetros de solicitação

Name Em Tipo Required Notas
q URL cadeia (de caracteres) no Os termos de pesquisa usados para filtrar pacotes
ignorar URL número inteiro no O número de resultados a ignorar, para paginação
tomar URL número inteiro no O número de resultados a devolver, para paginação
pré-lançamento URL boolean no true ou false determinar se incluir pacotes pré-lançamento
semVerLevel URL cadeia (de caracteres) no Uma cadeia de versões SemVer 1.0.0
Tipo de pacote URL cadeia (de caracteres) no O tipo de pacote a usar para filtrar pacotes (adicionado em SearchQueryService/3.5.0)

A consulta q de pesquisa é analisada de forma definida pela implementação do servidor. nuget.org suporta filtragem básica em vários campos. Se não q for fornecida, todas as encomendas devem ser devolvidas, dentro dos limites impostos por skip and take. Isto permite o separador "Navegar" na experiência NuGet Visual Studio.

O skip parâmetro é 0 por defeito.

O take parâmetro deve ser um inteiro maior que zero. A implementação do servidor pode impor um valor máximo.

Note

nuget.org limita o skip parâmetro a 3.000 e o take parâmetro a 1.000.

Se prerelease não for fornecido, os pacotes pré-lançamento são excluídos.

O semVerLevel parâmetro de consulta é usado para optar por pacotes SemVer 2.0.0. Se este parâmetro de consulta for excluído, apenas serão devolvidos pacotes com versões compatíveis com SemVer 1.0.0 (com as ressalvas padrão de versionamento do NuGet , como cadeias de versões com 4 partes inteiras). Se semVerLevel=2.0.0 for fornecido, serão devolvidos os pacotes compatíveis com SemVer 1.0.0 e SemVer 2.0.0. Consulte o suporte ao SemVer 2.0.0 para nuget.org para mais informações.

O packageType parâmetro é usado para filtrar ainda mais os resultados da pesquisa apenas para pacotes que tenham pelo menos um tipo de pacote correspondente ao nome do tipo de pacote. Se o tipo de pacote fornecido não for válido conforme definido pelo documento Tipo de Pacote, será devolto um resultado vazio. Se o tipo de encomenda fornecido estiver vazio, não será aplicado nenhum filtro. Ou seja, não passar nenhum valor ao parâmetro packageType comportar-se-á como se o parâmetro não tivesse sido passado.

Resposta

A resposta é um documento JSON contendo até take resultados de pesquisa. Os resultados da pesquisa estão agrupados por ID de pacote.

O objeto JSON raiz tem as seguintes propriedades:

Name Tipo Required Notas
totaisHits número inteiro yes O número total de jogos, desconsiderando skip e take
dados Matriz de objetos yes Os resultados da pesquisa correspondiam ao pedido

Resultado da pesquisa

Cada item no data array é um objeto JSON composto por um grupo de versões de pacotes que partilham o mesmo ID de pacote. O objeto tem as seguintes propriedades:

Name Tipo Required Notas
id cadeia (de caracteres) yes O ID da encomenda correspondente
versão cadeia (de caracteres) yes A string completa da versão SemVer 2.0.0 do pacote (pode conter metadados de build)
description cadeia (de caracteres) no
depreciação objecto no A descontinuação associada à versão mais recente do pacote
versions Matriz de objetos yes Todas as versões do pacote correspondem ao prerelease parâmetro
authors string ou matriz de strings no
iconUrl cadeia (de caracteres) no
licenseUrl cadeia (de caracteres) no
proprietários string ou matriz de strings no Uma string representa o nome de utilizador de um único proprietário
projectUrl cadeia (de caracteres) no
registo cadeia (de caracteres) no A URL absoluta para o índice de registo associado
resumo cadeia (de caracteres) no
tags string ou matriz de strings no
title cadeia (de caracteres) no
totalDownloads número inteiro no Este valor pode ser inferido pela soma dos downloads no versions array
verificada boolean no Um booleano JSON que indica se o pacote está verificado
vulnerabilidades Matriz de objetos no As vulnerabilidades de segurança conhecidas associadas à versão mais recente do pacote
Tipos de pacotes Matriz de objetos yes Os tipos de pacote definidos pelo autor do pacote (adicionados em SearchQueryService/3.5.0)

No nuget.org, um pacote verificado é aquele que tem um ID de pacote correspondente a um prefixo de ID reservado e pertence a um dos proprietários do prefixo reservado. Para mais informações, consulte a documentação sobre a reserva do prefixo de identificação.

Os metadados contidos no objeto de resultados de pesquisa são retirados da versão mais recente do pacote. Cada item no versions array é um objeto JSON com as seguintes propriedades:

Name Tipo Required Notas
@id cadeia (de caracteres) yes O URL absoluto para a folha de registo associada
versão cadeia (de caracteres) yes A string completa da versão SemVer 2.0.0 do pacote (pode conter metadados de build)
Downloads número inteiro yes O número de downloads para esta versão específica do pacote

Descontinuação do pacote

O deprecation objeto tem as seguintes propriedades:

Name Tipo Required Notas
Razões matriz de strings yes As razões pelas quais o pacote foi obsoleto
mensagem cadeia (de caracteres) no Detalhes adicionais sobre a desvalorização
Pacote alternativo objecto no O pacote alternativo a usar em vez disso

O reasons array contém pelo menos um dos valores documentados na descontinuação de pacotes.

O alternatePackage objeto tem as seguintes propriedades:

Name Tipo Required Notas
id cadeia (de caracteres) yes O ID do pacote alternativo
intervalo cadeia (de caracteres) no O intervalo de versões permitido, ou * se alguma versão for permitida

Vulnerabilidades

Cada item no vulnerabilities array é um objeto JSON com as seguintes propriedades:

Name Tipo Required Notas
advisoryUrl cadeia (de caracteres) yes A URL do aviso de segurança do pacote
severity número inteiro yes A severidade do aviso: 0 = Baixa, 1 = Moderada, 2 = Alta e 3 = Crítica

O array está vazio quando a versão mais recente do pacote não apresenta vulnerabilidades conhecidas.

O packageTypes array consistirá sempre em pelo menos um (1) item. O tipo de pacote para um determinado ID de pacote é considerado os tipos de pacote definidos pela versão mais recente do pacote em relação aos outros parâmetros de pesquisa. Cada item no packageTypes array é um objeto JSON com as seguintes propriedades:

Name Tipo Required Notas
Nome cadeia (de caracteres) yes O nome do tipo de embalagem.

Pedido de amostra

GET https://search-sample.nuget.org/query?q=NuGet.Versioning&prerelease=false&semVerLevel=2.0.0

Certifique-se de obter o URL base (https://search-sample.nuget.org/query neste exemplo) do índice do serviço, como mencionado na secção do URL base .

Resposta de exemplo

{
  "totalHits": 2,
  "data": [
    {
      "registration": "https://api.nuget.org/v3/registration-sample/nuget.versioning/index.json",
      "id": "NuGet.Versioning",
      "version": "4.4.0",
      "description": "NuGet's implementation of Semantic Versioning.",
      "summary": "",
      "title": "NuGet.Versioning",
      "licenseUrl": "https://raw.githubusercontent.com/NuGet/NuGet.Client/dev/LICENSE.txt",
      "tags": [ "semver", "semantic", "versioning" ],
      "authors": [ "NuGet" ],
      "totalDownloads": 141896,
      "verified": true,
      "vulnerabilities": [],
      "packageTypes": [
        {
          "name": "Dependency"
        }
      ],
      "versions": [
        {
          "version": "3.3.0",
          "downloads": 50343,
          "@id": "https://api.nuget.org/v3/registration-sample/nuget.versioning/3.3.0.json"
        },
        {
          "version": "3.4.3",
          "downloads": 27932,
          "@id": "https://api.nuget.org/v3/registration-sample/nuget.versioning/3.4.3.json"
        },
        {
          "version": "4.0.0",
          "downloads": 63004,
          "@id": "https://api.nuget.org/v3/registration-sample/nuget.versioning/4.0.0.json"
        },
        {
          "version": "4.4.0",
          "downloads": 617,
          "@id": "https://api.nuget.org/v3/registration-sample/nuget.versioning/4.4.0.json"
        }
      ]
    },
    {
      "@id": "https://api.nuget.org/v3/registration-sample/nerdbank.gitversioning/index.json",
      "@type": "Package",
      "registration": "https://api.nuget.org/v3/registration-sample/nerdbank.gitversioning/index.json",
      "id": "Nerdbank.GitVersioning",
      "version": "2.0.41",
      "description": "Stamps your assemblies with semver 2.0 compliant git commit specific version information and provides NuGet versioning information as well.",
      "summary": "Stamps your assemblies with semver 2.0 compliant git commit specific version information and provides NuGet versioning information as well.",
      "title": "Nerdbank.GitVersioning",
      "licenseUrl": "https://raw.githubusercontent.com/AArnott/Nerdbank.GitVersioning/ed547462f7/LICENSE.txt",
      "projectUrl": "http://github.com/aarnott/Nerdbank.GitVersioning",
      "tags": [ "git", "commit", "versioning", "version", "assemblyinfo" ],
      "authors": [ "Andrew Arnott" ],
      "totalDownloads": 11906,
      "verified": false,
      "vulnerabilities": [],
      "versions": [
        {
          "version": "1.6.35",
          "downloads": 10229,
          "@id": "https://api.nuget.org/v3/registration-sample/nerdbank.gitversioning/1.6.35.json"
        },
        {
          "version": "2.0.41",
          "downloads": 1677,
          "@id": "https://api.nuget.org/v3/registration-sample/nerdbank.gitversioning/2.0.41.json"
        }
      ]
    }
  ]
}