Dienstindex

Der Dienstindex ist ein JSON-Dokument, das als Einstiegspunkt für eine NuGet-Paketquelle dient und es einer Clientimplementierung ermöglicht, die Funktionen der Paketquelle zu ermitteln. Der Dienstindex ist ein JSON-Objekt mit zwei erforderlichen Eigenschaften: version (die Schemaversion des Dienstindexes) und resources (die Endpunkte oder Funktionen der Paketquelle).

Der Dienstindex von nuget.org befindet sich unter https://api.nuget.org/v3/index.json.

Versionsverwaltung

Der version-Wert ist eine analysierbare SemVer 2.0.0-Versionszeichenfolge, die die Schemaversion des Dienstindexes angibt. Die API verlangt, dass die Versionszeichenfolge die Hauptversionsnummer 3 aufweist. Da am Dienstindexschema keine Breaking Changes vorgenommen werden, wird die Nebenversion der Versionszeichenfolge erhöht.

Jede Ressource im Dienstindex wird unabhängig von der Schemaversion des Dienstindexes mit einer Version versehen.

Die aktuelle Schemaversion lautet 3.0.0. Die Version 3.0.0 entspricht funktional der älteren Version 3.0.0-beta.1, sollte jedoch bevorzugt werden, da sie das stabile, definierte Schema deutlicher darstellt.

HTTP-Methoden

Der Dienstindex ist über die HTTP-Methoden GET und HEAD zugänglich.

Ressourcen

Die Eigenschaft resources enthält ein Array von Ressourcen, die von dieser Paketquelle unterstützt werden.

Resource

Eine Ressource ist ein Objekt im Array resources. Sie stellt eine Funktion einer Paketquelle dar und umfasst eine Versionsangabe. Eine Ressource verfügt über die folgenden Eigenschaften:

Name Type Erforderlich Notizen
@id Zeichenfolge ja Die URL zur Ressource
@type Zeichenfolge ja Eine Zeichenfolgenkonstante, die den Ressourcentyp darstellt
Kommentar Zeichenfolge Nein Lesbare Beschreibung der Ressource

@id ist eine URL, die absolut sein und entweder das HTTP- oder das HTTPS-Schema aufweisen muss.

@type wird verwendet, um das spezifische Protokoll zu identifizieren, das bei der Interaktion mit der Ressource verwendet werden soll. Der Typ der Ressource ist eine nicht transparente Zeichenfolge, weist aber im Allgemeinen das folgende Format auf:

{RESOURCE_NAME}/{RESOURCE_VERSION}

Von Clients wird erwartet, dass sie die interpretierbaren @type-Werte hartcodieren und im Dienstindex einer Paketquelle nachschlagen. Die genauen zurzeit verwendeten @type-Werte werden in den Referenzdokumenten zu den einzelnen Ressourcen aufgeführt, die in der API-Übersicht aufgelistet werden.

Im Rahmen dieser Dokumentation wird die Dokumentation zu verschiedenen Ressourcen im Wesentlichen nach dem im Dienstindex gefundenen {RESOURCE_NAME} gruppiert, was einer Gruppierung nach Szenario entspricht.

Es ist nicht erforderlich, dass jede Ressource über einen eindeutigen @id- oder @type-Wert verfügt. Die Clientimplementierung legt fest, welche Ressource gegenüber einer anderen bevorzugt werden soll. Eine mögliche Implementierung besteht darin, dass Ressourcen desselben oder eines kompatiblen @type-Werts im Falle eines Verbindungs- oder Serverfehlers nach dem Roundrobin-Prinzip verwendet werden können.

Beispielanforderung

GET https://api.nuget.org/v3/index.json

Beispielantwort

{
  "version": "3.0.0",
  "resources": [
    {
      "@id": "https://api.nuget.org/v3-flatcontainer/",
      "@type": "PackageBaseAddress/3.0.0",
      "comment": "Base URL of Azure storage where NuGet package registration info for NET Core is stored, in the format https://api.nuget.org/v3-flatcontainer/{id-lower}/{id-lower}.{version-lower}.nupkg"
    },
    {
      "@id": "https://www.nuget.org/api/v2/package",
      "@type": "PackagePublish/2.0.0"
    },
    {
      "@id": "https://api-v2v3search-0.nuget.org/query",
      "@type": "SearchQueryService/3.0.0-rc",
      "comment": "Query endpoint of NuGet Search service (primary) used by RC clients"
    },
    {
      "@id": "https://api-v2v3search-0.nuget.org/autocomplete",
      "@type": "SearchAutocompleteService/3.0.0-rc",
      "comment": "Autocomplete endpoint of NuGet Search service (primary) used by RC clients"
    },
    {
      "@id": "https://api.nuget.org/v3/registration2/",
      "@type": "RegistrationsBaseUrl/3.0.0-rc",
      "comment": "Base URL of Azure storage where NuGet package registration info is stored used by RC clients. This base URL does not include SemVer 2.0.0 packages."
    }
  ]
}