NuGet Package Metadata API

The NuGet Package Metadata API, accessed through the RegistrationsBaseUrl resource, provides detailed metadata about packages available on a NuGet package source. It returns registration information including all available versions of a package, their dependencies, download URLs, descriptions, authors, license information, and deprecation status.

OpenAPI Specification

nuget-package-metadata-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: NuGet Package Metadata API
  description: >-
    The NuGet Package Metadata API, accessed through the RegistrationsBaseUrl
    resource, provides detailed metadata about packages available on a NuGet
    package source. It returns registration information including all available
    versions of a package, their dependencies, download URLs, descriptions,
    authors, license information, deprecation status, and vulnerability data.
    The registration data is organized into a hierarchy of index, pages, and
    leaves, allowing efficient retrieval of metadata for packages that may
    have hundreds of published versions.
  version: '3.6.0'
  contact:
    name: NuGet Support
    url: https://github.com/NuGet/Home/issues
  termsOfService: https://www.nuget.org/policies/Terms
externalDocs:
  description: NuGet Package Metadata API Documentation
  url: https://learn.microsoft.com/en-us/nuget/api/registration-base-url-resource
servers:
  - url: https://api.nuget.org/v3/registration5-gz-semver2
    description: NuGet.org Registration Hive (SemVer 2.0.0, gzipped)
tags:
  - name: Registration
    description: >-
      Package registration endpoints for fetching metadata about packages,
      organized into an index, pages, and leaves hierarchy.
security: []
paths:
  /{lowerId}/index.json:
    get:
      operationId: getRegistrationIndex
      summary: Get registration index for a package
      description: >-
        Retrieves the registration index for a given package ID. The index
        contains a list of registration pages, each covering a range of
        package versions. Pages may inline their leaf data or require
        separate requests. On nuget.org, packages with 128 or more versions
        are broken into pages of 64 versions each.
      tags:
        - Registration
      parameters:
        - $ref: '#/components/parameters/LowerId'
      responses:
        '200':
          description: The registration index for the package
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RegistrationIndex'
        '404':
          description: No package with the given ID exists
  /{lowerId}/page/{lower}/{upper}.json:
    get:
      operationId: getRegistrationPage
      summary: Get a registration page
      description: >-
        Retrieves a registration page containing registration leaves for a
        range of package versions. The URL to a registration page is
        discovered from the registration index and should not be constructed
        by clients.
      tags:
        - Registration
      parameters:
        - $ref: '#/components/parameters/LowerId'
        - name: lower
          in: path
          required: true
          description: >-
            The lowest SemVer 2.0.0 version in the page (inclusive).
          schema:
            type: string
        - name: upper
          in: path
          required: true
          description: >-
            The highest SemVer 2.0.0 version in the page (inclusive).
          schema:
            type: string
      responses:
        '200':
          description: The registration page
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RegistrationPage'
        '404':
          description: The requested page does not exist
  /{lowerId}/{version}.json:
    get:
      operationId: getRegistrationLeaf
      summary: Get a registration leaf
      description: >-
        Retrieves a registration leaf containing information about a specific
        package version. The URL to a registration leaf is discovered from a
        registration page and should not be constructed by clients.
      tags:
        - Registration
      parameters:
        - $ref: '#/components/parameters/LowerId'
        - name: version
          in: path
          required: true
          description: >-
            The normalized, lowercased package version.
          schema:
            type: string
      responses:
        '200':
          description: The registration leaf
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RegistrationLeafDocument'
        '404':
          description: The requested package version does not exist
components:
  parameters:
    LowerId:
      name: lowerId
      in: path
      required: true
      description: >-
        The package ID, lowercased using .NET ToLowerInvariant() rules.
      schema:
        type: string
  schemas:
    RegistrationIndex:
      type: object
      description: >-
        The entry point for package metadata, shared by all packages on a
        source with the same package ID.
      required:
        - count
        - items
      properties:
        count:
          type: integer
          description: >-
            The number of registration pages in the index.
        items:
          type: array
          description: >-
            The array of registration pages.
          items:
            $ref: '#/components/schemas/RegistrationPageEntry'
    RegistrationPageEntry:
      type: object
      description: >-
        A registration page entry within the index, covering a range of
        package versions.
      required:
        - '@id'
        - count
        - lower
        - upper
      properties:
        '@id':
          type: string
          format: uri
          description: >-
            The URL to the registration page.
        count:
          type: integer
          description: >-
            The number of registration leaves in the page.
        items:
          type: array
          description: >-
            The array of registration leaves. Present when leaves are inlined
            into the index, absent when a separate request is needed.
          items:
            $ref: '#/components/schemas/RegistrationLeaf'
        lower:
          type: string
          description: >-
            The lowest SemVer 2.0.0 version in the page (inclusive).
        parent:
          type: string
          format: uri
          description: >-
            The URL to the registration index. Only present when items are
            inlined.
        upper:
          type: string
          description: >-
            The highest SemVer 2.0.0 version in the page (inclusive).
    RegistrationPage:
      type: object
      description: >-
        A registration page fetched separately from the index.
      required:
        - '@id'
        - count
        - items
        - lower
        - parent
        - upper
      properties:
        '@id':
          type: string
          format: uri
          description: >-
            The URL to the registration page.
        count:
          type: integer
          description: >-
            The number of registration leaves in the page.
        items:
          type: array
          description: >-
            The array of registration leaves.
          items:
            $ref: '#/components/schemas/RegistrationLeaf'
        lower:
          type: string
          description: >-
            The lowest SemVer 2.0.0 version in the page (inclusive).
        parent:
          type: string
          format: uri
          description: >-
            The URL to the registration index.
        upper:
          type: string
          description: >-
            The highest SemVer 2.0.0 version in the page (inclusive).
    RegistrationLeaf:
      type: object
      description: >-
        A registration leaf representing data for a single package version
        within a page.
      required:
        - '@id'
        - catalogEntry
        - packageContent
      properties:
        '@id':
          type: string
          format: uri
          description: >-
            The URL to the registration leaf.
        catalogEntry:
          $ref: '#/components/schemas/CatalogEntry'
        packageContent:
          type: string
          format: uri
          description: >-
            The URL to the package content (.nupkg).
    RegistrationLeafDocument:
      type: object
      description: >-
        A standalone registration leaf document for a specific package version.
      required:
        - '@id'
      properties:
        '@id':
          type: string
          format: uri
          description: >-
            The URL to the registration leaf.
        catalogEntry:
          type: string
          format: uri
          description: >-
            The URL to the catalog entry that produced this leaf.
        listed:
          type: boolean
          description: >-
            Whether the package is listed. Considered listed if absent.
        packageContent:
          type: string
          format: uri
          description: >-
            The URL to the package content (.nupkg).
        published:
          type: string
          format: date-time
          description: >-
            An ISO 8601 timestamp of when the package was published. Set to
            year 1900 on nuget.org when the package is unlisted.
        registration:
          type: string
          format: uri
          description: >-
            The URL to the registration index.
    CatalogEntry:
      type: object
      description: >-
        The catalog entry containing detailed package metadata for a specific
        version.
      required:
        - '@id'
        - id
        - version
      properties:
        '@id':
          type: string
          format: uri
          description: >-
            The URL to the document used to produce this object.
        authors:
          oneOf:
            - type: string
            - type: array
              items:
                type: string
          description: >-
            The author or authors of the package.
        dependencyGroups:
          type: array
          description: >-
            The dependencies of the package, grouped by target framework.
          items:
            $ref: '#/components/schemas/DependencyGroup'
        deprecation:
          $ref: '#/components/schemas/Deprecation'
        description:
          type: string
          description: >-
            The package description.
        iconUrl:
          type: string
          format: uri
          description: >-
            The URL to the package icon.
        id:
          type: string
          description: >-
            The ID of the package.
        language:
          type: string
          description: >-
            The language of the package.
        licenseUrl:
          type: string
          format: uri
          description: >-
            The URL to the package license.
        licenseExpression:
          type: string
          description: >-
            A NuGet license expression string.
        listed:
          type: boolean
          description: >-
            Whether the package is listed. Considered listed if absent.
        minClientVersion:
          type: string
          description: >-
            The minimum NuGet client version required to use this package.
        packageContent:
          type: string
          format: uri
          description: >-
            The URL to the package content (.nupkg). Included for legacy
            compatibility.
        projectUrl:
          type: string
          format: uri
          description: >-
            The URL to the project page.
        published:
          type: string
          format: date-time
          description: >-
            An ISO 8601 timestamp of when the package was published.
        readmeUrl:
          type: string
          format: uri
          description: >-
            A URL for the rendered view of the package README.
        requireLicenseAcceptance:
          type: boolean
          description: >-
            Whether the package requires license acceptance before
            installation.
        summary:
          type: string
          description: >-
            A summary of the package.
        tags:
          oneOf:
            - type: string
            - type: array
              items:
                type: string
          description: >-
            Tags associated with the package.
        title:
          type: string
          description: >-
            The title of the package.
        version:
          type: string
          description: >-
            The full version string after normalization, which may include
            SemVer 2.0.0 build metadata.
        vulnerabilities:
          type: array
          description: >-
            Security vulnerabilities associated with this package version.
          items:
            $ref: '#/components/schemas/Vulnerability'
    DependencyGroup:
      type: object
      description: >-
        A group of package dependencies applicable to a specific target
        framework.
      properties:
        targetFramework:
          type: string
          description: >-
            The target framework these dependencies are applicable to. If not
            specified, the group applies to all target frameworks.
        dependencies:
          type: array
          description: >-
            The list of package dependencies.
          items:
            $ref: '#/components/schemas/Dependency'
    Dependency:
      type: object
      description: >-
        A package dependency.
      required:
        - id
      properties:
        id:
          type: string
          description: >-
            The ID of the package dependency.
        range:
          type: string
          description: >-
            The allowed version range of the dependency. Defaults to any
            version if absent.
        registration:
          type: string
          format: uri
          description: >-
            The URL to the registration index for this dependency.
    Deprecation:
      type: object
      description: >-
        Deprecation information for a package version.
      required:
        - reasons
      properties:
        reasons:
          type: array
          description: >-
            The reasons why the package was deprecated. Values include Legacy,
            CriticalBugs, and Other.
          items:
            type: string
            enum:
              - Legacy
              - CriticalBugs
              - Other
        message:
          type: string
          description: >-
            Additional details about the deprecation.
        alternatePackage:
          $ref: '#/components/schemas/AlternatePackage'
    AlternatePackage:
      type: object
      description: >-
        A recommended replacement for a deprecated package.
      required:
        - id
      properties:
        id:
          type: string
          description: >-
            The ID of the alternate package.
        range:
          type: string
          description: >-
            The allowed version range, or * if any version is accepted.
    Vulnerability:
      type: object
      description: >-
        A security vulnerability associated with a package version.
      required:
        - advisoryUrl
        - severity
      properties:
        advisoryUrl:
          type: string
          format: uri
          description: >-
            Location of the security advisory for the package.
        severity:
          type: string
          description: >-
            Severity of the advisory. 0 = Low, 1 = Moderate, 2 = High,
            3 = Critical.
          enum:
            - '0'
            - '1'
            - '2'
            - '3'