Buscar

Es posible buscar paquetes disponibles en un origen de paquete mediante la API V3. El recurso que se usa para buscar es el SearchQueryService recurso que se encuentra en el índice de servicio.

Control de versiones

Se usan los siguientes @type valores:

@type valor Notas
SearchQueryService La versión inicial
SearchQueryService/3.0.0-beta Alias de SearchQueryService
SearchQueryService/3.0.0-rc Alias de SearchQueryService
SearchQueryService/3.5.0 Incluye compatibilidad con el packageType parámetro de consulta

SearchQueryService/3.5.0

Esta versión presenta compatibilidad con el packageType parámetro de consulta y la packageTypes propiedad de respuesta, lo que permite filtrar por tipos de paquete definidos por el autor. Es totalmente compatible con versiones anteriores con las consultas a SearchQueryService.

Dirección URL base

La dirección URL base de la SIGUIENTE API es el valor de la @id propiedad asociada a uno de los valores de recursos @type mencionados anteriormente. En el siguiente documento, se usará la dirección URL {@id} base del marcador de posición. La dirección URL base puede cambiar en función de los cambios de implementación o infraestructura dentro del origen del paquete, por lo que el software cliente debe capturar dinámicamente desde el índice de servicio .

Métodos HTTP

Todas las direcciones URL que se encuentran en el recurso de registro admiten los métodos GET HTTP y HEAD.

Buscar paquetes

La API de búsqueda permite que un cliente consulte una página de paquetes que coincida con una consulta de búsqueda especificada. La interpretación de la consulta de búsqueda (por ejemplo, la tokenización de los términos de búsqueda) viene determinada por la implementación del servidor, pero la expectativa general es que la consulta de búsqueda se use para buscar identificadores de paquete coincidentes, títulos, descripciones y etiquetas. También se pueden tener en cuenta otros campos de metadatos del paquete.

Un paquete no enumerado nunca debería aparecer en los resultados de la búsqueda.

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

Parámetros de solicitud

Name En Tipo Obligatorio Notas
q URL string no Términos de búsqueda que se usan para filtrar paquetes
skip URL integer no Número de resultados que se van a omitir, para la paginación
tomar URL integer no Número de resultados que se van a devolver, para la paginación
versión preliminar URL boolean no true o false determinar si se deben incluir paquetes de versión preliminar
semVerLevel URL string no Cadena de versión de SemVer 1.0.0
tipo de paquete URL string no Tipo de paquete que se va a usar para filtrar paquetes (agregados en SearchQueryService/3.5.0)

La consulta q de búsqueda se analiza de una manera definida por la implementación del servidor. nuget.org admite el filtrado básico en una variedad de campos. Si no se proporciona, q se deben devolver todos los paquetes, dentro de los límites impuestos por omitir y tomar. Esto habilita la pestaña "Examinar" en la experiencia de Visual Studio nuGet.

El skip parámetro tiene como valor predeterminado 0.

El take parámetro debe ser un entero mayor que cero. La implementación del servidor puede imponer un valor máximo.

Nota:

nuget.org limita el skip parámetro a 3000 y el take parámetro a 1000.

Si prerelease no se proporciona, se excluyen los paquetes de versión preliminar.

El semVerLevel parámetro de consulta se usa para participar en los paquetes de SemVer 2.0.0. Si se excluye este parámetro de consulta, solo se devolverán paquetes con versiones compatibles de SemVer 1.0.0 (con las advertencias de control de versiones estándar de NuGet , como cadenas de versión con 4 fragmentos enteros). Si semVerLevel=2.0.0 se proporciona, se devolverán los paquetes compatibles semVer 1.0.0 y SemVer 2.0.0. Consulte la compatibilidad de SemVer 2.0.0 con nuget.org para obtener más información.

El packageType parámetro se usa para filtrar aún más los resultados de la búsqueda solo a paquetes que tengan al menos un tipo de paquete que coincida con el nombre del tipo de paquete. Si el tipo de paquete proporcionado no es un tipo de paquete válido tal como se define en el documento Tipo de paquete, se devolverá un resultado vacío. Si el tipo de paquete proporcionado está vacío, no se aplicará ningún filtro. En otras palabras, pasar ningún valor al parámetro packageType se comportará como si no se pasara el parámetro.

Respuesta

La respuesta es un documento JSON que contiene hasta take los resultados de la búsqueda. Los resultados de la búsqueda se agrupan por identificador de paquete.

El objeto JSON raíz tiene las siguientes propiedades:

Name Tipo Obligatorio Notas
totalHits integer yes Número total de coincidencias, desatendiendo skip y take
datos matriz de objetos yes Resultados de búsqueda coincidentes con la solicitud

Resultado de la búsqueda

Cada elemento de la data matriz es un objeto JSON formado por un grupo de versiones de paquete que comparten el mismo identificador de paquete. El objeto tiene las siguientes propiedades:

Name Tipo Obligatorio Notas
id string yes Identificador del paquete coincidente
version string yes Cadena de versión completa de SemVer 2.0.0 del paquete (podría contener metadatos de compilación).
description string no
en desuso object no Desuso asociado a la versión del paquete más reciente
versions matriz de objetos yes Todas las versiones del paquete que coinciden con el prerelease parámetro
authors cadena o matriz de cadenas no
iconUrl string no
licenseUrl string no
owners cadena o matriz de cadenas no Una cadena representa el nombre de usuario de un solo propietario.
projectUrl string no
registro string no Dirección URL absoluta del índice de registro asociado
summary string no
tags cadena o matriz de cadenas no
title string no
totalDownloads integer no Este valor se puede deducir mediante la suma de descargas en la versions matriz.
comprobado boolean no Valor booleano JSON que indica si se comprueba el paquete.
Vulnerabilidades matriz de objetos no Vulnerabilidades de seguridad conocidas asociadas a la versión del paquete más reciente
packageTypes matriz de objetos yes Los tipos de paquete definidos por el autor del paquete (agregados en SearchQueryService/3.5.0)

En nuget.org, un paquete comprobado es uno que tiene un identificador de paquete que coincide con un prefijo de identificador reservado y que pertenece a uno de los propietarios del prefijo reservado. Para obtener más información, consulte la documentación sobre la reserva de prefijos de identificador.

Los metadatos contenidos en el objeto de resultado de búsqueda se toman de la versión del paquete más reciente. Cada elemento de la versions matriz es un objeto JSON con las siguientes propiedades:

Name Tipo Obligatorio Notas
@id string yes Dirección URL absoluta de la hoja de registro asociada
version string yes Cadena de versión completa de SemVer 2.0.0 del paquete (podría contener metadatos de compilación).
Descargas integer yes Número de descargas para esta versión de paquete específica

Deprecación del paquete

El objeto deprecation tiene las siguientes propiedades:

Name Tipo Obligatorio Notas
Razones Matriz de cadenas yes Las razones por las que el paquete está en desuso
message string no Detalles adicionales sobre el desuso
alternatePackage object no El paquete alternativo que se va a usar en su lugar

La reasons matriz contiene al menos uno de los valores documentados en Desuso del paquete.

El objeto alternatePackage tiene las siguientes propiedades:

Name Tipo Obligatorio Notas
id string yes Identificador del paquete alternativo
rango string no Intervalo de versiones permitido o * si se permite alguna versión

Vulnerabilidades

Cada elemento de la vulnerabilities matriz es un objeto JSON con las siguientes propiedades:

Name Tipo Obligatorio Notas
advisoryUrl string yes Dirección URL del aviso de seguridad para el paquete
severity integer yes Gravedad del aviso: 0 = Baja, 1 = Moderada, 2 = Alta y 3 = Crítica

La matriz está vacía cuando la versión del paquete más reciente no tiene vulnerabilidades conocidas.

La packageTypes matriz siempre constará de al menos un elemento (1). El tipo de paquete para un identificador de paquete determinado se considera los tipos de paquete definidos por la versión más reciente del paquete con respecto a los demás parámetros de búsqueda. Cada elemento de la packageTypes matriz es un objeto JSON con las siguientes propiedades:

Name Tipo Obligatorio Notas
nombre string yes Nombre del tipo de paquete.

Solicitud de ejemplo

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

Asegúrese de capturar la dirección URL base (https://search-sample.nuget.org/query en este ejemplo) del índice de servicio, como se mencionó en la sección dirección URL base .

Respuesta de ejemplo

{
  "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"
        }
      ]
    }
  ]
}