Recherche

Il est possible de rechercher des packages disponibles sur une source de package à l’aide de l’API V3. La ressource utilisée pour la recherche est la SearchQueryService ressource trouvée dans l’index de service.

Gestion des versions

Les valeurs suivantes @type sont utilisées :

Valeur @type Remarques
SearchQueryService La version initiale
SearchQueryService/3.0.0-beta Alias de SearchQueryService
SearchQueryService/3.0.0-rc Alias de SearchQueryService
SearchQueryService/3.5.0 Inclut la prise en charge du packageType paramètre de requête

SearchQueryService/3.5.0

Cette version introduit la prise en charge du packageType paramètre de requête et de la packageTypes propriété de réponse, ce qui autorise le filtrage par types de package définis par l’auteur. Il est entièrement rétrocompatible avec les requêtes à SearchQueryService.

URL de base

L’URL de base de l’API suivante est la valeur de la @id propriété associée à l’une des valeurs de ressource @type mentionnées ci-dessus. Dans le document suivant, l’URL {@id} de base de l’espace réservé sera utilisée. L’URL de base peut changer en fonction de l’implémentation ou des modifications d’infrastructure dans la source du package. Elle doit donc être extraite dynamiquement de l’index de service par le logiciel client.

Méthodes HTTP

Toutes les URL trouvées dans la ressource d’inscription prennent en charge les méthodes GET HTTP et HEAD.

Rechercher des packages

L’API de recherche permet à un client d’interroger une page de packages correspondant à une requête de recherche spécifiée. L’interprétation de la requête de recherche (par exemple, la jetonisation des termes de recherche) est déterminée par l’implémentation du serveur, mais l’attente générale est que la requête de recherche est utilisée pour les ID de package correspondants, les titres, les descriptions et les balises. D’autres champs de métadonnées de package peuvent également être pris en compte.

Un package non répertorié ne doit jamais apparaître dans les résultats de recherche.

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

Paramètres de la demande

Name Dans Type Required Remarques
q URL string Non Termes de recherche à utiliser pour filtrer les packages
skip URL entier Non Nombre de résultats à ignorer, pour la pagination
prendre URL entier Non Nombre de résultats à retourner, pour la pagination
préversion URL booléen Non true ou false déterminer s’il faut inclure des packages de préversion
semVerLevel URL string Non Chaîne de version SemVer 1.0.0
type de paquet URL string Non Type de package à utiliser pour filtrer les packages (ajoutés dans SearchQueryService/3.5.0)

La requête q de recherche est analysée de manière définie par l’implémentation du serveur. nuget.org prend en charge le filtrage de base sur divers champs. S’il n’est pas q fourni, tous les packages doivent être retournés, dans les limites imposées par ignorer et prendre. Cela active l’onglet « Parcourir » dans l’expérience de Visual Studio NuGet.

Le skip paramètre est défini par défaut sur 0.

Le take paramètre doit être un entier supérieur à zéro. L’implémentation du serveur peut imposer une valeur maximale.

Note

nuget.org limite le skip paramètre à 3 000 et le take paramètre à 1 000.

S’il prerelease n’est pas fourni, les packages en préversion sont exclus.

Le semVerLevel paramètre de requête est utilisé pour opter pour les packages SemVer 2.0.0. Si ce paramètre de requête est exclu, seuls les packages avec les versions compatibles semVer 1.0.0 sont retournés (avec les mises en garde standard du contrôle de version NuGet , telles que les chaînes de version avec 4 éléments entiers). S’il semVerLevel=2.0.0 est fourni, les packages compatibles SemVer 1.0.0 et SemVer 2.0.0 sont retournés. Pour plus d’informations, consultez la prise en charge de SemVer 2.0.0 pour nuget.org .

Le packageType paramètre est utilisé pour filtrer davantage les résultats de recherche sur uniquement les packages qui ont au moins un type de package correspondant au nom du type de package. Si le type de package fourni n’est pas un type de package valide tel que défini par le document Type de package, un résultat vide est retourné. Si le type de package fourni est vide, aucun filtre n’est appliqué. En d’autres termes, la transmission d’aucune valeur au paramètre packageType se comporte comme si le paramètre n’a pas été passé.

Réponse

La réponse est un document JSON contenant jusqu’aux résultats de take la recherche. Les résultats de la recherche sont regroupés par ID de package.

L’objet JSON racine a les propriétés suivantes :

Name Type Required Remarques
totalHits entier yes Nombre total de correspondances, mépris et skiptake
Données tableau d'objets yes Résultats de la recherche mis en correspondance par la requête

Résultat de la recherche

Chaque élément du data tableau est un objet JSON composé d’un groupe de versions de package partageant le même ID de package. L’objet dispose des propriétés suivantes :

Name Type Required Remarques
id string yes ID du package correspondant
version string yes Chaîne de version semVer 2.0.0 complète du package (peut contenir des métadonnées de build)
description string Non
dépréciation Objet Non Dépréciation associée à la dernière version du package
versions tableau d'objets yes Toutes les versions du package correspondant au prerelease paramètre
authors chaîne ou tableau de chaînes Non
iconUrl string Non
URL de licence string Non
owners chaîne ou tableau de chaînes Non Une chaîne représente le nom d’utilisateur d’un seul propriétaire
projectUrl string Non
inscription string Non URL absolue de l’index d’inscription associé
summary string Non
tags chaîne ou tableau de chaînes Non
title string Non
totalDownloads entier Non Cette valeur peut être déduite par la somme des téléchargements dans le versions tableau
Vérifié booléen Non Boolean JSON indiquant si le package est vérifié
Vulnérabilités tableau d'objets Non Vulnérabilités de sécurité connues associées à la dernière version du package
packageTypes tableau d'objets yes Types de package définis par l’auteur du package (ajouté dans SearchQueryService/3.5.0)

Sur nuget.org, un package vérifié est un package qui a un ID de package correspondant à un préfixe d’ID réservé et appartenant à l’un des propriétaires du préfixe réservé. Pour plus d’informations, consultez la documentation sur la réservation de préfixe d’ID.

Les métadonnées contenues dans l’objet de résultat de recherche sont extraites de la dernière version du package. Chaque élément du versions tableau est un objet JSON avec les propriétés suivantes :

Name Type Required Remarques
@id string yes URL absolue de la feuille d’inscription associée
version string yes Chaîne de version semVer 2.0.0 complète du package (peut contenir des métadonnées de build)
téléchargements entier yes Nombre de téléchargements pour cette version de package spécifique

Obsolescence du package

L’objet deprecation dispose des propriétés suivantes :

Name Type Required Remarques
Raisons tableau de chaînes de caractères yes Les raisons pour lesquelles le package a été déprécié
message string Non Détails supplémentaires sur la dépréciation
alternatePackage Objet Non Autre package à utiliser à la place

Le reasons tableau contient au moins une des valeurs documentées dans la dépréciation du package.

L’objet alternatePackage dispose des propriétés suivantes :

Name Type Required Remarques
id string yes ID du package de remplacement
range string Non Plage de versions autorisée, ou * si une version est autorisée

Vulnérabilités

Chaque élément du vulnerabilities tableau est un objet JSON avec les propriétés suivantes :

Name Type Required Remarques
advisoryUrl string yes URL de l’avis de sécurité pour le package
severity entier yes Gravité de l’avis : 0 = Faible, 1 = Modéré, 2 = Élevé et 3 = Critique

Le tableau est vide lorsque la dernière version du package n’a pas de vulnérabilités connues.

Le packageTypes tableau se compose toujours d’au moins un (1) élément. Le type de package pour un ID de package donné est considéré comme les types de package définis par la dernière version du package par rapport aux autres paramètres de recherche. Chaque élément du packageTypes tableau est un objet JSON avec les propriétés suivantes :

Name Type Required Remarques
nom string yes Nom du type de package.

Exemple de requête

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

Veillez à extraire l’URL de base (https://search-sample.nuget.org/query dans cet exemple) à partir de l’index de service, comme indiqué dans la section URL de base .

Exemple de réponse

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