Pesquisa

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

Versioning

Os seguintes @type valores são usados:

Valor de @type Notes
SearchQueryService A versão inicial
SearchQueryService/3.0.0-beta Alias de SearchQueryService
SearchQueryService/3.0.0-rc Alias de SearchQueryService
SearchQueryService/3.5.0 Inclui suporte para packageType o parâmetro de consulta

SearchQueryService/3.5.0

Esta versão apresenta suporte para o packageType parâmetro de consulta e a packageTypes propriedade de resposta, permitindo a filtragem por tipos de pacote definidos pelo autor. Ele é totalmente compatível com versões anteriores com consultas para SearchQueryService.

URL base

A URL base da API a seguir é o valor da @id propriedade associada a um dos valores de recurso @type mencionados anteriormente. No documento a seguir, a URL {@id} base do espaço reservado será usada. A URL base pode ser alterada com base em alterações de implementação ou infraestrutura na origem do pacote, portanto, ela deve ser buscada dinamicamente do índice de serviço pelo software cliente.

Métodos HTTP

Todas as URLs encontradas no recurso de registro dão suporte aos métodos GET HTTP e HEAD.

Pesquisar pacotes

A API de pesquisa permite que um cliente consulte uma página de pacotes que correspondem 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 correspondência de IDs de pacote, títulos, descrições e marcas. Outros campos de metadados de pacote também podem ser considerados.

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

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

Parâmetros de solicitação

Name Em Tipo Obrigatório Notes
q URL cadeia no Os termos de pesquisa a serem usados para filtrar pacotes
ignorar URL inteiro no O número de resultados a serem ignoradas para paginação
tomar URL inteiro no O número de resultados a serem retornados para paginação
pré-lançamento URL booliano no true ou false determinar se os pacotes de pré-lançamento devem ser incluídos
semVerLevel URL cadeia no Uma cadeia de caracteres de versão semVer 1.0.0
tipo de pacote URL cadeia no O tipo de pacote a ser usado para filtrar pacotes (adicionado em SearchQueryService/3.5.0)

A consulta de pesquisa q é analisada de uma maneira definida pela implementação do servidor. nuget.org dá suporte à filtragem básica em uma variedade de campos. Se não q for fornecido, todos os pacotes deverão ser retornados, dentro dos limites impostos por skip e take. Isso habilita a guia "Procurar" na experiência de Visual Studio NuGet.

O skip parâmetro usa como padrão 0.

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 de pré-lançamento serão excluídos.

O semVerLevel parâmetro de consulta é usado para aceitar pacotes SemVer 2.0.0. Se esse parâmetro de consulta for excluído, somente pacotes com versões compatíveis com SemVer 1.0.0 serão retornados (com as limitações de controle de versão padrão do NuGet , como cadeias de caracteres de versão com 4 partes inteiros). Se semVerLevel=2.0.0 for fornecido, os pacotes compatíveis semVer 1.0.0 e SemVer 2.0.0 serão retornados. Consulte o suporte do SemVer 2.0.0 para nuget.org para obter mais informações.

O packageType parâmetro é usado para filtrar ainda mais os resultados da pesquisa apenas para pacotes que têm pelo menos um tipo de pacote que corresponda ao nome do tipo de pacote. Se o tipo de pacote fornecido não for um tipo de pacote válido, conforme definido pelo documento tipo de pacote, um resultado vazio será retornado. Se o tipo de pacote fornecido estiver vazio, nenhum filtro será aplicado. Em outras palavras, não passar nenhum valor para o parâmetro packageType se comportará como se o parâmetro não tivesse sido passado.

Resposta

A resposta é um documento JSON que contém até take os resultados da pesquisa. Os resultados da pesquisa são agrupados por ID do pacote.

O objeto JSON raiz tem as seguintes propriedades:

Name Tipo Obrigatório Notes
totalHits inteiro yes O número total de correspondências, desconsiderando skip e take
dados matriz de objetos yes Os resultados da pesquisa correspondidos pela solicitação

Resultado da pesquisa

Cada item na data matriz é um objeto JSON composto por um grupo de versões de pacote que compartilham a mesma ID do pacote. O objeto tem as seguintes propriedades:

Name Tipo Obrigatório Notes
id cadeia yes A ID do pacote correspondente
versão cadeia yes A cadeia de caracteres de versão semVer 2.0.0 completa do pacote (pode conter metadados de build)
description cadeia no
substituição objeto no A substituição associada à versão mais recente do pacote
versões matriz de objetos yes Todas as versões do pacote que correspondem ao prerelease parâmetro
autores cadeia de caracteres ou matriz de cadeias de caracteres no
iconUrl cadeia no
URL da licença cadeia no
owners cadeia de caracteres ou matriz de cadeias de caracteres no Uma cadeia de caracteres representa o nome de usuário de um único proprietário
URL do projeto cadeia no
registro cadeia no A URL absoluta para o índice de registro associado
resumo cadeia no
tags cadeia de caracteres ou matriz de cadeias de caracteres no
title cadeia no
totalDownloads inteiro no Esse valor pode ser inferido pela soma dos downloads na versions matriz
verificado booliano no Um booliano JSON que indica se o pacote é verificado
Vulnerabilidades matriz de objetos no As vulnerabilidades de segurança conhecidas associadas à versão mais recente do pacote
packageTypes matriz de objetos yes Os tipos de pacote definidos pelo autor do pacote (adicionado em SearchQueryService/3.5.0)

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

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

Name Tipo Obrigatório Notes
@id cadeia yes A URL absoluta para a folha de registro associada
versão cadeia yes A cadeia de caracteres de versão semVer 2.0.0 completa do pacote (pode conter metadados de build)
Downloads inteiro yes O número de downloads para esta versão específica do pacote

Depreciação de pacote

O objeto deprecation tem as seguintes propriedades:

Name Tipo Obrigatório Notes
Razões Matriz de cadeias de caracteres yes Os motivos pelos quais o pacote foi preterido
mensagem cadeia no Detalhes adicionais sobre a substituição
alternatePackage objeto no Em vez disso, o pacote alternativo a ser usado

A reasons matriz contém pelo menos um dos valores documentados na substituição do pacote.

O objeto alternatePackage tem as seguintes propriedades:

Name Tipo Obrigatório Notes
id cadeia yes A ID do pacote alternativo
alcance cadeia no O intervalo de versão permitido ou * se qualquer versão for permitida

Vulnerabilidades

Cada item na vulnerabilities matriz é um objeto JSON com as seguintes propriedades:

Name Tipo Obrigatório Notes
advisoryUrl cadeia yes A URL do aviso de segurança para o pacote
gravidade inteiro yes A gravidade da consultoria: 0 = Baixa, 1 = Moderada, 2 = Alta e 3 = Crítica

A matriz fica vazia quando a versão mais recente do pacote não tem vulnerabilidades conhecidas.

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

Name Tipo Obrigatório Notes
nome cadeia yes O nome do tipo de pacote.

Solicitação de exemplo

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

Certifique-se de buscar a URL base (https://search-sample.nuget.org/query neste exemplo) do índice de serviço, conforme mencionado na seção 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"
        }
      ]
    }
  ]
}